Hi, I'm running Linux on a ThinkPad T14s AMD Gen 1 and I'm having problems with its Bluetooth adapter. The adapter is a Foxconn / Hon Hai, USB ID 0489:e0cd, and it uses the Mediatek MT7921 driver. Sometimes it just works but often if I suspend the laptop and come back it stops working. This also happens when I use the RF kill switch. The kernel errors vary a bit depending on the moment but it's usually a combination of these: kernel: Bluetooth: hci0: Failed to get device id (-108) kernel: Bluetooth: hci0: Failed to get fw version (-108) kernel: bluetooth hci0: firmware: direct-loading firmware mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin kernel: Bluetooth: hci0: Execution of wmt command timed out kernel: Bluetooth: hci0: Failed to send wmt patch dwnld (-110) kernel: Bluetooth: hci0: Failed to set up firmware (-110) kernel: Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported. Interestingly I noticed that if I try to use it on a Linux VM (using USB passthrough) it generally works better, even when it's not working on the host and the guest and the host are running the same OS and kernel version. Still it fails sometimes, although the error messages tend to be a bit different: kernel: usbcore: registered new interface driver btusb kernel: Bluetooth: hci0: Device setup in 153593 usecs kernel: Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported. kernel: Bluetooth: hci0: Opcode 0x c03 failed: -110 kernel: Bluetooth: hci0: Failed to read MSFT supported features (-110) kernel: Bluetooth: hci0: AOSP get vendor capabilities (-110) (I also tried the adapter with a Windows VM, again using USB passthrough, but here it works perfectly fine) Back to the host I found out that resetting the adapter using "usb_modeswitch -R -v 0489 -p e0cd" sometimes is enough to bring the adapter back to life and make it work. But this doesn't always succeed, and at some point I end up in a situation like this: kernel: xhci_hcd 0000:06:00.4: xHCI host not responding to stop endpoint command kernel: xhci_hcd 0000:06:00.4: xHCI host controller not responding, assume dead kernel: xhci_hcd 0000:06:00.4: HC died; cleaning up Sometimes I can get out of it with this: $ echo 0000:06:00.4 > /sys/bus/pci/drivers/xhci_hcd/unbind $ echo 0000:06:00.4 > /sys/bus/pci/drivers/xhci_hcd/bind All this has been happening since I got the laptop, but I'm testing it now with Linux 6.3.3 and the problem is still there. The end result is that I basically cannot rely on the USB adapter so I have it almost always disabled. A bit more information about the system: $ lspci -nn | grep USB 02:00.4 USB controller [0c03]: Realtek Semiconductor Co., Ltd. RTL811x EHCI host controller [10ec:816d] (rev 0e) 05:00.0 USB controller [0c03]: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller [1912:0015] (rev 02) 06:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639] 06:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639] $ lsusb Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 006 Device 003: ID 0489:e0cd Foxconn / Hon Hai Wireless_Device Bus 006 Device 002: ID 06cb:00bd Synaptics, Inc. Prometheus MIS Touch Fingerprint Reader Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 002 Device 002: ID 04f2:b6cb Chicony Electronics Co., Ltd Integrated Camera Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
What kernel version did you have this issue? If it is regression, what is last working version?
I have always had this problem with this computer. Linux got support for this Bluetooth adapter in 5.14 if I'm not wrong (64832df2ac05) and I probably tried it for the first time with 5.15.3. I never saw it working fine, and I have tried lots of kernels and firmware versions since then. The most recent one was 6.3.3 as I mentioned in the bug report. Since I can make it work with a Windows VM using USB passthrough I assume that there's some problem with the initialization of the adapter, the HCI or something like that, but that's all I can guess with my limited knowledge of USB. To make it clear: when I talk about using a VM I'm talking about the scenario where 1) I cannot use Bluetooth in my Linux system because of one of the errors that I mentioned earlier ("hci0: Failed to get device id (-108)"). The device is not detected by the Bluetooth stack although it does appears in lsusb. 2) I launch a Windows VM using QEMU right away, without rebooting the computer or doing anything else. The BT adapter works in that VM always. 3) If I launch a Linux VM instead it tends to work, not always in this case but I have a higher success rate than if I remove and reload the btusb module on the host.
One more thing: when it's working on Linux it seems to be reliable, at least I have never had the situation where I'm listening to music and it suddenly stops working. In my experience the problem appears when the adapter is disabled and then re-enabled, either when the laptop is suspended or with the RF kill switch.
i got similar issue on ThinkPad T14 Gen 2a i turned it off, slapped the machine twice then it went back working. not completely sure if it's a software issue but it is happening. when it stops working it keeps not working. until it come back.