Broadcom Bluetooth
Данная статья описывает настройку устройств Broadcom Bluetooth 4.x, основанных на микросхемах BCM20702, BCM4354 и BCM4356. Данный набор микросхем также использовался во многих устройствах, включая USB-устройства, гибридные встраиваемые WIFI+Bluetooth микросхемы и прочие продукты.
Оборудование
Практически полный список поддерживаемых устройств можно найти на странице репозитория разработчика broadcom-bt-firmware.
Устройство | Модель | Статус | Vendor ID / Product ID | Драйвер ядра | Версия ядра | Примечания |
---|---|---|---|---|---|---|
USB Dongle | Asus BT-400 USB | Works | 0b05:17cb
|
btbcm | 4.2 | Требуется прошивка |
USB Dongle | Targus ACB75AU | Works | 0a5c:21e8
|
btbcm | 3.4+ | Требуется прошивка brcm/BCM20702A1-0a5c-21e8.hcd |
Соображения безопасности
В последнее время в протоколе Bluetooth было обнаружено множество уязвимостей, включая CVE-2018-5383, CVE-2019-9506 (KNOB), CVE-2020-10135 (BIAS) и множество других. Так как компания Broadcom прекратила поддержку пользовательских устройств, системы, использующие данное ПО, могут стать объектом рисков информационной безопасности. Рекомендуется оценить данные риски до того, как продолжать, так как сопровождающий репозитория не сможет предоставить исправления безопасности.
Установка
Ядро
Устройствам Broadcom Bluetooth требуется модуль ядра btbcm
, который можно собрать с помощью следующих параметров ядра:
[*] Networking support --->
<M> Bluetooth subsystem support --->
Bluetooth device drivers --->
<M> HCI USB driver
[*] Broadcom protocol support
[*] Broadcom protocol support
Прошивка
Практически все устройства Broadcom Bluetooth требуют внешнюю прошивку, предоставляемую вместе с драйверами для Windows. Это можно проверить, используя следующие команды:
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
К счастью, можно использовать пакет sys-firmware/broadcom-bt-firmware, чтобы установить наиболее новые файлы прошивки для Broadcom Bluetooth:
root #
emerge --ask sys-firmware/broadcom-bt-firmware
После установки переподключите устройство Bluetooth или перезагрузите систему, чтобы применить прошивку. После перезагрузки вывод предыдущей команды должен выглядеть следующим образом:
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
Конфигурация
После включения конфигурации ядра и установки прошивки следуйте инструкциям статьи Bluetooth.
Устранение проблем
Ядро требует BCM.hcd или BCM<CHIPSET>.hcd
Некоторые комбинации VID/PIDs ещё не определены в драйвере ядра, поэтому btbcm не может правильно идентифицировать устройство:
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
В данном случае VID/PID можно вручную получить через команды lspci или lsusb:
user $
lsusb
... Bus 003 Device 005: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth ...
Вот и VID/PID — 0b05:17cb
. Далее сверьтесь со списком устройств и выберите подходящее устройство. После этого просто скопируйте файл прошивки в то имя, которое требуется ядру:
root #
cd /lib/firmware/brcm
root #
cp BCM20702A1-0b05-17cb.hcd BCM.hcd
После этого переподключите устройство или перезагрузите систему.
После установки прошивки устройство всё равно не работает
Некоторые контроллеры Bluetooth (например, BCM4354 и BCM4356) встроены в набор микросхем WiFi (например, это может быть BCM43XX 802.11ac Wireless Network Adapter или просто Broadcom PCIE Wireless). Данным устройствам требуется два вида прошивок — сначала для WiFi, а затем — для Bluetooth. Без прошивки WiFi Bluetooth не сможет запуститься и не будет работать правильно. Прошивка для WiFi уже включена в ядро, но для правильной работы может потребовать дополнительные действия для того, чтобы установить соответствующий NVRAM.
Ниже приведён пример, как это может выглядеть (обратите внимание на загрузку brcm/brcmfmac4356-pcie.txt — это и есть модифицированный 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
Смотрите также
- Bluetooth — describes the configuration and usage of Bluetooth controllers and devices.