如何检测 Linux 中用于充电的 USB 端口?

How can I detect a USB port being used for charging in Linux?

我正在使用 Raspberry Pi 3 Model B 上的 USB 端口通过 USB 磁性充电线为配件充电。我想检测电缆何时从 Pi 插入和移除

我一直在插拔这根电缆,并寻找在 Linux 上检测到的任何痕迹。到目前为止,我已经尝试过:

  • 通过 udevadm monitor 监控 udev 事件。
  • 拖尾系统登录 /var/log
  • 运行 /dev 新设备目录中的 inotify 监视
  • /sys/bus/usb/devices 中四处寻找线索

是否可以检测到我的简易充电线是 inserted/removed?凭直觉我认为不会(因为电缆纯粹用于充电,没有驱动程序),但是我观察到当我插入电缆时 RPI 的内置 LED 闪烁红色。

无需大量努力(硬件或黑客),否。

您观察到的红色 LED 闪烁是 Pi 的电源监视器,指示当电流开始流向您的配件时电压突然下降。此 LED 指示电压(电能)已短暂低于稳定水平,可能会导致系统不稳定。

由于连接纯粹是充电(没有与 Pi 交换 USB 数据),操作系统不知道设备已连接。可以外接一个测流电路来检测外围的消耗功率,不过这样的问题最好放在电子栈交换中。

我认为您可以使用 lsusb 工具来完成:

 lsusb -v

或过滤:

 lsusb -v |grep 'Bus\|MaxPower'

通过这个命令,我可以看到每个 USB 使用了多少电量以及连接了哪个设备。