Linux

如何查詢 USB 設備並知道它是否存在?

  • May 20, 2017

我在 Raspberry pi 2 上使用 Raspbian。我有一個 RFID 閱讀器通過 USB 連接到它。

我的問題: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 可以解決這個問題。

據我所知,lsusb 正在主動查詢 USB 匯流排上的設備。

您還可以使用 dmesg 命令查看設備插入的歷史記錄,並確保它不是互動式的。

您也可以使用 lsinput

sudo apt-get install input-utils
sudo lsinput

引用自:https://unix.stackexchange.com/questions/243923