public:radio:allstar:allstar_nxdn
This is an old revision of the document!
Table of Contents
NXDN Bridging
A change from DMR!
Overview of IP UDP ports
Asterisk Analog_Bridge DVSwitch NXDNGateway ======== ============= MMDVM_Bridge =========== ============ [node] [USPR] rxPort 31001 <------- txPort 31001 txPort 34001 -------> rxPort 34001 ↓ ↑ [md380-emu]:2470 ↓ ↑ [AMBE] [NXDN] txPort 33103 ------> rxPort 33103 rxPort 33100 <------ txPort 33100 ↓ ↑ [NXDN Network] [General] LocalPort 14021 <----- RptPort 14021 GatewayPort 14020 -----> LocalPort 14020 ↓ ↑ [Network] Host IP/Port obtained from hostfiles by reference to Analog_Bridge txTG=xxxx
Updating DVSwitch Hostfiles
- DVSwtich keep its hostfiles in
/var/lib/mmdvm
and updates viacron.daily/DVSM_Update
which calls/opt/MMDVM_Bridge/dvswitch.sh update
- This tries to download hostfiles from various places using
curl
- It seems to fail most of the time due to a SSL problem
- A workaround is to put “insecure” in root's ~/.curlrc
sudo su - echo insecure >> ~/.curlrc /opt/MMDVM_Bridge/dvswitch.sh update
The main Things
- Make sure
Analog_Bridge.ini
has the correct txPOrt and rxPort in its [USRP] section
[USRP] address = 127.0.0.1 ; IP address of USRP partner (Analog_Reflector, Allstar/Asterisk or another Analog_Bridge) txPort = 31001 ; Transmit USRP frames on this port rxPort = 34001 ; Listen for USRP frames on this port
- It should match Asterisk's private node as defined in
/etc/asterisk/rpt.conf
- in this case it's [1398]
[1398] rxchannel = USRP/127.0.0.1:34001:31001 ; Use the USRP channel driver. Must be enabled in modules.conf ; 127.0.0.1 = IP of the target application ; 34001 = UDP port the target application is listening on ; 32001 = UDP port ASL is listening on
- Make Sure
Analog_Bridge.ini
has the correct txPort and rxPort in its [AMBE] section
[AMBE_AUDIO] address = 127.0.0.1 ; IP address of xx_Bridge ; For DMR - set in DVSwitch.ini ;txPort = 31103 ; Transmit TLV frames to partner on this port ;rxPort = 31100 ; Listen for TLV frames from partner on this port ; FOr NXDN - set in DVSwitch.ini txPort = 33103 ; Transmit TLV frames to partner on this port rxPort = 33100 ; Listen for TLV frames from partner on this port ambeMode = NXDN ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW (encode PCM to this format)
- should match the ports in
DVSwitch.ini
[NXDN] section
; Configure the NXDN Partner ; Audio format is AMBE 72 bit [NXDN] address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) txPort = 33100 ; Port to send AMBE TLV frames to (export) rxPort = 33103 ; Port to listen on (import)
- Disable [DMR] in
MMDVM_Bridge.ini
[DMR] Enable=0 ColorCode=1 EmbeddedLCOnly=1 DumpTAData=0
- Enable [NXDN] in
MMDVM_Bridge.ini
[NXDN] Enable=1 RAN=1 Id=7485
- Set Fallback IDs in
DVSwitch.ini
fallbackID = 2354429 ; In case we can not find a valid DMR id in the database, export this one nxdnFallbackID = 7485 ; Use this ID when the input DMR ID is not found in the database
- Set Callsign in
NXDNGateway.ini
[General] Callsign=GM4SLV Suffix=NXDN
- I don't know what
Suffix
means, I left it as found - Set the NXDN talkgroup in
Analog_Bridge.ini
- NXDN Talkgroups are listed here : https://www.pistar.uk/nxdn_reflectors.php
- A Talkgroup actually seems to specify a particular reflector IP address/Hostname & UDP port
- These are retrieved by
NXDNGateway
from the hostfile :/var/lib/mmdvm/NXDNHosts.txt
- Setting the
txTG=23551
inAnalog_Bridge.ini
causesNXDNGateway
to make a connection to the relevant reflector when you send traffic by keying up. - For example TG23551 (Scot-Multi) appears in
NXDNHosts.txt
as:
23551 nxdnscotland.ddns.net 41400
- Having
txTG=23551
inAnalog_Bridge.ini
causes DVSwitch to connect, and start to flow packets, withnxdnscotland.ddns.net:41400
- Another source of info https://dvref.com/nxdn/
- TG23551 : https://dvref.com/nxdn/nxdn-23551
DVSwitch.ini
; MMDVM_Bridge export / import configuration file. ; This file should be placed along side of MMDVM_Bridge or you can supply ; an absolute path in the DVSWITCH environment variable, e.g: ; DVSWITCH=/etc/MMDVM_Bridge/DVSwitch.ini ; before executing MMDVM_Bridge ; ; Another method to set the enviorment variable is to use the systemd unit file ; by adding: ; Environment=DVSWITCH=/etc/MMDVM_Bridge/DVSwitch.ini ; to /lib/systemd/system/mmdvm_bridge.service ; Configure the Quantar Repeater Partner ; Note that the TX and RX ports are already reversed for MMDVM_Bridge <--> Quantar_Bridge [QUANTAR] address = 0.0.0.0 ; Address to send IMBE TLV frames to (export) txPort = 34103 ; Port to send IMBE TLV frames to (export) rxPort = 34100 ; Port to listen for IMBE TLV frames on (import) quantarPort = 1994 ; HDLC frames To/From the Quantar repeater debug = 0 ; Debug 0 = off, 1 = on (adds lots of additional messages) logLevel = 2 ; Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal logFilePath = /var/log/dvswitch/Quantar_Bridge.log ; Configure the DMR Partner ; Audio format is AMBE 72 bit [DMR] address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) txPort = 31100 ; Port to send AMBE TLV frames to (export) rxPort = 31103 ; Port to listen on (import) slot = 2 ; Export slot exportTG = 0 ; Which TG to export hangTimerInFrames = 0 ; Use 50 for 3 seconds of hang time (3000 / 60) talkerAlias = %callsign %location %description ; Get callsign location and description from MMDVM_Bridge.ini ; Configure the D-Star Partner ; Audio format is AMBE 48 bit (DSAMBE) [DSTAR] address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) txPort = 32100 ; Port to send AMBE TLV frames to (export) rxPort = 32103 ; Port to listen on (import) fallbackID = 1234567 ; In case we can not find a valid DMR id in the database, export this one exportTG = 9 ; Which TG to export slot = 2 ; Export slot RemotePort = 54321 ; Port to send Gateway commands to message = %location %description ; Get location and description from MMDVM_Bridge.ini ; Configure the NXDN Partner ; Audio format is AMBE 72 bit [NXDN] address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) txPort = 33100 ; Port to send AMBE TLV frames to (export) rxPort = 33103 ; Port to listen on (import) fallbackID = 2354429 ; In case we can not find a valid DMR id in the database, export this one nxdnFallbackID = 7485 ; Use this ID when the input DMR ID is not found in the database translate = 1234=4321 ; Translate NXDN TG < -- > DMR TG (bidirectional) slot = 2 ; Export slot RemotePort = 6075 ; Port to send Gateway commands to ; Configure the P25 Partner ; Audio format is IMBE 88 bit [P25] address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) txPort = 34100 ; Port to send AMBE TLV frames to (export) rxPort = 34103 ; Port to listen on (import) slot = 2 ; Export slot RemotePort = 6074 ; Port to send Gateway commands to ; Configure the Yaesu Fusion Partner ; Audio format is AMBE 72 bit ; Audio format is IMBE 88 bit [YSF] address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) txPort = 35100 ; Port to send AMBE TLV frames to (export) rxPort = 35103 ; Port to listen on (import) txWidePort = 35105 ; Port to send IMBE TLV frames to for YSFw (export) fallbackID = 1234567 ; In case we can not find a valid DMR id in the database, export this one exportTG = 9 ; Which TG to export slot = 2 ; Export slot RemotePort = 6073 ; Port to send Gateway commands to ; Configure the BrandMeister connection ; Simple Terminal Feature Update ; Audio format is AMBE 72 bit [STFU] ; Brandmeister Open DMR Terminal (ODMRT) Protocol BMAddress = 3102.repeater.net ; Brandmeister ODMRT server address BMPort = 54006 ; Brandmeister ODMRT port BMPassword = passw0rd ; Your Brandmeister password Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) txPort = 36100 ; Port to send AMBE TLV frames to (export) rxPort = 36103 ; Port to listen on (import) UserID = 1234567 ; Your DMR ID TalkerAlias = N0CALL Name City ; Max 27 characters StartTG = 3166 ; Startup talk group LogLevel = 3 ; STFU log level (0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error) [ASL] address = 127.0.0.1 txPort = 30100 rxPort = 30103
MMDVM_Bridge.ini
[General] Callsign=GM4SLV Id=235442998 Timeout=180 Duplex=0 [Info] RXFrequency=144900000 TXFrequency=144900000 Power=1 Latitude=60.2885 Longitude=-1.425 Height=0 Location="GM4SLV Bridge2" Description=MMDVM_Bridge URL=https://gm4slv.org.uk [Log] # Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal DisplayLevel=1 FileLevel=2 FilePath=/var/log/mmdvm FileRoot=MMDVM_Bridge [DMR Id Lookup] File=/var/lib/mmdvm/DMRIds.dat Time=24 [NXDN Id Lookup] File=/var/lib/mmdvm/NXDN.csv Time=24 [Modem] Port=/dev/null RSSIMappingFile=/dev/null Trace=0 Debug=0 [D-Star] Enable=0 Module=B [DMR] Enable=0 ColorCode=1 EmbeddedLCOnly=1 DumpTAData=0 [System Fusion] Enable=0 [P25] Enable=0 NAC=293 [NXDN] Enable=1 RAN=1 Id=7485 [D-Star Network] Enable=0 GatewayAddress=127.0.0.1 GatewayPort=20010 LocalPort=20011 Debug=0 [DMR Network] Enable=0 ; TGIF ;Address=tgif.network ;Port=62031 ;TGIF Password for 2354435 ;Password=XXXXXXXXX ; TGIF Password for 2354429 ;Password=XXXXXXXXX ; Brandmeister Address=2341.master.brandmeister.network Password=XXXXXXX Port=62031 Jitter=750 Local=62032 ; FOR DVS_Ph F ;Address=78.129.135.43 ;Port=55555 ;Password=PASSWORD ;Options=StartRef=4000;RelinkTime=0;UserLink=0;TS1_1=733; Slot1=0 Slot2=1 Debug=0 [System Fusion Network] Enable=0 LocalAddress=0 LocalPort=3200 GatewayAddress=127.0.0.1 GatewayPort=4200 Debug=0 [P25 Network] Enable=0 GatewayAddress=127.0.0.1 GatewayPort=42020 LocalPort=32010 Debug=0 [NXDN Network] Enable=1 #LocalAddress=127.0.0.1 Debug=1 LocalPort=14021 GatewayAddress=127.0.0.1 GatewayPort=14020
NXDNGateway.ini
[General] Callsign=GM4SLV Suffix=NXDN # The next four lines are for a Kenwood repeater # RptProtocol=Kenwood # RptAddress=1.2.3.4 # RptPort=64000 # LocalPort=64000 # The next four lines are for an Icom repeater # RptProtocol=Icom # RptAddress=1.2.3.4 # RptPort=41300 # LocalPort=41300 # The next four lines are for an MMDVM RptProtocol=Icom RptAddress=127.0.0.1 RptPort=14021 LocalPort=14020 Debug=0 Daemon=0 [Info] RXFrequency=223500000 TXFrequency=223500000 Power=1 Latitude=41.7333 Longitude=-50.3999 Height=0 Location=Iceberg Description=DVSwitch URL=https://groups.io/g/DVSwitch [Voice] Enabled=1 Language=en_GB Directory=./Audio [aprs.fi] Enable=0 # Server=noam.aprs2.net Server=euro.aprs2.net Port=14580 Password=9999 Description=APRS Description Suffix=N [Id Lookup] Name=/var/lib/mmdvm/NXDN.csv Time=24 [Log] # Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal DisplayLevel=1 FileLevel=2 FilePath=/var/log/mmdvm FileRoot=NXDNGateway [Network] Port=14050 HostsFile1=/var/lib/mmdvm/NXDNHosts.txt HostsFile2=/var/lib/mmdvm/private_NXDNHosts.txt ReloadTime=60 ParrotAddress=127.0.0.1 ParrotPort=42021 NXDN2DMRAddress=127.0.0.1 NXDN2DMRPort=42022 # Startup=10200 InactivityTimeout=0 Debug=0 [Mobile GPS] Enable=0 Address=127.0.0.1 Port=7834 [Remote Commands] Enable=1 Port=6075
Analog_Bridge.ini
; Analog_Bridge configuration file. ; This file should be placed in either /etc or it can be ; supplied as a path on the Analog_Bridge command line. ; The best way to think of this file is that there are two main sections, the USRP (analog audio) and ; AMBE_AUDIO (compressed audio). Analog_Bridge will take everything sent to the USRP port and ; encode it for transmission on the AMBE_AUDIO port. The encoder will use the format defined in ambeMode. ; As you might expect, the reverse direction is defined too. ; Analog_Bridge supports include files. More on this later... include = dvsm.macro ; include = asl.macro ; General Section describes settings for Analog_Bridge itself. [GENERAL] logLevel = 2 ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal ; Metadata management exportMetadata = true ; Export metadata to USRP partner (transcode setups require this) transferRootDir = /tmp ; Export database files to USRP partner subscriberFile = /var/lib/dvswitch/subscriber_ids.csv ; DMR ID to callsign lookup data ; General vocoder setup information decoderFallBack = true ; Allow software AMBE decoding if a hardware decoder is not found useEmulator = true ; Use the MD380 AMBE emulator for AMBE72 (DMR/YSFN/NXDN) emulatorAddress = 127.0.0.1:2470 ; IP address and port of the md380 server pcmPort = 2222 ; UDP port to send to the WebProxy ; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC) [AMBE_AUDIO] address = 127.0.0.1 ; IP address of xx_Bridge ; For DMR - set in DVSwitch.ini ;txPort = 31103 ; Transmit TLV frames to partner on this port ;rxPort = 31100 ; Listen for TLV frames from partner on this port ; FOr NXDN - set in DVSwitch.ini txPort = 33103 ; Transmit TLV frames to partner on this port rxPort = 33100 ; Listen for TLV frames from partner on this port ambeMode = NXDN ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW (encode PCM to this format) minTxTimeMS = 2500 ; Analog -> Digital Minimum time in MS for hang delay (0-10000) ; The metadata below is used when ASL is the source since it does not have any concept of digital modes gatewayDmrId = 2354429 ; ID to use when transmitting from Analog_Bridge 7 digit ID repeaterID = 235442998 ; ID of source repeater 7 digit ID plus 2 digit SSID ; Talkgroup needed for DMR and NXDN. ; NXDNGateway uses Talkgroup to choose the reflector IP/Port from its Host Files txTg = 23551 ; TG to use for all frames sent from Analog_Bridge -> xx_Bridge txTs = 2 ; Slot to use for frames sent from Analog_Bridge -> xx_Bridge colorCode = 1 ; Color Code to assign DMR frames ; Information for USRP channel driver. This interface uses PCM to transfer audio information ; There are two typical configurations, ASL and Transcode. ASL (AllstarLink) is for analog clients connected ; to a digital network. Transcode is when Analog_Bridge actually points its PCM interfaces back at itself, ; causing a TLV <-- (pcm <--> pcm) --> TLV type of architecture. ; When using ASL, this matches the rpt.conf ASL file with a setting like: ; rxchannel = usrp/127.0.0.1:34001:32001 ; When Transcoding, make two ini files and set txPort equal to the other instance rxPort (crossover). Launch ; each instance with its own ini file. [USRP] address = 127.0.0.1 ; IP address of USRP partner (Analog_Reflector, Allstar/Asterisk or another Analog_Bridge) txPort = 31001 ; Transmit USRP frames on this port rxPort = 34001 ; Listen for USRP frames on this port usrpAudio = AUDIO_USE_GAIN ; Digital -> Analog (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC) usrpGain = 5.0 ; Gain factor when usrpAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY) usrpAGC = -20,10,100 ; Set the agc threshold (db), slope (db) and decay (ms) tlvAudio = AUDIO_USE_GAIN ; Analog -> Digital (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF) tlvGain = 1.0 ; Gain factor when tlvAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY) [MACROS] ; Where the macros are ; xxxx=yyyy ; xxxx is the dial string to match ; yyyy is the command line to execute ; xxxx must be preceded by a * ; xxxx can be any string (alphanumeric) ; yyyy is the command to execute ; yyyy will replace xxxx in the dial string ; arguments follow the macro name with a # delimiter ; For example using macro "5678" above would look like: ; *5678#9876 ; Which would invoke: ; echo 9876 ; Information for DV3000 hardware decoder ; There are two configuration modes: IP (AMBEServer) and serial (direct connect hardware) ; Use top server and port if using AMBEServer ; Use bottom server/port and serial = true if using the DV3000u (thumbdv) ; Did you run AMBETest4.py before using this? [DV3000] address = 127.0.0.1 ; IP address of AMBEServer rxPort = 2460 ; Port of AMBEServer ; address = /dev/ttyUSB0 ; Device of DV3000U on this machine ; baud = 460800 ; Baud rate of the dongle (230400 or 460800) ; serial = true ; Use serial=true for direct connect or serial=false for AMBEServer
— John Pumford-Green 10/06/25 08:51 BST
Further Information
public/radio/allstar/allstar_nxdn.1749577146.txt.gz · Last modified: by john