라즈베리파이 (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 -> -> 엔터 하고 저장하고 재부팅합니다

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!

블로그 이미지

DS5QDR Heonmin Lee in Korea

DV 통신 경험 공유 Mode : DMR, DSTAR, YSF, XLX, YSF, M17, AllStarLink, EchoLink Software : DVSwich, USRP Client, Last Heard, MiniPi, MiniMT, VuMeter, DVPi, Pi-Star

,