DV_MEGA + 라즈베리파이 B+ 조합에 ser2net 을 통한 안드로이드 휴대폰과의 BlueDV 동작 테스를 해 봤습니다.
라즈베리파이용 DV-MEGA 펌웨어는 HR2.29 버전으로 업데이트한 상태에서 진행했습니다.
참조 사이트 : HOW-TO BlueSpot for DVMega on a Raspberry Pi
http://www.dvmega.auria.nl/images/DVMEGA%20BlueSpot%20manual.pdf
<주>
아래 내용은 싱글밴드 RPi 실드 기준입니다. 듀얼밴드용에서도 작동할 것입니다.
Arduino UNO 기반 DV-MEGA에서는 /dev/ttyAMA0을 /dev/ttyACM0 로 바꾸어야 하고, /dev/TTYACM0로 부터의 getty 프로세스 및 bootup info를 제거할 필요가 없습니다.
<주1>
Raspbian Wheezy 와 Raspbian Jessie 사이에는 getty 프로세스들을 제거하는 방법이 약간 다릅니다. 별도로 표시.
<주2>
라즈베리파이3에서는 /boot/config.txt 를 변경해서 GPIO 14 및 15에 대한 UART0/ttyAMA0 를 restore 하기 위해 내장된 블루투스를 무효화시켜야 할 필요가 있습니다. 이 과정은 /dev/ttyAMA0 에 대한 getty 프로세스를 무효화시킨 직후 끝 부분을 향해 있습니다.
1) 펌웨어 업데이트 : DV-MEGA 의 펌웨어를 업데이트해야 합니다. 별도 게시물 참조 (http://cafe.daum.net/d-star/dFCs/28)
2) 안드로이드 기기에 BlueDV 앱을 설치하고 (구글 Play Store), SETUP 버튼을 터치하여 기본 설정을 합니다.
HAM call : HL5BPL B (D-Star에서 사용할 호출부호 및 밴드 설정)
DMR id : 4500004 (DMR에서 사용할 CCS7 ID 설정)
Your info : Yu in KwangJu Korea (D-Star용 송출 문자 메세지를 설정)
Enable APRS : D-Star에서 GPS 위치 data를 송출하려면 "켜짐" 선택
DSTAR freq : 430500000 (D-Star용 DV-MEGA 송수신 주파수를 Hz 단위로 입력)
DMR freq : 435500000 (DMR용 DV-MEGA 주파수를 Hz 단위로 입력)
DMR QRG : DMR 주파수 편차 교정량 설정. 메뉴얼 참조.
DMR Master : DMR Master Server 설정.
DMR Master password : passw0rd (기본값)
Enable ser2net : ser2net을 이용해 접속할 예정이므로 "켜짐" 선택
ser2net IP : DV-MEGA가 접속해 있는 인트라넷 IP 주소 설정. 예 192.168.0.5
설정 후 submit 버튼 터치
다음은 라즈베리파이의 Raspbian OS에 ser2net 설정하는 과정입니다.
<역자 주>
ser2net은 serial port to network proxy의 약자로 네트워크를 통해 telnet 또는 tcp session 접속 요청이 들어오면 설정된 Serial port로 전달해 주는 데몬 프로그램입니다. 우리의 경우는 인트라넷을 통해 휴대폰의 BlueDV 앱에서 오는 명령을 라즈베리파이 ttyAMA0 의 GPIO serial port를 통해 DV-MEGA로 전달해서 수행을 시키는 형태로 작동하는 것 같습니다.
3) OS 설치
저는 라즈베리파이 B+ 모델을 사용해 테스트한 상태여서 Raspbian Wheezy 2015.5.5 판을 사용했습니다.
라즈베리파이 2 나 3에는 Raspbian Jesie Lite의 사용을 추천합니다.
Raspbian 이미지 파일을 다운받아 Win32 Disk Imager 등의 프로그램을 사용해 SD 카드를 만들고 부팅합니다.
4) ser2net을 설치합니다.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install ser2net
$ sudo bash -c 'echo "2000:raw:600:/dev/ttyAMA0:115200 8DATABITS NONE 1STOPBIT" >> /etc/ser2net.conf'
위 마지막 명령어는 /etc/ser2net.conf 파일의 끝에 echo 이하의 내용을 한 줄 추가하는 것입니다.
실제로 추가되었는지 nano 에디터 등으로 열어서 확인해 보고 안되었으면 수동으로 추가하기 바랍니다.
wheezy의 경우 port 2000에 다른 것이 설정되어 있어서 추가가 되지 않았고, 수동으로 기존 2000번 포트 설정 행을 comment out 시키고, 수동으로 추가했습니다.
5) /dev/ttyAMA0로부터 getty 프로세스를 제거합니다. (이 프로세스는 라스비안 휘지와 제시가 서로 다릅니다)
5-1) 라스비안 휘지에서는...
$ nano /etc/inittab
spawns a getty on /dev/ttyAMA0 라는 행을 찾아 코멘트아웃 시킵니다(행의 시작에 # 를 추가)
5-2) 라스비안 제시에서는...
/dev/ttyAMA0에 대한 getty spawning을 중단시킵니다.
$ sudo systemctl stop serial-getty@ttyAMA0.service
부팅시 자동 기동을 막습니다.
$ sudo systemctl disable serial-getty@ttyAMA0.service
6) /boot/cmdline.txt 파일을 편집해서 /dev/ttyAMA0로부터 bootup info를 제거하고 /dev/ttyAMA0 또는 Serial0...에 대한 참조를 제거합니다. (해당 내용 있는 부분을 삭제합니다)
7) 라즈베리3에서는 내장 Bluetooth를 무효화 시킵니다.
$ sudo bash -c 'echo "dtoverlay=pi3-disable-bt" >> /boot/config.txt'
8) 라즈베리파이를 리부팅합니다.
$ sudo reboot
<운용 방법>
1) 라즈베리파이 + DV-MEGA는 LAN 케이블을 사용해 유무선공유기로 연결하고, 휴대폰은 WiFi로 유무선공유기로 연결하여 같은 인트라넷(서브넷)에 연결합니다.
2) 라즈베리파이를 부팅하고, 휴대폰에서 BlueDV도 기동합니다. 위에서 설명한 대로 ser2net IP를 라즈베리파이의 인트라넷 IP 주소로 설정하면 BlueDV 화면 하단의 HOTSPOT 상태가 "NET CONNECTED"로 바뀝니다.
3) 화면 좌측 상단의 모드 버튼을 터치후 원하는 모드 및 리플렉터, 모듈 선택 (DCS, REF, XRF, DMR)
4) 송수화기 버튼 터치시 리플렉터 또는 Master 서버에 연결, x 표시 버튼 터치하면 연결 끊기, 하단의 CONNECT 버튼은 BlueDV 와 DV-MEGA+라즈베리파이 사이를 수동 접속, SETUP 은 환경설정, INFO는 프로그램 정보 표시, DIM ON/OFF는 화면 밝기 조절, LH 는 Last Heard 목록 표시.
<감상>
1) XRF070 C에서 D-Star 시험 교신 결과 이상없이 잘 동작하였습니다. DMR 마스터 서버에도 잘 접속되었습니다. DMR 리그가 없는 관계로 그 이상의 테스트는 불가.
2) 처음에 ser2net의 개념을 확실히 이해하지 못해 조금 헤맸습니다.
3) 동일 서브넷에 휴대폰과 DV-MEGA+RPi 가 접속해야 하므로, 조금 이상한 구성이 되는 것 같습니다.
4) 라즈베리파이에 MMDVMHost 와 ircDDBGateway 프로그램을 설치하는 방식보다는 조금 간편하긴 한데 큰 메리트는 없어 보입니다. 용도 및 장단점에 대해 조금 더 고민하고 따져봐야 할 것 같습니다.
이상, 궁금증에 의한 테스트를 마칩니다.
첫댓글 재밌는 테스트 잘 봤습니다.
2016.10.23 안드로이드 BlueDV 앱이 Ver 1.0.68 로 업그레이드되면서 D-Star (REF, DCS, XRF), DMR, C4FM (YSF, FCS) 등 모든 모드를 지원하게 되었습니다.
사용해보니 대단히 편리하군요.
설명 잘보았습니다. 알려주신 자료 참고하여 라즈베리파이와 스마트폰의 Blue DV Connection 되는것 까지 오늘 확인했습니다. 감사합니다.