藍芽Bluetooth Broadcom 43142驅動問題
Bluetooth is on but can't find or be found by any other devices.
lsusb
|
You need to install firmware.
Distribution of Broadcom firmware is not allowed by Broadcom license. So you need to get it yourself. It is a bit complex, but there is no other legal way.
If you device is not listed in these drivers, you'll need to find a newer version of it somewhere. Broadcom removed the latest drivers from their site to make it more difficult.
Some laptop vendors have Bluetooth drivers on their sites, but some of them are not unzippable. So it is some quest. I could download the latest Broadcom drivers from their site, but it is not there any more.
- Open this file by Archive Manager and find there
bcbtums-win8x86-brcm.inf
file. Name of the file may differ in some drivers. It can bebcbtums.inf
-
Search this file for VID_0A5C&PID_21D7. These numbers are from your
lsusb
output0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0.
Comment: Some devices are not recognized as Broadcom BT in
lsusb
. If you are unsure which one is your BT device, run usb-devices
command, it will give more detailed information. There you can find product and vendor IDs.
You will see some line ending with RAMUSB21D7
Search this file for RAMUSB21D7. You will find a section there like that:
[RAMUSB21D7.CopyList]
bcbtums.sys
btwampfl.sys
BCM43142A0_001.001.011.0122.0126.hex
That's what we are looking for. Name of the firmware file. BCM43142A0_001.001.011.0122.0126.hex
-
Now extract that firmware from the same cab file.
Then you need to convert this file from hex to hcd format.
-
Download the tool for that
git clone git://github.com/jessesung/hex2hcd.git cd hex2hcd make
You will get hex2hcd folder in your home directory.
-
Place the firmware file to your home folder and run
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd
You see that 0a5c-21d7 is id of your adapter from lsusb.
Important: For kernels 4.2+ you call this file as BCM.hcd
instead.
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM.hcd
For kernels 4.8+ name of the file should be BCM-<VID>-<PID>.hcd
, like
BCM-0a5c-21d7
.
-
Now just copy
BCM43142A0-0a5c-21d7.hcd
, or another file according to the kernel version to/lib/firmware/brcm
directory bysudo cp ~/BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm
For kernels 4.2+
sudo cp ~/BCM.hcd /lib/firmware/brcm
For kernels 4.8+
sudo cp ~/BCM-0a5c-21d7.hcd /lib/firmware/brcm
You can always check if the file name is correct by running
dmesg | grep -i blue
. There will be an error message if the file is not found.
-
Turn your computer off and on again. Not just reboot!
Your adapter will get firmware and bluetooth should work.
All this looks complicated, but it is Broadcom lawyers to blame for that. Most of other vendors allow to re-distribute firmware under condition that it is done acompanied with the license.
That allows linux maintainers to include firmware in distributions.
But not in case of Broadcom. That's why it is not done an easy way.
Many people could convert all hex files to hcd and make them available. Or just add them to linux-firmware package of Ubuntu.
But it is not legal :-((