zephyrproject-rtos / zephyr

Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
https://docs.zephyrproject.org
Apache License 2.0
11k stars 6.7k forks source link

Looking to attach external USB Bluetooth controller to Rpi (running Android-14) as host BT adapter #73490

Open skanda-coder opened 6 months ago

skanda-coder commented 6 months ago

Hello,

I am working on Raspberry Pi 5 with Android-14 flashed on it. By default, the on-device BT chip is added as the Bluetooth adapter : 01-01 00:00:12.375 0 0 I Bluetooth: hci0: BCM: chip id 107 01-01 00:00:12.376 0 0 I pci 0000: 00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring 01-01 00:00:12.380 0 0 I Bluetooth: hci0: BCM: features 0x2f 01-01 00:00:12.393 0 0 I Bluetooth: hci0: BCM4345C0 01-01 00:00:12.397 0 0 I Bluetooth: hci0: BCM4345C0 (003.001.025) build 0000 01-01 00:00:12.403 0 0 I Bluetooth: hci0: BCM4345C0 'brcm/BCM4345C0.hcd' Patch

Now I am looking to replace or add another external device as a Bluetooth adapter (Nordic nRF52840 configured as a Bluetooth controller and attached to Rpi5 via USB). Right now this is detected as a USB device:

(Note: I have programmed Nordic nRF52840 with zephyr/samples/bluetooth/hci_usb image) 01-01 00:00:13.444 0 0 I usb 3-1 : New USB device found, idVendor=2fe3, idProduct=000b, bcdDevice= 3.05 01-01 00:00:13.452 0 0 I usb 3-1 : New USB device strings: Mfr=1, Product=2, SerialNumber=3 01-01 00:00:13.452 0 0 I usb 3-1 : Product: USB-DEV 01-01 00:00:13.467 0 0 I usb 3-1 : Manufacturer: ZEPHYR

and hence the new connection is managed by the USB host manager : 05-29 06:23:44.634 725 944 D UsbHostManager: USB device attached: vidpid 2fe3:000b mfg/product/ver/serial ZEPHYR/USB-DEV/3.05/24FBA3DAF54721C1 hasAudio/HID/Storage: false/false/false 05-29 06:23:44.641 725 944 D UsbHostManager: Added device UsbDevice[mName=/dev/bus/usb/003/002,mVendorId=12259,mProductId=11,mClass=0,mSubclass=0,mProtocol=0,mManufacturerName=ZEPHYR,mProductName=USB-DEV,mVersion=3.05,mSerialNumberReader=com.android.server.usb.UsbSerialReader@c2fd7ab, mHasAudioPlayback=false, mHasAudioCapture=false, mHasMidi=false, mHasVideoCapture=false, mHasVideoPlayback=false, mConfigurations=[

But the host Rpi5 doesn't detect another Bluetooth adapter.

In linux, I see 'bluetoothctrl' or 'hciattach' commands, etc that can control the attached Bluetooth adapters.

However in Android I came across a configuration file "packages/modules/Bluetooth/system/conf/bt_did.conf" that seems to manage handling of new Bluetooth devices and register with the Bluetooth Service Discovery Protocol (SDP). But this is not enough to configure the new adapter.

Is there any better way of adding a USB Bluetooth controller as the host Bluetooth adapter in Android?

github-actions[bot] commented 6 months ago

Hi @skanda-coder! We appreciate you submitting your first issue for our open-source project. 🌟

Even though I'm a bot, I can assure you that the whole community is genuinely grateful for your time and effort. 🤖💙