- USB 포트는 /etc/udev/rules.d/99-usb_serial.rules 에서 정의해줄 수 있다.
보통 idVendor, idProduct, serial 로 충분한 것 같은데 이 모두가 동일한 경우 ID_USB_INTERFACE_NUM을 정의해줌으로써 해결할 수 있다.
idVendor, idProduct, serial는 다음을 통해 확인한다.
udevadm info -a -n [장치 이름] | grep '{idVendor}' | head -n1
# 예시 udevadm info -a -n /dev/ttyUSB0 | grep '{idVendor}' | head -n1
udevadm info -a -n [장치 이름] | grep '{idProduct}' | head -n1
udevadm info -a -n [장치 이름] | grep '{serial}' | head -n1
추가적으로 ID_USB_INTERFACE_NUM을 정의하려면 다음의 명령을 통해 ATTRS{bInterfaceNumber}를 확인한다.
udevadm info -a -n [장치 이름]
마지막으로 99-usb_serial.rules 에 확인한 내용을 추가해준다.
cd /etc/udev/rules.d
sudo vi 99-usb_serial.rules
# 99-usb_serial.rules 작성
KERNEL=="ttyUSB[0-9]*", MODE="0666", ATTRS{idVendor}=="[확인한 idVendor]", ATTRS{idProduct}=="[확인한 idProduct]", ENV{ID_USB_INTERFACE_NUM}=="[확인한 bInterfaceNumber]", SYMLINK+="[정의하고 싶은 포트 이름]"
# 예시 KERNEL=="ttyUSB[0-9]*", MODE="0666", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", ENV{ID_USB_INTERFACE_NUM}=="01", SYMLINK+="ttyBMS"
# ATTRS{devpath}=".." 도 가능
여기서 MODE=”0666”는 모든 사용자가 장치에 대한 읽기/쓰기 액세스를 허용하도록 권한을 설정한다는 의미이다.
이후 재부팅을 하고 ls -al /dev/tty* 명령을 이용해 확인할 수 있다.
재부팅을 안 하려면 다음 명령을 이용한다.
sudo udevadm control --reload
sudo udevadm trigger
'리눅스 > 정보' 카테고리의 다른 글
프로세스 (0) | 2025.03.14 |
---|---|
디렉토리 구조 (0) | 2025.03.14 |
프로그램의 라이브러리 의존성 확인 (0) | 2025.03.13 |
백그라운드 실행 (0) | 2025.03.13 |
hostname 변경 (0) | 2025.03.13 |