it-swarm.it

Come riconnettere un dispositivo USB logicamente disconnesso?

È possibile che un dispositivo di archiviazione USB venga disconnesso logicamente: il dispositivo è ancora collegato, ma è invisibile dal sistema operativo (ad es. Non è elencato sotto /proc/bus/usb). Forse questo può succedere anche ad altri tipi di USB o altri dispositivi rimovibili. Questo può succedere ad esempio:

Cosa sta succedendo nel driver o nell'hardware e, soprattutto, (come) il dispositivo può essere ricollegato logicamente (senza scollegarlo fisicamente e rientrare)?

Nota che questa domanda non riguarda il montaggio. Nello stato "logicamente disconnesso", il kernel ritiene che non ci sia nulla sul bus USB (e quindi ovviamente non c'è alcuna voce sotto /dev).

A volte è possibile eseguire un ciclo di accensione sul ramo del bus USB in cui è collegato il dispositivo:

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

Il 1-1 dovrebbe essere adattato alla tua configurazione. Puoi vedere a quale parte dell'albero USB il tuo dispositivo è collegato eseguendo lsusb -t prima di espellerlo.

Puoi trovare informazioni dettagliate sulla mailing list linux-usb, ad esempio questo thread .

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

Ora controlla il kernel. Per esempio. se è collegato alla porta 2 di Front UIP sarebbe 1-1.2 e se è collegato alla porta 1 di Front UIP sarebbe 1-1.1.

Per la porta 2: per disconnettere USB:

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

Per connettere USB:

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

Ripristina il dispositivo o l'hub a cui è collegato e il dispositivo dovrebbe riapparire. Ecco un piccolo programma per farlo:

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

Funziona con la maggior parte delle unità USB che ho provato, ma ci sono eccezioni, come il mio Kingston DT 101 II da 4 GB, che fallisce i comandi INQUIRY e READ CAPACITY dopo il ripristino e rimane inutilizzabile fino al ciclo di accensione.

È possibile spegnere e riaccendere il dispositivo senza scollegarlo se viene alimentato dalla porta e l'hub USB supporta il controllo dell'alimentazione per porta. Ecco un piccolo programma per controllare la potenza:

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

Sfortunatamente, quasi nessun hub USB supporta questa funzione ed è molto difficile trovarne uno che la supporti. I produttori non lo pubblicizzano. Anche molti hub mentono al riguardo, ad esempio se fai "lsusb -v" puoi vedere "Commutazione dell'alimentazione per porta" pubblicizzata in "wHubCharacteristic", ma in realtà non funziona. Il chipset potrebbe supportarlo, ma per il produttore è stato più facile/economico collegare i pin di alimentazione della porta direttamente all'alimentazione invece di passare attraverso il chipset.

6
user6223

Ho trovato questa risposta per funzionare alla grande sul mio sistema Gentoo. Ricorda inoltre di riattivare il dispositivo se è un componente importante del tuo sistema (ad es. Mouse o tastiera).

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

Per vedere cosa stai disabilitando/riattivando:

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

Ho provato la maggior parte dei suggerimenti di cui sopra, ma non hanno funzionato per me. Ho trovato come ripristinare un dispositivo USB dalla riga di comando: https://askubuntu.com/a/290519

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

dove $i puoi utilizzare l'ID dispositivo appropriato da /sys/bus/pci/drivers/ehci_hcd.

4
Kakanakov

Quanto segue disconnetterà il dispositivo USB.

Sudo eject /dev/sde

Quanto segue ricollegherà il dispositivo USB.

Sudo eject -t /dev/sde

Quanto sopra funziona sul mio Linux Mint.
Riferimento: http://www.upubuntu.com/2011/09/how-to-remount-usb-stick-without.html

1
Matthew Wai