Estou usando o Lubuntu 16.04. Eu tenho alto-falantes analógicos que levam sua energia de um soquete USB. Eu gostaria que eles desligassem quando eu desligar o pc e suspendê-lo. Pensei que seria muito fácil, mas passei muito tempo pesquisando e ainda não tenho uma solução.
Minha melhor aposta parece ser uhubctl , já que isso parece rodar no meu hardware (o autor alerta que nem todos os hubcontrollers suportam funcionalidade). Eu acredito nisso porque eu desliguei com sucesso o teclado USB.
Então, agora eu preciso saber o que especificar para desligar a energia na entrada USB para os alto-falantes. Isso está fadado a levar algumas suposições, já que elas não são dispositivos USB reais e não serão exibidas no lsusb. Olhando para o painel traseiro e para o manual da placa-mãe, vejo que o grupo de quatro soquetes nos quais os alto-falantes estão conectados é descrito como portas USB 2.0 7-10. Meu mouse e webcam estão conectados ao mesmo grupo de soquetes.
Executando o uhubctl sem argumentos:
Current status for hub 2-1 [8087:8002, USB 2.00, 8 ports]
Port 1: 0100 power
Port 2: 0100 power
Port 3: 0100 power
Port 4: 0100 power
Port 5: 0100 power
Port 6: 0100 power
Port 7: 0100 power
Port 8: 0100 power
Current status for hub 1-1 [8087:800a, USB 2.00, 6 ports]
Port 1: 0100 power
Port 2: 0100 power
Port 3: 0100 power
Port 4: 0100 power
Port 5: 0100 power
Port 6: 0100 power
Current status for hub 4-5 [174c:3074 ASUS TEK. ASM107x, USB 3.00, 4 ports]
Port 1: 02a0 power 5gbps Rx.Detect
Port 2: 02a0 power 5gbps Rx.Detect
Port 3: 02a0 power 5gbps Rx.Detect
Port 4: 02a0 power 5gbps Rx.Detect
Current status for hub 3-9 [174c:2074 ASUS TEK. ASM107x, USB 2.10, 4 ports]
Port 1: 0100 power
Port 2: 0303 power lowspeed enable connect [047d:2043 NOVATEK Kensington U+P Keyboard]
Port 3: 0100 power
Port 4: 0100 power
Isso não é muito útil. Meu teclado aparece, mas todos os meus outros dispositivos USB - mouse, Seagate HDD, webcam - não são mencionados.
Eu tentei vários comandos:
uhubctl -a off -p 2 -l 3-9 #Turns off keyboard as expected
uhubctl -a off -p 2 -l 4-5 #ALSO turns off keyboard. Why ?
uhubctl -a off -p 12345678 -l 2-1 #Does not turn anything off
uhubctl -a off -p 123456 -l 1-1 #Does not turn anything off
uhubctl -a off -p 134 -l 4-5 #Does not turn anything off.
Então eu posso desligar o teclado. Nenhum outro dispositivo USB está listado (embora esteja lá) e não pode ser desligado.
Não tenho ideia do que os nomes dos hubs representam, por exemplo, 2-1, 1-1, 4-5, 3-9. Nem parece haver qualquer maneira de inferir os nomes de hub de lsusb.
lsusb dá:
Bus 002 Device 002: ID 8087:8002 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:800a Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub
Bus 004 Device 002: ID 0bc2:ab24 Seagate RSS LLC
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 007: ID 047d:2043 Kensington
Bus 003 Device 003: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub
Bus 003 Device 002: ID 0f62:1001 Acrox Technologies Co., Ltd Targus Mini Trackball Optical Mouse
Bus 003 Device 006: ID 046d:0994 Logitech, Inc. QuickCam Orbit/Sphere AF
Bus 003 Device 004: ID 0b05:180a ASUSTek Computer, Inc.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lsusb -t dá:
/: Bus 08.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
|__ Port 5: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M
|__ Port 5: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 9: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 2: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 7, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 10: Dev 4, If 1, Class=Vendor Specific Class, Driver=btusb, 12M
|__ Port 10: Dev 4, If 2, Class=Vendor Specific Class, Driver=btusb, 12M
|__ Port 10: Dev 4, If 0, Class=Vendor Specific Class, Driver=btusb, 12M
|__ Port 10: Dev 4, If 3, Class=Application Specific Interface, Driver=, 12M
|__ Port 14: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 14: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 14: Dev 6, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 14: Dev 6, If 3, Class=Audio, Driver=snd-usb-audio, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
Posso ver que há alguma relação entre os nomes dos hubs e os números de barramento / porta, mas não consigo criar uma regra.
Percebi no lsusb que os dispositivos USB 2.0 parecem usar um controlador Intel, enquanto os dispositivos USB 3.0 e 2.1 parecem usar um controlador ASUS. Gostaria de saber se os chips da Intel podem não suportar o controle de energia, então eu tentei os alto-falantes no soquete USB 2.1, que eu posso desligar quando está conectado ao teclado. Sem sorte.
Alguém tem alguma idéia de por que o uhubctrl se comporta da maneira como funciona?
Talvez o uhubctl seja um arenque vermelho e não funcione. Eu sei que existem outras maneiras de mudar de energia no Ubuntu, mas eles parecem depender de ser capaz de determinar o diretório que representa o soquete usb. Isso eu não tenho ideia de como fazer.