-[[.:start]]
====== NXDN Bridging ======
** A change from [[allstar_dmr| DMR!]] **
FIXME
===== 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
===== 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 - match the ports 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 - match the ports 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'' and set your own NXDN ID number
[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'' in ''Analog_Bridge.ini'' causes ''NXDNGateway'' 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'' in ''Analog_Bridge.ini'' causes DVSwitch to connect, and start to flow packets, with ''nxdnscotland.ddns.net:41400''
* Another source of info [[https://dvref.com/nxdn/]]
* TG23551 : [[https://dvref.com/nxdn/nxdn-23551]]
{{ :public:radio:allstar:tg23551.jpg?direct&600 |}}
==== Updating DVSwitch Hostfiles ====
* DVSwtich keep its hostfiles in ''/var/lib/mmdvm'' and updates via ''cron.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
gm4slv@node481482:~$ sudo su -
root@node481482:~# echo insecure >> ~/.curlrc
root@node481482:~# /opt/MMDVM_Bridge/dvswitch.sh update
++++ DVSwitch.ini |
===== 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 |
===== 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 |
===== 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.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 =====
{{tag>radio AllStar dvswitch nxdn}}