GNU/Linux >> Linux Esercitazione >  >> Linux

Linux USB:accendere e spegnere l'alimentazione?

L'interazione usbfs sembra essere cambiata diverse volte da quando questa domanda è stata originariamente risolta. Quindi, ecco come accendo l'alimentazione della porta dell'hub su Ubuntu Oneiric Ocelot da una shell Bash.

Cerca il numero del bus e del dispositivo:

sudo lsusb -v|less

Individua il dispositivo nella gerarchia delle porte bus/hub utilizzando il numero del bus e del dispositivo:

sudo lsusb -t|less

La sintassi sembra essere 'bus-port.port.port.port.port...' Ad esempio, il mio mouse è connesso a un hub esterno che si connette all'hub del mio computer che si connette internamente a un hub principale:

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 3, If 0, Class=hub, Driver=hub/3p, 480M
            |__ Port 1: Dev 6, If 0, Class=HID, Driver=usbhid, 1.5M

Quindi, '2-1.1.1' nel caso precedente. Infine, riaccendi la porta:

echo '2-1.1.1'|sudo tee /sys/bus/usb/drivers/usb/unbind
sleep 1
echo '2-1.1.1'|sudo tee /sys/bus/usb/drivers/usb/bind

Non ho collegato un analizzatore di protocollo per vedere cosa sta effettivamente accadendo sul bus, ma so che la luce del mio mouse si spegne quando lo svincolo. Immagino che a un livello inferiore questo stia interagendo con il controller host EHCI per spegnere effettivamente la porta. Ciò è particolarmente utile per i dispositivi integrati, come le webcam UVC, che sembrano non funzionare mai correttamente e richiederebbero altrimenti un riavvio del sistema per il ripristino.

Vedi anche il udevadm comando.


C'è una voce sys per questo in Linux. Da Documentation/usb/power-management.txt:

potenza/livello

This file contains one of three words: "on", "auto",
or "suspend".  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.

"suspend" means that the device should remain
suspended, and autoresume is not allowed.  (But remote
wakeup may still be allowed, since it is controlled
separately by the power/wakeup attribute.)

Qualcosa come:echo on > /sys/bus/usb/devices/usb5/power/level

Potrebbe essere necessario giocare anche con l'impostazione di sospensione automatica. Senza dire al kernel di smettere di provare, potrebbe sospendere automaticamente il port.

Buona fortuna!


Linux
  1. Come creare un alias e utilizzare il comando alias in Linux

  2. Come controllare la versione del sistema operativo e di Linux

  3. Inode e il filesystem di Linux

  4. Lettura e scrittura su porta seriale in C su Linux

  5. USB Type-C, come viene controllata la direzione dell'erogazione di potenza?

Linux sul mainframe:allora e adesso

Il buono, il brutto e il cattivo di Linux nel 2014

Qual è la differenza tra Linux e Unix?

Come realizzare una USB multiboot in Linux e Windows

Come trovare il numero di porta di un servizio in Linux

Come modificare la porta SSH predefinita in Linux [correttamente e in modo sicuro]