css body, p, .post-body { font-family: 'Google Sans Text', sans-serif !important; } /* Apply Google Sans to Post Titles and Headings */ h1, h2, h3, h4, h5, h6, .post-title, .post h2 { font-family: 'Google Sans', sans-serif; font-weight: 500; }
Showing posts with label VOIP Networks. Show all posts
Showing posts with label VOIP Networks. Show all posts

Monday, September 7, 2026

Pietermarizburg AllStarLink Node now active on the ZS1I AllStar HUB Network in Mossel Bay

 

Image:  ZS5RMN AllStarLink Node  (Click on image for larger view.) 

The AllStarLink Network is growing in South Africa 

Yet again another AllStar Node has joined the ZS1I AllStar Hub Network in Mossel Bay.  This time it is the node of  Richard ZS5RMN from Pietermarizburg.  It is located in Chase Valley, Pietermarizburg in the Kwazulu Natal province. Pietermaritzburg is the inland capital city of South Africa's KwaZulu-Natal province, positioned closest to Durban and significantly further away from the Western Cape coastal cities of Mossel Bay and Cape Town. 


Geographic Breakdown

From Durban: Pietermaritzburg sits roughly 67 to 90 kilometers inland to the northwest. It is an easy 1-hour drive along the N3 highway, which functions as the primary economic corridor connecting Durban’s port to Johannesburg. 

From Mossel Bay: It is located approximately 1,200 kilometers away by road to the northeast. Driving between the two takes around 15 to 16 hours, moving from the Garden Route up through the Eastern Cape via highways like the R56 and N2. 

From Cape Town: Pietermaritzburg is located roughly 1,870 kilometers away by road to the northeast. Driving directly between them requires a major road trip of about 22 hours across the interior of the country. 


Image:  Chase Valley, Pietermaritzburg.  Click on image for larger view. 

Pietermaritzburg offers a surprising variety of specialized attractions for hobbyists, ranging from miniature steam engineering and live-action gaming to craft markets outdoor sports tracking and Amateur Radio. Whether you are into mechanical building, model building, action sports, electronics or crafting, the city and its immediate borders host several notable hubs.

To practice Amateur Radio means to regularly engage in the activity you enjoy, outside of work or school, for leisure and personal enrichment. It's about developing skills, learning new things, and finding enjoyment in the process. You can practice Amateur Radio by setting aside dedicated time, finding resources or communities related to your chosen activity, and consistently working on improving your skills and knowledge. 

Chase Valley on the Air

This is exactly what Richard has done.  He has setup a DMR Hotspot and is using his DMR Radio to talk all over the world whenever he feels like it.  He recently setup an AllStar Network Node at his home in Chase Valley, Pietermarizburg.  AllStarLink is a world wide network of Amateur Radio repeaters, remote base stations, and hot spots accessible to each other via the Internet and/or private IP networks. AllStar software runs on a dedicated Linux computer (including the Raspberry Pi) that you host at your home, radio site, clubhouse, school, university, workplace, or computer center. AllStar is based on the open source Asterisk PBX and is released under the GNU GPL and is free for anyone to use. The core of AllStar and AllStarLink is the powerful app_rpt application and associated modules that load into the Asterisk PBX system.

The ZS6RMN Node is Alive 

The allstarlink node that Richard setup links to the ZS1I AllStar HUB Network in Mossel Bay.  Any radio amateur can connect from around the world to the Shari Pi AllStar node of Richard in Pietermarizburg.  The SHARI (SA818 Ham Allstar Radio Interface) is a ham construction project designed by N8AR that implements a Raspberry Pi hosted Allstar node using a NiceRF SA818 embedded UHF (420 – 450 MHz) or VHF (144-148 MHz) radio module. SHARI PiXX is designed as a kit for construction and use in the amateur radio service by licensed amateur radio operators.  More info on the SHARI Pi can be found HERE.

Now lets look at the ZS5RMN SHARI Pi AllStar Node particulars:

Images:  (Click on images for larger view.)


 
Finally:  The ZS5RMN 491630 AllStar Node is regularly connected to the 49355 ZS1I AllStar HUB, Mossel Bay. Next time you visit Pietermaritzburg you most welcome to use the node to talk to the World.  A big thank you to Richard ZS5RMN who undertook this project and made it a reality.  Well done Richard!!  

Images:  Click on images for larger view.


 




Videos:


 

Saturday, August 1, 2026

My AllStarLink3 Node stopped working! Where do I start to look for the problem?


Image:  ASL3 Diagnostic Check Command  (Click on image for larger view.) 

I recently experienced some issues where my 49355 ASL3 HUB node went offline for some rime or reason.  The following issues were diagnosed:

  • Configuration Conflict:   The node was simultaneously running legacy IAX registration syntax and newer AllStarLink 3 (ASL3) HTTP API configuration blocks. This structural overlap threw a fatal error, preventing authentication.
  • Systemd Startup Crash Loop: A system update introduced an incompatible high-priority flag (-p) into the systemd configuration wrapper. The underlying version of Asterisk rejected this flag, resulting in an immediate initialization failure (status=2/INVALIDARGUMENT), forcing the Asterisk process to repeatedly crash.
  • HTTP Module Bypass: While ASL3 defaults to HTTP registrations, local software variables caused the Asterisk package on this specific machine to bypass the modern res_rpt_http_registrations.so engine entirely. 

How was the above issues diagnosed?  Looking at the three issues the task to get the node up and running look like a daunting one where I will have to write a complete new SD Card.  Writing a complete new card and setting it up would have taken me several hours.  No I did not make a backup -  naughty, naughty me! 

In my search around on how to find out what was the actual issues I found the following command to diagnose the node.  I tried using Diagnostics Reports in the Cockpit but that returned - No System Reports.  Well I found the following command:  sudo asl-node-auth-check

What is the purpose of this command  (sudo asl-node-auth-check) when using it to diagnose your AllStarLink3  Node?

The sudo asl-node-auth-check diagnostic script was introduced in AllStarLink 3 (ASL3) to address complex network environments. It automates the verification of your node's local configuration, registration, and end-to-end network path. 
Here is a breakdown of what the tool evaluates when executed: 


1. Holistic Configuration Audit

    • Node Detection: Scans the active Asterisk environment to identify every node provisioned on the local machine.
    • Conflict Resolution: Cross-references file parameters to detect mismatches or syntactic syntax conflicts between config files. 


2. Deep Network Profile (IP & NAT Diagnostics)

    • Multi-Location Testing: Performs concurrent tests over both HTTP and Inter-Asterisk eXchange (IAX) protocols against three geographically separate AllStarLink server locations. 
    • CGNAT Identification: By verifying network reach-ability from multiple external points, it definitively establishes if your node is trapped behind a Carrier-Grade NAT (CGNAT) or a restrictive mobile hotspot firewall. 
    • IP History Tracker: Displays information on the last time your node’s perceived public IP address changed. 


3. Individual Node Authentication & Registration

    • Syntax Validation: Checks that the local registration strings match the valid format mandated by the network. 
    • Port Verification: Confirms that the local port defined in your configuration exactly matches the database port assigned to you in the central registry database. 
    • Server Handshake: Tests actual routing and reach-ability directly to register.allstarlink.org. 
    • Staleness Tracking: Verifies if your node registration is active and current (checking that a valid database check-in has succeeded within the last 10 minutes). 


4. Inbound IAX Reachability Test

    • Parrot Routing System: Uses the newer central "Parrot/Reach-ability" system to simulate an incoming connection attempt to your node.
    • Port Forwarding Proof: This tests if inbound traffic on your designated port can actually pierce your local router firewall and reach the node. 
If your node has a green status on the AllStarLink Node List but cannot accept incoming connections, this utility isolates the fault. 

As can be seen from the above this command is a very convenient way to diagnose issues your node might experience.  Please note that is is a very powerful diagnostic command tool and one should use it with caution.  

Here is the output of the command:

ZS1I@49355:~ $ sudo asl-node-auth-check

-----===== AllStarLink Node Authentication Check =====-----

Checking configuration:
      Info: Skipping evaluation of private node 1961
      Info: rpt.conf has configuration for: 49355
      Info: /etc/asterisk/iax.conf contains 1 registration line(s)
      Info: /etc/asterisk/rpt_http_registrations.conf contains no registration lines.
      Info: Registrations present for configured node(s): 49355
      Info: IP from https://conntest-east1.allstarlink.org/ip reports: xx.xxx.xxx.xxx
      Info: IP from https://conntest-west1.allstarlink.org/ip reports: xx.xxx.xxx.xxx
      Info: IP from https://conntest-west2.allstarlink.org/ip reports: xx.xxx.xxx.xxx
      Info: IP from udp://conntest-east1.allstarlink.org:4570 reports: xx.xxx.xxx.xxx
      Info: IP from udp://conntest-west1.allstarlink.org:4569 reports: xx.xxx.xxx.xxx
      Info: IP from udp://conntest-west2.allstarlink.org:4569 reports: xx.xxx.xxx.xxx
        OK: HTTP IP probes have consensus on the same perceived IP
        OK: IAX IP probes have consensus on the same perceived IP

Testing node 49355:
        OK: Node registration config is well-formed
        OK: Node registration type is IAX
        OK: register.allstarlink.org is reachable (via HTTP)
        OK: IAX registration state is Registered
        OK: Perceived IAX IP:PORT for this node is: xx.xxx.xxx.xxx:4569
        OK: Registered to aws-east1a-register1.allstarlink.org - xx.xx.xxx.xxx
        OK: Server-set UDP port matches bindport in iax.conf
        OK: Node registration within 10 minutes: 2026-07-31 14:11:50 UTC
      Info: Last time IP changed was 2026-07-29 09:48:32 UTC
        OK: Incoming connections to IAX from other nodes is successful
      Info: IAX ping test has a roundtrip time of 238ms
        OK: No problems detected with node 49355

ZS1I@49355:~ $  

xx.xxx.xxx.xxx - IP Addresses removed for obvious reasons. 

Errors / Warnings will be reflected in the output of the command.  From thereon you can fix the errors / omissions etc.  As can be seen I experience three issues which was solved and the node is now running as it should.   I also ensured that I made a paper format back-up of the current 49355 node setup as well as the back-up tool in sudo asl-menu.

I trust that this article might be of use to fellow radio amateurs that experience issues with an ASL3 node.  This tool really "saved my bacon"!! 

Thursday, July 23, 2026

Setting up an auto Connect and Disconnect cron job in ASL3 to automatically connect one node to another node.

Some time ago I wrote and article on how to easily and automatically connect and disconnect an AllstarLink 3 (ASL 3) node on a schedule.  In that article you needed to leverage the ASL3 asterisk CLI tool (asterisk -rx) inside two basic bash scripts. Then, you map those scripts to system execution times using Linux's built-in crontab utility. 

The article is available HERE.

Note:  I know there are more than one way to effect these connections but here I concentrate on the newcomer to Linux and ASL3.

In this article I will provide an even simpler method to automatically connect and disconnect one node to another node.  We going to setup a cron job in ASL3 to automatically connect to other nodes.  Just a word of caution - you still need to monitor your dashboard as "murphy" can cause havoc at any time.  Please do monitor your dashboard or your radio for any connection issues. 

To set up an automatic connect and disconnect schedule on AllStarLink 3 (ASL3), you can execute Asterisk CLI commands directly inside the system's crontab. This method bypasses the older built-in Asterisk scheduler, making it highly reliable and easy to modify.

Follow this step-by-step guide to configure your scheduled connections.

Step 1: Open the System Crontab

Log into your ASL3 node via SSH. Open the root user's cron scheduler using your preferred text editor (like nano) by running:

bash

sudo export EDITOR=nano
sudo crontab -e

Step 2: Add Your Connect and Disconnect Cron Jobs

Scroll to the bottom of the crontab file and add your scheduling strings. Use the following format template:

text

# Structure: Minute Hour DayOfMonth Month DayOfWeek 
/usr/sbin/asterisk -rx "rpt fun <YourNode> <Command><TargetNode>"

Example Schedule:

If your local ASL3 node number is 61234 and you want to automatically join a weekly net on Node 55555 every Monday night:

  • Disconnect all active connections at 18:55 (6:55 PM) on Monday:

    text

    55 18 * * 1 /usr/sbin/asterisk -rx "rpt fun 61234 *76"

    (Note: *76 is the standard command to disconnect all links, serving as a clean slate before your net starts).

  • Connect to Target Node 55555 at 19:00 (7:00 PM) on Monday:

    text

    00 19 * * 1 /usr/sbin/asterisk -rx "rpt fun 61234 *355555"

    (Note: *3 is the standard link command followed by the target node ID).

  • Disconnect from the Target Node at 20:30 (8:30 PM) on Monday:

    text

    30 20 * * 1 /usr/sbin/asterisk -rx "rpt fun 61234 *155555"

    (Note: *1 is the specific link disconnect command). 

Step 3: Save and Verify

  1. Save the file in nano by pressing Ctrl + O, then Enter.

  2. Exit the editor by pressing Ctrl + X.

  3. Verify your entries are correctly loaded into the scheduler by running:

    bash

    sudo crontab -l

Quick Syntax Reference

  • Time Format: Crontab requires 24-hour military time.

  • Days of the Week: 0 or 7 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday.

  • Asterisk Path: Ensure you specify the full path /usr/sbin/asterisk so the cron daemon can find the execution file without environment paths.

Do I need a script file for this to work or will the above suffice?

The crontab lines provided above will work perfectly fine on their own without any external script files. For your goal of a simple but effective method, putting the commands directly into the crontab is the absolute best approach. It keeps your system clean because you do not have to manage, execute-protect, or worry about the file paths of separate script files.

Why this direct method is highly effective:

  • Fewer moving parts: The system reads the time, triggers the Asterisk command directly, and connects.

  • Easy to modify: If a net time changes, you just run sudo crontab -e and change the numbers in one single file.

  • No permission bugs: Running scripts sometimes fails if you forget to make the file executable (chmod +x). Direct cron commands avoid this completely.

The only rule to keep it working:

Just ensure that your node number and DTMF steering prefixes match your rpt.conf file. (For example, if your system uses something other than *3 for connect and *1 or *76 for disconnect, change those prefixes in the crontab strings to match your setup).

Here is an extract, optimized text block for your information.

This is added to the bottom of your crontab using  

sudo crontab -e:

text

# ====================================================================
# AUTO CONNECT & DISCONNECT SCHEDULE FOR NODE 49355
# ==================================================================== 
# SARL BULLETIN (Sunday Morning)
# Connect at 08:00 SAST, Disconnect at 08:30 SAST
00 08 * * 0 /usr/sbin/asterisk -rx "rpt fun 49355 *33373742"
30 08 * * 0 /usr/sbin/asterisk -rx "rpt fun 49355 *13373742"

# AMATEUR RADIO TODAY (Sunday Morning)
# Connect at 09:55 SAST, Disconnect at 11:05 SAST
55 09 * * 0 /usr/sbin/asterisk -rx "rpt fun 49355 *33373742"
05 11 * * 0 /usr/sbin/asterisk -rx "rpt fun 49355 *13373742"

Pro-Tips for Your Setup: 

• Time Zone Check: Ensure your underlying Linux operating system is set to South African Standard Time (SAST) by typing date in the command line. Cron follows the system clock. 

 • The Asterisk *3 and *1 commands: These lines assume your system uses standard Transmit/Receive (permanent or normal) linking prefixes. If you prefer to use Monitor Only (receive only) mode for the Sunday news bulletins so local transmissions don't interrupt the broadcast, change the connection prefix from *3 to *2 (e.g., *23373742). 

Verification Reminder:

After saving the changes, remember to type date into your SSH terminal to make sure your Linux system clock is actually synchronized to local South African time, as cron relies strictly on the system time to execute.

Finally

That's it you now have an automated connect and disconnect schedule that will assist you in connecting to other nodes.  Just a reminder to monitor you dashboard to ensure that the setup runs smoothly.

Wednesday, July 22, 2026

How to Install the No-IP DUC on a Raspberry Pi for ASL3 Node 49355


Lets install the No-IP DUC from No-IP but before we do that lets look at No-IP DUC, what it is and where can I obtain more information:

No-IP/DDNS (Dynamic Domain Name System) is a service that associates a domain name with a changing IP address. ISPs often assign dynamic IP addresses, which can be problematic for hosting services such as CurrentWare for a remote setup.

No-IP/DDNS solves this by mapping the domain name to the changing IP address using client software or network device configurations. It ensures consistent access to services by automatically updating the DNS record with the latest IP address information.     

Click HERE to obtain more information about No-IP.

Let's get started! 

Make an account with No-IP and Create Host Name.

You will be able to install No-IP’s Dynamic Update Client on Raspberry Pi in just a few minutes using Terminal. 

Installing the service is simple to do, and requires little knowledge of Linux.

You will need to create a directory for the client software to be installed.

Open Terminal and type the following. After each entry press “Enter“.  

sudo mkdir /home/ZS1I/noip [enter]

ls [enter] (noip will be listed)

cd /home/ZS1I/noip [enter]

After creating the folders for the DUC it is time to download the software.

Within the Terminal window  type the following. After each entry you will press “Enter”.

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

tar vzxf noip-duc-linux.tar.gz


Next navigate to the directory you created to locate the downloaded files. (/home/ZS1I/noip)

cd noip-2.1.9-1

Now install the program.

sudo make

sudo make install


After typing “sudo make install” you will be prompted to login with your No-IP account username and password. After logging into the DUC answer the questions to proceed. When asked how often you want the update to happen you must choose 30 or more. The interval is listed in minutes, if you choose 30 the update interval will be 30 minutes. If you choose 15 the interval will be 15 minutes.

Please enter the login/email string for no-ip.com  ***********
Please enter the password for user  **********
 

3 hosts are registered to this account.

Do you wish to have them all updated?[N] (y/N)  N

Do you wish to have host [one.ddns.net] updated?[N]

Do you wish to have host [two.ddns.net] updated?[N]

Do you wish to have host [three.ddns.net] updated?[Y]

Please enter an update interval:[30]  30

Do you wish to run something at successful update?[N]


sudo /usr/local/bin/noip2

To confirm that the service is working properly you can run the following command.

sudo noip2 ­-S (Capital “S”)


Notes:

To start Noip2: sudo /etc/init.d/noip2 start [enter]

Test Service: sudo noip2 -S [enter]

Check if No-IP DUC is installed:

1. Modern noip-duc version = sudo noip-duc –version [enter] (49355 not using modern version)

2. Legacy noip2 version = sudo noip2 -S [enter]

Output:

ZS1I@49355:~ $ sudo noip2 -S

No noip2 processes active.

Configuration data from /usr/local/etc/no-ip2.conf.

Account configured for:

host dmrrepeater.ddns.net

host zs1iallstar1.ddns.net

host zs1imumble.ddns.net

Updating every 30 minutes via /dev/eth0 with NAT enabled.

ZS1I@49355:~ $

Quick System-Wide Search:

ZS1I@49355:~ $ sudo whereis noip2

noip2: /usr/local/bin/noip2

ZS1I@49355:~ $

Tuesday, July 21, 2026

Upgrading the ZS1I AllStar Hub Node to the "latest and greatest" firmware currently available.


Image above:  ASL3 Landing Page (Dashboard)  Click on image for larger view.)

"Latest and greatest"  firmware  ......  Huh?  Big deal?   No, but after  9 years of using HamVoip Firmware on the ZS1I AllStar Hub it is time to upgrade to ASL3 Firmware and also to update the Supermon Dashboard. 

Let me just make it very clear.  There is nothing wrong with HamVoip and it served me well, however there comes a time when new firmware does not "play ball" anymore with HamVoip and as I run the Hub I wanted to add new features to the the Hub Node.  Thanks HamVoip, Jim Dixon WB6NIL (SK), David K4FXC, Doug WA3DSP and the rest of the HamVoip Team for creating this wonderful application for Amateur Radio.

Well I upgraded to ASL3 firmware a week ago and has been working on and off on setting up the "new" ZS1I AllStar3 Hub.  I must apologize to many of the stations who during the past few days were disconnected after rebooting the 49355 Node several times.  Sometimes it was necessary to work on the node while stations were connected and this resulted in a few disconnects.

The final switch over took place on the 20 July 2026 and so far the Hub has been running without any issues.  I will make a few changes to the setup of the node and ASL3 firmware and will also be adding 2 x Dashboards to monitor and control several other nodes connected to the ZS1I AllStar Hub Network.  Echolink has been included and is available at ZS1I-R Node 929614.  Other nodes, links, bridges etc. is running great and has been linked to the ZS1I Allstar Hub.  I will in a future posting explain what new features ASL3 brings to the ZS1I Hub Network.

Finally:  If there are any issues please get in touch with me and I will look into them.  I trust that ASL3 will provide a great new service to the many radio amateurs that connect to the ZS1I Hub.

Images:  (Click on images for larger view)


Image above:  Out with the old.  Supermon 6.2+ served me well since 2017.


Image above:  In with the New.   Supermon 8+  Thus far it is running flawlessly.  So many new features and updates. 

Image above:  ASL3 Node Overview. 

 Image above:  AllScan Dashboard for the ZS1I Hub


 Image above:  Allmon3 Dashboard for the ZS1I Hub

Wednesday, July 15, 2026

How to automatically Connect and Disconnect an AllStar3 Node to another AllStar Node


Here is a short and easy method on how to connect and disconnect an AllstarLink 3 (ASL 3) node on a schedule.  You need to leverage the ASL3 asterisk CLI tool (asterisk -rx) inside two basic bash scripts. Then, you map those scripts to system execution times using Linux's built-in crontab utility.  

Note:  I know there are more than one way to effect these connections but here I concentrate on the newcomer to Linux and ASL3.

You will create two lightweight bash scripts that sends a command to your local Asterisk instance telling it to connect or disconnect to your target node at specific times.  To instruct  Linux to run the scripts automatically at specific times we will be using the cron tasks scheduler utility.

Let's get started.

Prerequisites: Finding Your Node Numbers

Before starting, write down your two node numbers. You will need them in the steps below:

  1. Your Local Node Number: The number assigned to your physical AllStarLink 3 hotspot or server.

  2. The Target Node Number: The number of the remote node, reflector, or hub you want to connect to.


Step 1: Open Your Node Terminal

  1. Open your terminal program (like PuTTY on Windows, or Terminal on a Mac).

  2. Log into your AllStarLink 3 node using your username and password.

  3. You should see a command prompt waiting for your input (usually ending with a $ sign).


Step 2: Create the Morning Connection Script

We will use a basic text editor inside Linux called nano to create the morning connection command.

  1. Type the following command to create a new file named connect.sh and press Enter:

    bash

    sudo nano connect.sh

  2. A blank screen will open. Copy the text below, but replace <YOUR_NODE> and <TARGET_NODE> with your actual node numbers. Do not include the < > brackets.

    bash

    #!/bin/bash
    /usr/sbin/asterisk -rx "rpt fun <YOUR_NODE> *3<TARGET_NODE>"

    Example of what it should look like if your node is 1234 and the target is 5678: /usr/sbin/asterisk -rx "rpt fun 1234 *35678"

  3. Save and Close the file:

    • Press Ctrl + O on your keyboard (this means "Write Out" / Save).

    • Press Enter to confirm the file name.

    • Press Ctrl + X to exit the text editor and return to the main screen.

  4. Give Permission to Run: Linux blocks files from running automatically until you give them permission. Type this command and press Enter:

    bash

    sudo chmod +x connect.sh


Step 3: Create the Evening Disconnection Script

Now, we will do the exact same thing to create the command that disconnects your node.

  1. Type the following command to create a new file named disconnect.sh and press Enter:

    bash

    sudo nano disconnect.sh

  2. Copy and paste the text below, making the exact same node number replacements as before:

    bash

    #!/bin/bash
    /usr/sbin/asterisk -rx "rpt fun <YOUR_NODE> *1<TARGET_NODE>"

    (Note: The *3 changed to *1, which tells AllStarLink to disconnect instead of connect).

  3. Save and Close the file:

    • Press Ctrl + O

    • Press Enter

    • Press Ctrl + X

  4. Give Permission to Run: Type this command and press Enter:

    bash

    chmod +x disconnect.sh


Step 4: Find Your Secret "Home Path"

Linux needs to know the exact folder path where your scripts live so it can find them later.

  1. Type this command and press Enter:

    bash

    pwd

  2. It will print out a path on your screen. It will look something like /home/admin or /root.

  3. Write this down exactly as it appears. We will use this in the final step.


Step 5: Schedule the Automation (04:00 to 20:00)

We will now use the Linux calendar tool called crontab to schedule your scripts at 04h00 and 20h00.

  1. Type this command to open the scheduler and press Enter:

    bash

    crontab -e

    (If Linux asks you to choose an editor, press 1 and hit Enter to choose nano).

  2. Use the arrow keys on your keyboard to scroll all the way down to the very bottom of the file.

  3. Paste the following two lines at the bottom. Replace /home/yourusername with the exact path you wrote down in Step 4:

    text

    0 4 * * * /home/yourusername/connect.sh >/dev/null 2>&1
    0 20 * * * /home/yourusername/disconnect.sh >/dev/null 2>&1

    • How it works: The 0 4 means Minute 0 of Hour 4 (04h00). The 0 20 means Minute 0 of Hour 20 (20h00 in 24-hour military time).

  4. Save and Close the file:

    • Press Ctrl + O

    • Press Enter

    • Press Ctrl + X

The terminal will say  crontab: installing new crontab

Your node will now automatically connect every morning at 04h00 and cleanly disconnect every evening at 20h00! 

Inside crontab -e , you can also use three-letter text abbreviations instead of numbers for the days of the week if it is easier to remember (e.g., SUN, MON, TUE, WED, THU, FRI, SAT).

For example, a weekend-only entry can look like this:  0 4 * * SAT,SUN

Lets add a bit of "meat" to the above method of connecting and disconnecting an ASL3 Node to another AllStar Node.

An automated system to connect and disconnect specific nodes at different times and days

This step-by-step guide will walk you through setting up an automated system to connect and disconnect specific nodes at different times and days using cron and Bash scripts.

Overview of How It Works

Instead of creating separate files for every single node, we use one connection script and one disconnection script.

We pass the specific node ID (like 49355 or 647030) as an "argument" from the scheduler (cron). The script reads that number, plugs it into your connection command, and executes it.

[cron scheduler] ──(sends node ID)──> [connect.sh] ──> Executed for that node only

Step 1: Create the Automation Scripts

We will place these scripts in a folder called scripts inside your user's home directory.

1. Create the Directory

Open your terminal and run:

Bash

mkdir -p ~/scripts

2. Create the Connection Script

Create and open a new file called connect.sh:

Bash

nano ~/scripts/connect.sh

Paste the following code inside it:

Bash

#!/bin/bash

# 1. Check if the user (or cron) forgot to provide a node number
if [ -z "$1" ]; then
    echo "ERROR: No node specified. Usage: $0 <node_id>"
    exit 1
fi

# 2. Assign the argument to a readable variable
NODE_ID=$1

echo "=========================================="
echo "STARTING CONNECTION: Node $NODE_ID"
echo "Timestamp: $(date)"
echo "=========================================="

# 3. YOUR CONNECTION COMMAND GOES HERE
# Replace the line below with your actual command. 
# Use $NODE_ID wherever the node number needs to go.
echo "Connecting to node $NODE_ID now..."

# Example placeholder (Uncomment and modify if using something like OpenVPN):
# openvpn --config "/home/$USER/vpn/${NODE_ID}.ovpn"

3. Create the Disconnection Script

Create and open a new file called disconnect.sh:

Bash

nano ~/scripts/disconnect.sh

Paste the following code inside it:

Bash

#!/bin/bash

# 1. Check if the user (or cron) forgot to provide a node number
if [ -z "$1" ]; then
    echo "ERROR: No node specified. Usage: $0 <node_id>"
    exit 1
fi

# 2. Assign the argument to a readable variable
NODE_ID=$1

echo "=========================================="
echo "STOPPING CONNECTION: Node $NODE_ID"
echo "Timestamp: $(date)"
echo "=========================================="

# 3. YOUR DISCONNECT COMMAND GOES HERE
# Replace the line below with your actual command.
echo "Disconnecting node $NODE_ID now..."

# Example placeholder:
# killall openvpn

4. Make the Scripts Executable

Linux security requires you to explicitly grant permission for scripts to run. Execute this command in your terminal:

Bash

chmod +x ~/scripts/connect.sh ~/scripts/disconnect.sh

Step 2: Test Your Scripts Manually

Before letting the automation take over, test that the scripts successfully receive your node variables. Run these commands in your terminal:

Bash

~/scripts/connect.sh 49355
~/scripts/disconnect.sh 49355

You should see an output in your terminal confirming it attempted to connect to node 49355.

Step 3: Configure the cron Schedule

cron is the built-in Linux background service that runs tasks at specified times.

1. Open the Cron Editor

Run the following command to edit your personal schedule:

Bash

crontab -e

If it asks you to choose an editor, press 1 for nano (the easiest one).

2. Add Your Node Schedules

Scroll to the very bottom of the file and paste the following lines exactly as shown.

Important: We use ~/scripts/... to point to your home directory, and save logs to your home folder (~/cron_node_...log) to prevent any permission issues.

Code snippet

# ===================================================================
# NODE 49355 SCHEDULE (Fridays)
# ===================================================================
# Connect at 5:00 AM on Friday (Day 5)
0 5 * * 5 /bin/bash /home/USER/scripts/connect.sh 49355 >> /home/USER/cron_49355.log 2>&1

# Disconnect at 8:00 PM (20:00) on Friday (Day 5)
0 20 * * 5 /bin/bash /home/USER/scripts/disconnect.sh 49355 >> /home/USER/cron_49355.log 2>&1


# ===================================================================
# NODE 647030 SCHEDULE (Saturdays)
# ===================================================================
# Connect at 6:00 AM on Saturday (Day 6)
0 6 * * 6 /bin/bash /home/USER/scripts/connect.sh 647030 >> /home/USER/cron_647030.log 2>&1

# Disconnect at 7:00 PM (19:00) on Saturday (Day 6)
0 19 * * 6 /bin/bash /home/USER/scripts/disconnect.sh 647030 >> /home/USER/cron_647030.log 2>&1

3. Critical Adjustment: Fix the Username Path

cron requires absolute system paths to be completely reliable.

  1. In the text you just pasted, look for /home/USER/.

  2. Replace USER with your actual Linux account username. (If your username is johndoe, the path becomes /home/johndoe/scripts/...).

4. Save and Exit

  • If using Nano: Press Ctrl + O then Enter to save.

  • Press Ctrl + X to exit back to the normal terminal.

You should see a message saying: crontab: installing new crontab.

Step 4: Troubleshooting & Monitoring Logs

Because cron tasks run invisibly in the background, the entries above are designed to output everything they do into dedicated text files so you can check on them.

To see if your scripts are running smoothly or to view errors, read your log files using the cat command:

Bash

cat ~/cron_49355.log
cat ~/cron_647030.log

If you ever want to add a third or fourth node in the future, you do not need to modify your scripts at all. Simply open crontab -e again and add two new lines with the new node number and your preferred times.

Comment:  Zayn ZR3VO from Orania is currently using this automated connect and disconnect method and he indicated that it is working well.

Images:  (Click on images for larger view.) 

 

Let's build the Modified "Squeakie" RF Field Strength Meter - Peter Parker VK3YE (Part 3)

I was not satisfied with the functioning and build of the veroboard "Squeakie" Field Strength Meter described in Part 2.  I decide...