라즈베리파이 (RPi)에 여러개 USB 장치를 연결할 수 있다
DV통신에서 대표적인 USB 장치는
- ThumbDV (AMBE 3000)
- USB2TTL (CP210x family)을 통해 Nextion LCD, MMDVM HotSpot 연결
- USB Sound Card
등이 있다
USB Sound Card는 ttyUSB# 를 사용하지 않으므로 관계가 없으나
ThumbDV와 Nextion LCD 혹은 MMDVM HotSpot 연결을 위한 USB2TTL은 ttyUSB0/ttyUSB1/ttyUSB2 를 사용한다
그래서
ThumbDV 사용 시 Analog_Bridge.ini 에서
[DV3000]
; address = 127.0.0.1
; rxPort = 2460
address = /dev/ttyUSB0
baud = 460800
serial = true
또 USB2TTL 을 통해 Nextion LCD 혹은 MMDVM HotSpot 연결 시 MMDVM_Bridge.ini 에서
[Nextion]
Port=/dev/ttyUSB1
Brightness=50
DisplayClock=1
UTC=0
ScreenLayout=3
IdleBrightness=20
위와 같이 지정을 해주어야 한다
그런데 RPi가 부팅하면서
ThumbDV -> ttyUSB1
USB2TTL -> ttyUSB0
으로 할당될 경우가 있고 그러면 당연히 ThumbDV과 Nextion LCD 혹은 MMDVM HotSpot은 작동하지 않는다
설정값을 다시 지정하는 방법도 있지만 다시 부팅 시 원래데로 돌아간다면 짜증나는 일이 아닐수 없다
그래서 RPi에 부착된 USB 장치를 각각 고유 이름으로 지정하여 바뀌는 경우가 발생하지 않도록 하는 방법을 공유합니다
먼저 RPi에 연결되어 있는 USB 장치 정보를 알아보자
pi@dvpi:~ $ udevadm info /dev/ttyUSB0
P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3.1/1-1.1.3.1:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
L: 0
S: serial/by-id/usb-NW_Digital_Radio_03_20_ThumbDV_D307T39H-if00-port0
S: serial/by-path/platform-3f980000.usb-usb-0:1.1.3.1:1.0-port0
E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3.1/1-1.1.3.1:1.0/ttyUSB0/tty/ttyUSB0
E: DEVNAME=/dev/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=7599118
E: ID_VENDOR=NW_Digital_Radio_03_20
E: ID_VENDOR_ENC=NW\x20Digital\x20Radio\x2003\x2f20
E: ID_VENDOR_ID=0403
E: ID_MODEL=ThumbDV
E: ID_MODEL_ENC=ThumbDV
E: ID_MODEL_ID=6015
E: ID_REVISION=1000
E: ID_SERIAL=NW_Digital_Radio_03_20_ThumbDV_D307T39H
E: ID_SERIAL_SHORT=D307T39H
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ftdi_sio
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_MODEL_FROM_DATABASE=Bridge(I2C/SPI/UART/FIFO)
E: ID_PATH=platform-3f980000.usb-usb-0:1.1.3.1:1.0
E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_1_3_1_1_0
E: DEVLINKS=/dev/serial/by-id/usb-NW_Digital_Radio_03_20_ThumbDV_D307T39H-if00-port0 /dev/serial/by-path/platform-3f980000.usb-usb-0:1.1.3.1:1.0-port0
E: TAGS=:systemd:
pi@dvpi:~ $ udevadm info /dev/ttyUSB1
P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/ttyUSB1/tty/ttyUSB1
N: ttyUSB1
L: 0
S: serial/by-path/platform-3f980000.usb-usb-0:1.1.2:1.0-port0
S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/ttyUSB1/tty/ttyUSB1
E: DEVNAME=/dev/ttyUSB1
E: MAJOR=188
E: MINOR=1
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=7859601
E: ID_VENDOR=Silicon_Labs
E: ID_VENDOR_ENC=Silicon\x20Labs
E: ID_VENDOR_ID=10c4
E: ID_MODEL=CP2102_USB_to_UART_Bridge_Controller
E: ID_MODEL_ENC=CP2102\x20USB\x20to\x20UART\x20Bridge\x20Controller
E: ID_MODEL_ID=ea60
E: ID_REVISION=0100
E: ID_SERIAL=Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001
E: ID_SERIAL_SHORT=0001
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=cp210x
E: ID_VENDOR_FROM_DATABASE=Cygnal Integrated Products, Inc.
E: ID_MODEL_FROM_DATABASE=CP2102/CP2109 UART Bridge Controller [CP210x family]
E: ID_PATH=platform-3f980000.usb-usb-0:1.1.2:1.0
E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_1_2_1_0
E: DEVLINKS=/dev/serial/by-path/platform-3f980000.usb-usb-0:1.1.2:1.0-port0 /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
E: TAGS=:systemd:
위와 동일한 값을 간단히 확인 방법
pi@dvpi:~ $ lsusb
Bus 001 Device 006: ID 0483:5750 STMicroelectronics
Bus 001 Device 004: ID 8086:0808 Intel Corp.
Bus 001 Device 009: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)
Bus 001 Device 007: ID 214b:7250
Bus 001 Device 005: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]
Bus 001 Device 008: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
위 붉은 글씨
- 0403 ^ 10c4 : 제조자번호
- 6015 ^ ea60 : 상품번호
pi@dvpi:~ $ udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' | head -n1 ATTRS{serial}=="D307T39H"
pi@dvpi:~ $ udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1 ATTRS{serial}=="0001"
위 붉은 글씨
- D307T39H ^ 0001 : 상품 일련번호
위 정보를 바탕으로 USB 순서를 지정하는 99-usb-serial.rules 파일 생성
sudo nano /etc/udev/rules.d/99-usb-serial.rules
아래 내용을 입력합니다
(붉은 글씨 내용은 자신의 장치에 맞는 것을 반드시 입력해야 합니다)
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0001", SYMLINK+="ttyUSB_Nextion_LCD"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", ATTRS{serial}=="D307T39H", SYMLINK+="ttyUSB_ThumbDV"
입력하고 CTRL-X -> Y -> 엔터 하고 저장하고 재부팅합니다
sudo reboot
재부팅 후 제대로 작동하는지 확인
pi@dvpi:~ $pi@dvpi:~ $ ls -l /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 Oct 27 13:05 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Oct 27 13:06 /dev/ttyUSB1
lrwxrwxrwx 1 root root 7 Oct 27 13:05 /dev/ttyUSB_Nextion_LCD -> ttyUSB1
lrwxrwxrwx 1 root root 7 Oct 27 13:05 /dev/ttyUSB_ThumbDV -> ttyUSB0
pi@dvpi:~ $
관련 Analog_Bridge.ini 와 MMDVM_Bridge.ini 파일 수정
ThumbDV 사용 시 Analog_Bridge.ini 에서
[DV3000]
; address = 127.0.0.1
; rxPort = 2460
address = /dev/ttyUSB_ThumbDV
baud = 460800
serial = true
USB2TTL 을 통해 Nextion LCD 혹은 MMDVM HotSpot 연결 시 MMDVM_Bridge.ini 에서
[Nextion]
Port=/dev/ttyUSB_Nextion_LCD
Brightness=50
DisplayClock=1
UTC=0
ScreenLayout=3
IdleBrightness=20
[Modem]
Port=/dev/ttyUSB_MMDVM_HotSpot ; /dev/ttyUSB_MMDVM_Hotspot 은 위에서 만들지 않았고 설명용임
Protocol=uart
위와 같이 지정 해주면
더 이상 /dev/ttyUSB#로 인한 시스템이 작동 불능 스트레스에서
벗어날 수 있습니다
DS5QDR 73!
'RaspberryPi' 카테고리의 다른 글
2021-01-23 RPi : 라즈베리파이용 LCD 해상도 변경 (2) | 2021.01.23 |
---|---|
2020-10-29 RPi : 라즈베리파이에 Raspbian Buster 설치 방법 (4) | 2020.10.29 |
2020-09-27 RPi : RPi LCD 모니터 해상도, 180도 회전 및 터치 보정 (2) | 2020.09.27 |
2020-09-26 RPi : RaspberryPi GPIO Pin 정보 (2) | 2020.09.27 |
2020-08-24 RPi : 라즈베리파이 내장 사운드 alsamixer 음량 조정 (0) | 2020.08.24 |