kernel报错usb read/64 error -110卡很长时间

这个类别正好概括了当前的问题:“内核与硬件”

我使用的是一台组装笔记本 *(无法检修)*

最近 kernel 总是报错 usb x-x: device descriptor read/64, error -110 并且会因此卡1分钟左右 *(在tg群内有目共睹kernel 73s)*

这个问题已经在 telegram archlinux-cn 群内讨论了,目前为止暂无解决方案,因此打算发布到forum上尝试慢慢解决

并且这台设备在BIOS开启 USB Debug 后kernel前半段就不卡了 *(虽然还是在报错)*

且这台设备因此无法使用蓝牙

以下是部分日志 *(开启 USB Debug 后)*:

sudo dmesg | grep error

[   17.067518] usb 1-1.6: device descriptor read/64, error -110
[   32.941427] usb 1-1.6: device descriptor read/64, error -110
[   48.811410] usb 1-1.6: device descriptor read/64, error -110
[   64.673392] usb 1-1.6: device descriptor read/64, error -110
[   71.167419] usb 1-1.6: device not accepting address 7, error -32
[   76.799399] usb 1-1.6: device not accepting address 8, error -32
[  944.299551] usb 1-1.6: device descriptor read/64, error -110
[  960.162447] usb 1-1.6: device descriptor read/64, error -110
[  976.034428] usb 1-1.6: device descriptor read/64, error -110
[  991.906481] usb 1-1.6: device descriptor read/64, error -110
[  998.399479] usb 1-1.6: device not accepting address 13, error -32
[ 1004.031546] usb 1-1.6: device not accepting address 14, error -32

lsusb (开启Debug后明显比以往少了两三个)

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 009: ID 3151:3020 YICHIP Wireless Device
Bus 001 Device 010: ID 0bda:58c2 Realtek Semiconductor Corp. Integrated Webcam HD

usb-devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.16
S:  Manufacturer=Linux 6.16.8-arch3-1 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 8
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=8000 Rev=00.04
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  9 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=3151 ProdID=3020 Rev=00.02
S:  Manufacturer=YICHIP
S:  Product=Wireless Device
S:  SerialNumber=b120300001
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

T:  Bus=01 Lev=02 Prnt=09 Port=04 Cnt=01 Dev#= 10 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0bda ProdID=58c2 Rev=39.18
S:  Manufacturer=CNFCH41J441060005292
S:  Product=Integrated_Webcam_HD
S:  SerialNumber=0x0001
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=4ms
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo

尝试 usbreset 所有usb设备:

/dev/bus/usb
|- 001
   |- 001
   |- 002
   |- 003
   |- 004

都将报错 No such device found

你们也看到 dmesg 中的 usb 1-1.6 了吧,那让我们看一下 /sys/bus/usb/drivers/usb

bind  uevent  unbind  1-1  1-1.3  1-1.5  usb1

这里根本没有 usb 1-1.6 (我对这方面不懂,有错误请您及时指出)

这台组装本越来越散架了

从原本的触控板抽搐、失效 再到摄像头丢失颜色 *(黑白)*再到背后盖子松懈 再到光驱松懈,我越来越担忧了

如果还需要提供更多内容,我一定会尽快回复的 *(具体速度凭kernel加载速度)*

如果真的无法修复,那我就有理由更换设备了(bushi

什么时候开始发现这个问题的,是硬件问题还是内核问题,降级内核版本能解决吗?

大概是从上个月26日发现的,在以往和Windows环境下并没有插入U盘等待时间过长的情况

但据tg archlinux-cn群友所说大概率还是硬件问题

我顺便找到了上次运行 systemd-analyze 的结果:

Startup finished in 8.057s (firmware) + 4.075s (loader) + 1min 21.169s (kernel) + 6.024s (userspace) = 1min 39.326s

更换 linux-lts 内核后并未解决该问题,还是会有这样的情况

现在关掉了 USB Debug,来看一下部分日志:

lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 003: ID 3151:3020 YICHIP Wireless Device
Bus 002 Device 004: ID 0bda:58c2 Realtek Semiconductor Corp. Integrated Webcam HD
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

usb-devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 9
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.12
S:  Manufacturer=Linux 6.12.49-1-lts xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.12
S:  Manufacturer=Linux 6.12.49-1-lts ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 8
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=8000 Rev=00.04
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms

T:  Bus=02 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  3 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=3151 ProdID=3020 Rev=00.02
S:  Manufacturer=YICHIP
S:  Product=Wireless Device
S:  SerialNumber=b120300001
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=2ms

T:  Bus=02 Lev=02 Prnt=03 Port=04 Cnt=01 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0bda ProdID=58c2 Rev=39.18
S:  Manufacturer=CNFCH41J441060005292
S:  Product=Integrated_Webcam_HD
S:  SerialNumber=0x0001
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=4ms
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 4
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=06.12
S:  Manufacturer=Linux 6.12.49-1-lts xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
/usr/bin/usb-devices: 第 103 行:printf: : 无效的数字
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

sudo dmesg | grep error 能发现这些usb报错都是前半段

[   16.080531] usb 1-6: device descriptor read/64, error -110
[   31.653856] usb 1-6: device descriptor read/64, error -110
[   47.440531] usb 1-6: device descriptor read/64, error -110
[   63.013859] usb 1-6: device descriptor read/64, error -110
[   69.063791] usb 1-6: device not accepting address 4, error -71
[   74.610461] usb 1-6: device not accepting address 5, error -71

尝试 usbreset 所有usb设备:

/dev/bus/usb
├── 001
│   └── 001
├── 002
│   ├── 001
│   ├── 002
│   ├── 003
│   └── 004
└── 003
    └── 001

继续报错 No such device found

这次 kernel 报错的是 usb 1-6 那就继续看一下 /sys/bus/usb/drivers/usb

bind  uevent  unbind  2-1  2-1.3  2-1.5  usb1  usb2  usb3

还是照旧没有

systemd-analyze

Startup finished in 9.029s (firmware) + 3.662s (loader) + 1min 14.829s (kernel) + 5.828s (userspace) = 1min 33.350s 
graphical.target reached after 5.828s in userspace.

蓝牙照旧无法使用

最好是降级到出现这个问题之前你正在用的内核(可以查看 pacman.log),因为 linux-lts 也有可能 backport 一些对此有影响的改动。

如果在 BIOS 关闭 USB Debug 的话,除了卡开机之外还有别的异常情况吗?蓝牙是什么时候开始不能用的,也是和卡开机一同出现的吗?另外再看看 lsusb -tvlsusb.py -i 以及 lspci -k 的输出。

不太清楚你说的“组装笔记本”是个什么形态,此前没听说过,它有哪些 USB 接口(包括外置和内置),方便拍个照吗?所有 USB 接口都能正常工作或者表现出一样的症状吗?

我买的笔记本也经常掉蓝牙和摄像头,经常是断开所有外接设备,包括网线和充电线。然后关机,长按电源键30s放静电就好了。

解决了,方法如下:

  1. 切换回 Win11 然后使用大约一周
  2. 在经过↑↑↓→↓→↑后就莫名其妙修复了

好吧不闹了(

现在并不会卡kernel了,也没有报错,所有的usb设备全都回来了

这已经变成了暂时无法复现的问题

所以只能等下次再出现再说吧…