Wie verbinde ich ein logisch getrenntes USB-Gerät wieder?


55

Es ist möglich, dass ein USB-Speichergerät logisch getrennt wird: Das Gerät ist noch angeschlossen, aber für das Betriebssystem nicht sichtbar (z. B. ist es nicht unter aufgeführt /proc/bus/usb). Möglicherweise kann dies auch bei anderen Arten von USB-Geräten oder anderen Wechseldatenträgern vorkommen. Dies kann zum Beispiel passieren:

  • nachdem Nautilus ein USB-Speichergerät ausgehängt hat ;
  • nachdem VirtualBox ein USB-Speichergerät beansprucht hat (das Gerät verschwindet vom Linux-Host, wenn es an den Gast angeschlossen ist, und wird nicht automatisch wieder angezeigt, wenn es vom Gast getrennt wird).

Was ist im Treiber oder in der Hardware los und vor allem (wie) kann das Gerät logisch wieder angeschlossen werden (ohne es physisch aus- und wieder einzustecken)?

Beachten Sie, dass es bei dieser Frage nicht um die Montage geht. Im Zustand "logisch getrennt" glaubt der Kernel, dass sich nichts auf dem USB-Bus befindet (und daher gibt es natürlich keinen Eintrag darunter /dev).


Antworten:


21

Es ist manchmal möglich, einen Stromzyklus auf einem Zweig des USB-Busses durchzuführen, an dem das Gerät angeschlossen ist:

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

Das 1-1sollte an deine Konfiguration angepasst werden. Sie können feststellen, an welchen Teil des USB-Baums Ihr Gerät angeschlossen ist, indem Sie es ausführen, lsusb -tbevor Sie es auswerfen.

Detaillierte Informationen finden Sie auf der Linux-USB-Mailingliste, zum Beispiel in diesem Thread .


6
"suspend" funktioniert auf Kerneln nach 2.6.36 nicht mehr.
Alexisdm

Unter dmesgder Annahme , dass die richtige Geräte-ID gemeldet wird ("usb 9-4: USB disconnect [...]"), funktioniert dies unter den neuesten Arch Linux-Versionen nicht. Danach gibt es keinen Weg mehr /sys/bus/usb/devices/9-4.
l0b0

1
1. dmesg: WARNUNG! power / level ist veraltet; verwenden Macht / Kontrolle statt 2. superuser.com/questions/371068/...
socket

Auch suspendwird auf neueren Kernel-Versionen nicht mehr unterstützt ....
Gert van den Berg

6

Setzen Sie das Gerät oder den Hub, mit dem es verbunden ist, zurück, und das Gerät sollte wieder angezeigt werden. Hier ist ein kleines Programm, um das zu tun:

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

Es funktioniert für die meisten USB-Laufwerke, die ich ausprobiert habe, aber es gibt Ausnahmen, wie z. B. mein Kingston DT 101 II 4GB, bei dem die Befehle INQUIRY und READ CAPACITY nach dem Zurücksetzen fehlschlagen und das Gerät unbrauchbar bleibt, bis es aus- und wieder eingeschaltet wird.

Sie können das Gerät aus- und wieder einschalten, ohne den Netzstecker zu ziehen, wenn es über den Port mit Strom versorgt wird. Ihr USB-Hub unterstützt die Steuerung der Stromversorgung pro Port. Hier ist ein kleines Programm zur Steuerung der Leistung:

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

Leider unterstützen fast keine USB-Hubs diese Funktion, und es ist sehr schwierig, einen zu finden, der diese Funktion unterstützt. Hersteller werben nicht dafür. Viele Hubs lügen auch, wenn Sie zum Beispiel "lsusb -v" verwenden, wird in "wHubCharacteristic" "Per-Port-Power-Switching" angekündigt, aber in Wirklichkeit funktioniert es nicht. Der Chipsatz mag dies unterstützen, aber es war für den Hersteller einfacher / billiger, die Port-Stromanschlüsse direkt mit dem Netzteil zu verbinden, anstatt den Chipsatz zu durchlaufen.


5

Ich fand diese Antwort großartig auf meinem Gentoo-System. Denken Sie auch daran, Ihr Gerät wieder zu aktivieren, wenn es ein wichtiger Bestandteil Ihres Systems ist (z. B. Maus oder Tastatur).

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

So überprüfen Sie, was Sie deaktivieren / erneut aktivieren:

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

Dies schien den Trick auf meinem modernen Fedora 25-System zu tun. Einige der anderen Methoden sind nicht mehr möglich.
Xenithorb

5
udevadm info -a -n /dev/sdb

Überprüfen Sie nun den Kernel. Wenn es beispielsweise an Port 2 des Front-UIP angeschlossen ist, ist es 1-1.2, und wenn es an Port 1 des Front-UIP angeschlossen ist, ist es 1-1.1.

Für Port 2: So trennen Sie USB:

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

So schließen Sie USB an:

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

3

Ich habe die meisten der oben genannten Vorschläge ausprobiert, aber sie haben bei mir nicht funktioniert. Ich fand heraus, wie man ein USB-Gerät über die Befehlszeile zurücksetzt: https://askubuntu.com/a/290519

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

Hier können $iSie die entsprechende Geräte-ID verwenden /sys/bus/pci/drivers/ehci_hcd.


Bitte posten Sie mehr als den Link; Geben Sie einige Details an, damit die Benutzer nicht durchklicken müssen, um eine Antwort zu erhalten.
Jasonwryan


-5

Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstehe, aber wenn ein USB-Gerät an meinem System angeschlossen, aber nicht gemountet ist, kann ich es "sehen"

$> fdisk -l

Das sagt mir, mit welchem ​​Gerät es verbunden ist (zB / dev / sdd1 oder so), dann mounte ich es manuell.


5
Nochmals: Nein, es geht nicht darum, dass ein Dateisystem nicht mehr zugänglich ist (dh nicht mehr bereitgestellt wird), sondern dass ein Gerät nicht mehr erreichbar ist (der Kernel erkennt kein Gerät, daher gibt es natürlich keinen Eintrag unter /dev).
Gilles 'SO- hör auf böse zu sein'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.