Ниже речь не о том, что вы подумали, а о программном сбросе USB-устройства в Linux.
Столкнулся с неприятной проблемой — в Armbian иногда подвисает USB-девайс (в частности, WiFi-свисток). Иногда означает действительно иногда, и проблемы бы не было, если бы устройство не работало 24х7 в unattended-режиме. Ну то есть где-то в шкафу и без желания туда лазить.
Проблема может быть как в “так-себе-драйверах”, в кратковременном скачке напряжения (вроде как 5в на USB у OrangePi заведено “на прямую” с питания без всяких фильтров). Но это совершенно не важно, нужно просто уметь сбросить USB устройство, причем без физического доступа к системе.
AskUbuntu поспешил на помощь и теперь достаточно повесить в cron вот такой вот простой скрипт:
1 |
|
Запускать, ясное дело, нужно из под root или sudo. Ну и нужно знать примерные координаты устройства.
В моём случае магические цифры “4-1” взялись вот отсюда:
1 | zno@cluster:~$ lsusb |
И вот отсюда:
1 | zno/sys/bus/usb/devices/4-1/idVendor :~$ cat |
Проверяем результат — после отработки в dmesg вот такое:
1 | [42235.768120] usb 4-1: reset high-speed USB device number 2 using ehci-platform |
Чудо-скрипт можно будет расширить, а точнее переписать на каком-нибудь Python, передавая в качестве параметров vendor id и product id. Он будет ползать по /sys/usb/devices, искать первый или все идентификаторы (если устройств много), ну и передёргивать всё автоматом.
Короче, пригодится в дальнейшем. Может быть.