![如何查询 USB 设备并知道它是否处于活动状态?](https://linux22.com/image/77740/%E5%A6%82%E4%BD%95%E6%9F%A5%E8%AF%A2%20USB%20%E8%AE%BE%E5%A4%87%E5%B9%B6%E7%9F%A5%E9%81%93%E5%AE%83%E6%98%AF%E5%90%A6%E5%A4%84%E4%BA%8E%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81%EF%BC%9F.png)
我在 Raspberry pi 2 上使用 Raspbian。我有一个通过 USB 连接到它的 RFID 读取器。
我的问题:RFID USB 设备间歇性不可用,并且重新启动设备无法工作。
我的问题:如何查询设备并知道它还活着?我可以使用 lsusb 和其他工具,但是,它们只是在系统中查询设备上最后已知的信息,还是实际上再次触摸设备并检索信息?
对于那些感兴趣的人,这是我在 cron 中运行的粗略脚本:
#!/bin/bash
rfid_reader="$(lsusb |grep ffff:0035)"
echo $rfid_reader
bus="$(lsusb |grep ffff:0035|cut -c 5-7)"
echo $bus
device="$(lsusb |grep ffff:0035|cut -c 16-18)"
echo $device
# echo "$(./usbreset /dev/bus/usb/$bus/$device)"
if [ -z "$rfid_reader" ]; then
echo "rfid_reader is not available, restarting USB"
echo 0x0 > /sys/devices/platform/bcm2708_usb/buspower
echo 0x1 > /sys/devices/platform/bcm2708_usb/buspower
sleep 5
ifdown eth0
sleep 5
ifup eth0
else
echo $rfid_reader
echo "rfid_reader is fine"
fi
其中 ffff:0035 是 lsusb 中我的 USB RFID 设备的 ID。由于网络适配器与 USB 集成,因此循环后无法很好地恢复。 sleep 和 ifup/ifdown 可以解决这个问题。
答案1
据我所知,lsusb 正在主动查询 USB 总线上的设备。
您还可以使用 dmesg 命令查看设备插入的历史记录,并确保这不是交互式的。
您还可以使用 lsinput
sudo apt-get install input-utils
sudo lsinput