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

<p>запоминающее устройство usb может быть логически отключено: устройство все еще подключено, но невидимо в операционной системе (например, оно не указано в <code>/proc/bus/usb</code>). может быть, это может произойти и с другими видами usb или других съемных устройств. это может произойти, например:</p><ul> <li> <a href="https://unix.stackexchange.com/questions/7051/how-to-re-mount-a-usb-stick-after-unmounting-from-nautilus-without-disconnecting">после того, как nautilus отключил usb-накопитель</a> ;</li> <li>после того, как virtualbox запросил запоминающее устройство usb (устройство исчезает с хоста linux, когда оно подключено к гостю, и не появляется автоматически, если оно отсоединено от гостя).</li> </ul><p>что происходит в драйвере или в оборудовании, и, что наиболее важно, (как) можно логически повторно подключить устройство (без физического подключения и возврата)?</p><p><em> обратите внимание, что этот вопрос не о монтаже. в состоянии "логически отключено" ядро считает, что на шине usb ничего нет (и поэтому, конечно, нет записи под <code>/dev</code>).</em></p>

<p>иногда можно выполнить цикл питания на ответвлении шины usb, к которому подключено устройство:</p><pre><code># echo suspend > /sys/bus/usb/devices/1-1/power/level # echo auto > /sys/bus/usb/devices/1-1/power/level </code></pre><p><code>1-1</code> следует настроить в соответствии с вашей конфигурацией. вы можете увидеть, к какой части дерева usb подключено ваше устройство, запустив <code>lsusb -t</code> перед тем как выбросить его.</p><p>вы можете найти подробную информацию в списке рассылки linux-usb, например <a href="http://marc.info/?l=linux-usb&m=121458814010679&w=2">эта ветка</a> .</p>

<pre><code>udevadm info -a -n /dev/sdb </code></pre><p>теперь проверьте ядро. например. если он подключен к порту 2 front uip, то это будет 1-1.2, а если он подключен к порту 1 front uip, то это будет 1-1.1.</p><p>для порта 2: для отключения usb:</p><pre><code>echo '1-1.2' | tee /sys/bus/usb/drivers/usb/unbind </code></pre><p>для подключения usb:</p><pre><code>echo '1-1.2' | tee /sys/bus/usb/drivers/usb/bind </code></pre>

<p>перезагрузите устройство или концентратор, к которому оно подключено, и устройство должно появиться снова. вот небольшая программа для этого:</p><p> <a href="http://marc.info/?l=linux-usb-users&m=116827193506484">http://marc.info/?l=linux-usb-users&m=116827193506484</a> </p><p>он работает для большинства usb-накопителей, которые я пробовал, но есть исключения, такие как мой kingston dt 101 ii 4 гб, который не выполняет команды inquiry и read capacity после сброса и остается непригодным для включения и выключения питания.</p><p>вы можете выключить и снова включить устройство, если оно получает питание от порта, а концентратор usb поддерживает управление питанием для каждого порта. вот небольшая программа для управления питанием:</p><p> <a href="http://marc.info/?l=linux-usb-devel&m=113724451205634">http://marc.info/?l=linux-usb-devel&m=113724451205634</a> </p><p>к сожалению, почти нет usb-концентраторов, поддерживающих эту функцию, и очень трудно найти тот, который поддерживает ее. производители не афишируют это. многие хабы также лгут об этом, например, если вы делаете "lsusb -v", вы можете видеть "коммутация питания на порт", объявленную в "whubcharacteristic", но в действительности это не работает. чипсет может поддерживать его, но для производителя было проще/дешевле подключить выводы питания порта непосредственно к источнику питания, а не проходить через чипсет.</p>

<p>я обнаружил, что <a href="https://askubuntu.com/a/61165/63606">этот ответ</a> отлично работает в моей системе gentoo. также не забудьте повторно включить ваше устройство, если оно является важной частью вашей системы (например, мышь или клавиатура).</p><pre><code>sudo sh -c 'authfile="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$authfile" ; sleep 1 ; echo 1 > "$authfile"' </code></pre><p>чтобы увидеть, что вы отключаете/снова включаете:</p><pre><code>cat /sys/bus/usb/devices/5-2/product </code></pre>

<p>я перепробовал большинство из вышеперечисленных предложений, но они не сработали для меня. я нашел способ перезагрузки usb-устройства из командной строки: <a href="https://askubuntu.com/a/290519">https://askubuntu.com/a/290519</a> </p><pre><code>echo $i >/sys/bus/pci/drivers/ehci_hcd/bind где $i</code> вы можете использовать соответствующий идентификатор устройства из <code>/sys/bus/pci/drivers/ehci\_hcd</code>.</p>

<p>следующее отключит устройство usb.</p><pre><code>sudo eject /dev/sde </code></pre><p>следующее повторно подключит устройство usb.</p><pre><code>sudo eject -t /dev/sde </code></pre><p>вышеуказанное работает на моем linux mint.<br> ссылка: <a href="http://www.upubuntu.com/2011/09/how-to-remount-usb-stick-without.html">http://www.upubuntu.com/2011/09/how-to-remount-usb-stick-without.html</a> </p>