Логический сбой USB-порта в Ubuntu 22.04 (error -71)

Железо и ОС:

  • Ноутбук: Xiaomi Mi Notebook Pro 14 (2021)
  • ОС: Ubuntu 22.04
  • Мышь: SmartBuy SBM-288-K

Проблема

После частого использования гибернации перестал работать один из USB-портов. Мышь, подключённая к нему, не определяется. Остальные порты при этом продолжают работать.

На ноутбуке три внешних порта USB Type-C:

Порт Тип Состояние
1 Thunderbolt 4 ✅ Работает
2 USB 3.2 Gen 2 ✅ Работает
3 USB 3.2 Gen 2 ❌ Перестал работать

Диагностика

Список USB-контроллеров:

$ lspci | grep USB
00:0d.0 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller (rev 01)
00:0d.2 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0 (rev 01)
00:14.0 USB controller: Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller (rev 20)

При подключении мыши к проблемному порту в lsusb она не отображается. В списке видны только USB-шины и внутренние устройства: сенсор, Bluetooth, веб-камера.

$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 10a5:9200 FPC FPC Sensor Controller
Bus 003 Device 002: ID 1bcf:2cde Sunplus Innovation Technology Inc. XiaoMi USB 2.0 Webcam
Bus 003 Device 004: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Если подключить мышь к рабочему порту, она появляется в lsusb:

Bus 003 Device 006: ID 30fa:0300  USB OPTICAL MOUSE

В логах ядра появилась ошибка: usb 3-2: device descriptor read/64, error -71

$ journalctl -f -k
Oct 09 07:59:33 mi-pro kernel: warning: `ThreadPoolForeg' uses wireless extensions which will stop working for Wi-Fi 7 hardware; use nl80211
Oct 09 08:02:10 mi-pro kernel: usb 3-2: new low-speed USB device number 6 using xhci_hcd
Oct 09 08:02:11 mi-pro kernel: usb 3-2: device descriptor read/64, error -71

Перезагрузка системы не помогла, хотя загрузка при этом проходит корректно, и ошибок в /var/log/boot.log нет. Проблема сохраняется только на одном конкретном порту.

Решение

В моём случае всё оказалось просто. Ошибку устранил холодный запуск:

  1. Полностью выключил ноутбук.
  2. Отключил зарядное устройство.
  3. Включил ноутбук обычным способом.

После этого проблемный USB-порт снова заработал.

Как я понял, контроллер физически оказался исправен, но один порт остался в сбойном логическом состоянии, которое переживает обычную перезагрузку. Перезагрузка в свою очередь не снимает питание со всех контроллеров и после частых гибернаций они могут остаться в некорректном состоянии.