如何查询 USB 设备并知道它是否处于活动状态?

如何查询 USB 设备并知道它是否处于活动状态?

我在 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

相关内容