it-swarm-ru.tech

Как восстановить логически отключенное USB-устройство?

Запоминающее устройство USB может быть логически отключено: устройство все еще подключено, но невидимо в операционной системе (например, оно не указано в /proc/bus/usb). Может быть, это может произойти и с другими видами USB или других съемных устройств. Это может произойти, например:

  • после того, как Nautilus отключил USB-накопитель ;
  • после того, как VirtualBox запросил запоминающее устройство USB (устройство исчезает с хоста Linux, когда оно подключено к гостю, и не появляется автоматически, если оно отсоединено от гостя).

Что происходит в драйвере или в оборудовании, и, что наиболее важно, (как) можно логически повторно подключить устройство (без физического подключения и возврата)?

Обратите внимание, что этот вопрос не о монтаже. В состоянии "логически отключено" ядро ​​считает, что на шине USB ничего нет (и поэтому, конечно, нет записи под /dev).

56
Gilles 'SO- stop being evil'

Иногда можно выполнить цикл питания на ответвлении шины USB, к которому подключено устройство:

# echo suspend > /sys/bus/usb/devices/1-1/power/level
# echo auto > /sys/bus/usb/devices/1-1/power/level

1-1 следует настроить в соответствии с вашей конфигурацией. Вы можете увидеть, к какой части дерева USB подключено ваше устройство, запустив lsusb -t перед тем как выбросить его.

Вы можете найти подробную информацию в списке рассылки linux-usb, например эта ветка .

21
jon_d
udevadm info -a -n /dev/sdb

Теперь проверьте ядро. Например. если он подключен к порту 2 Front UIP, то это будет 1-1.2, а если он подключен к порту 1 Front UIP, то это будет 1-1.1.

Для порта 2: для отключения USB:

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

Для подключения USB:

echo '1-1.2' | tee /sys/bus/usb/drivers/usb/bind
8
Udaya

Перезагрузите устройство или концентратор, к которому оно подключено, и устройство должно появиться снова. Вот небольшая программа для этого:

http://marc.info/?l=linux-usb-users&m=116827193506484

Он работает для большинства USB-накопителей, которые я пробовал, но есть исключения, такие как мой Kingston DT 101 II 4 ГБ, который не выполняет команды INQUIRY и READ CAPACITY после сброса и остается непригодным для включения и выключения питания.

Вы можете выключить и снова включить устройство, если оно получает питание от порта, а концентратор USB поддерживает управление питанием для каждого порта. Вот небольшая программа для управления питанием:

http://marc.info/?l=linux-usb-devel&m=113724451205634

К сожалению, почти нет USB-концентраторов, поддерживающих эту функцию, и очень трудно найти тот, который поддерживает ее. Производители не афишируют это. Многие хабы также лгут об этом, например, если вы делаете "lsusb -v", вы можете видеть "Коммутация питания на порт", объявленную в "wHubCharacteristic", но в действительности это не работает. Чипсет может поддерживать его, но для производителя было проще/дешевле подключить выводы питания порта непосредственно к источнику питания, а не проходить через чипсет.

6
user6223

Я обнаружил, что этот ответ отлично работает в моей системе Gentoo. Также не забудьте повторно включить ваше устройство, если оно является важной частью вашей системы (например, мышь или клавиатура).

Sudo sh -c 'AUTHFILE="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$AUTHFILE" ; sleep 1 ; echo 1 > "$AUTHFILE"'

Чтобы увидеть, что вы отключаете/снова включаете:

cat /sys/bus/usb/devices/5-2/product
5
Avio

Я перепробовал большинство из вышеперечисленных предложений, но они не сработали для меня. Я нашел способ перезагрузки USB-устройства из командной строки: https://askubuntu.com/a/290519

echo $i >/sys/bus/pci/drivers/ehci_hcd/bind

где $i вы можете использовать соответствующий идентификатор устройства из /sys/bus/pci/drivers/ehci_hcd.

4
Kakanakov

Следующее отключит устройство USB.

Sudo eject /dev/sde

Следующее повторно подключит устройство USB.

Sudo eject -t /dev/sde

Вышеуказанное работает на моем Linux Mint.
Ссылка: http://www.upubuntu.com/2011/09/how-to-remount-usb-stick-without.html

1
Matthew Wai