I've got a Broadcom BCM43228 mPCIe card which came with my motherboard (ASUS ROG Maximus V Extreme, can't seem to find a link to what the card is) which is working great for WiFi right now, but I can't detect the Bluetooth hardware onboard. In Windows, I have full Bluetooth 4.0 support.
$ lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:14.0 USB controller: Intel Corporation Panther Point USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation Panther Point MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 04)
00:1a.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation Panther Point High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 1 (rev c4)
00:1c.4 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 5 (rev c4)
00:1c.6 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 7 (rev c4)
00:1c.7 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 8 (rev c4)
00:1d.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation Panther Point LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation Panther Point 6 port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation Panther Point SMBus Controller (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1189 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 0e0a (rev a1)
0d:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
0e:00.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:01.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:04.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:05.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:06.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:07.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:08.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
0f:09.0 PCI bridge: PLX Technology, Inc. PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
10:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
12:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)
15:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n
17:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)
The key line seems to be:
15:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n
If I try to detect the Bluetooth card, I don't see anything:
$ hcitool dev
Devices:
$ rfkill list all
$ lspci
$ lsusb
I finally found the card with usb-devices
:
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0b05 ProdID=17b5 Rev=01.12
S: Manufacturer=Broadcom Corp
S: Product=BCM20702A0
S: SerialNumber=############
C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
I'm running kernel 3.2.0-34-generic
.
I've heard that this card needs to have firmware injected into it in order to function. If that's the case, how do I do it?
patching your kernel
According to this post your particular bluetooth module is not recognised by the current precise kernel.
You command
usb-devices
reveals the particular bluetooth device - the vendor and ProdID values -0b05:17b5
A patch was submitted to the main Git repository. It is likely (but not certain) that this patch would be included in the next kernel - v3.8. However, it could be a later module if this goes though staging.
Thus, for the moment, to get you bluetooth device to be recognised, you should file a bug-report on launchpad asking if it is possible to backport this patch - give as much detail as possible to the patch and if possible submit the patch as well.
If you want to patch this yourself, here are some notes you can follow.
patching your kernel
i.e. DO NOT use
sudo apt-get source linux-source-3.2.0
since this will download the source as root - this will cause compilation issues later if you download as root.The linux above indicated the patch should be applied to
btusb.c
Using your favourite editor open this kernel module
Search & find the line containing the text
BCM20702A0
It will look like:
Add the following your new bluetooth device - that is your vendor and ProdID
{ USB_DEVICE(0x0b05, 0x17b5) },
i.e.This should successfully compile the kernel modules including your newly patched file.
Finally add the kernel module to your current kernel drivers folder:
Hopefully now your bluetooth device is recognised - it should be visible when you run
rfkill list all
as well aslsusb
and finally...
Each time your kernel is updated by Canonical you will need to re-run through the above procedure because your new bluetooth module will be overwritten - if you are luck you may be able to use run the
sudo modprobe
commands with minor kernel updates.I have the same problem with BCM20702A0 on my Acer Aspire R7 and just found another permanent solution (without recompiling the driver on updates):
sudo echo btusb >> /etc/modules
- this will force loading btusb driver;add the line
echo 0b05 17b5 > /sys/bus/usb/drivers/btusb/new_id
to the/etc/rc.local
just beforeexit 0
- this will force driver to be used with the specified device on boot (which is04ca 2004
in my system, and also works).Refer to WifiDocs/Driver/bcm43xx in the Ubuntu wiki for info on how to install the correct drivers for your chipset.