Broadcom Bluetooth

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Broadcom Bluetooth and the translation is 100% complete.
Other languages:

Данная статья описывает настройку устройств 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, который можно собрать с помощью следующих параметров ядра:

ЯДРО Broadcom Bluetooth support
[*] 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.

Ссылки