modprobe: FATAL: Модуль xhci_pci встроен.

Вопрос или проблема

практически мой USB умирает, и я не знаю, как его перезагрузить без перезагрузки
до ядра 6.12 вы бы просто сделали

sudo modprobe -r xhci_pci

затем

sudo modprobe xhci_pci

и usb снова заработал бы

но теперь он встроен. Как перезагрузить его?
modprobe: FATAL: Module xhci_pci is builtin.

[1338075.049450] usb 5-2.1.1.1: USB отключен, номер устройства 13
[1338075.336478] usb 5-2.1.1.3: USB отключен, номер устройства 14
[1338075.654966] usb 5-2.1.1: сброс устройства USB на полной скорости номер 107 с использованием xhci_hcd
[1338082.210867] xhci_hcd 0000:05:00.3: xHCI-хост не отвечает на команду остановки конечной точки
[1338082.226886] xhci_hcd 0000:05:00.3: контроллер xHCI-хоста не отвечает, предполагаем смерть
[1338082.226959] xhci_hcd 0000:05:00.3: HC умер; очистка
[1338082.227428] usb 5-2.1.1: USB отключен, номер устройства 107
[1338082.227471] usb 5-1: USB отключен, номер устройства 2
[1338082.227477] usb 5-1.3: USB отключен, номер устройства 4
[1338082.227662] cdc_ether 5-1.3:2.0 enx62b986afb014: отмена регистрации 'cdc_ether' usb-0000:05:00.3-1.3, устройство CDC Ethernet
[1338082.265564] usb 5-1.4: USB отключен, номер устройства 5
[1338082.333565] usb 5-2.1.3: USB отключен, номер устройства 86
[1338082.559619] usb 5-2: USB отключен, номер устройства 3
[1338082.559633] usb 5-2.1: USB отключен, номер устройства 82
[1338082.643997] usb 5-2.1.4: USB отключен, номер устройства 84
[1338082.708358] usb 5-2.2: USB отключен, номер устройства 6

даже выход из гибернации и повторное включение компьютера приводит к неработающему usb, он работает в bios и т. д., но после загрузки из гибернации он снова не работает

Ответ или решение

В современных версиях ядра Linux, начиная с версии 6.12, модуль xhci_pci интегрирован непосредственно в ядро. Это означает, что модуль нельзя загружать или выгружать динамически с помощью modprobe, как это было возможно в более ранних версиях. Это привело к изменениям в управлении USB-контроллерами и требует нового подхода к решению проблем, связанных с их работоспособностью.

Теория

Во-первых, важно понимать, что xhci_pci является драйвером для модуля поддержки USB 3.0 (и старых версий) на базе интерфейса xHCI (eXtensible Host Controller Interface), который обеспечивает управление подключением и передачей данных между USB-устройствами и ПК. Поскольку модуль интегрирован в основное ядро, это часто делается для повышения производительности, надёжности и безопасности системы, так как встроенные модули работают более стабильно и защищены от возможных конфликтов, вызываемых динамическим подключением и отключением модулей.

Пример

Давайте рассмотрим распространённую ситуацию с отказом USB после пробуждения из спящего режима или гибернации. В вашем журнале ошибок (dmesg) представлены сообщения об отключении USB-устройств и проблемах с контроллером xHCI. Например:

[1338082.210867] xhci_hcd 0000:05:00.3: xHCI host not responding to stop endpoint command
[1338082.226886] xhci_hcd 0000:05:00.3: xHCI host controller not responding, assume dead
[1338082.226959] xhci_hcd 0000:05:00.3: HC died; cleaning up

Это свидетельствует о том, что USB-контроллер перестал реагировать на команды, в результате чего система аннулирует все связанные с ним устройства.

Применение

Теперь, когда мы понимаем природу проблемы и причины, вызывающие её, существует несколько шагов, которые можно предпринять для её решения:

  1. Обновление ядра и драйверов:
    Убедитесь, что у вас установлены последние обновления для ядра и драйверов. Часто новые версии содержат исправления для известных проблем. Используйте управляющие пакеты вашей операционной системы, такие как apt для Ubuntu, чтобы обновить вашу систему.

  2. Настройки параметров питания:
    Проверьте настройки питания для USB в BIOS/UEFI. Некоторые системы позволяют отключать USB-контроллер для экономии энергии. Попробуйте отключить данную функцию.

  3. Настройки ядра:
    Настройте параметры ядра через загрузочный меню. Например, параметры pci=noacpi или usbcore.autosuspend=-1 могут помочь отключить управление питанием для PCI или USB и предотвратить отключение контроллеров.

  4. Проверка конфигурации ядра:
    Иногда проблема решается добавлением дополнительного параметра в конфигурации загрузки для правильной работы устройств xHCI. Проверьте текущие параметры через /etc/default/grub и обновите конфигурацию с помощью update-grub.

  5. Использование скриптов udev:
    Напишите udev-правило, которое будет обращаться к USB-контроллеру непосредственно после того, как система выходит из спящего режима. Это обеспечит перезагрузку устройства без необходимости полного перезапуска системы.

    Например, вы можете создать файл /etc/udev/rules.d/usb_power.rules с содержанием:

    ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="on"
  6. Дополнительные утилиты:
    Воспользуйтесь утилитами, такими как usbreset или usb_modeswitch, для ручного сброса USB-портов. Эти утилиты могут инициировать процесс, аналогичный отключению и повторному подключению устройств.

  7. Обратная связь и баг-репорты:
    Если проблема не решается, подайте отчёт об ошибке в соответствующие форумы или системы отслеживания багов (например, на Bugzilla для проблем с ядром Linux). Опишите шаги по воспроизведению проблемы и приложите журналы, чтобы разработчикам было проще воспроизвести и исправить проблему.

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

Проблемы с USB могут быть сложными для диагностики и установки, но следуя предложенным шагам, вы сможете увеличить шансы на успешное решение проблемы без необходимости перезагрузки системы.

Оцените материал
Добавить комментарий

Капча загружается...