On Mon, 10 Jul 2023 at 17:14, Johan Hovold <johan@xxxxxxxxxx> wrote: > > On Fri, Jul 07, 2023 at 07:12:35PM +0530, Amit Pundir wrote: > > On Fri, 7 Jul 2023 at 16:37, Johan Hovold <johan@xxxxxxxxxx> wrote: > > > > That's odd. You should still see the above messages also with this patch > > > applied, but you may now need to provide a valid device address before > > > being able to use device in case the bootloader has not provided one > > > (e.g. using btmgmt). > > > > Sorry for the confusion, I missed the part where I do see these > > messages when the kernel module is loaded but the direct firmware > > loading fails. > > > > Bluetooth: hci0: setting up wcn399x > > Bluetooth: hci0: QCA Product ID :0x0000000a > > Bluetooth: hci0: QCA SOC Version :0x40010214 > > Bluetooth: hci0: QCA ROM Version :0x00000201 > > Bluetooth: hci0: QCA Patch Version:0x00000001 > > Bluetooth: hci0: QCA controller version 0x02140201 > > Bluetooth: hci0: QCA Downloading qca/crbtfw21.tlv > > bluetooth hci0: Direct firmware load for qca/crbtfw21.tlv failed with error -2 > > Bluetooth: hci0: QCA Failed to request file: qca/crbtfw21.tlv (-2) > > Bluetooth: hci0: QCA Failed to download patch (-2) > > Bluetooth: hci0: QCA preshutdown_cmd failed (-56) > > > > This happens in all the cases (working and non-working BT) because > > filesystem is not mounted by that time. I'm running AOSP and all the > > kernel modules get loaded from a ramdisk. But in the working case, the > > firmware loading kicks in again later in the boot process and BT gets > > initiazed.. > > > > With this patch, after the first attempt to load the firmware fails, > > the firmware loading doesn't kick-in again. Also even if I keep the > > firmware in ramdisk then the direct firmware loading from ramdisk > > happens but BT still doesn't work > > https://bugs.linaro.org/attachment.cgi?id=1148. > > So everything appears to work as intended. First, the firmware needs to > be in your initramfs if you want to avoid that initial fw load failure. > > And after that you need to provide a valid device address as these > devices ship without one. > > Once you set the address, the firmware should be loaded if it hasn't > been already. Thanks a lot for explanation Johan. I just booted up Debian on DB845c and btmgmt works as you pointed out above. root@linaro-gnome:~# root@linaro-gnome:~# uname -a Linux linaro-gnome 6.5.0-rc1 #1 SMP PREEMPT Mon Jul 10 15:42:50 IST 2023 aarch64 GNU/Linux root@linaro-gnome:~# root@linaro-gnome:~# btmgmt public-addr 01:02:03:04:05:06 [ 165.708146] Bluetooth: MGMT ver 1.22 hci0 Set Public Address complete, options: [ 165.715275] Bluetooth: hci0: setting up wcn399x root@linaro-gnome:~# [ 165.868755] Bluetooth: hci0: QCA Product ID :0x0000000a [ 165.874272] Bluetooth: hci0: QCA SOC Version :0x40010214 [ 165.879758] Bluetooth: hci0: QCA ROM Version :0x00000201 [ 165.885226] Bluetooth: hci0: QCA Patch Version:0x00000001 [ 165.903506] Bluetooth: hci0: QCA controller version 0x02140201 [ 165.909424] Bluetooth: hci0: QCA Downloading qca/crbtfw21.tlv [ 166.794992] Bluetooth: hci0: QCA Downloading qca/crnv21.bin [ 166.870882] Bluetooth: hci0: QCA setup on UART is completed > > > > Are there any error messages in the log when running with this patch? > > > > I don't see any relevant error message in dmesg. I'll check if I can > > find a command line BT debug tool which I can use on AOSP for > > debugging. There used to be a few hci command line tools, when I > > looked into it a few years ago. Not sure if they are still around and > > useful. > > Yeah, I'm not sure how you set the device address with the Android > stack, but there must be some way as there are other bluetooth > controllers out there which similarly need a valid address before they > can be used. > I'll look if I can reuse/simplify "btmgmt public-addr" command on Android or find an equivalent tool to do that. Regards, Amit Pundir