Accensione / spegnimento delle porte USB


18

È possibile attivare / disattivare una porta USB specifica utilizzando il terminale in Ubuntu?

lsusb visualizza il seguente risultato:

Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2232:1020
Bus 002 Device 009: ID 0bc2:a013 Seagate RSS LLC
Bus 002 Device 003: ID 0a5c:219c Broadcom Corp.

Seagate è il mio disco rigido esterno. Posso spegnerlo nel terminale?

Ho provato a controllare un alimentatore USB (acceso / spento) con Linux . Ma sono confuso su ciò che dovrebbe essere sostituito al posto di usbX.

Risposte:


8

Tutte le risposte precedenti parlano di un meccanismo di sospensione USB , cioè di uno "spegnimento logico", non taglieranno mai fisicamente VBUS + 5V dalla porta USB.

Solo pochi hub possono effettivamente tagliare VBUS come descritto qui .

Lo strumento hubpower può farlo (se l'hub lo supporta).


7

Dopo aver riscontrato lo stesso problema, ho scoperto che i comandi devono essere immessi in modo diverso in modo che "sudo" applichi i diritti in modo appropriato.

Utilizzare il comando "tee".

echo 0 | sudo tee /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms

applicherà i diritti di root al comando "tee" che scriverà lo 0 nel file specificato, sostituendo tutto ciò che è attualmente lì. Per aggiungere, utilizzare il comando tee con l'opzione -a.

per info consultare la pagina man di tee


2
Il teecomando avrà anche l'effetto collaterale di stampare sullo schermo. Se vuoi, dd of=/sys/bus/...scriverà solo nel file e da nessun'altra parte.
Brandon Rhodes,

4

In realtà usbXnon è altro che i numeri delle porte USB in cui è indicato Xil numero come 1o 2e così via ... Ad esempio, usb1e usb2per le porte 1 e 2 . In generale, un laptop può avere tre o quattro porte USB con porte USB 2.0 e USB 3.0.

In Ubuntu, usb1, usb2... usbXsono i collegamenti a /sys/devices/pci000:00/*. Per capirlo bene, esegui questo comando:

ls -l /sys/bus/usb/devices/

Quindi per abilitare / disabilitare le porte USB usbXverranno sostituite con usb1quando si desidera abilitare / disabilitare USB Port Number 1(o fare riferimento a Stack Exchange):


Modifica: grazie a Stefan Denchev per dire il modo corretto di riecheggiare del testo in un file usando sudo . (Controlla anche il suo commento.) Ora non dovresti ricevere il messaggio di autorizzazione negata .

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb1/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb1/power/control"

Dopo aver visto il tuo lsusbrisultato, sembra che il tuo dispositivo Seagate sia collegato Port No. 2, quindi devi disabilitarlo usb2. Quindi i comandi sarebbero:

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb2/power/control"

Grazie. Se provo echo "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"l'output èbash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
curious_coder il

poi prova a sudovedere cosa succede ..
Saurav Kumar,

Provato. Ancora lo stesso errore.
curious_coder il

In realtà non ho provato ad abilitare / disabilitare alcuna porta in Linux .. Il mio motto era di chiarirti il usbXproblema. Se sei molto chiaro sui comandi da cui hai preso, StackOverflowsolo tu dovresti provare. Ad ogni modo ora sono anche interessato a sapere quale sia il comando effettivo per abilitare / disabilitare le porte. Ti risponderò presto, quando funzionerà per me. Indica quindi di scollegare il dispositivo e riprovare. oppure prova la prima risposta fornita a stackoverflow.
Saurav Kumar,

1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd,

1

udisksctlha power-offflag, che ti consiglio di usare insieme a unmount

Dal man udisksctl:

power-off
           Arranges for the drive to be safely removed and powered off. On the
           OS side this includes ensuring that no process is using the drive,
           then requesting that in-flight buffers and caches are committed to
           stable storage. The exact steps for powering off the drive depends
           on the drive itself and the interconnect used. For drives connected
           through USB, the effect is that the USB device will be deconfigured
           followed by disabling the upstream hub port it is connected to

dimostrazione

Ecco a me smontare il mio jumpdrive USB e poi spegnerlo

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 009: ID 154b:007a PNY 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk                                                                
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sdb      8:16   1    30G  0 disk 
└─sdb1   8:17   1    30G  0 part /media/xieerqi/6A32C4555E1C5B4D
sr0     11:0    1  1024M  0 rom  

testdir:$ udisksctl unmount -b /dev/sdb1 && udisksctl power-off -b /dev/sdb1
Unmounted /dev/sdb1.

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sr0     11:0    1  1024M  0 rom  

testdir:$ 
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.