Raspian: 정적 매핑 /dev/ttyUSB*

Raspian: 정적 매핑 /dev/ttyUSB*

저는 Raspian을 실행하는 Raspberry Pi를 사용하여 일부 홈 자동화 하드웨어를 제어하고 있습니다. 하드웨어 중 하나는 RS232를 통해 통신하므로 USB-RS232 어댑터를 사용하여 RPi에 연결됩니다. 다른 하나는 USB를 통해 연결되지만 직렬 포트를 에뮬레이트합니다.

하드웨어 하나만 사용하면 모든 것이 괜찮습니다. 소프트웨어에 하드웨어를 사용하라고 지시하면 /dev/ttyUSB0모든 것이 괜찮습니다.

문제는 두 가지를 동시에 연결할 때입니다. 한 장치는 로 표시되고 ttyUSB0다른 장치는 으로 표시됩니다. ttyUSB1이는 괜찮지만 RPi에서 플러그를 뽑지 않았음에도 불구하고 재부팅할 때마다 어떤 하드웨어 장치가 어떤 장치 파일에 할당되는지는 기본적으로 무작위입니다.

재부팅 후 제어 소프트웨어가 잘못된 장치와 통신하고 있어 혼동되는 경우가 종종 있습니다. 장치를 장치 파일에 "하드코드"할 수 있는 방법이 있습니까?

답변1

직렬 장치의 경우 Topology 아래에서 토폴로지별로 이름이 지정된 장치를 찾아야 하므로 /dev/serial/by-path/동일한 USB 허브 및 포트를 사용하는 경우 동일하게 유지되어야 합니다. 예를 들어:

ls -l /dev/serial/by-path/pci-0000:04:00.0-usb-0:2.1.1:1.0-port0
... /dev/serial/by-path/pci-0000:04:00.0-usb-0:2.1.1:1.0-port0 -> ../../ttyUSB0

/dev/serial/by-id/마찬가지로 다음과 같이 이름(일련 번호 포함)으로 장치를 찾아야 합니다 .

 ls -l /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5771WOA-if00-port0
 ... /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5771WOA-if00-port0 -> ../../ttyUSB0

답변2

이를 위해 udev 규칙을 사용할 수 있습니다. udev 규칙은 USB 장치를 일련 번호로 일치시키고 /dev.

/dev이와 같은 udev 규칙은 실제 장치 노드에 대한 심볼릭 링크를 생성하는 데 충분합니다 .

SUBSYSTEM=="usb", ATTRS{serial}=="<serial number>", SYMLINK+="USBserial1"

바라보다udev 규칙 작성다니엘 드레이크의 세부 사항.

관련 정보