Ubuntu에서 시리얼 통신이나 기타 USB 디바이스를 이용할 경우, 기본 권한 및 퍼미션이 슈퍼 유저만 사용 가능하도록 설정되어있다. 따라서 매번 sudo 명령을 이용해 사용자 프로그램을 실행하거나, sudo chmod 명령으로 일반 사용자도 읽고 쓸수 있도록 설정해줘야 한다.
먼저 /dev/tty* 에 대한 권한 및 퍼미션 해결 방법. 사용자 계정을 dialout, tty 그룹에 추가해 준다.
$ sudo usermod -a -G dialout $USER
$ sudo usermod -a -G tty $USER
다음으로 USB 디비이스에 대한 해결 방법.
udev 룰을 추가해준다.
/etc/udev/rules.d 디렉토리에 안에 임의의 룰 파일을 생성해준다. 보통 앞의 숫자는 우선 순위이고, 확장자는 .rules 를 사용한다.
예) /etc/udev/rules.d/50-ttyusb.rules
KERNEL=="ttyUSB[0-9]*", MODE="0666", ATTRS{idVendor}=="0403"
또, USB 디바이스가 연결될 때, 특정 작업을 수행하려면, RUN 옵션을 추가한다.
KERNEL=="ttyUSB[0-9]*", MODE="0666", ATTRS{idVendor}=="0403" ATTRS{idProduct}=="6001" RUN+="/bin/setserial -v /dev/%k low_latency"
idVendor나 idProduct는 기기에 따라 다르므로, 이를 확인하려면 https://ahnbk.com/?p=296 포스트를 참고.