리눅스 머신의 USB에 연결된 칩의 일련번호 찾기

리눅스 머신의 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

저는 이 한 줄을 사용하고 있습니다. USB 공급업체 ID가 0x0403이고 USB 제품 ID가 0x6010인 FT2232H가 있다고 가정하면 연결된 모든 FT2232H의 일련 번호를 다음과 같이 얻을 수 있습니다.

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

관련 정보