Encender / apagar puertos USB

18

¿Es posible activar / desactivar un puerto USB específico usando el terminal en Ubuntu?

lsusb muestra el siguiente 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.

Seagate es mi disco duro externo. ¿Puedo apagarlo en la terminal?

Intenté controlar una fuente de alimentación USB (activar / desactivar) con Linux . Pero estoy confundido acerca de lo que debe reemplazarse en lugar de usbX.

curioso_coder
fuente

Respuestas:

8

Todas las respuestas anteriores hablan de un mecanismo de suspensión USB , es decir, un "apagado lógico", nunca cortarán físicamente el VBUS + 5V del puerto USB.

Solo unos pocos hubs realmente pueden cortar VBUS como se describe aquí .

La herramienta hubpower puede hacerlo (si el hub lo admite).

rustyx
fuente
7

Después de encontrarme con el mismo problema, descubrí que los comandos deben ingresarse de manera diferente para que "sudo" aplique los derechos de manera adecuada.

Use el comando "tee".

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

aplicará los derechos de root al comando "tee" que escribirá el 0 en el archivo especificado, reemplazando todo lo que esté allí actualmente. Para agregar, use el comando tee con la opción -a.

para obtener información, consulte la página de manual de tee

JohnMoore
fuente
2
El teecomando tendrá el efecto secundario de imprimir también en la pantalla. Si lo desea, dd of=/sys/bus/...escribirá solo en el archivo, y en ningún otro lugar.
Brandon Rhodes
4

En realidad usbXno es más que los números de puertos USB donde Xdenota el número como 1o 2etc., por ejemplo, usb1y usb2para los puertos 1 y 2 . En general, una computadora portátil puede tener tres o cuatro puertos USB con puertos USB 2.0 y USB 3.0.

En Ubuntu, usb1, usb2... usbXson los enlaces a /sys/devices/pci000:00/*. Para entenderlo bien, ejecuta este comando:

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

Por lo tanto, para habilitar / deshabilitar los puertos USB usbXse reemplazará usb1cuando desee habilitar / deshabilitar USB Port Number 1(o consulte Stack Exchange):


Editar: Gracias a Stefan Denchev por decirnos la forma correcta de hacer eco de un texto a un archivo usando sudo . (Verifique también su comentario). No debería recibir el mensaje de permiso denegado ahora.

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"

Después de ver su lsusbresultado, parece que su dispositivo Seagate está conectado Port No. 2, por lo que debe desactivarlo usb2. Entonces los comandos serían:

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"
Saurav Kumar
fuente
Gracias. Si intento echo "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"la salida esbash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
curious_coder
luego intente sudover qué pasa ..
Saurav Kumar
Lo intenté. Sigue siendo el mismo error.
curious_coder
En realidad no intenté habilitar / deshabilitar ningún puerto en Linux. Mi lema era aclarar el usbXproblema. Si eres muy claro acerca de los comandos que tomaste, StackOverflowentonces solo debes intentarlo. De cualquier manera, ahora también estoy interesado en saber cuál es el comando real para habilitar / deshabilitar puertos. Te responderé pronto, cuando funcione para mí. Dile que desconectas tu dispositivo y vuelves a intentarlo. o intente la primera respuesta dada en stackoverflow.
Saurav Kumar
1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd
1

udisksctltiene power-offbandera, que sugiero que use junto con unmount

De la 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

Manifestación

Aquí estoy yo desmontando mi unidad de salto USB y luego apagándolo

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:$ 
Sergiy Kolodyazhnyy
fuente