2023-05-24 10:13:19

by Bagas Sanjaya

[permalink] [raw]
Subject: Fwd: Foxconn / Hon Hai Bluetooth adapter 0489:e0cd stops working on ThinkPad T14s AMD Gen1

Hi,

I notice a bug report on Bugzilla [1]. Quoting from it:

> 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
>

See bugzilla for the full thread.

The reporter said that the bluetooth adapter works well on Windows VM via
device passthrough, but not on Linux host.

Thanks.

[1]: https://bugzilla.kernel.org/show_bug.cgi?id=217475

--
An old man doll... just what I always wanted! - Clara