Linux Port Setup#
What you’ll do
Ubuntu에서 USB-Serial 장치를
/dev/ttyKMC로 고정하고, 권한 문제를 줄입니다.
Prerequisites
Ubuntu 20.04,
sudo권한차량 보드(USB-Serial)가 연결되어 있고
lsusb가 동작해야 합니다.
Next
Ubuntu에서 하드웨어 보드를 꽂았을 때 항상 같은 장치 경로로 접근할 수 있도록, udev 규칙을 추가해 /dev/ttyKMC 같은 고정 심볼릭 링크를 만드는 방법입니다.
1. 준비#
Ubuntu 20.04
USB-Serial 장치가 연결되어 있고,
idVendor,idProduct값을 확인할 수 있어야 함아래 예시는
idVendor=0403,idProduct=6014(FTDI 계열에서 흔함)
내 장치 VID/PID 확인#
장치를 꽂고 아래 실행:
lsusb
출력 예시에서 ID 0403:6014 같이 보이는 게 VID:PID 입니다.
0403→idVendor6014→idProduct
Bus 002 Device 002: ID 2109:0822 VIA Labs, Inc. USB3.1 Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0029 Intel Corp.
Bus 001 Device 063: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
Bus 001 Device 002: ID 2109:2822 VIA Labs, Inc. USB2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
2. udev 규칙이 하는 일#
이 규칙은 다음을 설정합니다.
USB-Serial 장치를 인식하면
/dev/ttyKMC라는 심볼릭 링크 생성권한을
0660+dialout그룹으로 설정해 접근 권한 문제를 줄임
규칙 파일 경로:
/etc/udev/rules.d/99-usb-serial-kmc.rules
3. 자동 설정 스크립트 실행#
아래 스크립트를 파일로 저장한 뒤 실행하세요.
(1) 스크립트 저장#
예: setup_kmc_udev.sh로 저장
#!/usr/bin/env bash
set -e
RULE_FILE="/etc/udev/rules.d/99-usb-serial-kmc.rules"
SYMLINK_NAME="ttyKMC"
ID_VENDOR="0403"
ID_PRODUCT="6014"
MODE="0660"
GROUP="dialout"
RULE_LINE="SUBSYSTEM==\"tty\", ATTRS{idVendor}==\"${ID_VENDOR}\", ATTRS{idProduct}==\"${ID_PRODUCT}\", SYMLINK+=\"${SYMLINK_NAME}\", MODE=\"${MODE}\", GROUP=\"${GROUP}\""
echo "=== USB 시리얼 udev 규칙 설정 스크립트 ==="
echo "장치: idVendor=${ID_VENDOR}, idProduct=${ID_PRODUCT}"
echo "심볼릭 링크: /dev/${SYMLINK_NAME}"
echo "권한: ${MODE} (GROUP: ${GROUP})"
echo
echo "[1/3] udev 규칙 파일 생성: ${RULE_FILE}"
echo "${RULE_LINE}"
echo "${RULE_LINE}" | sudo tee "${RULE_FILE}" > /dev/null
echo "[2/3] udev 규칙 리로드 및 트리거"
sudo udevadm control --reload-rules
sudo udevadm trigger
echo "[3/3] 사용자 dialout 그룹 추가"
sudo usermod -aG dialout "${USER}"
echo
echo "완료!"
echo "- 이제 USB 시리얼 장치를 한 번 뺐다가 다시 꽂으세요."
echo "- /dev/${SYMLINK_NAME} 가 생기는지 확인:"
echo " ls -l /dev/${SYMLINK_NAME}"
echo "- 그룹 변경은 로그아웃 후 다시 로그인해야 적용됩니다."
echo " (다시 로그인 후 'groups' 쳐서 dialout 포함됐는지 확인)"
(2) 실행 권한 부여 + 실행#
sudo chmod +x setup_kmc_udev.sh
./setup_kmc_udev.sh
4. 적용 확인#
(1) 장치 재연결#
USB 장치를 한 번 뺐다가 다시 꽂습니다.
(2) /dev/ttyKMC 생성 확인#
ls -l /dev/ttyKMC
정상이라면 /dev/ttyKMC -> /dev/ttyUSB0 같은 형태의 링크가 보입니다.
ubuntu:~$ ls -l /dev/ttyKMC
lrwxrwxrwx 1 root root 7 Jan 2 17:08 /dev/ttyKMC -> ttyUSB0
5. 자주 생기는 문제#
Q1. /dev/ttyKMC가 안 생겨요#
VID/PID가 다를 수 있음 →
lsusb로 확인 후 스크립트의ID_VENDOR,ID_PRODUCT수정규칙이 적용됐는지 확인:
cat /etc/udev/rules.d/99-usb-serial-kmc.rules
udev 재로드:
sudo udevadm control --reload-rules
sudo udevadm trigger
Q2. 권한 때문에 열 수 없어요 (Permission denied)#
로그아웃/로그인 후 dialout 그룹 적용이 되었는지 확인:
groups
출력에 dialout이 있어야 합니다.