부팅 시 USB 장치를 고정 주소에 매핑

부팅 시 USB 장치를 고정 주소에 매핑

내 컴퓨터에 여러 개의 USB 장치가 연결되어 있습니다.

  1. FT232 기반 USB-UART 변환기:직렬 프로토콜을 사용하여 마이크로컨트롤러와 컴퓨터 간에 데이터를 보내고 받는 데 사용됩니다.
  2. YDLidar TG15:환경 다이어그램을 그리는 데 사용됩니다.제품 페이지

NUC에서 Lubuntu 22.04 LTS를 실행하고 있습니다.

컴퓨터가 부팅될 때마다 dev/ttyUSB0cp210x 직렬 변환기를 사용하여 FT232 기반 장치를 YDLidar에 할당할 수 있기를 원합니다. dev/ttyUSB1내가 원하는 구성은 다음과 같습니다.

$ sudo dmesg | grep tty
[    0.095479] printk: console [tty0] enabled
[    6.046918] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0
[   57.282034] usb 1-4: cp210x converter now attached to ttyUSB1

다음과 같은 일부 리소스를 온라인으로 따라갈 수 있었습니다.이것,이것, 그리고이것, 아래와 같이 내 사용 사례에 대한 사용자 지정 규칙을 작성하는 데 도움이 되었습니다.

$ cat /etc/udev/rules.d/34-usb-serial.rules 
# Assign FTDI chips to /dev/ttyFTDI
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK="ttyUSB0"
# Assign Silicon Labs UART converters to /dev/ttyUSB1
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK="ttyUSB1"

질문:

  1. udevadm다시 로드 규칙이 트리거된 후에도 시작 후 주소가 변경되지 않습니다. 나는 사용한다
sudo udevadm control --reload-rules
sudo udevadm trigger

규칙을 다시 로드합니다. 그러면 규칙이 로드되어야 하고, 로드할 수 없으면 불평해야 합니다. 그렇죠? 그러나 이 대체 방법이 작동하지 않으면 오류가 발생하지 않습니다. 단지 cp210x 장치를 로 지정 ttyUSB0하고 FTDI 장치를 로 지정합니다 ttyUSB1. 이건 다시 해봐야 sudo dmesg | grep tty알겠네요 .

  1. 내가 작성한 udev 규칙을 사용하는 방법적절하게부팅 시 이러한 장치에 적절한 ID를 할당하시겠습니까?

첨부된:이 경우 "적절"하다고 간주되는 것이 모호한 경우에는 이러한 파일을 편집할 때 따르는 "모범 사례"를 가능한 한 밀접하게 따르면서 강력한 방식으로 작동하는 것을 원합니다.

미리 감사드립니다!

답변1

USB 직렬 변환기 장치의 표준 이름과 겹치 SYMLINK="ttyUSB0"거나 사용하지 못할 수 있습니다 .SYMLINK="ttyUSB1"

현대적인 udev구현으로는 다음과 같은 일이 불가능합니다.씌우다표준 이름이지만 직접 만들 수 있습니다.추가의심볼릭 링크.

목적에 따라 사용자 정의 장치 노드의 이름을 지정해야 합니다.

# FTDI serial converter for microcontroller
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSBmc"

# Silicon Labs serial converter for LIDAR
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="ttyUSBlidar"

이러한 규칙에 따라 직렬 변환기는 실제 장치 이름 /dev/ttyUSB0/dev/ttyUSB1각 부팅 시 감지되는 순서를 가져오지만 /dev/ttyUSBmc항상 FTDI 직렬 변환기를 가리키고 /dev/ttyUSBlidarSilicon Labs 직렬 변환기를 가리키는 심볼릭 링크가 됩니다. .

또한 이러한 udev 규칙을 생성한 후 initramfs 파일을 다시 빌드해야 합니다. USB 직렬 변환기용 드라이버는 실제 루트 파일 시스템이 마운트되기 전 부팅 프로세스 초기에 로드될 수 있습니다.

initramfs를 업데이트하면 가장 오래된 드라이버가 로드될 때에도 추가한 udev 규칙의 복사본이 존재하도록 보장할 수 있습니다.

관련 정보