Broadcom Bluetooth
Broadcom Article description::Bluetooth 4.x devices mostly based on BCM20702, BCM4354, BCM4356 chipsets and used in various devices including USB-dongles, hybrid WIFI+Bluetooth embedded chipsets and such.
Hardware
Mostly complete list of supported devices: https://github.com/winterheart/broadcom-bt-firmware/blob/master/DEVICES.md
Device | Make/model | Status | Vendor ID / Product ID | Kernel driver(s) | Kernel version | Notes |
---|---|---|---|---|---|---|
USB Dongle | Asus BT-400 USB | Works | 0b05:17cb |
btbcm | 4.2 | Requires firmware |
USB Dongle | Targus ACB75AU | Works | 0a5c:21e8 |
btbcm | 3.4+ | Requires firmware brcm/BCM20702A1-0a5c-21e8.hcd |
Security Considerations
Recently several vulnerabilities have been discovered in the Bluetooth stack such as CVE-2018-5383, CVE-2019-9506 (KNOB), CVE-2020-10135 (BIAS) and more. Since Broadcom has stopped active support for its consumer devices, your system may be subject to security risks. You will have to use these devices at your own risk. The repository maintainer can't provide security fixes.
Installation
Kernel
[*] Networking support ---> <M> Bluetooth subsystem support ---> Bluetooth device drivers ---> <M> HCI USB driver [*] Broadcom protocol support [*] Broadcom protocol support
Firmware
Mostly Broadcom Bluetooth stack requires external firmware, supplied with Windows drivers. You can check this by using following commands:
user $
dmesg | grep -i bluetooth
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 bluetooth hci1: Direct firmware load for brcm/BCM20702A1-0b05-17cb.hcd failed with error -2 Bluetooth: hci1: BCM: Patch brcm/BCM20702A1-0b05-17cb.hcd not found
Luckily, you can use sys-firmware/broadcom-bt-firmware package which install most recent firmware files for Broadcom Bluetooth:
root #
emerge --ask sys-firmware/broadcom-bt-firmware
After installing you need to reinsert Bluetooth device or reboot system for applying firmware. After that your output should looks like that:
user $
dmesg | grep -i bluetooth
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 Bluetooth: hci1: BCM20702A1 (001.002.014) build 1467 Bluetooth: hci1: Broadcom Bluetooth Device
Configuration
After enabling kernel options and installing firmware, you should proceed to Bluetooth manual.
Troubleshooting
Kernel requires BCM.hcd or BCM<CHIPSET>.hcd
Some VID/PIDs not yet defined in kernel driver so btbcm cannot properly identify your device:
user $
dmesg | grep -i bluetooth
Bluetooth: hci1: BCM: chip id 63 Bluetooth: hci1: BCM20702A Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000 bluetooth hci1: Direct firmware load for brcm/BCM.hcd failed with error -2 Bluetooth: hci1: BCM: Patch brcm/BCM.hcd not found
In this case you need to retrieve VID/PID manually via lspci or lsusb command:
user $
lsusb
... Bus 003 Device 005: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth ...
Here your VID/PID - 0b05:17cb
. Next, check Devices list and choose your firmware. After that just copy firmware file into name that requires kernel:
root #
cd /lib/firmware/brcm
root #
cp BCM20702A1-0b05-17cb.hcd BCM.hcd
After that reinsert device or reboot system.
After installing firmware device still won't work
Some Bluetooth controller (for example, BCM4354 and BCM4356) are integrated to WiFi chipset (this can be BCM43XX 802.11ac Wireless Network Adapter or just simple generic Broadcom PCIE Wireless). These devices requires two kinds of firmware - first for WiFi, and second for Bluetooth. Without WiFi firmware Bluetooth will not initialize and will not work properly. Firmware for WiFi already included to kernel, but you may need to do additional work to place correct NVRAM.
Here example how it can looks (note about brcm/brcmfmac4356-pcie.txt loading - this is your customized NVRAM):
user $
dmesg
usbcore: registered new interface driver brcmfmac brcmfmac 0000:02:00.0: firmware: direct-loading firmware brcm/brcmfmac4356-pcie.bin brcmfmac 0000:02:00.0: firmware: direct-loading firmware brcm/brcmfmac4356-pcie.txt Bluetooth: hci0: BCM: chip id 101 Bluetooth: hci0: N360-11 Bluetooth: hci0: BCM4354A2 (001.003.015) build 0000 bluetooth hci0: firmware: direct-loading firmware brcm/BCM4354A2-13d3-3485.hcd