<-[[.: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}}