본문 바로가기

Project/RIS

[RIS] 1/2 (USB 장치의 Symbolic Link 생성법)

728x90

- USB Port 설정법

 

  • 각 센서를 제작한 회사에서 지원하는 프로그램을 이용하여 윈도우에서 USB Port의 Serial을 변경

 

$ ls -al /dev/serial/by-id
  • USB 장치에 부여된 이름 확인

(터미널 창 사진 추가)

 

$ lsusb
  • 위 명령어를 USB를 꽃고 치고 빼고 쳐서 해당 usb port의 idVendor와 idProduct를 확인
  • idVendor는 제품 회사의 ID, idProduct는 제품의 ID (서로 다른 센서의 이 두 ID가 겹치는 경우가 많음)

  • 'Bus 001 Device 033'가 새로 생김
 $ udevadm info -a /dev/ttyUSB0 | grep '{serial}'
  • USB Port의 serial 번호를 확인
  • 위의 경우 'DM03L0C6'
$ cd /etc/udev/rules.d
$ sudo gedit portset.rules
  • /etc/udev/rules.d directory에서 usb port 설정 파일 생성(portset.rules)

 

KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="DM03L0C6",
MODE:="0666", GROUP:="dialout", SYMLINK+="ttyRS485"
  • 위에서 확인한 내용들을 토대로 portset.rules 파일에 위 내용을 입력
  • KERNEL은 kernel의 이름으로, device의 kernel 이름과 일치할 때 작업 진행
  • SYMLINK+=에 장치에 부여할 고유 이름 설정
  • 위의 경우 RS485 to USB의 port를 설정하는 것이므로 이름을 'ttyRS485'로 변경
$ sudo service udev reload
$ sudo service udev restart
  • 변경 사항을 적용하기 위해 udev를 재로드 후 재시작 

 

$ cd ~/catkin_ws/src/md/src
$ sudo gedit com.cpp
  • RS485 USB를 사용하는 package의 통신 설정 파일으로 이동해(com.cpp) port 변경사항을 작성

 

$ ll /dev/
  • 변경 사항 적용 여부 확인
  • 위 명령어든 'dev'라는 이름이 붙은 모든 이름들을 불러옴

 

$ sudo ls -l /dev/tty*
  • 개별로 확인 가능

 

RS485 USB를 먼저 꽂았을 경우
RS485 USB를 두번째로 꽂았을 경우

  • 위처럼 USB의 연결 순서에 맞게 심볼릭 링크가 변경됨을 확인할 수 있다
  • 위는 ttyRS485의 원본이 ttyUSB0, 1임을 의미한다

 

- Product ID, Vendor ID, Serial Number가 모두 동일한 경우

 

$ udevadm info /dev/ttyUSB0 
$ udevadm info /dev/ttyUSB1
  • 각 device에 대한 좀 더 자세한 정보를 확인

 

  • 위 결과 중 port의 'ID_PATH'를 확인하여 udev 파일에 입력
  • 'ID_PATH'는 현재 device가 꽃혀있는 USB port에 대응되는 값. 따라서 위 값 설정 후 device 연결 port를 변경하면 안됨

(udev 사진 추가. 아래 사진 수정)

 

  • 혹은 Bus, Device 정보를 통해 생성 가능

KERNEL=="ttyUSB[0-9]", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{busnum}=="1",
ATTRS{devnum} =="5", MODE:="0666", GROUP:="dialout", SYMLINK+="ttyIMU"

KERNEL=="ttyUSB[0-9]", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{busnum}=="1", 
ATTRS{devnum} =="6", MODE:="0666", GROUP:="dialout", SYMLINK+="ttyRPLidar"

 

 

 

- 위처럼 udev의 설정을 하나씩 알아내는 것 대신 제공된 script 파일을 실행시켜서 설정을 간단히 수행할 수 있음

$ cd ~/catkin_ws/src/rplidar_ros/scripts
  • 위 directory로 이동 후 create_udev_rules.sh 파일 확인

(파일 사진 추가)

 

위 사진의 주석 추가

  • etc/udev/rules.d 로 복사될 rplidar.rules 파일 확인 

(파일 사진 추가)

 

 

 

 

 


참고자료 : https://github.com/wookbin/iahrs_driver

 

GitHub - wookbin/iahrs_driver: iahrs ros package

iahrs ros package. Contribute to wookbin/iahrs_driver development by creating an account on GitHub.

github.com

https://velog.io/@717lumos/Linux-USB-%EC%9E%A5%EC%B9%98-%EC%9D%B4%EB%A6%84-%EA%B3%A0%EC%A0%95%ED%95%98%EA%B8%B0-udev-%EC%84%A4%EC%A0%95-Symbolic-Link%EC%8B%AC%EB%B3%BC%EB%A6%AD-%EB%A7%81%ED%81%AC-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

[Linux] USB 장치 이름 고정하기: udev 설정, Symbolic Link 만들기

udev rules, 심볼릭 링크(Symbolic Link), 장치 (포트) 이름 고정하기, 스크립트 파일(.sh) 사용하기

velog.io

https://www.reddit.com/r/linuxquestions/comments/4m6l1j/multiple_devices_with_same_product_id_vendor_id/