Jak ponownie podłączyć logicznie odłączone urządzenie USB?


55

Możliwe jest logiczne odłączenie urządzenia pamięci USB: urządzenie jest nadal podłączone, ale jest niewidoczne dla systemu operacyjnego (np. Nie ma go na liście poniżej /proc/bus/usb). Może się to zdarzyć również w przypadku innych rodzajów urządzeń USB lub innych urządzeń wymiennych. Może się to zdarzyć na przykład:

Co się dzieje w sterowniku lub sprzęcie, a co najważniejsze (w jaki sposób) można logicznie ponownie podłączyć urządzenie (bez fizycznego podłączania i ponownego podłączania)?

Zauważ, że to pytanie nie dotyczy montażu. W stanie „logicznie rozłączonym” jądro uważa, że ​​na magistrali USB nie ma nic (i oczywiście nie ma wpisu poniżej /dev).


Odpowiedzi:


21

Czasami można wykonać cykl zasilania na gałęzi magistrali USB, do której podłączone jest urządzenie:

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

1-1Powinny być dostosowane do danej konfiguracji. Możesz sprawdzić, do której części drzewa USB podłączone jest twoje urządzenie, uruchamiając je lsusb -tprzed wysunięciem.

Szczegółowe informacje można znaleźć na liście mailingowej linux-usb, na przykład w tym wątku .


6
„Suspend” nie działa na jądrach po wersji 2.6.36.
alexisdm

Zakładając, że dmesgzgłasza poprawny identyfikator urządzenia („USB 9-4: USB odłącz [...]”), nie działa to w najnowszym Arch Linux. /sys/bus/usb/devices/9-4Potem nie ma ścieżki .
l0b0

1
1. dmesg: OSTRZEŻENIE! moc / poziom jest przestarzały; zamiast tego użyj zasilania / kontroli 2. superuser.com/questions/371068/…
socketpair

Nie suspendjest już także obsługiwany w najnowszych wersjach jądra ....
Gert van den Berg

6

Zresetuj urządzenie lub koncentrator, do którego jest podłączone, a urządzenie powinno się ponownie wyświetlić. Oto mały program, aby to zrobić:

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

Działa z większością napędów USB, które wypróbowałem, ale są wyjątki, takie jak mój Kingston DT 101 II 4GB, który nie wykonuje poleceń ZAPYTAJ i ODCZYTAJ POJEMNOŚĆ po zresetowaniu i pozostaje bezużyteczny do momentu wyłączenia zasilania.

Możesz włączyć i wyłączyć urządzenie bez odłączania wtyczki, jeśli pobiera energię z portu, a koncentrator USB obsługuje kontrolę zasilania na port. Oto mały program do sterowania mocą:

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

Niestety, prawie żadne koncentratory USB nie obsługują tej funkcji i bardzo trudno jest znaleźć taki, który ją obsługuje. Producenci nie reklamują tego. Wiele koncentruje się również na tym, na przykład jeśli wykonasz „lsusb -v”, zobaczysz „Przełączanie zasilania na port” reklamowane w „wHubCharacteristic”, ale w rzeczywistości to nie działa. Chipset może go obsługiwać, ale producentowi łatwiej / taniej było podłączyć piny zasilające portu bezpośrednio do zasilacza zamiast przechodzić przez chipset.


5

Uważam, że ta odpowiedź działa świetnie na moim systemie Gentoo. Pamiętaj także, aby ponownie włączyć urządzenie, jeśli jest to ważny element systemu (np. Mysz lub klawiatura).

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

Aby zobaczyć, co wyłączasz / włączasz ponownie:

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

Wydawało się, że to załatwia sprawę w moim nowoczesnym systemie Fedora 25. Niektóre inne metody nie są już możliwe.
xenithorb,

5
udevadm info -a -n /dev/sdb

Teraz sprawdź jądro. Np. Jeśli jest podłączony do portu 2 przedniego UIP, wówczas będzie miał 1-1.2, a jeśli jest podłączony do portu 1 przedniego UIP, wówczas będzie to 1-1.1.

Dla portu 2: Aby odłączyć USB:

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

Aby podłączyć USB:

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

3

Wypróbowałem większość powyższych sugestii, ale one nie zadziałały dla mnie. Znalazłem sposób resetowania urządzenia USB z wiersza polecenia: https://askubuntu.com/a/290519

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

skąd $imożna użyć odpowiedniego identyfikatora urządzenia /sys/bus/pci/drivers/ehci_hcd.


Proszę zamieścić więcej niż link; zawierają pewne szczegóły, aby ludzie nie musieli klikać, aby uzyskać odpowiedź.
jasonwryan


-5

Nie jestem pewien, czy właściwie rozumiem twoje pytanie, ale w moim systemie, jeśli urządzenie USB jest podłączone, ale nie zamontowane, mogę je „zobaczyć”

$> fdisk -l

To mówi mi, z jakim urządzeniem jest powiązane (tj. / Dev / sdd1 lub coś takiego), a następnie ręcznie go montuję.


5
Ponownie: nie, pytanie nie dotyczy braku dostępu do systemu plików (tzn. Odmontowania), chodzi o niedostępność urządzenia (jądro nie widzi urządzenia, więc oczywiście nie ma wpisu poniżej /dev).
Gilles „SO- przestań być zły”
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.