Broadcom bluetooth fun on a Thinkpad Tablet 8.

Kernels & Hardware, configuring network, installing services

Broadcom bluetooth fun on a Thinkpad Tablet 8.

Postby cataphract » 2018-06-04 07:07

Hi everyone,

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


BCM.hcd files

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.

Both of these give the same error as with no BCM.hcd file. In fact, if the first file is present, even the h4 protocol stops working. dmesg also gives no extra information when either file is in place.

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.

System Info

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


Thanks a lot :-)
cataphract
 
Posts: 1
Joined: 2018-06-04 06:03

Return to System configuration

Who is online

Users browsing this forum: No registered users and 4 guests

fashionable