리눅스 심볼릭 링크 ttyUSBx 만들기 (symbolic link 우분투)

리눅스 심볼릭 링크 ttyUSBx 만들기 (symbolic link 우분투)


※ 이 포스트는 Ubuntu 32비트 14.04에서 작업한 사항


리눅스에서 심볼릭 링크를 만들어야 할 상황이 몇 가지 있는데, 이 포스트에서는 ttyUSBx에 대한 심볼릭 링크를 다룬다. 여러 대의 usb 장치를 사용하면 링크 번호가 변경된다.


재부팅 해도 변경되고, 꽂는 순서에 따라 변경되고, 장치를 뺏다 꽂아도 변경되고... 고정되지 않아 코드에서 수정을 몇 차례 해야 한다. 여간 까다롭게 신경 쓰이는 일이 아닐 수 없다. ttyUSBx의 심볼릭 링크를 사용하면 이런 문제점을 해결할 수 있다.


USB 정보 알아내기

심볼릭 링크를 만드는 데 필요한 정보는 3가지이다.


1. Vender ID

2. Product ID

3. Serial Number

위의 세 가지 정보는 아래 두 개의 명령어로 알아낼 수 있다.


1. lsusb

2. udevadm info -a /dev/ttyUSB0 | grep '{serial}'


심볼릭 링크 symbolic_lsusb[Linux Symbolic link] symbolic_lsusb


위에 보이는가?


lsusb로 얻어낸 0403은 Vender ID, 6001은 Product ID, 12345678은 Serial Number에 해당한다. 두 개의 명령어로 심볼릭 링크를 만들기 위한 사전 정보는 모두 수집한 셈이다.


참고로, 장치의 시리얼 넘버는 /dev/serial/by-id 에서도 확인할 수 있다. 외부 장치가 연결되어야만 by-id 폴더 하단에 그 장치의 정보가 생성된다. 당연하겠지만, 외부 장치가 연결되지 않으면 by-id 폴더는 텅 비게 된다.


rules 파일 생성

리눅스 udev에서 사용할 rules를 추가해 보자.


99-usb-serial.rules (다운로드 링크 - 99-usb-serial.rules [클릭])


ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="12345678", SYMLINK+="ttyUSB-test"


위의 내용처럼, ATTRS의 항목을 채우고 사용자가 원하는 이름의 LINK 이름을 지정하자. SYMLINK 항목은 사용자 정의 항목이라 누구든 원하는 대로 설정할 수 있다. 위와 같은 파일을 만들었다면, 아래 폴더에 추가하자.


/etc/udev/rules.d/99-usb-serial.rules


이 과정을 통해서 리눅스의 udev는 서비스를 시작할 때, 심볼릭 링크 rules를 불러오게 된다.


udev 재시작

새로운 rule이 추가되었으니, 이를 반영하기 위해 udev 서비스를 다시 구동하자.


1
sudo service udev restart
cs


심볼릭 링크 udev_restart[Linux Symbolic link] udev_restart


위의 그림처럼 stop/waiting 이후에 start/running 메시지가 확인된다면 udev가 정상적으로 다시 실행된 것이다.


다시 실행된 것이 확인된다면, 시스템의 /dev 폴더를 확인하자.


심볼릭 링크 ttyUSB[Linux Symbolic link] ttyUSB


새로 추가한 심볼릭 링크인 ttyUSB-test가 ttyUSB0을 가리키고 있음이 확인된다.


해당 장치가 ttyUSB1, ttyUSB12 등으로 바뀌어도 사용하는데 아무런 지장이 없다. 리눅스 환경에서 USB 장치를 많이 사용한다면 이런 usb용 symbolic link는 꼭 생성해 사용하자.


개발자라면 만에 하나 존재할지 모를 예외 상황을 대비해서라도 설정해 놓는 것이 좋다.


리눅스 심볼릭 링크 ttyUSBx 만들기 (symbolic link 우분투)

댓글(0)

Designed by JB FACTORY