Linux ttyUSB0 고정

김성빈·2024년 11월 5일
0

ROS2

목록 보기
3/3

문제

ROS2 run을 할 때 마다 arduino nano를 하드웨어적으로 해제했다가 연결해줘야 하는데(포트가 한번 설정되면 launch 가 끝나도 사용되는것으로 인식)

재 연결시 /dev/ttyUSB1로 바뀌는 경우가 있다.

그래서 nano의 USB 정보가 들어오면 해당 정보의 USB는 정의한 내용으로 잡히게 해달라는 규칙을 추가해야한다.

해결

Arduino nano /dev/ttyUSB0로 고정하기 위한 udev 규칙 생성

  1. udev 규칙 파일 생성:
sudo nano /etc/udev/rules.d/99-arduino.rules
  1. 다음 내용 추가 (위에서 확인된 USB 정보 기반):
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNEL=="ttyUSB*", NAME="ttyUSB0", SYMLINK+="ttyUSB0", MODE="0666"

각 속성의 의미:

SUBSYSTEM: "tty" (시리얼 포트)
ATTRS{idVendor}: "1a86" (제조사 ID)
ATTRS{idProduct}: "7523" (제품 ID)
ATTRS{product}: "USB Serial" (제품명)
KERNEL: "ttyUSB*" (커널에서 인식하는 장치 이름 패턴)
NAME: "ttyUSB0" (지정할 장치 이름)
SYMLINK: "ttyUSB0" (심볼릭 링크)
MODE: "0666" (읽기/쓰기 권한)

2-1. arduino nano의 USB 정보 값

usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
usb 1-1.3: Product: USB Serial
이 Arduino(CH341 칩셋)의 정보는:

Vendor ID: 1a86 (QinHeng Electronics)
Product ID: 7523 (CH341 USB to Serial converter)
Product Name: USB Serial
Device Path: 1-1.3 (USB 포트 위치)
Device Type: ch341-uart converter
  1. udev 규칙 적용:
sudo udevadm control --reload-rules
sudo udevadm trigger
  1. Arduino 연결이 끊어지는 것을 방지하기 위한 추가 설정:
sudo bash -c 'echo "options ch341 break_on_timeout=0" > /etc/modprobe.d/ch341.conf'
  1. 현재 사용자에게 권한 부여:
sudo usermod -a -G dialout $USER
  1. 변경사항 적용을 위해 재부팅:
sudo reboot

재부팅 후 Arduino를 연결하면 항상 /dev/ttyUSB0로 인식될 것입니다. 작동 여부를 확인하려면:

ls -l /dev/ttyUSB*

이 설정으로 Arduino를 재연결하거나 다른 USB 포트에 연결해도 항상 ttyUSB0로 인식 된다.

profile
감사합니다. https://www.youtube.com/channel/UCxlkiu9_aWijoD7BannNM7w

0개의 댓글