Esiste un modo per spegnere un dispositivo USB utilizzando il software?


11

È possibile spegnere completamente un dispositivo USB (specifico) utilizzando il software di una macchina Linux?

Voglio usarlo per spegnere (in modo che il LED sia spento) una (singola) chiavetta USB.

Conosci qualche metodo per raggiungere questo obiettivo? Ad esempio usando / sys / bus / usb o simili?


Sì. Smonta semplicemente il dispositivo.
iglvzx,

1
No, questo non aiuta. C'è anche la possibilità che non ci siano partizioni utilizzabili (che potrebbero essere montate) sul bastone.
Daniel Jour,

Per un'unità flash, l'unico modo per rimuovere il disco è echo 1 > /sys/block/sd<letter[s]>/device/delete... (è possibile che l'espulsione lo stia facendo ...) POTREBBE provocare il "soft off" del dispositivo (spento) ... (Se funziona per i dischi, non funzionerà con dispositivi non a disco ..)
Gert van den Berg,

Risposte:


10

Se la macchina funziona vecchio kernel, si potrebbe emettere echo suspend > /sys/bus/usb/devices/X-X/power/levelforzare sospensione del dispositivo.

Tuttavia, dal 2.6.32 questo non è più possibile:

Siamo in grado di classificare gli eventi di gestione dell'alimentazione in due grandi classi: esterna e interna. Gli eventi esterni sono quelli attivati ​​da un agente esterno allo stack USB: sospensione / ripresa del sistema (attivata dallo spazio utente), ripresa dinamica manuale (attivata anche dallo spazio utente) e riattivazione remota (attivata dal dispositivo). Gli eventi interni sono quelli attivati ​​nello stack USB : autosuspend e autoresume. Si noti che tutti gli eventi di sospensione dinamici sono interni ; agli agenti esterni non è consentito emettere sospensioni dinamiche.

power/control

    This file contains one of two words: "on" or "auto".
    You can write those words to the file to change the
    device's setting.

    "on" means that the device should be resumed and
    autosuspend is not allowed.  (Of course, system
    suspends are still allowed.)

    "auto" is the normal state in which the kernel is
    allowed to autosuspend and autoresume the device.

    (In kernels up to 2.6.32, you could also specify
    "suspend", meaning that the device should remain
    suspended and autoresume was not allowed.  This
    setting is no longer supported.

(da http://www.kernel.org/doc/Documentation/usb/power-management.txt )

Immagino che la cosa migliore che puoi fare sia separare il dispositivo dal driver , quindi non ci sarebbe alcuna attività su di esso e quindi configurare il dispositivo per la sospensione automatica il più presto possibile ( echo auto > /sys/bus/usb/devices/X-X/power/control && echo 0 > /sys/bus/usb/devices/X-X/power/autosuspend_delay_ms).

Tuttavia, per quanto ho capito le specifiche USB , anche se sospendi il dispositivo, rimarrà una porta di accensione, quindi potrebbe essere impossibile disabilitare il led se è alimentato da uno schema "stupido" (cioè collegato direttamente a + 5 V e GND pin).


Sto contrassegnando questa come una risposta accettata perché sono stato in grado di separare il dispositivo dal suo driver e configurare la sospensione automatica, il che porta allo spegnimento del dispositivo. Sfortunatamente, le chiavette USB mirate (o: i loro LED) sono collegate direttamente a + 5V e GND e quindi non possono essere spente.
Daniel Jour,

3

L'uso del comando di espulsione dovrebbe funzionare.

Esegui eject /dev/<devicename>e dovrebbe spegnersi.


Sfortunatamente, questo non funziona per il mio test stick qui :(
Daniel Jour

2
Il che non sorprende se la tua chiavetta USB non è un'unità CD, Floppy, Tape o SCSI. ejectfunziona solo con questi.
Dmitry Grigoryev il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.