Recently, I have been experiencing odd Bluetooth issues with the Thinkpad T490 laptop running Arch Linux. Namely, Bluetooth hardware would stop functioning after some time, with the following dmesg(1) output:
[32352.227242] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[32352.228219] Bluetooth: hci0: Device revision is 2
[32352.228220] Bluetooth: hci0: Secure boot is enabled
[32352.228220] Bluetooth: hci0: OTP lock is enabled
[32352.228221] Bluetooth: hci0: API lock is enabled
[32352.228221] Bluetooth: hci0: Debug lock is disabled
[32352.228222] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[32352.228374] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[32354.546949] Bluetooth: hci0: command 0xfc09 tx timeout
[32362.653505] Bluetooth: hci0: Failed to send firmware data (-110)
[32362.653620] Bluetooth: hci0: Intel reset sent to retry FW download
The Bluetooth hardware in question is Intel Corp. Bluetooth 9460/9560 Jefferson Peak
and has an USB ID of 8087:0aaa
. This information can be
determined with the lsusb(8) tool:
user@strthinpad ~ # lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 06cb:00bd Synaptics, Inc. Prometheus MIS Touch Fingerprint Reader
Bus 001 Device 003: ID 13d3:56bc IMC Networks Integrated Camera
Bus 001 Device 048: ID 0c45:5004 Microdia Redragon Mitra RGB Keyboard
Bus 001 Device 049: ID 248a:8367 Maxxter Telink Wireless Receiver
Bus 001 Device 047: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 050: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Quick solution
It appears that ‘‘fixing’’ this issue, without power cycling the laptop, is to
unload and load the btusb
Linux kernel module:
root@strthinpad ~ # rmmod btusb
root@strthinpad ~ # modprobe btusb
We can confirm that the Bluetooth hardware is operational afterwards:
[34050.238340] usbcore: deregistering interface driver btusb
[34055.394408] usbcore: registered new interface driver btusb
[34055.395590] Bluetooth: hci0: Bootloader revision 0.1 build 42 week 52 2015
[34055.396686] Bluetooth: hci0: Device revision is 2
[34055.396690] Bluetooth: hci0: Secure boot is enabled
[34055.396691] Bluetooth: hci0: OTP lock is enabled
[34055.396692] Bluetooth: hci0: API lock is enabled
[34055.396693] Bluetooth: hci0: Debug lock is disabled
[34055.396694] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[34055.396894] Bluetooth: hci0: Found device firmware: intel/ibt-17-16-1.sfi
[34056.993486] Bluetooth: hci0: Waiting for firmware download to complete
[34056.993749] Bluetooth: hci0: Firmware loaded in 1561861 usecs
[34056.993817] Bluetooth: hci0: Waiting for device to boot
[34057.007957] Bluetooth: hci0: Device booted in 13872 usecs
[34057.007995] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-17-16-1.ddc
[34057.009888] Bluetooth: hci0: Applying Intel DDC parameters completed
[34057.012918] Bluetooth: hci0: Firmware revision 0.1 build 168 week 48 2020
[34057.071213] Bluetooth: hci0: No such LE device 00:0a:45:0c:1a:8b (0x0)
Well then.
Proper fix?
Requires further kernel or hardware debugging.