Логический сбой 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 нет. Проблема сохраняется только на одном конкретном порту.
Решение
В моём случае всё оказалось просто. Ошибку устранил холодный запуск:
- Полностью выключил ноутбук.
- Отключил зарядное устройство.
- Включил ноутбук обычным способом.
После этого проблемный USB-порт снова заработал.
Как я понял, контроллер физически оказался исправен, но один порт остался в сбойном логическом состоянии, которое переживает обычную перезагрузку. Перезагрузка в свою очередь не снимает питание со всех контроллеров и после частых гибернаций они могут остаться в некорректном состоянии.