로봇을 코딩할 때, /dev/ttyUSB0와 같은 포트를 열어 통신하는 프로그램을 종종 사용 할 때가 있다.
여기서 /dev란 device의 약자이며, 일반적으로 Serial 통신을 사용하는 기기를 연결하였을 경우 /dev/ttyACM 또는 /dev/ttyUSB로 이름이 붙여지며, 이 뒤에 차례대로 0번 부터 번호가 부여 된다.
하지만 실제 로봇을 사용할 때 이 device가 여러개가 연결되어 부팅이 될 때 마다 이 번호가 랜덤하게 부여되어 곤란할때, 디바이스의 레지스터 값을 이용하여 이름을 부여해 줄 수 있다.
Device info
이 작업을 위해서는 먼저 이름을 부여할 device의 정보를 가져와야 한다. 이를 위해 터미널창에 다음과 같이 입력한다.
udevadm info -a -n <현재 잡힌 포트 (ex. /dev/ttyACM0)>
여러가지 많은 정보들이 나오는데, 여기서 필요한건 다음 정보들이다.
ATTRS{idVendor} : 판매자 번호
ATTRS{idProduct} : 제품 번호 (종류)
ATTRS{serial} : 제품 고유 번호
위에서 확인한 내용들을 토대로 다음과 같은 파일 하나를 작성해준다.
99-usb-serieal.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0042",ATTRS{serial}=="85731303533351519212" , SYMLINK+="Motor", MODE="666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0042",ATTRS{serial}=="8573130353335181E091" , SYMLINK+="IR", MODE="666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740",ATTRS{serial}=="000001010000" , SYMLINK+="IMU", MODE="666"
여기서 SYMLINK는 장치에 부여할 이름이 되며, 부여하게 되면 /dev/"name"이 생성된다.
Mode는 새로 생성된 이 장치 이름에 대한 접근 권한에 대한 설정이다.
이제 이 규칙을 system이 usb rule을 읽는 경로로 이동하고 등록 해야 하므로 다음과 같이 한다.
경로 이동
~$ sudo cp 99-usb-serial.rules /etc/udev/rules.d
rule 등록
sudo udevadm control --reload-rules
이제 장치가 내가 부여한 이름으로 잘 등록되어 있을 것이다.
728x90
'OS' 카테고리의 다른 글
[Ubuntu] PXE + UEFI autoinstall 설정 (0) | 2023.04.03 |
---|---|
메모리 관리 1 (전공 내용 정리) (0) | 2021.03.09 |