USB 장치를 쿼리하고 활성화 여부를 어떻게 알 수 있나요?

USB 장치를 쿼리하고 활성화 여부를 어떻게 알 수 있나요?

저는 라즈베리 파이 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

관련 정보