I'm trying to get bluetooth working on a Thinkpad Tablet 8, which uses a Broadcom 42341b5 combined wifi-bluetooth chip. According to the debian wiki this is possible, but I'm getting different results than the guide. Here's a log of what I know, any help would be much appreciated :-)
What works
Wifi works, via the `/lib/firmware/brcm/brcmfmac43241b5-sdio.{bin,txt}` files in the `firmware-brcm80211` package. Bluetooth supposedly requires another firmware file at `/lib/firmware/brcm/BCM.hcd`. Without the extra file, I can get bluetooth working, after a fashion. Installing the bluez stack and running `btattach -P /dev/ttyS0 -B h4` allows me to pair and connect to a bluetooth keyboard with `bluetoothctl`. I can tap a key on the keyboard and rarely, after a long wait, a few hundred keypresses will be registered. It's a start.
I guess that works badly because it should use the `bcm` protocol rather than the `h4` protocol. However:
Code: Select all
root@debian:~# btattach -B /dev/ttyS0 -P bcm
Attaching Primary controller to /dev/ttyS0
Switched line discipline from 0 to 15
Failed to set protocol: Protocol not supported
No controller attached
I'm assuming the bcm protocol requires the BCM.hcd file. Unfortunately I don't have a Windows partition to take the file from, as recommended by the Debian On guide, but I've tried others:
- This file (md5sum: 059c82f), which has the same name as mentioned on the wiki. As far as I can tell it's the same file.
- I installed the official bluetooth driver in a Windows VM and grabbed the BCM43241b5.hcd file.
Complications?
- This stackoverflow answer (for a different chipset) says that, after kernel 4.8, the firmware file needs to be named `/lib/firmware/brcm/BCM-[vid]-[pid].hcd`. Unfortunately I can't find the VID or PID anywhere (see below). The .inf file in the Windows driver indicated the VID might be 2e55. I tried creating 65536 symlinks in the firmware directory, one for every possible PID. No dice.
- I'm running 32-bit debian because it's a baytrail CPU.
- My model is a Japanese version, so its model number is 20BN001RJP and not 20BN001. If there's some hardcoded hack in the bluez stack that relies on the model name, this might cause issues.
- There is no mention whatsoever of bluetooth devices or drivers in any diagnostic command I've run, see below. I've checked my grub boot config, and there's no sign of a weird ACPI setting (`off`, `noirq`, etc) that would get in the way.
Code: Select all
root@debian:~# uname -a
Linux debian 4.16.0-0.bpo.1-686 #1 SMP Debian 4.16.5-1~bpo9+1 (2018-05-06) i686 GNU/Linux
Code: Select all
root@debian:~# lspci
00:00.0 Host bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Graphics & Display (rev 09)
00:14.0 USB controller: Intel Corporation Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI (rev 09)
00:1a.0 Encryption controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine (rev 09)
00:1f.0 ISA bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Power Control Unit (rev 09)
Code: Select all
root@debian:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Code: Select all
root@debian:~# usb-devices
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev=04.16
S: Manufacturer=Linux 4.16.0-0.bpo.1-686 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:00:14.0
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 1
D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=1d6b ProdID=0003 Rev=04.16
S: Manufacturer=Linux 4.16.0-0.bpo.1-686 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:00:14.0
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
Code: Select all
###
# the [6574] lines appear after running btattach -B bcm -P /dev/ttyS0
# this output is identical regardless of which BCM.hcd file is used
###
root@debian:~# dmesg | egrep -i "blue|firm|brcm|bcm"
[ 0.047062] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[ 5.507016] [Firmware Bug]: No valid trip found
[ 7.482827] intel_sst_acpi 80860F28:00: firmware: direct-loading firmware intel/fw_sst_0f28.bin
[ 7.700741] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43241b5-sdio.bin for chip 0x004324(17188) rev 0x000006
[ 7.700829] usbcore: registered new interface driver brcmfmac
[ 7.704936] brcmfmac mmc1:0001:1: firmware: direct-loading firmware brcm/brcmfmac43241b5-sdio.bin
[ 7.706314] brcmfmac mmc1:0001:1: firmware: direct-loading firmware brcm/brcmfmac43241b5-sdio.txt
[ 7.776351] brcmfmac mmc1:0001:1: firmware: failed to load brcm/brcmfmac43241b5-sdio.clm_blob (-2)
[ 7.776353] firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
[ 7.776356] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43241b5-sdio.clm_blob failed with error -2
[ 7.776361] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available(err=-2), device may have limited channels available
[ 7.776810] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Feb 24 2015 06:43:35 version 6.25.91.13 (r536868) FWID 01-b48d628a
[6574.387759] Bluetooth: Core ver 2.22
[6574.387819] Bluetooth: HCI device and connection manager initialized
[6574.387826] Bluetooth: HCI socket layer initialized
[6574.387829] Bluetooth: L2CAP socket layer initialized
[6574.387841] Bluetooth: SCO socket layer initialized
[6574.403340] Bluetooth: HCI UART driver ver 2.3
[6574.403344] Bluetooth: HCI UART protocol H4 registered
[6574.403346] Bluetooth: HCI UART protocol BCSP registered
[6574.403347] Bluetooth: HCI UART protocol ATH3K registered
[6574.403348] Bluetooth: HCI UART protocol Three-wire (H5) registered
[6574.403449] Bluetooth: HCI UART protocol Intel registered
[6574.403451] Bluetooth: HCI UART protocol QCA registered
[6574.403452] Bluetooth: HCI UART protocol AG6XX registered
[6574.403454] Bluetooth: HCI UART protocol Marvell registered
Code: Select all
root@debian:~# cat /sys/class/dmi/id/product_name
20BN001RJP