Bug 215187 - btintel: AX201: missing firmware ibt-19-16-0.sfi
Summary: btintel: AX201: missing firmware ibt-19-16-0.sfi
Status: RESOLVED UNREPRODUCIBLE
Alias: None
Product: Drivers
Classification: Unclassified
Component: Bluetooth (show other bugs)
Hardware: x86-64 Linux
: P1 normal
Assignee: linux-bluetooth@vger.kernel.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-12-01 11:06 UTC by Takahide Nojima
Modified: 2021-12-11 07:23 UTC (History)
2 users (show)

See Also:
Kernel Version: 5.16-rc3
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Takahide Nojima 2021-12-01 11:06:39 UTC
I was testing Linux-5.16-rc3 on my laptop with "Intel Corp AX201 Bluetooth".
After boot, I found the strange error message shown below.
---------------here----------
kernel: Bluetooth hci0: firmware: failed to load intel/ibt-19-16-0.sfi (-2)
---------------here----------
 After I checked git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git, I found the "ibt-19-16-0.sfi" was missing. Strangely the Bluetooth service of this kernel appeared to work fine, at least against my bt headphone, without this firmware.

 When I booted Linux-5.15.5 on the same laptop, I found the "ibt-19-0-4.sfi" was loaded. 

 This strange message is similar to the report
https://lore.kernel.org/linux-bluetooth/81eddb07-f346-c12a-345b-d929fd2edb10@googlemail.com/
but the linux/drivers/Bluetooth/btintel.c of 5.16-rc3 has already implemented the checker by "btintel_test_flag(hdev, INTEL_BOOTLOADER)". 

Does it show some bug? I would be grateful if someone could answer.
Comment 1 Takahide Nojima 2021-12-02 18:54:42 UTC
Hello,

 After I did some try and error, I suppose the version of Bluetooth firmware of AX201 depends on the version of iwlwifi firmware. Then I think this issue is simply missing the 'intel/ibt-19-16-0.sfi' in git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git.


 I let the Linux-5.16-rc3 load the latest iwlwifi firmware 'iwlwifi-QuZ-a0-hr-b0-67.ucode'. Then I found an error about missing the Bluetooth firmware in dmesg, as I reported before.

 Next, I let Linux-5.16-rc3 load the older firmware 'iwlwifi-QuZ-a0-hr-b0-63.ucode', then I found the Linux loaded successfully the Bluetooth firmware shown as below,
----------here-------------
kernel: Bluetooth hci0: firmware: direct-loading firmware intel/ibt-19-0-4.sfi
kernel: Bluetooth: hci0: Found device firmware: intel/ibt-19-0-4.sfi
----------here-------------
This message was the same as reported when I tested Linux-5.15.5.

 I have reported this to the intel support community. I'll wait for them to put the intel/ibt-19-16-0.sfi to git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git.

---
Takahide Nojima
Comment 2 Kiran 2021-12-06 07:19:59 UTC
Hi Takahide Nojima,

Could you please check with 22.80 version of firmware for AX201 ? One issue related to firmware version got fixed in below release

https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=142174abc58e4529d5c4ec410a955bf0885dbe6f

Thanks,
Kiran
Comment 3 Takahide Nojima 2021-12-08 17:16:26 UTC
Hi Kiran,

  I removed the whole /lib/firmware directory and put 22.80 to  /lib/firmware. I  booted again with 5.16-rc3.

 As a result, the kernel loaded "iwlwifi-Quiz-a0-hr-b0-63.ucode", but the kernel tried to load a different version of Bluetooth firmware than before. The kernel became to load "intel/ibt-19-16-0.sfi". Before this test, whenever the kernel loaded "iwlwifi-Quiz-a0-hr-b0-63.ucode", it try loading intel/ibt-19-0-4.sfi. I will dmesg of this time test as below.
-----here--------------
ernel: iwlwifi 0000:00:14.3: firmware: failed to load iwlwifi-QuZ-a0-hr-b0-67.ucode (-2)
kernel: iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-67.ucode failed with error -2
kernel: iwlwifi 0000:00:14.3: firmware: failed to load iwlwifi-QuZ-a0-hr-b0-66.ucode (-2)
kernel: iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-66.ucode failed with error -2
kernel: iwlwifi 0000:00:14.3: firmware: failed to load iwlwifi-QuZ-a0-hr-b0-65.ucode (-2)
kernel: iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-65.ucode failed with error -2
kernel: iwlwifi 0000:00:14.3: firmware: failed to load iwlwifi-QuZ-a0-hr-b0-64.ucode (-2)
kernel: iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-64.ucode failed with error -2
kernel: iwlwifi 0000:00:14.3: firmware: direct-loading firmware iwlwifi-QuZ-a0-hr-b0-63.ucode
kernel: iwlwifi 0000:00:14.3: api flags index 2 larger than supported by driver
kernel: iwlwifi 0000:00:14.3: TLV_FW_FSEQ_VERSION: FSEQ Version: 89.3.35.37
kernel: iwlwifi 0000:00:14.3: loaded firmware version 63.c04f3485.0 QuZ-a0-hr-b0-63.ucode op_mode iwlmvm
kernel: iwlwifi 0000:00:14.3: firmware: failed to load iwl-debug-yoyo.bin (-2)
kernel: Bluetooth: Core ver 2.22
kernel: NET: Registered PF_BLUETOOTH protocol family
kernel: Bluetooth: HCI device and connection manager initialized
kernel: Bluetooth: HCI socket layer initialized
kernel: Bluetooth: L2CAP socket layer initialized
kernel: Bluetooth: SCO socket layer initialized
kernel: iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6 AX201 160MHz, REV=0x354
kernel: bluetooth hci0: firmware: failed to load intel/ibt-19-16-0.sfi (-2)
-------------here--------------------

As written above, the kernel still failed to load intel/ibt-19-16-0.sfi because the 22.80 firmware tree doesn't have it.

 I guess basically  the 5.16-rc3 with "iwlwifi-Quiz-a0-hr-b0-63.ucode" supposes to load "intel/ibt-19-16-4.sfi"? The 22.80 firmware includes it. In other words, does the "ver->fw_revision" in "btintel.c" supposes to be 4 after the kernel with "iwlwifi-Quiz-a0-hr-b0-63.ucode" sends 0xfc05 to AX201?
Comment 4 Luiz Von Dentz 2021-12-08 22:02:09 UTC
(In reply to Takahide Nojima from comment #3)
> As written above, the kernel still failed to load intel/ibt-19-16-0.sfi
> because the 22.80 firmware tree doesn't have it.

Try renaming it then, I suspect that is because that file is missing but if I recall correctly this is just the firmware revision:

https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/tree/drivers/bluetooth/btintel.c#n1793

>  I guess basically  the 5.16-rc3 with "iwlwifi-Quiz-a0-hr-b0-63.ucode"
> supposes to load "intel/ibt-19-16-4.sfi"? The 22.80 firmware includes it. In
> other words, does the "ver->fw_revision" in "btintel.c" supposes to be 4
> after the kernel with "iwlwifi-Quiz-a0-hr-b0-63.ucode" sends 0xfc05 to AX201?

I don't think the wifi firmware has any relation to the bluetooth firmware, otherwise we would be loading just one firmware for both not each separately.
Comment 5 Takahide Nojima 2021-12-09 10:51:09 UTC
Hi Luiz,
>Try renaming it then

I copyed and renamed "intel/ibt-19-16-4.sfi" and "intel/ibt-19-16-4.ddc" to "intel/ibt-19-16-0.sfi" and "intel/ibt-19-16-0.ddc" respectively. After I rebooted 5.16-rc3 which has "iwlwifi-QuZ-a0-hr-b0-67.ucode", I found strange messages in dmesg.
-------------------here-----------------------
kernel: Bluetooth: Core ver 2.22
kernel: NET: Registered PF_BLUETOOTH protocol family
kernel: Bluetooth: HCI device and connection manager initialized
kernel: Bluetooth: HCI socket layer initialized
kernel: Bluetooth: L2CAP socket layer initialized
kernel: Bluetooth: SCO socket layer initialized
kernel: iwlwifi 0000:00:14.3: firmware: direct-loading firmware iwlwifi-QuZ-a0-hr-b0-67.ucode
kernel: iwlwifi 0000:00:14.3: api flags index 2 larger than supported by driver
kernel: iwlwifi 0000:00:14.3: TLV_FW_FSEQ_VERSION: FSEQ Version: 89.3.35.37
kernel: iwlwifi 0000:00:14.3: loaded firmware version 67.8f59b80b.0 QuZ-a0-hr-b0-67.ucode op_mode iwlmvm
kernel: iwlwifi 0000:00:14.3: firmware: failed to load iwl-debug-yoyo.bin (-2)
kernel: bluetooth hci0: firmware: direct-loading firmware intel/ibt-19-16-0.sfi
kernel: Bluetooth: hci0: Found device firmware: intel/ibt-19-16-0.sfi
kernel: Bluetooth: hci0: Boot Address: 0x24800
kernel: Bluetooth: hci0: Firmware Version: 125-46.21
kernel: iwlwifi 0000:00:14.3: Detected Intel(R) Wi-Fi 6 AX201 160MHz, REV=0x354
kernel: iwlwifi 0000:00:14.3: Detected RF HR B3, rfid=0x10a100
systemd[1]: Starting Bluetooth service...
kernel: iwlwifi 0000:00:14.3: base HW address: b0:a4:60:b4:69:96
bluetoothd[637]: Bluetooth daemon 5.61
systemd[1]: Started Bluetooth service.
systemd[1]: Reached target Bluetooth Support.
bluetoothd[637]: Starting SDP server
dbus-daemon[505]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.12' (uid=0 pid=637 comm="/usr/libexec/bluetooth/bluetoothd ")
kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3
kernel: Bluetooth: BNEP filters: protocol multicast
kernel: Bluetooth: BNEP socket layer initialized
bluetoothd[637]: Bluetooth management interface 1.21 initialized
kernel: iwlwifi 0000:00:14.3 wlp0s20f3: renamed from wlan0
NetworkManager[664]: <info>  [1639037359.3299] rfkill1: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:14.3/ieee80211/phy0/rfkill1) (driver iwlwifi)
NetworkManager[664]: <info>  [1639037359.3363] Loaded device plugin: NMBluezManager (/usr/lib/x86_64-linux-gnu/NetworkManager/1.32.12/libnm-device-plugin-bluetooth.so)
kernel: Bluetooth: hci0: command 0xfc01 tx timeout
bluetoothd[637]: src/profile.c:register_profile() :1.71 tried to register 00001108-0000-1000-8000-00805f9b34fb which is already registered
bluetoothd[637]: src/profile.c:register_profile() :1.71 tried to register 0000111f-0000-1000-8000-00805f9b34fb which is already registered
systemd[1]: Stopped target Bluetooth Support.
kernel: Bluetooth: hci0: FW download error recovery failed (-110)
kernel: Bluetooth: hci0: Bootloader revision 0.4 build 0 week 30 2018
kernel: Bluetooth: hci0: Device revision is 2
kernel: Bluetooth: hci0: Secure boot is enabled
kernel: Bluetooth: hci0: OTP lock is enabled
kernel: Bluetooth: hci0: API lock is enabled
kernel: Bluetooth: hci0: Debug lock is disabled
kernel: Bluetooth: hci0: Minimum firmware build 1 week 10 2014
kernel: bluetooth hci0: firmware: direct-loading firmware intel/ibt-19-0-4.sfi
kernel: Bluetooth: hci0: Found device firmware: intel/ibt-19-0-4.sfi
kernel: Bluetooth: hci0: Boot Address: 0x24800
kernel: Bluetooth: hci0: Firmware Version: 191-21.21
systemd[1]: Reached target Bluetooth Support.
systemd[724]: Reached target Bluetooth.
systemd[1209]: Reached target Bluetooth.
kernel: Bluetooth: hci0: Waiting for firmware download to complete
kernel: Bluetooth: hci0: Firmware loaded in 1578507 usecs
kernel: Bluetooth: hci0: Waiting for device to boot
kernel: Bluetooth: hci0: Device booted in 14827 usecs
kernel: bluetooth hci0: firmware: direct-loading firmware intel/ibt-19-0-4.ddc
kernel: Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-19-0-4.ddc
kernel: Bluetooth: hci0: Applying Intel DDC parameters completed
kernel: Bluetooth: hci0: Firmware revision 0.0 build 191 week 21 2021
--------------------here-----------------

 As wrote above,the kernel loaded "intel/ibt-19-16-0.sfi" at first,but fails to load, finally it loads "intel/ibt-19-0-4.sfi" successfully. And more strange, I rebooted this kernel several times, I found the kernel became not to load "intel/ibt-19-16-0.sfi" and load "intel/ibt-19-0-4.sfi" from the beginning of boot. I'm not sure why the kernel suddenly began to load "intel/ibt-19-0-4.sfi". Does someone let known to me why, please? I guess it could be that "btintel.c" lacks some important sequence to AX201, an Example for resetting the device, or some prerequisite process.

>I don't think the wifi firmware has any relation to the bluetooth firmware

 I wish the documents of the AX201 datasheet could show details.

Takahide Nojima
Comment 6 Takahide Nojima 2021-12-11 07:23:47 UTC
Hi all,

 After I renamed "ibt-19-16-4.*" to "ibt-19-16-0.*" and the kernel failed to load just once, I rebooted and switched off again and again until today. However, I've never seen the attempt of the kernel to try to load "ibt-19-16-0.*"  since that. The kernel came to load "ibt-19-0-4.*' at the beginning of boot.

 I guess that an internal failure in the AX201 caused my problem. I hypothesize that trial to load the wrong(broken) Bluetooth firmware caused an invocation of internal resetting to the AX201. After then, the AX201 became to return the correct version information to the "btintel" driver, and the kernel successfully loads the correct bt firmware, "ibt-19-0-4.*'.

 Whether my hypothesis is true or not, my problem appeared to solve. I will mark this thread as resolved.    

 Many thanks all,

Takahide Nojima

Note You need to log in before you can comment on or make changes to this bug.