5

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

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

3 ответа3

9

Вы можете попробовать программу resetusb Бенджамина Клоуз для сброса всех устройств - нет доступных двоичных файлов, но компилировать их довольно просто. Сохраните исходный код как resetusb.c , затем запустите:

gcc -lusb resetusb.c -o resetusb

Теперь вы можете запустить инструмент как resetusb . В качестве альтернативы @unhammer указывает на версию для одного устройства Алана Стерна (плюс несколько советов о том, как ее использовать).

Некоторым людям также повезло, просто удалив и modprobe соответствующие модули:

modprobe -vr ehci_hcd
modprobe -v ehci_hcd

(Вы могли бы, конечно, написать это)

Некоторые дистрибутивы могут также иметь свои собственные инструменты для перезапуска подсистемы USB; Mandrake, очевидно, имеет /etc/init.d/usb.

4

Допустим, я хочу сбросить /dev/sdc .

# udevadm info -q all /dev/sdc | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1.4/2-1.4:1.0/host2/target2:0:0/2:0:0:0/block/sdc

Я беру 2-1.4 выше (у вас может быть просто 2-1 - мое устройство подключено к концентратору) и делаю:

# echo 2-1.4 > /sys/bus/usb/drivers/usb/unbind
# echo 2-1.4 > /sys/bus/usb/drivers/usb/bind
1

Вы можете перезапустить слой аппаратной абстракции: sudo /etc/init.d/hal restart

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