7

Моя Wi-Fi-карта Netgear (с помощью драйвера ath9k_htc) на моем Raspberry Pi периодически переходит в плохое состояние, что приводит к ошибкам чтения с USB в dmesg. Это состояние не может быть исправлено с помощью сброса системы, но требует полного цикла питания USB-устройства, либо отключив его от сети и снова подключив USB-накопитель, либо выключив и снова включив весь компьютер.

Я прочитал, что можно программно отключать питание USB-устройства с помощью USB-концентратора. Итак, я попробовал это с моим внутренним 4-портовым USB 2.0 Hub, основываясь на информации в этой публикации:

https://stackoverflow.com/questions/1163824/linux-usb-turning-the-power-on-and-off

Но индикаторы на USB-флешке остаются светящимися даже после выполнения команды, приведенной ниже, хотя это и приводит к исчезновению устройства wlan0. Я попробовал это на Belkin 4-Port Hub с такими же результатами. У кого-нибудь есть идеи?

echo '1-1.2.3' | tee /sys/bus/usb/drivers/usb/unbind

Детали моих подключений usb:

pi@fpi-16 ~ $ sudo lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 3, If 0, Class=vend., Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 5, If 0, Class=vend., Driver=rt2800usb, 480M
            |__ Port 3: Dev 6, If 0, Class=vend., Driver=ath9k_htc, 480M

2 ответа2

1

Если ваш хост-драйвер USB скомпилирован как модуль ядра, вы можете попытаться выгрузить его и перезагрузить. Обычно это также должно полностью отключать USB (я делал это на других устройствах с неисправным USB-оборудованием, которое необходимо перезагрузить электрическим током, а не на Rasperry Pi, чего мне не жаль). Так что проверьте, видите ли вы его как модуль (lsmod) или скомпилируете как модуль, а затем, в конце концов, запустите rmmod (и все зависимости) и перезагрузите его снова, это должно сработать.

0

Вот приложение, которое может делать то, что вам нужно: https://github.com/codazoda/hub-ctrl.c

Инструкции по установке и использованию смотрите в README.md.

Может потребоваться некоторое количество проб и ошибок, чтобы выяснить, какой концентратор и порт соответствуют каждому USB-порту, что, похоже, зависит от модели Raspberry Pi.

Циклическое включение питания может быть достигнуто в одной команде, посылая команду ap 0 (выключение питания), а затем ap 1 (включение питания).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .