Ligar / desligar as portas USB

13

É possível ligar / desligar uma porta usb específica usando o terminal no Ubuntu?

lsusb exibe o seguinte resultado

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. 

O Seagate é meu disco rígido externo. Posso desligá-lo no terminal? Experimentei o link . Mas confuso o que deve ser substituído no lugar de usbX

    
por curious_coder 06.09.2013 / 08:52

4 respostas

6

Depois de se deparar com o mesmo problema, descobri que os comandos devem ser inseridos de forma diferente, para que o "sudo" aplique direitos apropriadamente.

Use o comando "tee".

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

aplicará os direitos de root ao comando "tee", que gravará 0 no arquivo especificado, substituindo qualquer coisa que esteja lá. Para acrescentar, use o comando tee com a opção -a.

para informações, consulte a página do manual de tee

    
por JohnMoore 16.11.2013 / 19:31
5

Todas as respostas anteriores falam sobre um mecanismo USB suspender , ou seja, um "desligamento lógico", elas nunca cortarão fisicamente o VBUS + 5V da porta USB.

Apenas alguns hubs podem realmente cortar o VBUS conforme descrito aqui .

A ferramenta hubpower pode fazer isso (se o hub oferecer suporte).

    
por rustyx 21.12.2014 / 14:38
4

Na verdade, usbX não é nada, mas os números USB ports em que X denota o número como 1 ou 2 e assim por diante. Por exemplo, usb1 e usb2 para portas 1 e 2 . Em geral, um laptop pode ter 3 ou 4 portas USB com USB 2.0 e USB 3.0 portas.

Em ubunty usb1 , usb2 ... usbX são os links para /sys/devices/pci000:00/* . Para entender bem, execute este comando:

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

Portanto, ative / desative as portas USB usbX será substituído por usb1 quando você quiser ativar / desativar USB Port Number 1 (ou referir StackExchange ):

  

Editar

Agradecimentos a Stefan Denchev para informar a maneira correta de ecoar algum texto para um arquivo usando o sudo . (Verifique o comentário dele também.) Você não deve receber a mensagem permission denied agora.

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"

Depois de ver seu resultado lsusb , parece que o seu dispositivo Seagate está conectado a Port No. 2 , então você precisa desativar usb2 , então os comandos seriam:

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"

Espero que funcione e você possa entender agora.

    
por Saurav Kumar 06.09.2013 / 09:43
1

udisksctl tem power-off flag, que eu sugiro que você use em conjunto com unmount

Do 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

Demo

Aqui está eu desmontando meu jumpdrive USB e desligando-o

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:$ 
    
por Sergiy Kolodyazhnyy 09.11.2015 / 19:58