본문 바로가기

OS

[Device] Device이름 설정

로봇을 코딩할 때, /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

이제 장치가 내가 부여한 이름으로 잘 등록되어 있을 것이다.

'OS' 카테고리의 다른 글

[Ubuntu] PXE + UEFI autoinstall 설정  (0) 2023.04.03
메모리 관리 1 (전공 내용 정리)  (0) 2021.03.09