/dev/ttyUSB0
FTDI 드라이버 등에 의해 열거되는 직렬 장치가 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 1
Device 2
port 2