Bluetooth USB adapter on PYNQ-Z2

Hi everyone!!

This is my setup:

  • PYNQ-Z2 board
  • Image v2.6 (I cannot use the latest because the FINN framework installation is not compatible with it)
  • ASUS USB-BT400 Bluetooth Adapter

I need the Bluetooth connection to receive some data stream to be furtherly processed on the board. When I plug the USB-BT400 adapter, the output of the dmesg command is the following:

[   61.976525] usb 1-1: new full-speed USB device number 2 using ci_hdrc
[   62.183135] usb 1-1: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
[   62.183155] usb 1-1: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping

However, the expected output would be something like the following, which I found on the proper USB-BT400 GitHub installation guide:

[ 4507.934913] usb 2-1.6: new full-speed USB device number 6 using ehci-pci
[ 4508.046595] usb 2-1.6: New USB device found, idVendor=0b05, idProduct=17cb
[ 4508.046599] usb 2-1.6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4508.046600] usb 2-1.6: Product: BCM20702A0
[ 4508.046602] usb 2-1.6: Manufacturer: Broadcom Corp
[ 4508.046603] usb 2-1.6: SerialNumber: 5CF3709911C3
[ 4508.157541] Bluetooth: hci0: BCM: chip id 63
[ 4508.158516] Bluetooth: hci0: BCM: features 0x07
[ 4508.174532] Bluetooth: hci0: BCM20702A
[ 4508.175548] Bluetooth: hci0: BCM20702A1 (001.002.014) build 0000
[ 4508.175568] bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0b05-17cb.hcd failed with error -2
[ 4508.175571] Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0b05-17cb.hcd not found

My problem is not the last error (since that is only a matter of installing the proper driver) but instead, the running Linux image does not recognize the adapter as a Bluetooth device. It is worth mentioning that the device is generally recognized by the system:

xilinx@pynq:~$ lsusb
Bus 001 Device 002: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Looking for a solution all over the internet, I found out that the problem is the missing btusb kernel module in the current image:

xilinx@pynq:~$ modprobe btusb
modprobe: FATAL: Module btusb not found in directory /lib/modules/5.4.0-xilinx-v2020.1

My question is, how can I get the btusb module added to my Linux image? I went all over the official documentation and forum but Bluetooth is hardly mentioned. I tried adding it from already compiled modules (bricking the image :slight_smile:). I also tried cross-compiling it (unsuccessfully), and by compiling it on-board which was unsuccessful again since the compiler could not find the Linux kernel headers, that I’ve not been able to retrieve.

Hopefully I’ve been clear enough, thank you in advance for everyone reading this!

1 Like