public:radio:2025:allstar_expands
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
public:radio:2025:allstar_expands [08/06/25 18:45 BST] – [VHF Gateway] john | public:radio:2025:allstar_expands [10/06/25 10:33 BST] (current) – removed john | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | < | ||
- | |||
- | |||
- | ====== Allstar : 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: | ||
- | |||
- | * Milnet [[http:// | ||
- | * Allstar node status [[http:// | ||
- | * W2YMM [[https:// | ||
- | * This one was discovered by accident on Allstar' | ||
- | |||
- | ===== 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 '' | ||
- | |||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | 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 '' | ||
- | |||
- | [[https:// | ||
- | |||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | The choice of which server is used per node is chosen on the Node configuration page for each node, on the Allstar Portal | ||
- | |||
- | [[https:// | ||
- | |||
- | 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:// | ||
- | |||
- | The config. for the original node had to be changed, to reflect the new node number '' | ||
- | |||
- | * ''/ | ||
- | * ''/ | ||
- | * ''/ | ||
- | |||
- | To ensure each internal LAN node can find each other (can't rely on Allstar' | ||
- | |||
- | < | ||
- | |||
- | ; from the VHF Gateway node 481480 | ||
- | [nodes] | ||
- | 481480 = radio@127.0.0.1: | ||
- | |||
- | 481481 = radio@192.168.21.241: | ||
- | |||
- | 481482 = radio@192.168.21.242: | ||
- | |||
- | </ | ||
- | |||
- | I added the DVSwitch bridging to the hub node '' | ||
- | |||
- | All 3 nodes have '' | ||
- | |||
- | ''/ | ||
- | |||
- | < | ||
- | ; | ||
- | ; 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, | ||
- | write = all, | ||
- | |||
- | </ | ||
- | |||
- | ==== Port Forwarding ==== | ||
- | |||
- | My ADSL router has the following port forwards to allow external incoming connections to be set up | ||
- | |||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * [[http:// | ||
- | * '' | ||
- | * [[http:// | ||
- | * '' | ||
- | * [[http:// | ||
- | |||
- | |||
- | |||
- | To allow the node numbers to be resolved to useful names tp display on the dashboards the script '' | ||
- | |||
- | The image came with several copies of '' | ||
- | |||
- | ==== Private Node Names ==== | ||
- | To allow private node numbers to appear as useful information, | ||
- | |||
- | < | ||
- | 1399|GM4SLV|Bridge to DMR|TGIF TG2354429 | ||
- | 1398|GM4SLV|Bridge to DMR|TGIF TG2354435 | ||
- | </ | ||
- | |||
- | and then the '' | ||
- | |||
- | The easiest way is to run the '' | ||
- | |||
- | and therefore it's the copy in ''/ | ||
- | |||
- | To automate the process the update is done nightly via ''/ | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | |||
- | |||
- | # Get new allmon data daily | ||
- | / | ||
- | </ | ||
- | |||
- | === Semi-automated Private Node descriptions === | ||
- | |||
- | * I've written a small bash script on the gateway node481480.local to make it easier to re-name the internal //" | ||
- | * for this to work it's necessary to arrange public-key authentication on the nodes, with passwordless logins. But that's normal, anyway, no? | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | # update_private.sh | ||
- | # a script to distribute new copies of privatenodes.txt and run the astdb.php update script | ||
- | |||
- | # | ||
- | NODE2=node481481.local | ||
- | NODE3=node481482.local | ||
- | |||
- | PRIVATE_NODES=/ | ||
- | |||
- | sudo cp $PRIVATE_NODES / | ||
- | sudo / | ||
- | |||
- | scp $PRIVATE_NODES gm4slv@$NODE2: | ||
- | ssh $NODE2 'sudo cp / | ||
- | |||
- | scp $PRIVATE_NODES gm4slv@$NODE3: | ||
- | ssh $NODE3 'sudo cp / | ||
- | |||
- | </ | ||
- | |||
- | * Just make changes to the '' | ||
- | |||
- | <code bash> | ||
- | gm4slv@node481480: | ||
- | Success: astdb.txt 1422647 bytes | ||
- | privatenodes.txt | ||
- | Success: astdb.txt 1422647 bytes | ||
- | privatenodes.txt | ||
- | Success: astdb.txt 1422647 bytes | ||
- | |||
- | </ | ||
- | | ||
- | |||
- | ==== Supermon ==== | ||
- | |||
- | The nodes monitored, and the menu to select them, and external websites, on each node's Supermon Dashboard is configured by '' | ||
- | |||
- | Here's the current version: | ||
- | |||
- | ++++ Generic / | ||
- | |||
- | <code ini> | ||
- | [All Nodes] | ||
- | nodes = 481480, | ||
- | menu = yes | ||
- | system = Nodes | ||
- | |||
- | [481480] | ||
- | host = 192.168.21.240: | ||
- | user = admin | ||
- | passwd = " | ||
- | menu = yes | ||
- | hideNodeURL = no | ||
- | system = Nodes | ||
- | |||
- | [481481] | ||
- | host = 192.168.21.241: | ||
- | user = admin | ||
- | passwd = " | ||
- | menu = yes | ||
- | hideNodeURL = no | ||
- | system = Nodes | ||
- | |||
- | [481482] | ||
- | host = 192.168.21.242: | ||
- | user = admin | ||
- | passwd = " | ||
- | menu = yes | ||
- | hideNodeURL = no | ||
- | system = Nodes | ||
- | |||
- | [1399] | ||
- | host = 192.168.21.241: | ||
- | user = admin | ||
- | passwd = " | ||
- | menu = yes | ||
- | hideNodeURL = yes | ||
- | system = Nodes | ||
- | |||
- | [1398] | ||
- | host = 192.168.21.242: | ||
- | user = admin | ||
- | passwd = " | ||
- | menu = yes | ||
- | hideNodeURL = yes | ||
- | system = Nodes | ||
- | |||
- | ; Set the node number for the specific node that this copy of allmon.ini is written for | ||
- | [lsNodes] | ||
- | url = "/ | ||
- | menu = yes | ||
- | |||
- | [Node 481840] | ||
- | url = " | ||
- | menu = yes | ||
- | system = Dashboards | ||
- | |||
- | [Node 481841] | ||
- | url = " | ||
- | menu = yes | ||
- | system = Dashboards | ||
- | |||
- | [Node 481842] | ||
- | url = " | ||
- | menu = yes | ||
- | system = Dashboards | ||
- | |||
- | [GM4SLV Wiki] | ||
- | url = " | ||
- | menu = yes | ||
- | system = External Sites | ||
- | |||
- | [Echolink Link Status] | ||
- | url = " | ||
- | menu = yes | ||
- | system = External Sites | ||
- | |||
- | [TGIF] | ||
- | url = " | ||
- | menu = yes | ||
- | system = External Sites | ||
- | |||
- | [AllStarLink] | ||
- | url = " | ||
- | menu = yes | ||
- | system = External Sites | ||
- | |||
- | |||
- | </ | ||
- | |||
- | ++++ | ||
- | |||
- | ==== Node Callsigns instead of Numbers ==== | ||
- | |||
- | To have the telemetry say the // | ||
- | |||
- | I put it in ''/ | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | |||
- | / | ||
- | |||
- | rm / | ||
- | rm / | ||
- | rm / | ||
- | rm / | ||
- | rm / | ||
- | rm / | ||
- | </ | ||
- | |||
- | I forget where I found it, so here's the '' | ||
- | |||
- | ++++ write_node_callsigns_ulaw.sh | | ||
- | <code bash> | ||
- | |||
- | #!/bin/bash | ||
- | # | ||
- | # Created by Marshall Dias | ||
- | # Modified by Doug, WA3DSP 8/18/2015 | ||
- | # | ||
- | # using ULAW format | ||
- | # | ||
- | # Script to write Calls to / | ||
- | # which will then be used in place of node numbers. This script | ||
- | # will NOT overwrite exisitng files unless you use the -o option. | ||
- | # If you want to start clean and delete all nodename files do | ||
- | # rm -rf / | ||
- | # or delete just the files you want to replace. | ||
- | # | ||
- | # A single node number can be specified on the command line with | ||
- | # the -n node -ex. -n 40000 | ||
- | # | ||
- | # A -v option gives a little more info | ||
- | |||
- | # See all comments below | ||
- | |||
- | # Set the source directory to the Allstar database on your system. | ||
- | # ' | ||
- | # images from hamvoip.org or you have installed allmon or lsnodes on | ||
- | # your system. For the BBB and RPi2 it will generally be / | ||
- | |||
- | SRCDIR=/ | ||
- | # | ||
- | |||
- | # Set the destination directory. | ||
- | # Use a tmp directory for testing | ||
- | # The final destination for Allstar would be | ||
- | # / | ||
- | # Use the -d path option to overide | ||
- | |||
- | DESTDIR=/ | ||
- | # Test destination directory - must exist | ||
- | # | ||
- | |||
- | # Definitions of sound file directories | ||
- | |||
- | NODENAMES=/ | ||
- | LETTERS=/ | ||
- | NUMBERS=/ | ||
- | STRING="" | ||
- | |||
- | usage() | ||
- | { | ||
- | cat << EOF | ||
- | |||
- | Usage: $0 options | ||
- | |||
- | Writes voice files of call signs from node numbers | ||
- | |||
- | OPTIONS: | ||
- | | ||
- | | ||
- | -n node | ||
- | -d path | ||
- | | ||
- | | ||
- | |||
- | Write callsign for node 40000, no overwrite - | ||
- | |||
- | $0 -n 40000 | ||
- | |||
- | Write callsign for node 40000, overwrite - | ||
- | |||
- | $0 -on 40000 | ||
- | |||
- | Write all callsigns, no overwrite - | ||
- | |||
- | $0 | ||
- | |||
- | Write all callsigns, overwrite | ||
- | |||
- | $0 -o | ||
- | |||
- | Write single node to specific directory - | ||
- | |||
- | $0 -n 40000 -d / | ||
- | |||
- | |||
- | EOF | ||
- | } | ||
- | |||
- | OVERWRITE="" | ||
- | VERBOSE="" | ||
- | |||
- | while getopts " | ||
- | do | ||
- | case $OPTION in | ||
- | h) | ||
- | usage | ||
- | exit 1 | ||
- | ;; | ||
- | d) | ||
- | | ||
- | ;; | ||
- | o) | ||
- | | ||
- | ;; | ||
- | n) | ||
- | | ||
- | ;; | ||
- | v) | ||
- | | ||
- | ;; | ||
- | ?) | ||
- | usage | ||
- | exit | ||
- | ;; | ||
- | esac | ||
- | done | ||
- | |||
- | # Form filenames from callsign | ||
- | make_call () | ||
- | { | ||
- | | ||
- | | ||
- | for (( i=0; i< | ||
- | char=${foo: | ||
- | |||
- | case ${foo:$i:1} in | ||
- | [0-9]*) FILENAME=$NUMBERS/ | ||
- | "/" | ||
- | " | ||
- | [a-z]*|[A-Z]*) FILENAME=$LETTERS/ | ||
- | esac | ||
- | STRING=" | ||
- | done | ||
- | } | ||
- | |||
- | # Concatenate filenames into final audio file | ||
- | write_call () | ||
- | { | ||
- | if [ ! $OVERWRITE ] | ||
- | then | ||
- | if [ -f " | ||
- | then | ||
- | echo " | ||
- | return | ||
- | fi | ||
- | fi | ||
- | echo " | ||
- | cat $STRING > " | ||
- | } | ||
- | |||
- | # If no node given process all nodes | ||
- | if [ -z " | ||
- | then | ||
- | while IFS=' | ||
- | do | ||
- | if [ $VERBOSE ]; then echo " | ||
- | make_call | ||
- | write_call | ||
- | done < $SRCDIR/ | ||
- | else | ||
- | # process just given node | ||
- | CALL=`grep -m 1 $node $SRCDIR/ | ||
- | if [ -z " | ||
- | then | ||
- | echo "No Call found for node - $1" | ||
- | exit | ||
- | else | ||
- | f2=`echo $CALL | awk -F" | ||
- | fi | ||
- | f1=$node | ||
- | if [ $VERBOSE ]; then echo " | ||
- | make_call | ||
- | write_call | ||
- | fi | ||
- | |||
- | |||
- | </ | ||
- | |||
- | ++++ | ||
- | |||
- | There' | ||
- | |||
- | ++++ write_node_callsigns.sh | | ||
- | |||
- | <code bash> | ||
- | |||
- | # !/bin/bash | ||
- | # | ||
- | # write_node_callsigns.sh v0.8 | ||
- | # | ||
- | # Doug, WA3DSP 8/18/2015 | ||
- | # Portions by Marshall Dias | ||
- | # | ||
- | # Script to write Calls to / | ||
- | # which will then be used in place of node numbers. This script | ||
- | # will NOT overwrite exisitng files unless you use the -o option. | ||
- | # If you want to start clean and delete all nodename files do | ||
- | # rm -rf / | ||
- | # or delete just the files you want to replace. | ||
- | # | ||
- | # A single node number can be specified on the command line with | ||
- | # the -n node -ex. -n 40000 | ||
- | # | ||
- | # A -v option gives a little more info | ||
- | # | ||
- | # v 0.7 - removed level changing as this is accomplished in | ||
- | # | ||
- | # stay at nominal levels. | ||
- | |||
- | # V 0.8 - added code to ignore semicolon comments. | ||
- | |||
- | # See all comments below | ||
- | |||
- | # Set the source directory to the Allstar database on your system. | ||
- | # ' | ||
- | # images from hamvoip.org or you have installed allmon or lsnodes on | ||
- | # your system. For the BBB and RPi2 it will generally be / | ||
- | |||
- | SRCDIR=/ | ||
- | |||
- | # Set the destination directory. | ||
- | # Use a tmp directory for testing | ||
- | # The final destination for Allstar would be | ||
- | # / | ||
- | # Use the -d path option to overide | ||
- | |||
- | DESTDIR=/ | ||
- | # Test destination directory - must exist | ||
- | # | ||
- | |||
- | # Definitions of sound file directories | ||
- | |||
- | RPTSOUNDS=/ | ||
- | NODENAMES=/ | ||
- | LETTERS=/ | ||
- | NUMBERS=/ | ||
- | STRING="" | ||
- | |||
- | |||
- | usage() | ||
- | { | ||
- | cat << EOF | ||
- | |||
- | write_node_callsigns.sh v0.8 | ||
- | Usage: write_node_callsigns.sh options | ||
- | |||
- | Writes Asterisk Allstar voice files of call signs from node numbers | ||
- | |||
- | OPTIONS: | ||
- | |||
- | | ||
- | | ||
- | | ||
- | | ||
- | -n node | ||
- | -d path | ||
- | | ||
- | | ||
- | |||
- | Write callsign for node 40000, no overwrite, all nodes - | ||
- | $0 -n 40000 | ||
- | Write callsign for node 40000, overwrite, all nodes - | ||
- | $0 -on 40000 | ||
- | Write all callsigns, no overwrite - | ||
- | $0 -a | ||
- | Write all callsigns, overwrite | ||
- | $0 -ao | ||
- | Write single node to specific directory - | ||
- | $0 -n 40000 -d / | ||
- | Write single node including both call and node number, overwrite | ||
- | $0 -ion 40000 | ||
- | |||
- | EOF | ||
- | } | ||
- | |||
- | OVERWRITE="" | ||
- | VERBOSE="" | ||
- | INCNODE="" | ||
- | VOLUME="" | ||
- | |||
- | if [ $# -eq 0 ]; | ||
- | then | ||
- | usage | ||
- | exit 0 | ||
- | fi | ||
- | |||
- | if [ ! -e $SRCDIR/ | ||
- | then | ||
- | echo " | ||
- | exit | ||
- | fi | ||
- | |||
- | while getopts " | ||
- | do | ||
- | case $OPTION in | ||
- | h) | ||
- | usage | ||
- | exit 1 | ||
- | ;; | ||
- | a) ;; | ||
- | d) | ||
- | | ||
- | ;; | ||
- | i) | ||
- | | ||
- | ;; | ||
- | | ||
- | | ||
- | ;; | ||
- | n) | ||
- | | ||
- | ;; | ||
- | v) | ||
- | | ||
- | ;; | ||
- | ?) | ||
- | usage | ||
- | exit | ||
- | ;; | ||
- | esac | ||
- | done | ||
- | |||
- | # Form filenames from callsign | ||
- | make_call () | ||
- | { | ||
- | | ||
- | for (( i=0; i< | ||
- | char=${foo: | ||
- | |||
- | case ${foo:$i:1} in | ||
- | [0-9]*) FILENAME=$NUMBERS/ | ||
- | "/" | ||
- | " | ||
- | [a-z]*|[A-Z]*) FILENAME=$LETTERS/ | ||
- | esac | ||
- | STRING=" | ||
- | done | ||
- | } | ||
- | |||
- | # Concatenate filenames into final audio file | ||
- | write_call () | ||
- | { | ||
- | if [ ! $OVERWRITE ] | ||
- | then | ||
- | if [ -f " | ||
- | then | ||
- | echo " | ||
- | return | ||
- | fi | ||
- | fi | ||
- | |||
- | echo " | ||
- | cat $STRING > $DESTDIR/ | ||
- | } | ||
- | |||
- | # If no node given process all nodes | ||
- | if [ -z " | ||
- | then | ||
- | Total=0 | ||
- | while IFS=' | ||
- | do | ||
- | if [[ $f1 =~ ^\; ]]; then continue ; fi | ||
- | if [ -z $f1 ]; then continue ; fi | ||
- | if [ $VERBOSE ]; then echo " | ||
- | ((Total=Total+1)) | ||
- | STRING="" | ||
- | make_call $f2 | ||
- | # Test for including node number | ||
- | if [ $INCNODE ] | ||
- | then | ||
- | | ||
- | | ||
- | fi | ||
- | write_call | ||
- | done < $SRCDIR/ | ||
- | echo -e " | ||
- | else | ||
- | # process just given node (-n node) | ||
- | CALL=`grep -m 1 $node $SRCDIR/ | ||
- | if [ -z " | ||
- | then | ||
- | echo "No Call found for node - $1" | ||
- | exit | ||
- | else | ||
- | f2=`echo $CALL | awk -F" | ||
- | fi | ||
- | f1=$node | ||
- | if [ $VERBOSE ]; then echo " | ||
- | STRING="" | ||
- | make_call $f2 | ||
- | # Test for including node number | ||
- | if [ $INCNODE ] | ||
- | then | ||
- | STRING=$STRING" | ||
- | make_call $f1 | ||
- | fi | ||
- | write_call | ||
- | fi | ||
- | |||
- | |||
- | </ | ||
- | |||
- | ++++ | ||
- | |||
- | I only have this on the node that's my VHF Gateway '' | ||
- | |||
- | ===== Nodes Created ===== | ||
- | |||
- | [[Allstar Nodes built]] | ||
- | |||
- | ===== Accessing remotely via IAX ===== | ||
- | |||
- | See [[iax_access|]] | ||
- | |||
- | ===== Morse / Speech IDs ===== | ||
- | |||
- | See [[Allstar_Id]] | ||
- | |||
- | ===== Configs ===== | ||
- | |||
- | * {{ : | ||
- | * {{ : | ||
- | * {{ : | ||
- | |||
- | |||
- | |||
- | --- //John Pumford-Green 05/06/25 22:30 BST// | ||
- | |||
- | |||
- | ===== Further Information ===== | ||
- | |||
- | |||
- | {{tag> | ||
- | |||
public/radio/2025/allstar_expands.1749404732.txt.gz · Last modified: by john