如何检测 USB 电源使用情况?

如何检测 USB 电源使用情况?

我有一部手机,它的充电端口连接不好,我想在它拔掉电源时收到通知。我希望这个功能即使在手机关机且未作为文件系统安装的情况下也能正常工作,所以我需要检测电量消耗。我将使用通知发送从脚本发送警报。

看起来像powertop 可以显示设备的电量使用情况,但它无法解析或易于编写脚本。我发现可以检测 USB 电源使用情况其他操作系统

我发现了一些信息检测 USB 设备,但我尝试过的那些只适用于已挂载的文件系统。我还发现打开和关闭 USB 设备的说明

答案1

以下是我为解决这个问题所做的事情。首先,我编写了一个脚本来比较一些系统信息命令的输出:

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

一开始我没注意到输出有什么不同,因为我的系统需要几秒钟才能识别出新连接的 USB 设备。如果您运行此脚本,请等待几秒钟再按 ENTER。当我这样做时,我意识到这些命令的输出确实发生了变化。

对于我的手机,我可以通过以下方式检测它是否已插入:

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

我可以用这个检测是否有任何东西插入到特定端口:

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.

我仅通过比较上述脚本的输出就发现了这些 grep 模式;您可能需要根据自己的系统或手机对其进行修改。

我仍然需要研究如何激活检测功能并定期运行它来查看设备是否已被移除(可能使用克罗恩)。另外,我还没有弄清楚如何检测使用了多少电量;这只是检测是否连接了任何东西。

相关内容