因此,我上周使用zypper dist-upgrade
.更新之前运行良好。更新后,内核开始每 4 秒向终端发送一次垃圾邮件。这使得终端接近无法使用的,因为用户输入或任何控制台输出被一分为二并分成多行。这是一个dmesg | grep | tail
片段:
[ 350.602656] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
[ 354.682627] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
[ 358.758627] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
只有两个设备通过 USB 连接——键盘和鼠标——并且都工作正常。 USB 地址可以更改 - 除了 usb2-port2 之外,有时还会更改为 usb4-port2 或 usb3-port2(如何将这些名称与 lsusb 输出关联起来 - 请参阅底部)。
在更新过程中,内核从4.20更改为5.5。当通过 grub 高级选项使用 4.20 内核引导时,不会出现这些消息。 Windows 7 安装也不会显示任何 USB 设备或集线器的任何问题。
搜索让我相信这是由于这个内核提交造成的:USB:处理集线器恢复时的热重置端口请求。乌班图解决通过恢复此提交来解决相同的问题,但我找不到 OpenSuSe 中提到的它错误跟踪器或在论坛中。
我该如何阻止这些消息?理想的解决方案是快速、非侵入性且易于恢复。手动编译和安装内核是最后的手段。
这是同一启动中的 lsusb -t 输出:
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
|__ Port 3: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 5: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 5: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
sudo dmesg -n1
给出空的输出。
lsusb -vv
显示错误资源的以下内容(usb4-port2
在此引导期间)
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 9 Hub
bDeviceSubClass 0
bDeviceProtocol 3
bMaxPacketSize0 9
idVendor 0x1d6b Linux Foundation
idProduct 0x0003 3.0 root hub
bcdDevice 5.05
iManufacturer 3 Linux 5.5.6-1-default xhci-hcd
iProduct 2 (error)
iSerial 1 0000:00:14.0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x001f
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
bMaxBurst 0
can't get hub descriptor, LIBUSB_ERROR_TIMEOUT (Resource temporarily unavailable)
can't get debug descriptor: Resource temporarily unavailable
答案1
发行版应该保留旧的(较旧的)内核,启动最后一个有效的内核。
报告错误!也许在为报告编译数据后,卸载这个恶棍。这样下一个就会取代它的位置。
尝试下一个内核版本。啊,玩弄发行版的实验性滚动版本的乐趣。