Como posso detectar o uso de energia por USB?

3

Eu tenho um telefone celular cuja porta de carregamento não se conecta bem e quero ser notificado se ele for desconectado. Quero que isso funcione mesmo se o telefone estiver desligado e não montado como um sistema de arquivos, por isso preciso detectar o consumo de energia. Eu vou usar notificar-enviar para enviar o alerta de um script.

Parece que o powertop pode mostrar o uso de energia por dispositivo , mas não é passível de análise ou fácil de script com. Eu vejo que é possível detectar o uso de energia USB em outros sistemas operacionais .

Encontrei algumas informações em detecção USB devices , mas os que eu tentei só funcionavam para sistemas de arquivos montados. Também encontrei as instruções para ligar e desligar dispositivos USB .

    
por sondra.kinsey 24.10.2017 / 19:59

1 resposta

2

Veja o que eu fiz para descobrir isso. Primeiro, eu escrevi um script para comparar a saída de alguns comandos de informações do sistema:

 
#!/bin/sh
write_logs(){
  ls /dev/disk/by-uuid/ > uuids
  lsusb -v > lsusb-v
  lsusb -t > lsusb-t
  ls -alh /sys/bus/usb/devices/ | sed -E 's/.+ -> //' | tail -n+4 > sysbus
}
echo "Insert plug and press ENTER."
mkdir a; cd a
read VAR; write_logs
echo "Remove plug and press ENTER."
mkdir ../b; cd ../b
read VAR; write_logs
cd ..
diff -r a b # Actually, I prefer meld, but this is portable.

Eu não entendi que a saída foi diferente no começo, porque o meu sistema leva alguns segundos para reconhecer que um novo dispositivo USB está conectado. Se você executar este script, aguarde alguns segundos antes de pressionar ENTER. Quando fiz isso, percebi que a saída para esses comandos realmente mudou.

Para meu telefone, posso detectar se ele está conectado:

lsusb -v 2>/dev/null | grep 'Motorola PCS' >/dev/null \
&& echo phone is plugged in

Eu posso detectar se alguma coisa está conectada a uma porta específica com isso:

ls -alh /sys/bus/usb/devices/ | grep pci0000:00/0000:00:1d.7/usb2/2-6 >/dev/null \
&& echo Something is plugged into the left USB port.

Encontrei esses padrões do grep apenas comparando a saída do script acima; você pode ter que modificá-los para o seu próprio sistema ou para o seu próprio telefone.

Ainda vou ter que brincar com como ativar minha função de detecção e executá-la periodicamente para ver se o dispositivo foi removido (provavelmente usando chron ). Além disso, ainda não descobri como detectar quanta energia está sendo usada; isso apenas detecta se algo está conectado ou não.

    
por sondra.kinsey 29.10.2017 / 02:40