In meinem Laptop ist ein WLAN Chip von Broadcom. Nach dem Etikett ist es ein BCM943228 HMB , mit einem integrierten Bluetooth Chip BCM20702. Der Linux Kernel identifiziert die PCIe Karte als BCM43228 und im dmesg taucht noch BCM4359 auf.  Für den WLan Teil gibt es keine Open Source Linux Treiber. Der von Broadcom bereitgestellt Linux STA Treiber, kurz wl, funktioniert aber ganz gut.

Anders sieht es beim Bluetooth aus, hier funktionierte lange Zeit erstmal gar nichts. Mit den neueren Kernel Versionen (mindestes ab 4.14 vielleicht auch schon früher) gab es aber eine kleine Verbesserung. Im dmesg tauchten plötzlich folgende Zeilen auf.

kernel: Bluetooth: hci1: BCM: chip id 63
kernel: Bluetooth: hci1: BCM: features 0x07
kernel: Bluetooth: hci1: BCM20702A
kernel: Bluetooth: hci1: BCM20702A1 (001.002.014) build 0000
kernel: bluetooth hci1: Direct firmware load for brcm/BCM20702A1-105b-e066.hcd failed with error -2
kernel: Bluetooth: hci1: BCM: Patch brcm/BCM20702A1-105b-e066.hcd not found

Der Kernel hat den Bluetooth Chip BCM20702A1 erkannt kann aber keine Firmware finden. Leider ist aus Lizenz rechtlichen Gründen die Firmware meist nicht in den normalen Distribution Firmware Pakten enthalten.

Doch es gibt in verschieden Quellen im Internet die diese Firmware bereitstellen. Die größte Sammlung scheint es in einem GitHub Repository zu geben

https://github.com/winterheart/broadcom-bt-firmware

Im Ordner brcm gibt es viele verschiedene Versionen. Um die benötigte Version zu finden einfach den Namen der hcd-Datei aus dem Log suchen. Ich brauche BCM20702A1-105b-e066.hcd, alternativ kann man auch einfach alle herunterladen.

Nach dem Download, die hcd-Datei in den Ordner /lib/firmware/brcm/ kopieren. Falls es den Ordner noch nicht gibt selbst erstellen.

Danach kann man mittels

modprobe -r btusb 

modprobe btusb

das Modul neu laden oder den Laptop neu starten. Jetzt sollte Bluetooth funktionieren.

Bluetooth mit dem Broadcom BCM20702