USB 직렬 "경로별" udev 규칙이 작동하지 않습니다.

USB 직렬 "경로별" udev 규칙이 작동하지 않습니다.

/dev/ttyUSB0FTDI 드라이버 등에 의해 열거되는 직렬 장치가 2개 이상 있습니다. 재부팅 시 이러한 장치는 다른 순서로 스크램블될 수 있습니다. 또한 이러한 장치 간 또는 기타 유사한 장치를 물리적으로 교체/교체할 수 있습니다./dev/ttyUSB1/dev/ttyUSB2

이제 나는 이것들을 지속적으로 열거하고 싶습니다. 장치가 연결된 물리적 USB 포트를 기반으로 장치 이름을 열거하고 싶습니다(PC 마더보드의 USB 포트에 직접 연결하거나 USB 허브를 사용할 수 있음). 장치가 USB 허브, 포트 1에 연결되어 있는지 가정해 보겠습니다. ttyUSB0, 포트 2 ttyUSB1등 으로 남겨 두어야 합니다 .

몇 가지 기본적인 내용을 읽은 후 나는 생각했습니다(앞서 언급했듯이여기) /dev/serial/by-path/장치를 기호 링크로 나열합니다. 그래서 /etc/udev/rules.d/101-usb-serial.rules다음 내용으로 파일을 만들었습니다 .

KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", DRIVERS=="ftdi_sio", PATH=="pci-0000:00:14.0-usb-0:10.1:1.0", SYMLINK+="ttyUSB000"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", DRIVERS=="ftdi_sio", PATH=="pci-0000:00:14.0-usb-0:10.2:1.0", SYMLINK+="ttyUSB001"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", DRIVERS=="ftdi_sio", PATH=="pci-0000:00:14.0-usb-0:10.3:1.0", SYMLINK+="ttyUSB002"

그러나 이것은 작동하지 않습니다. 이렇게 하면 ls /dev/ttyUSB*내가 만든 새 심볼릭 링크를 볼 수 없습니다. 무엇이 잘못될 수 있나요?

답변1

위의 댓글을 참고하여 위의 문제에 대한 해결책을 찾았습니다.

udevadm info /dev/ttyUSB0 | grep "ID_PATH="

/dev/ttyUSB0연결된 포트의 sysfs 경로는 위에 나열되어 있습니다. 이 값을 사용하여 ttyUSB1다음과 같이 규칙 파일에 있는 장치 수( , ....)에 대한 규칙을 생성합니다 .ttyUSB2/etc/udev/rules.d/101-usb-serial.rules

SUBSYSTEM=="tty",ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:10.1:1.0",SYMLINK+="ttyUSB001"
SUBSYSTEM=="tty",ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:10.2:1.0",SYMLINK+="ttyUSB002"
SUBSYSTEM=="tty",ENV{ID_PATH}=="pci-0000:00:14.0-usb-0:10.3:1.0",SYMLINK+="ttyUSB003"

파일 변경이나 생성이 완료되면 다음 명령을 실행하세요.

sudo udevadm control --reload-rules
sudo /etc/init.d/udev restart

폴리스티렌: 위의 예시 시나리오(제가 작업 중인 시나리오)에서는 4포트 Belkin USB 허브를 사용합니다. 허브 Device 1에 연결 등을 연결합니다.port 1Device 2port 2

관련 정보