본 내용은 오래되어 아래 설명으로 진행하더라도 제대로 작동이 안되거나 업그레이드를 할 수 없습니다

DVSwitch는 아래 신 버젼 설치하세요

https://ds5qdr-dv.tistory.com/134 

 

2020-10-31 DVSwtich : 한글 HL5KY OM님 버젼 1.6.0 설정 방법

오랫동안 기다렸던 DVSwitch 신버젼 1.6.0 이 10월 31일자로 출시 되었습니다 HL5KY OM님께서 참여하여 개발한 버젼이라 더 많은 관심을 가져 봅니다 먼저 사용해보니 - 잘 작동되고 음질도 좋습니다 -

ds5qdr-dv.tistory.com

MMDVMHost는 아래 내용 참고 설치하세요
https://pclife.tistory.com/116

 

MMDVMHost/ircddbGateway Install on Raspberry Pi 4

집에 설치된 라즈베리파이 서버가 SD카드로 OS 파티션을 구성하니 시간이 지나면 갑자기 메모리가 손상되는 일이 자주 있다. 1년에 4~5번꼴로 삭제와 포맷, 재설치가 반복이 되기 때문에 현재 라

pclife.tistory.com

 

--------------------------------------------------------------------------------------------------------------------------------

 

 

지난 6/28일 DVLink Server 위에 MMDVM HotSpot을 올려 DMR D-Star를 무전기로 접속 가능하게 하였다

이는 DVLink에 설치되어 있는 MMDVMHost 프로그램을 가동한 것이다

 

https://ds5qdr-dv.tistory.com/45

 

2020-06-28 DVLink+MMDVM HotSpot (DMR OK, D-Star OK)

어제 (6/27일) HL5KY OM님과 DVLink 구조에 대해 공유하다가 DVLINK MENU 중간에 있는 HOTSPOTS 메뉴에 대한 질문을 받았고 아직 구체적으로는 모르겠으나 DVLink Server 위에 MMDVM Hotspot을 올려 사용가능하게..

ds5qdr-dv.tistory.com

 

DVLink가 되므로 DVSwitch도 가능할 것이다는 가정하에

- DS5HVM OM님이 먼저 성공하하셨다는 정보를 듣고

- DS5HVM OM님 도움을 받아 DVSwitch Server 위에 MMDVM HotSpot을 설치하여

  무전기로도 접속이 가능하도록 설치하였다

 

결론부터 말씀 드리면

- DMR 완벽

- D-Star 정상 작동

- 물론 DVSwitch 아주 정상 작동합니다

 

 

준비물

- Raspberry Pi 3B plus              1개

- MMDVM HotSpot                  1개

- 2.4인치 Netxion LCD               1개

- Micro SD Card 16G x10           1개

- 냉각팬                                  1개

 

Raspberry Pi 4B에서는 MMDVM HotSpot이 잘 작동을 안하니
Raspberry Pi 3B에서 테스트 하시기 바랍니다

 

목록

1단계] HL5KY OM님 DVSwitch V4.0 받아 이미지 설정

2단계] Github에서 MMDVMHost 설치 파일 받고 make

3단계] MMDVM.ini 수정

4단계] 자동 실행 파일 생성 및 설치

5단계] ircddbgateway 수정

 

 

 

1단계] HL5KY OM님 DVSwitch V4.0 받아 이미지 설정

 

먼저 HL5KY OM님 DVSwitch V4.0 을 받아 설치한다

https://ds5qdr-dv.tistory.com/37

 

2020-06-17 DVSwitch 처음 설치하시는 분

본 설명서는 HL5KY OM님께서 작성하신 DVSwitch 버젼 4.0을 기준으로 작성되었습니다 DVSwitch를 처음 설치하시는 분은 아래 사이트에서 DVSwitch 관련 프로그램과 설명서를 받으시기 바랍니다 아래 링크�

ds5qdr-dv.tistory.com

 

 

2단계] Github에서 MMDVMHost 설치 파일 받고 make

 

다음은 Putty로 접속하여 로그인 합니다

 

login as: pi

pi@192.168.0.110's password: raspberry

 

pi@raspberrypi:~ $ cd /opt

pi@raspberrypi:/opt $ dir

Analog_Bridge  MMDVM_Bridge  P25Gateway      vc

DMRGateway     NXDNGateway   P25Parrot       YSFGateway

md380-emu      NXDNParrot    Quantar_Bridge  YSFParrot

 

pi@raspberrypi:/opt $ sudo git clone https://github.com/g4klx/MMDVMHost

Cloning into 'MMDVMHost'...

remote: Enumerating objects: 61, done.

remote: Counting objects: 100% (61/61), done.

remote: Compressing objects: 100% (41/41), done.

remote: Total 10165 (delta 38), reused 35 (delta 20), pack-reused 10104

Receiving objects: 100% (10165/10165), 19.27 MiB | 4.77 MiB/s, done.

Resolving deltas: 100% (7399/7399), done.

Checking out files: 100% (302/302), done.

 

pi@raspberrypi:/opt $ dir -l
total 60
drwxr-xr-x  2 root root  4096 Jul 19 07:53 Analog_Bridge
drwxr-xr-x  3 root root  4096 Apr 14 11:45 DMRGateway
drwxr-xr-x  2 root root  4096 Apr 14 11:43 md380-emu
drwxr-xr-x  2 root root  4096 Jul 19 08:38 MMDVM_Bridge
drwxr-xr-x 11 root root 12288 Jul 19 08:46 MMDVMHost # 폴드가 생성되어 있음
drwxr-xr-x  3 root root  4096 Jul 19 07:52 NXDNGateway
drwxr-xr-x  2 root root  4096 Apr 14 11:57 NXDNParrot
drwxr-xr-x  3 root root  4096 Jul 19 07:52 P25Gateway
drwxr-xr-x  2 root root  4096 Apr 14 11:44 P25Parrot
drwxr-xr-x  2 root root  4096 Jul 19 07:52 Quantar_Bridge
drwxr-xr-x  6 root root  4096 Feb 14 00:56 vc
drwxr-xr-x  2 root root  4096 Jul 19 07:52 YSFGateway
drwxr-xr-x  2 root root  4096 Apr 14 11:57 YSFParrot


pi@raspberrypi:/opt $ cd MMDVMHost

pi@raspberrypi:/opt/MMDVMHost $ sudo make

echo "const char *gitversion = \"3e6d5d5a7f24448a49063ca9bda6413f8076f878\";" >                GitVersion.h

c++ -g -O3 -Wall -std=c++0x -pthread -c -o AMBEFEC.o AMBEFEC.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o BCH.o BCH.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o BPTC19696.o BPTC19696.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o CASTInfo.o CASTInfo.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Conf.o Conf.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o CRC.o CRC.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Display.o Display.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRControl.o DMRControl.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRCSBK.o DMRCSBK.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRData.o DMRData.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRDataHeader.o DMRDataHeader.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMREMB.o DMREMB.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMREmbeddedData.o DMREmbeddedData.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRFullLC.o DMRFullLC.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRLookup.o DMRLookup.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRLC.o DMRLC.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRNetwork.o DMRNetwork.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRShortLC.o DMRShortLC.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRSlot.o DMRSlot.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRSlotType.o DMRSlotType.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRAccessControl.o DMRAccessControl.c               pp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRTA.o DMRTA.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DMRTrellis.o DMRTrellis.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DStarControl.o DStarControl.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DStarHeader.o DStarHeader.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DStarNetwork.o DStarNetwork.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o DStarSlowData.o DStarSlowData.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Golay2087.o Golay2087.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Golay24128.o Golay24128.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o GPSD.o GPSD.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Hamming.o Hamming.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o I2CController.o I2CController.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o LCDproc.o LCDproc.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Log.o Log.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o MMDVMHost.o MMDVMHost.cpp

MMDVMHost.cpp: In member function ‘bool CMMDVMHost::createModem()’:

MMDVMHost.cpp:1260:16: warning: unused variable ‘extAudioBoost’ [-Wunused-variab               le]

   unsigned int extAudioBoost      = m_conf.getFMExtAudioBoost();

                ^~~~~~~~~~~~~

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Modem.o Modem.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o ModemSerialPort.o ModemSerialPort.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Mutex.o Mutex.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NetworkInfo.o NetworkInfo.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Nextion.o Nextion.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NullDisplay.o NullDisplay.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NullModem.o NullModem.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNAudio.o NXDNAudio.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNControl.o NXDNControl.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNConvolution.o NXDNConvolution.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNCRC.o NXDNCRC.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNFACCH1.o NXDNFACCH1.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNIcomNetwork.o NXDNIcomNetwork.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNKenwoodNetwork.o NXDNKenwoodNetwo               rk.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNLayer3.o NXDNLayer3.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNLICH.o NXDNLICH.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNLookup.o NXDNLookup.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNNetwork.o NXDNNetwork.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNSACCH.o NXDNSACCH.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o NXDNUDCH.o NXDNUDCH.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25Audio.o P25Audio.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25Control.o P25Control.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25Data.o P25Data.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25LowSpeedData.o P25LowSpeedData.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25Network.o P25Network.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25NID.o P25NID.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25Trellis.o P25Trellis.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o P25Utils.o P25Utils.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o POCSAGControl.o POCSAGControl.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o POCSAGNetwork.o POCSAGNetwork.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o QR1676.o QR1676.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o RemoteControl.o RemoteControl.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o RS129.o RS129.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o RS241213.o RS241213.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o RSSIInterpolator.o RSSIInterpolator.c               pp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o SerialController.o SerialController.c               pp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o SerialPort.o SerialPort.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o SHA256.o SHA256.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o StopWatch.o StopWatch.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Sync.o Sync.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o TFTSerial.o TFTSerial.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o TFTSurenoo.o TFTSurenoo.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Thread.o Thread.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Timer.o Timer.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o UDPSocket.o UDPSocket.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o UMP.o UMP.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o UserDB.o UserDB.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o UserDBentry.o UserDBentry.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o Utils.o Utils.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o YSFControl.o YSFControl.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o YSFConvolution.o YSFConvolution.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o YSFFICH.o YSFFICH.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o YSFNetwork.o YSFNetwork.cpp

c++ -g -O3 -Wall -std=c++0x -pthread -c -o YSFPayload.o YSFPayload.cpp

c++ AMBEFEC.o BCH.o BPTC19696.o CASTInfo.o Conf.o CRC.o Display.o DMRControl.o D               MRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLoo               kup.o DMRLC.o DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl               .o DMRTA.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowDat               a.o Golay2087.o Golay24128.o GPSD.o Hamming.o I2CController.o LCDproc.o Log.o MM               DVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.               o NullModem.o NXDNAudio.o NXDNControl.o NXDNConvolution.o NXDNCRC.o NXDNFACCH1.o                 NXDNIcomNetwork.o NXDNKenwoodNetwork.o NXDNLayer3.o NXDNLICH.o NXDNLookup.o NX               DNNetwork.o NXDNSACCH.o NXDNUDCH.o P25Audio.o P25Control.o P25Data.o P25LowSpeed               Data.o P25Network.o P25NID.o P25Trellis.o P25Utils.o POCSAGControl.o POCSAGNetwo               rk.o QR1676.o RemoteControl.o RS129.o RS241213.o RSSIInterpolator.o SerialContro               ller.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o TFTSurenoo.o Thread.               o Timer.o UDPSocket.o UMP.o UserDB.o UserDBentry.o Utils.o YSFControl.o YSFConvo               lution.o YSFFICH.o YSFNetwork.o YSFPayload.o -g -O3 -Wall -std=c++0x -pthread -l               pthread -o MMDVMHost

c++ -g -O3 -Wall -std=c++0x -pthread -c -o RemoteCommand.o RemoteCommand.cpp

c++ Log.o RemoteCommand.o UDPSocket.o -g -O3 -Wall -std=c++0x -pthread -lpthread                -o RemoteCommand

 

 

3단계] MMDVM.ini 수정

 

pi@raspberrypi:/opt/MMDVMHost $ sudo nano MMDVM.ini

 

[General]

Callsign=DS5QDR

Id=45xxxxx

Timeout=180

Duplex=0

# ModeHang=10

RFModeHang=10

NetModeHang=3

Display=Nextion

Daemon=1

 

[Info]

RXFrequency=439800000

TXFrequency=439800000

Power=1

Latitude=35.166733

Longitude=128.82833

Height=0

Location=Gimhae, Korea

Description=Multi-Mode Repeater

URL=qrz.com/db/DS5QDR

 

[Log]

# Logging levels, 0=No logging

DisplayLevel=1

FileLevel=1

FilePath=.

FileRoot=MMDVM

 

[CW Id]

Enable=0

Time=10

# Callsign=

 

[DMR Id Lookup]

File=DMRIds.dat

Time=24

 

[NXDN Id Lookup]

File=NXDN.csv

Time=24

 

[Modem]

# Port=/dev/ttyACM0

Port=/dev/ttyAMA0          # 라즈베리파이 3B GPIO에 MMDVM HotSpot 올려져 있음

# Port=\\.\COM4

Protocol=uart

# Address=0x22

TXInvert=1

RXInvert=0

PTTInvert=0

TXDelay=100

RXOffset=0

TXOffset=0

DMRDelay=0

RXLevel=50

TXLevel=50

RXDCOffset=0

TXDCOffset=0

RFLevel=100

# CWIdTXLevel=50

# D-StarTXLevel=50

# DMRTXLevel=50

# YSFTXLevel=50

# P25TXLevel=50

# NXDNTXLevel=50

# POCSAGTXLevel=50

# FMTXLevel=50

RSSIMappingFile=RSSI.dat

UseCOSAsLockout=0

Trace=0

Debug=0

 

[Transparent Data]

Enable=0

RemoteAddress=127.0.0.1

RemotePort=40094

LocalPort=40095

# SendFrameType=0

 

[UMP]

Enable=0

# Port=\\.\COM4

Port=/dev/ttyACM1

 

[D-Star]

Enable=1

Module=C

SelfOnly=0

AckReply=1

AckTime=750

AckMessage=0

ErrorReply=1

RemoteGateway=0

# ModeHang=10

 

[DMR]

Enable=1

Beacons=0

BeaconInterval=60

BeaconDuration=3

ColorCode=1

SelfOnly=0

EmbeddedLCOnly=0

DumpTAData=1

# Prefixes=234,235

# Slot1TGWhiteList=

# Slot2TGWhiteList=

CallHang=3

TXHang=4

# ModeHang=10

# OVCM Values, 0=off, 1=rx_on, 2=tx_on, 3=both_on

# OVCM=0

 

[System Fusion]

Enable=0

LowDeviation=0

SelfOnly=0

TXHang=4

#DGID=1

RemoteGateway=0

# ModeHang=10

 

[P25]

Enable=0

NAC=293

SelfOnly=0

OverrideUIDCheck=0

RemoteGateway=0

TXHang=5

# ModeHang=10

 

[NXDN]

Enable=0

RAN=1

SelfOnly=0

RemoteGateway=0

TXHang=5

# ModeHang=10

 

[POCSAG]

Enable=0

Frequency=439987500

 

[FM]

Enable=0

# Callsign=G4KLX

CallsignSpeed=20

CallsignFrequency=1000

CallsignTime=10

CallsignHoldoff=0

CallsignHighLevel=50

CallsignLowLevel=20

CallsignAtStart=1

CallsignAtEnd=1

CallsignAtLatch=0

RFAck=K

ExtAck=N

AckSpeed=20

AckFrequency=1750

AckMinTime=4

AckDelay=1000

AckLevel=50

# Timeout=180

TimeoutLevel=80

CTCSSFrequency=88.4

CTCSSThreshold=30

# CTCSSHighThreshold=30

# CTCSSLowThreshold=20

CTCSSLevel=20

KerchunkTime=0

HangTime=7

AccessMode=1

COSInvert=0

RFAudioBoost=1

MaxDevLevel=90

ExtAudioBoost=1

 

[D-Star Network]

Enable=1

GatewayAddress=127.0.0.1

GatewayPort=20010

LocalPort=20012               # DVSwitch가 20011 Port 사용하므로 HotSpot은 20012 임

# ModeHang=3

Debug=0

 

[DMR Network]

Enable=1

Address=211.60.41.188       # BM_South_Korea_4501 : 211.60.41.188

Port=62031

Jitter=360

# Local=62032

Password=passw0rd           # Brandmeister Selfcare 비밀번호 입력해야 합니다

# Options=

Slot1=1

Slot2=1

# ModeHang=3

Debug=0

 

[System Fusion Network]

Enable=0

LocalAddress=127.0.0.1

LocalPort=3200

GatewayAddress=127.0.0.1

GatewayPort=4200

# ModeHang=3

Debug=0

 

[P25 Network]

Enable=0

GatewayAddress=127.0.0.1

GatewayPort=42020

LocalPort=32010

# ModeHang=3

Debug=0

 

[NXDN Network]

Enable=0

Protocol=Icom

LocalAddress=127.0.0.1

LocalPort=14021

GatewayAddress=127.0.0.1

GatewayPort=14020

# ModeHang=3

Debug=0

 

[POCSAG Network]

Enable=0

LocalAddress=127.0.0.1

LocalPort=3800

GatewayAddress=127.0.0.1

GatewayPort=4800

# ModeHang=3

Debug=0

 

[TFT Serial]

# Port=modem

Port=/dev/ttyAMA0

Brightness=50

 

[HD44780]

Rows=2

Columns=16

 

# For basic HD44780 displays (4-bit connection)

# rs, strb, d0, d1, d2, d3

Pins=11,10,0,1,2,3

 

# Device address for I2C

I2CAddress=0x20

 

# PWM backlight

PWM=0

PWMPin=21

PWMBright=100

PWMDim=16

 

DisplayClock=1

UTC=0

 

[Nextion]

Port=modem      # MMDVM Hotspot의 Nextion 단자에 연결되어 있음

# Port=/dev/ttyAMA0

Brightness=50

DisplayClock=1

UTC=0

#Screen Layout: 0=G4KLX 2=ON7LDS

ScreenLayout=3    # 태국 Kasem Sirisuwan Netion TFT 파일 사용

IdleBrightness=20

 

[OLED]

Type=3

Brightness=0

Invert=0

Scroll=1

Rotate=0

Cast=0

LogoScreensaver=1

 

[LCDproc]

Address=localhost

Port=13666

#LocalPort=13667

DimOnIdle=0

DisplayClock=1

UTC=0

 

[Lock File]

Enable=0

File=/tmp/MMDVM_Active.lck

 

[GPSD]

Enable=0

Address=127.0.0.1

Port=2947

 

[Remote Control]

Enable=0

Port=7642

 

End of MMDVM.ini

 

 

4단계] 자동 실행 파일 생성 및 설치

 

1. mmdvmhost.service 만들기

 

sudo nano /lib/systemd/system/mmdvmhost.service

 

[Unit]

Description=MMDVM Host Service

After=syslog.targetnetwork.target

[Service]

User=root

WorkingDirectory=/opt/MMDVMHost

ExecStart=/usr/bin/screen -S MMDVMHost -D -m /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini

ExecStop=/usr/bin/screen -S MMDVMHost -X quit

[Install]

WantedBy=multi-user.target

 

CTRL+X and Y

 

 

2. mmdvmhost.time 파일 만들기

 

sudo nano /lib/systemd/system/mmdvmhost.timer

 

[Timer]

OnStartupSec=60

[Install]

WantedBy=multi-user.target

 

CTRL+X and Ycd

 

 

3. 자동 실행 등록

 

sudo chmod 755 /lib/systemd/system/mmdvmhost.service

sudo ln -s /lib/systemd/system/mmdvmhost.service /etc/systemd/system/mmdvmhost.service


sudo chmod 755 /lib/systemd/system/mmdvmhost.timer

sudo ln -s /lib/systemd/system/mmdvmhost.timer /etc/systemd/system/mmdvmhost.timer


sudo systemctl daemon-reload

sudo systemctl enable mmdvmhost.timer

 

4. screen 설치

 

pi@raspberrypi:~ $ cd /opt/MMDVMHost

pi@raspberrypi:/opt/MMDVMHost $ sudo apt-get install screen

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed:

  libutempter0

Suggested packages:

  byobu | screenie | iselect

The following NEW packages will be installed:

  libutempter0 screen

0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.

Need to get 545 kB of archives.

After this operation, 955 kB of additional disk space will be used.

Do you want to continue? [Y/n] y

Get:1 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libutempter0 armhf 1.1.6-3 [7,736                            B]

Get:2 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf screen armhf 4.6.2-3 [538 kB]

Fetched 545 kB in 3s (211 kB/s)

Selecting previously unselected package libutempter0:armhf.

(Reading database ... 50948 files and directories currently installed.)

Preparing to unpack .../libutempter0_1.1.6-3_armhf.deb ...

Unpacking libutempter0:armhf (1.1.6-3) ...

Selecting previously unselected package screen.

Preparing to unpack .../screen_4.6.2-3_armhf.deb ...

Unpacking screen (4.6.2-3) ...

Setting up libutempter0:armhf (1.1.6-3) ...

Setting up screen (4.6.2-3) ...

Processing triggers for man-db (2.8.5-2) ...

Processing triggers for install-info (6.5.0.dfsg.1-4+b1) ...

Processing triggers for libc-bin (2.28-10+rpi1) ...

Processing triggers for systemd (241-7~deb10u3+rpi1) ...

 

5. 재부팅

 

pi@raspberrypi:/opt/MMDVMHost $ sudo reboot

 

부팅 후 모뎀의 DMR과 D-Star가 깜박이며 정상 작동이 될 것입니다

 

MMDVM HotSpot이 정상 작동하는지 모니터링을 할려면

tail -f /opt/MMDVMHost/MMDVM-2020-07-19.log      # 해당 날짜의 log 파일을 열어보면 됨

 

 

5단계] ircddbgateway 수정

 

sudo nano /etc/ircddbgateway

 

청색은 DVSWitch 설정 시 기 반영된 것이고

적색은 MMDVM HotSpot 에서 추가 수정한 것임

 

gatewayType=0

gatewayCallsign=DS5QDR

gatewayAddress=0.0.0.0

icomAddress=172.16.0.20

icomPort=20000

hbAddress=127.0.0.1

hbPort=20010

latitude=

longitude=

description1=

description2=

url=

repeaterCall1=DS5QDR

repeaterBand1=S

repeaterType1=0

repeaterAddress1=127.0.0.1

repeaterPort1=20011                                   # DVSwitch 용 설정

reflector1=XRF071 C                                   #

atStartup1=1

reconnect1=0

frequency1=434.00000

offset1=0.0000

rangeKms1=0.000

latitude1=0.000000

longitude1=0.000000

agl1=0.000

description1_1=

description1_2=

url1=

band1_1=0

band1_2=0

band1_3=0

 

repeaterCall2=DS5QDR

repeaterBand2=C                                   # MMDVM.ini 파일의 [D-Star] Module=C  동일하게 세팅

repeaterType2=0

repeaterAddress2=127.0.0.1

repeaterPort2=20012                             # MMDVM.ini 파일의 [D-Star Network]   LocalPort=20012   동일하게 세팅

reflector2=XRF071 C

atStartup2=1

reconnect2=0

frequency2=0.00000

offset2=0.0000

rangeKms2=0.000

latitude2=0.000000

longitude2=0.000000

agl2=0.000

description2_1=

description2_2=

url2=

band2_1=0

band2_2=0

band2_3=0

 

repeaterCall3=

repeaterBand3= 

repeaterType3=0

repeaterAddress3=127.0.0.1

repeaterPort3=20013

reflector3=

atStartup3=0

reconnect3=0

frequency3=0.00000

offset3=0.0000

rangeKms3=0.000

latitude3=0.000000

longitude3=0.000000

agl3=0.000

description3_1=

description3_2=

url3=

band3_1=0

band3_2=0

band3_3=0

 

repeaterCall4=

repeaterBand4= 

repeaterType4=0

repeaterAddress4=127.0.0.1

repeaterPort4=20014

reflector4=

atStartup4=0

reconnect4=0

frequency4=0.00000

offset4=0.0000

rangeKms4=0.000

latitude4=0.000000

longitude4=0.000000

agl4=0.000

description4_1=

description4_2=

url4=

band4_1=0

band4_2=0

band4_3=0

 

 

ircddbEnabled=1

ircddbHostname=rr.openquad.net

ircddbUsername=DS5QDR

ircddbPassword=DS5QDR

 

ircddbEnabled2=1

ircddbHostname2=rr.openquad.net

ircddbUsername2=DS5QDR

ircddbPassword2=DS5QDR

 

ircddbEnabled3=0

ircddbHostname3=

ircddbUsername3=

ircddbPassword3=

 

ircddbEnabled4=0

ircddbHostname4=

ircddbUsername4=

ircddbPassword4=

 

aprsEnabled=1

aprsHostname=rotate.aprs2.net

aprsPassword=

aprsPort=14580

dextraEnabled=1

dextraMaxDongles=5

dplusEnabled=1

dplusMaxDongles=5

dplusLogin=DS5QDR

dcsEnabled=1

ccsEnabled=1

ccsHost=CCS704  

xlxEnabled=1

xlxHostsFileUrl=http://xlxapi.rlx.lu/api.php?do=GetReflectorHostname

 

starNetBand1=A

starNetCallsign1=        

starNetLogoff1=        

starNetInfo1=

starNetPermanent1=        

starNetUserTimeout1=300

starNetGroupTimeout1=300

starNetCallsignSwitch1=0

starNetTXMsgSwitch1=1

starNetReflector1=

 

starNetBand2=A

starNetCallsign2=        

starNetLogoff2=        

starNetInfo2=

starNetPermanent2=        

starNetUserTimeout2=300

starNetGroupTimeout2=300

starNetCallsignSwitch2=0

starNetTXMsgSwitch2=1

starNetReflector2=

 

starNetBand3=A

starNetCallsign3=        

starNetLogoff3=        

starNetInfo3=

starNetPermanent3=        

starNetUserTimeout3=300

starNetGroupTimeout3=300

starNetCallsignSwitch3=0

starNetTXMsgSwitch3=1

starNetReflector3=

 

starNetBand4=A

starNetCallsign4=        

starNetLogoff4=        

starNetInfo4=

starNetPermanent4=        

starNetUserTimeout4=300

starNetGroupTimeout4=300

starNetCallsignSwitch4=0

starNetTXMsgSwitch4=1

starNetReflector4=

 

starNetBand5=A

starNetCallsign5=        

starNetLogoff5=        

starNetInfo5=

starNetPermanent5=        

starNetUserTimeout5=300

starNetGroupTimeout5=300

starNetCallsignSwitch5=0

starNetTXMsgSwitch5=1

starNetReflector5=

 

remoteEnabled=1

remotePassword=

remotePort=54321

language=0

infoEnabled=1

echoEnabled=1

logEnabled=1

dratsEnabled=0

dtmfEnabled=1

windowX=-1

windowY=-1

 

End of ircddbgateway

 

 

재부팅 

 

sudo reboot

 

 

수고하셨습니다

D-Star는 조금 불안한 점 있는데 DMR은 아주 잘 됩니다

추후 D-Star는 안정화 이후 수정 하겠습니다

 

DS5QDR 73!

 

참고 사이트

https://m.blog.naver.com/hl5bpl/220853436731

 

Command line형 MMDVMHost 설치

<<< 주의 >>>이 글의 내용은 제가 DVMEGA+라즈베리파이에 설치하여 테스트해 본 ...

blog.naver.com

https://www.hamdigitaal.nl/download/algemene-informatie/Setup-a-MMDVM-Hotspot-20161212.pdf

 

블로그 이미지

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

,