Table of Contents

AllStar Linking

Explorations

Digging Deeper into Allstar

I've seen a few examples of small networks and am interested in building up a mixed protocol system too.

Some examples that interested me:

Adding more nodes

It's possible to have up to 10 individual Node IDs with a single Allstar node number, by using NNX to add a 6th digit to the base node number…

My Base Number is 48148 and I activated the NNX feature and created 3 nodes

Since they are all behind a NAT firewall, sharing one public IP address the nodes must use different UDP ports. To make this possible I created 2 new Server instances on the Allstar Portal, one per node, and chose the UDP ports :

https://www.allstarlink.org/portal/servers.php

The choice of which server is used per node is chosen on the Node configuration page for each node, on the Allstar Portal

https://www.allstarlink.org/portal/nodes.php

Then I flashed new SD cards for the new nodes using the ASL 2.0.0 Beta 6 image I've used for the initial VHF Gateway node.

https://github.com/AllStarLink/ASL-Live-Build/releases/download/2.0.0-beta.6/asl-2.0.0-beta.6-kc1kcc-20210324-raspberrypi-armhf.img.zip

The config. for the original node had to be changed, to reflect the new node number 481480 versus 48148 which means editing (at least)

To ensure each internal LAN node can find each other (can't rely on Allstar's DNS) it's necessary to add each one to the [nodes] stanza in each node's config file /etc/asterisk/rpt.conf using the appropriate IP and UDP port depending on which node is being configured.

; from the VHF Gateway node 481480
[nodes]
481480 = radio@127.0.0.1:4569/481480,NONE      

481481 = radio@192.168.21.241:4570/481481,NONE  

481482 = radio@192.168.21.242:4571/481482,NONE

I added the DVSwitch bridging to the hub node 481481 which is configured as radioless, I made a local/private node on that machine 1399 for this purpose.

All 3 nodes have supermon and this needed some configuration to make sure the Asterisk Manager ports were available on their external interfaces bindaddr = 0.0.0.0 and not just on the loopback bindaddr = 127.0.0.1

/etc/asterisk/manager.conf

;
; Asterisk Call Management support
;

; By default asterisk will listen on localhost only.
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0

[admin]
secret = YOUR_MANAGER_PASSWORD
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config

Port Forwarding

My ADSL router has the following port forwards to allow external incoming connections to be set up

To allow the node numbers to be resolved to useful names tp display on the dashboards the script astdb.php should run nightly to maintain a lookup table.

The image came with several copies of astdb.php in different places, all updating a central data file /var/log/asterisk/astdb.txt. Which was confusing, as they all looked in different places for the file detailing private nodes.

Private Node Names

To allow private node numbers to appear as useful information, rather than not in database you first put the information in a file privatenodes.txt

1399|GM4SLV|Bridge to DMR|TGIF TG2354429
1398|GM4SLV|Bridge to DMR|TGIF TG2354435

and then the astdb.php script pulls it in, with all the other nodes downloaded from the web, but astdb.php must know where to find the privatenodes.txt file.

The easiest way is to run the astdb.php from the directory containing privatenodes.txt

and therefore it's the copy in /var/www/html/supermon/ that is used, since privatenodes.txt resides here too.

To automate the process the update is done nightly via /etc/cron.daily/allstar_helpers which was modified to point to the correct version of astdb.php

#!/bin/bash
 
 
# Get new allmon data daily
/var/www/html/supermon/astdb.php

Semi-automated Private Node descriptions

#!/bin/bash
 
NODE1=node481480.local
NODE2=node481481.local
NODE3=node481482.local
WEB=/var/www/html/supermon/
 
PRIVATE_NODES=/home/gm4slv/privatenodes.txt
 
 
sudo cp $PRIVATE_NODES $WEB
sudo $WEB/astdb.php
 
 
scp $PRIVATE_NODES gm4slv@$NODE2:
ssh $NODE2 'sudo cp /home/gm4slv/privatenodes.txt /var/www/html/supermon/ && /var/www/html/supermon/astdb.php'
 
 
scp $PRIVATE_NODES gm4slv@$NODE3:
ssh $NODE3 'sudo cp /home/gm4slv/privatenodes.txt /var/www/html/supermon/ && /var/www/html/supermon/astdb.php'
gm4slv@node481480:~$ ./update_private.sh
Success: astdb.txt 1422647 bytes
privatenodes.txt                              100%   79    39.0KB/s   00:00
Success: astdb.txt 1422647 bytes
privatenodes.txt                              100%   79    24.9KB/s   00:00
Success: astdb.txt 1422647 bytes

Favourites

./update_favorites.sh
#!/bin/bash
# update_favorites.sh
# a script to keep the supermon favorites.ini file synchronized on all nodes
 
NODE1=node481480.local
NODE2=node481481.local
NODE3=node481482.local
WEB=/var/www/html/supermon/
 
FAVORITES=/home/gm4slv/favorites.ini
 
sudo cp $FAVORITES $WEB
 
scp $FAVORITES gm4slv@$NODE2:
ssh $NODE2 'sudo cp /home/gm4slv/favorites.ini /var/www/html/supermon/'
 
scp $FAVORITES gm4slv@$NODE3:
ssh $NODE3 'sudo cp /home/gm4slv/favorites.ini /var/www/html/supermon/'

Supermon : allmon.ini

The nodes monitored, and the menu to select them, and external websites, on each node's Supermon Dashboard is configured by allmon.ini

Here's the current version:

Generic /var/www/html/supermon/allmon.ini

#!/bin/bash
# update_allmon.sh
# a script to distribute a common supermon config to all nodes
 
NODE1=node481480.local
NODE2=node481481.local
NODE3=node481482.local
WEB=/var/www/html/supermon/
 
ALLMON=/home/gm4slv/allmon.ini
 
sudo cp $ALLMON $WEB
 
scp $ALLMON gm4slv@$NODE2:
ssh $NODE2 'sudo cp /home/gm4slv/allmon.ini /var/www/html/supermon/'
 
scp $ALLMON gm4slv@$NODE3:
ssh $NODE3 'sudo cp /home/gm4slv/allmon.ini /var/www/html/supermon/'

Node Callsigns instead of Numbers

To have the telemetry say the callsign of a connected node, instead of its node number, install the script write_node_callsigns_ulaw.sh

I put it in /usr/local/bin/ and run it via root's crontab each day - but via a wrapper script /usr/local/bin/update_names.sh that then deletes the ulaw sound file for my own nodes, as I don't want all of them to be announced as GM4SLV - I'd rather hear the actual node numbers:

#!/bin/bash
 
/usr/local/bin/write_node_callsigns_ulaw.sh
 
rm /var/lib/asterisk/sounds/rpt/nodenames/481480.ulaw
rm /var/lib/asterisk/sounds/rpt/nodenames/481481.ulaw
rm /var/lib/asterisk/sounds/rpt/nodenames/1399.ulaw
rm /var/lib/asterisk/sounds/rpt/nodenames/1398.ulaw
rm /var/lib/asterisk/sounds/rpt/nodenames/48148.ulaw
rm /var/lib/asterisk/sounds/rpt/nodenames/481482.ulaw

I forget where I found it, so here's the write_node script itself

write_node_callsigns_ulaw.sh

There's a version that uses GSM coded files which didn't work on my system, as all the numbers and letters are in ulaw format, but for completeness here's the gsm version

write_node_callsigns.sh

I only have this on the node that's my VHF Gateway 481480

Nodes Created

See : The Nodes

Accessing remotely via IAX

See IAX Remote Access

Morse / Speech IDs

See Over the air ID

Bridges

Configs

John Pumford-Green 05/06/25 22:30 BST

Further Information