Eu tenho uma lâmpada USB que comprei especificamente para desligá-la programaticamente em um determinado momento; portanto, preciso remover a energia da sua porta USB.
Eu acredito que tenho um hub usb em usb6. A lâmpada está conectada a uma das portas neste hub:
#myhost$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 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 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
...
Bus 008 Device 006: ID 050d:0234 Belkin Components F5U234 USB 2.0 4-Port Hub
Aqui está o que eu tentei:
Duas soluções estão aqui , a primeira sugere:
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup
echo suspend > /sys/bus/usb/devices/usb1/power/level # turn off
mas recebo write error: Invalid argument
ao tentar escrever para /sys/bus/usb/devices/usb1/power/level
:
$sudo bash -c 'echo disabled > /sys/bus/usb/devices/usb6/power/wakeup'
$echo suspend|sudo tee /sys/bus/usb/devices/usb6/power/level suspend
tee: /sys/bus/usb/devices/usb6/power/level: Invalid argument
$sudo bash -c 'echo suspend> /sys/bus/usb/devices/usb6/power/level'bash: line 0: echo: write error: Invalid argument
A segunda solução:
sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'
que desliga a energia do dispositivo hub USB.
Eu também estava tentando seguir isso :
Mas a saída de lsusb -t
apenas trava:
$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C
O que me impede de usar esse método para obter a parte '2-1.1':
echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind
Existe uma maneira alternativa de obter essas informações?
Como alternativa, existe uma maneira de desligar a energia de todo o subsistema usb? Algo como modprobe -r usb_etc
?
Meu kernel é:
$uname -r
3.2.0-4-amd64
lsusb -t
chamada e não encontrei nada útil dentro do tempo necessário para depurá-la. Sinceramente, não tenho tempo agora para encontrar bugs no lsub e nem consigo reproduzi-lo agora, então provavelmente depende dos dispositivos que estão conectados. Vou ter que esperar para chegar em casa e tentar reproduzi-lo.