-[[.:start]]
====== The Nodes ======
===== VHF Gateway =====
|Platform| Raspberry Pi 2 Model B Rev 1.1 |
|OS| Raspbian GNU/Linux 10 (buster) |
|ASL Version | 2.0.0-beta.6 |
|Interface|CM108 Soundcard - modified|
|Radio|FT-1500M @ 5W|
|Frequency|144.9125MHz / CTCSS : 77.0Hz|
|Allstar Node | [[http://stats.allstarlink.org/stats/481480 | 481480]] |
|Echolink | GM4SLV-L : 886089 |
|Dashboard| [[http://gm4slv.plus.com:42111/ |via 481481's Allmon3]] |
The initial node, described here -> [[gm4slv_allstar_2025|]] got too cumbersome after adding DMR Bridging, along with handling Echolink.
I decided, since I had a few spare Raspberry Pi boards doing nothing much, to split the DMR Bridging to a separate node.
I removed the DVSwitch bridging from the VHF Gateway node and changed its node ID to ''481480'' (NNX)
==== Echolink Config ====
++++ /etc/asterisk/echolink.conf |
[el0]
call = GM4SLV-L ; Change this!
pwd = XXXXX ; Change this!
name = John ; Change this!
qth = Allstar 481480 ; Change this!
email = gm4slv@gm4slv.plus.com ; Change this!
node = 886089 ; Change this!
; Data for EchoLink Status Page
lat = 60.2883 ; Latitude in decimal degrees
lon = -001.42533 ; Longitude in decimal degrees
freq = 144.900 ; not mandatory Frequency in MHz
tone = 0 ; not mandatory CTCSS Tone (0 for none)
power = 2 ; 0=0W, 1=1W, 2=4W, 3=9W, 4=16W, 5=25W, 6=36W, 7=49W, 8=64W, 9=81W (Power in Watts)
height = 0 ; 0=10 1=20 2=40 3=80 4=160 5=320 6=640 7=1280 8=2560 9=5120 (AMSL in Feet)
gain = 0 ; Gain in db (0-9)
dir = 0 ; 0=omni 1=45deg 2=90deg 3=135deg 4=180deg 5=225deg 6=270deg 7=315deg 8=360deg (Direction)
maxstns = 5 ; Max Stations
rtcptimeout = 10
recfile = /tmp/echolink_recorded.gsm ;
astnode = 481480 ; Change this!
context = radio-secure ; Default in code is echolink-in
; Max 3 servers
server1 = server1.echolink.org
server2 = server2.echolink.org
server3 = server3.echolink.org
; To deny w6xxx you would add the statement: deny = w6xxx
; To prohibit computer-based connections you would write: permit = *-*
; To allow access to only a select group of callsigns: permit = w6abc,w6def,...
; permit ; comma delimited list of callsign, type (-r)
; deny
; Remote text commands thru netcat:
; o.conip (request a connect)
; o.dconip (request a disconnect)
; o.rec (turn on/off recording)
; ipaddr
; port
#includeifexists custom/echolink.conf
++++
===== DMR Bridging Node =====
|Platform | Raspberry Pi 4 Model B Rev 1.5 |
|OS |Debian GNU/Linux 12 (bookworm) |
|ASL Version |3.7.1-1.deb |
|Allstar Node | [[http://stats.allstarlink.org/stats/481481 | 481481]] |
|Dashboard| http://gm4slv.plus.com:42111/|
New hardware and OS install
Installed OS first Pi OS 64 bit Lite ->
[[https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit |Pi OS Lite]]
then the ASL repository and finally ASL3 and Allmon3 following guide at:
[[https://allstarlink.github.io/install/debian/install/]]
I found this much nicer than the "Pi Appliance" method.
This one is for running DVSwitch to bridge to (at the moment) TGIF TG2354429 (my so-called //ID Talkgroup// )
I added the DVSwitch software, in the same way described here [[gm4slv_allstar_2025|]] (using ''bookworm'' in place of ''buster'') and decided to bridge to ''TGIF'' instead of Brandmeister.
I also decided to use the ''md380_emu'' emulator for the AMBE transcoding.
==== MMDVM_Bridge.ini ====
++++ /opt/MMDVM_Bridge/MMDVM_Bridge.ini |
[General]
Callsign=GM4SLV
Id=235442999
Timeout=180
Duplex=0
[Info]
RXFrequency=144900000
TXFrequency=144900000
Power=1
Latitude=60.2885
Longitude=-1.4215
Height=0
Location=GM4SLV Bridge1
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=1
ColorCode=1
EmbeddedLCOnly=1
DumpTAData=0
[System Fusion]
Enable=0
[P25]
Enable=0
NAC=293
[NXDN]
Enable=0
RAN=1
Id=12345
[D-Star Network]
Enable=0
GatewayAddress=127.0.0.1
GatewayPort=20010
LocalPort=20011
Debug=0
[DMR Network]
Enable=1
Address=tgif.network
Port=62031
;Jitter=360
Jitter=750
Local=62032
Password=XXXXXXXXXXXXXXXXXXXXx
# for DMR+ see https://github.com/DVSwitch/MMDVM_Bridge/blob/master/DOC/DMRplus_startup_options.md
# for XLX the syntax is: Options=XLX:4009
# Options=
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=0
#LocalAddress=127.0.0.1
Debug=0
LocalPort=14021
GatewayAddress=127.0.0.1
GatewayPort=14020
++++
==== Analog_Bridge.ini ====
++++ /opt/Analog_Bridge/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
txPort = 31103 ; Transmit TLV frames to partner on this port
rxPort = 31100 ; Listen for TLV frames from partner on this port
ambeMode = DMR ; 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 = 235442999 ; ID of source repeater 7 digit ID plus 2 digit SSID
txTg = 2354429 ; 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
++++
FIXME
===== Test Node =====
* See [[Test_Node]]
--- //John Pumford-Green 08/06/25 18:44 BST//
===== Further Information =====
{{tag>radio allstar dvswitch dmr echolink}}