Enable Bluetooth from a custom image

Good Day,

I am trying to enable bluetooth using custom image with quickboot image in my iMX6ULL. I got initd for bluetooth, dbus, and connmand. However, I am still missing some other pieces for totally supporting bluetooth. I have read bluetooth information in the toradex community. I have also read information about the demo yocto image recipes. Sad to say, I am lost right now as to which direction should I take to move forward. I am hoping someone could guide me to the right direction.

I don’t know what I am missing so I will provide as much information as I can here.

Kernel snippet at boot-up is this:

[    0.178066] Bluetooth: HCI device and connection manager initialized
[    0.178094] Bluetooth: HCI socket layer initialized
[    0.178113] Bluetooth: L2CAP socket layer initialized
[    0.178195] Bluetooth: SCO socket layer initialized
[    0.672208] Bluetooth: HCI UART driver ver 2.3
[    0.672224] Bluetooth: HCI UART protocol H4 registered
[    0.672234] Bluetooth: HCI UART protocol BCSP registered
[    0.672242] Bluetooth: HCI UART protocol LL registered
[    0.672251] Bluetooth: HCI UART protocol ATH3K registered
[    0.672259] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    0.672495] Bluetooth: HCI UART protocol Intel registered
[    0.672679] Bluetooth: HCI UART protocol Broadcom registered
[    0.672690] Bluetooth: HCI UART protocol QCA registered
[    0.672700] Bluetooth: HCI UART protocol AG6XX registered
[    0.672710] Bluetooth: HCI UART protocol Marvell registered
[    0.672720] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[    0.834335] Bluetooth: RFCOMM TTY layer initialized
[    0.834372] Bluetooth: RFCOMM socket layer initialized
[    0.834420] Bluetooth: RFCOMM ver 1.11
[    0.834445] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    0.834454] Bluetooth: BNEP filters: protocol multicast
[    0.834475] Bluetooth: BNEP socket layer initialized
[    0.834485] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    0.834503] Bluetooth: HIDP socket layer initialized
[    0.868081] Bluetooth: vendor=0x2df, device=0x9142, class=255, fn=2
[    1.190560] Bluetooth: Starting self testing
[    1.332902] Bluetooth: ECDH test passed in 138975 usecs
[    1.334552] Bluetooth: SMP test passed in 139 usecs
[    1.334616] Bluetooth: Finished self testing
[   64.490140] Bluetooth: request_firmware(firmware) failed, error code = -11
[   64.497076] Bluetooth: Failed to download firmware!
[   64.502109] Bluetooth: Downloading firmware failed!

I am not sure if the “request_firmware failed” message is something that I should be concerned.

In our tiny-poky, I got /sys/class/bluetooth but we don’t see hci0:

root@colibri-imx6ull:/sys/class/bluetooth# ls
root@colibri-imx6ull:/sys/class/bluetooth#

I was hoping that someone can help me figure out why hci0 is not here.

These are the steps I used to enable/start bluetooth:

root@colibri-imx6ull:~# /etc/init.d/bluetooth start
Starting bluetooth: bluetoothd.

    root@colibri-imx6ull:/etc/init.d# /etc/init.d/dbus start
    root@colibri-imx6ull:/etc/init.d# connmand -n &
root@colibri-imx6ull:/etc/init.d# connmand[179]: Connection Manager version 1.34
connmand[179]: System hostname is colibri-imx6ull
connmand[179]: No IPv6 support
connmand[179]: No IPv6 support
connmand[179]: Cannot create /var/run/connman/resolv.conf falling back to /etc/resolv.conf
connmand[179]: lo {newlink} index 1 address 00:00:00:00:00:00 mtu 65536
connmand[179]: lo {newlink} index 1 operstate 0 
connmand[179]: lo {newlink} index 1 address 00:00:00:00:00:00 mtu 65536
connmand[179]: lo {newlink} index 1 operstate 0 
connmand[179]: can0 {newlink} index 2 address 00:00:00:00:00:00 mtu 16
connmand[179]: can0 {newlink} index 2 operstate 2 
connmand[179]: can1 {newlink} index 3 address 00:00:00:00:00:00 mtu 16
connmand[179]: can1 {newlink} index 3 operstate 2 
connmand[179]: eth0 {create} index 4 type 1 
connmand[179]: eth0 {update} flags 4098 
connmand[179]: eth0 {newlink} index 4 address 9A:83:46:CB:21:1C mtu 1500
connmand[179]: eth0 {newlink} index 4 operstate 2 
connmand[179]: Adding interface eth0 [ ethernet ]
connmand[179]: eth0 {update} flags 36867 
connmand[179]: eth0 {newlink} index 4 address 9A:83:46:CB:21:1C mtu 1500
connmand[179]: eth0 {newlink} index 4 operstate 2 
root@colibri-imx6ull:/etc/init.d# connmanctl enable bluetooth

Error bluetooth: Method "SetProperty" with signature "sv" on interface "net.connman.Technology" doesn't exist

root@colibri-imx6ull:/etc/init.d# hciconfig
root@colibri-imx6ull:/etc/init.d#

I am hoping that someone would be kind enough to point to me the right direction to move forward in supporting bluetooth in my custom quickboot image.

Thank you so much for your time.

Kind Regards,

Hello @Roi and Welcome to the Toradex Community!

Could you provide the version of the Hardware (including carrier Board) and Software of your module?

I am trying to enable bluetooth using custom image with quickboot image in my iMX6ULL

Did you flash our regular Bsp 2.8b6? Is enabling blue-tooth working with the regular Bsp?

Could you share local.conf of your custom image?

Thanks and Best regards,
Jaski

@jaski.tx Good Day! Thank you for taking the time for this. We actually have resolve this.

BT download failure was fixed by adding the necessary BT files in our /lib directory
hci0 was fixed by changing our dtb file.

After that, run conmman daemon. Then connmanctl will run smoothly.

Perfect that it works. Thanks for the feedback.