查找连接到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 序列号匹配时脚本不会陷入循环。或者,如果没有更好的方法,那么我想将 ID_SERIAL 的值保留在此 for 循环之外,并再次运行 for 循环以查找其他设备。

答案1

我用的是这个单线。假设我们有一个 FT2232H,其 USB 供应商 ID 为 0x0403,USB 产品 ID 为 0x6010,那么您将获得所有连接的 FT2232H 的序列号,如下所示:

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

相关内容