LinuxマシンのUSBに接続されたチップのシリアル番号を探す

LinuxマシンのUSBに接続されたチップのシリアル番号を探す

LinuxシステムでFTDIチップのシリアル番号を読み取ろうとしています。これを行う次のプログラムが見つかりましたが、forループの外側にID_SERIAL変数の値を保持しません。

for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]] && exit
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]] && exit
        echo "$devname - $ID_SERIAL"        
    )
done

FTDIシリアル番号の一致を見つけるときにスクリプトがループに陥らないように、FTDIチップでシリアル番号を見つけるためのループを避けたいと思います。または、より良い方法がない場合は、このforループの外側にID_SERIAL値を保持し、forループを再実行して別のデバイスを探したいと思います。

ベストアンサー1

私はこの1行を使用しています。 USBベンダーIDが0x0403で、USB製品IDが0x6010のFT2232Hがあると仮定すると、接続されているすべてのFT2232Hのシリアル番号を次のように取得できます。

$ lsusb -v -d 0403:6010 2>/dev/null | grep iSerial | awk '{ print $3 }' 
FTENC
FTWUU8N5

おすすめ記事