Copyright Terry Claiborne - KC3KMV - kc3kmv@yahoo.com
AllTune2 is a web-based control and status dashboard for radio network switching and favorites management on AllStarLink 3 / Debian Linux.
It is designed to provide a cleaner, safer control flow for BrandMeister, TGIF, YSF, AllStarLink, EchoLink.
AllTune2 will not work correctly until you edit /var/www/html/alltune2/config.ini and enter your real settings.
The installer creates a starter config.ini with placeholder values. You must change them before using AllTune2.
AllTune2 currently supports:
- BrandMeister
- BrandMeister private calls with a trailing
# - TGIF
- YSF
- AllStarLink
- EchoLink
- DVSwitch auto-load
- Link Mode selection:
- Transceive
- Local Monitor
- Shared favorites management
- Dashboard favorites sorting
- Direct AllStarLink node tracking
- Disconnect of a specific selected direct AllStarLink node
- Direct EchoLink node tracking
- Disconnect of a specific selected direct EchoLink node
- Disconnect of the DVSwitch link only
- Full Disconnect All cleanup via Asterisk restart
- Config-aware mode availability
- Helper warnings for unconfigured modes
- Connect disabled for modes that are not truly configured
- Backend validation that rejects placeholder/default config values
Original working app remains untouched:
/var/www/html/alltune
Active AllTune2 project:
/var/www/html/alltune2
- Safer web dashboard for connect / disconnect control
- Shared favorites management
- BrandMeister two-step connect workflow
- BrandMeister private call support with a trailing
# - TGIF two-step connect workflow
- YSF one-step connect workflow
- AllStarLink one-step connect workflow
- EchoLink one-step connect workflow
- DVSwitch auto-load option
- Link Mode selection:
- Transceive
- Local Monitor
- Direct AllStarLink / EchoLink node list with per-node Disconnect buttons
- Separate Disconnect DVSwitch action
- Separate Disconnect All action
- Config-aware mode availability
- Unconfigured modes show helper warnings
- Connect is disabled for modes that are not truly configured
- Backend validation prevents placeholder/default config values from pretending to connect
- Separate app config file
- Installer script for setup and permissions
- Automatic Asterisk sudoers rule creation during install
- Improved dashboard action responsiveness
public/index.php- main dashboardpublic/favorites.php- favorites managerapi/connect.php- connect / disconnect actionsapi/status.php- live status endpointapp/- application classes and support codepublic/assets/js/app.js- frontend logicpublic/assets/css/style.css- frontend stylingdata/favorites.txt- shared favorites fileconfig.ini- local app configuration fileconfig.ini.example- starter config examplesetup_alltune2.sh- install / setup script
- Debian / Linux system
- Apache
- PHP
- Asterisk installed at:
/usr/sbin/asterisk
AllTune2 uses its own config file:
/var/www/html/alltune2/config.ini
Expected keys:
MYNODE="YOUR NODE"
DVSWITCH_NODE="YOUR DVSWITCH NODE"
BM_SelfcarePassword="CHANGE_ME"
TGIF_HotspotSecurityKey="CHANGE_ME"Typical local setup example:
MYNODE="67040"
DVSWITCH_NODE="1957"
BM_SelfcarePassword="YOUR_REAL_PASSWORD"
TGIF_HotspotSecurityKey="YOUR_REAL_KEY"Placeholder or default values such as these are treated as not configured:
CHANGE_MEYOUR NODEYOUR DVSWITCH NODEYOUR_REAL_PASSWORDYOUR_REAL_KEY
This allows safer behavior for systems that may have:
- AllStarLink only
- EchoLink only
- BrandMeister only
- TGIF only
- BrandMeister + TGIF
- full DVSwitch support
Run this from the terminal:
sudo git clone https://github.com/TerryClaiborne/alltune2.git /var/www/html/alltune2 && cd /var/www/html/alltune2 && sudo bash setup_alltune2.shIf you already have AllTune2 installed, use:
cd /var/www/html/alltune2
cp config.ini config.ini.bak
cp data/favorites.txt data/favorites.txt.bak
git pull
sudo bash setup_alltune2.shThe installer:
- creates
config.ini.exampleif missing - creates
config.iniif missing - creates
data/favorites.txtif missing - sets ownership and permissions
- checks required project files
- runs PHP syntax checks
- checks required config keys
- creates the required Asterisk sudoers file
- validates the sudoers file
- shows a setup summary
AllTune2 needs Apache / www-data to be able to run Asterisk commands without a password.
The installer creates this file:
/etc/sudoers.d/alltune2-asterisk
With this rule:
www-data ALL=(ALL) NOPASSWD: /usr/sbin/asterisk
Open:
/alltune2/public/
Direct local example:
http://YOUR-IP/alltune2/public/
The dashboard and status are the same main screen.
The main control actions are:
- Connect - starts the selected network / node workflow
- Disconnect - removes the current managed connection, or removes the last tracked direct AllStarLink / EchoLink node first when one is present
- Disconnect DVSwitch - removes only the configured DVSwitch link
- Disconnect All - full cleanup by restarting Asterisk
BrandMeister uses a two-step connect flow:
- Enter or load a talkgroup.
- Press Connect once.
- Wait for the system to show that BrandMeister is ready.
- Press Connect again for the final talkgroup connect.
BrandMeister private calls are also supported.
To place a BM private call, enter the destination DMR ID with # at the end.
Examples:
310997#= BrandMeister Parrot private call1234567#= private call to DMR ID1234567
Notes:
- BM private call support is BrandMeister-only
- TGIF, YSF, AllStarLink, and EchoLink do not use the trailing
# - Only digits with an optional single trailing
#are valid
TGIF uses a two-step connect flow:
- Enter or load a talkgroup.
- Press Connect once.
- Wait for the system to show that TGIF is ready.
- Press Connect again for the final talkgroup connect.
YSF uses a one-step connect flow:
- Enter or load the YSF target.
- Press Connect once.
AllStarLink / EchoLink uses a one-step connect flow:
- Enter or load the AllStarLink / EchoLink node.
- Press Connect once.
If Disconnect before Connect is off, additional direct AllStarLink / EchoLink nodes can be added and tracked.
If Disconnect before Connect is on, the next managed connect clears earlier managed links first.
AllTune2 reads config.ini and checks whether a mode is truly configured before allowing Connect.
Configuration rules:
- AllStarLink requires a real
MYNODE - EchoLink requires a real
MYNODEand a working EchoLink configuration on the ASL3 system - YSF requires real
MYNODEandDVSWITCH_NODE - BrandMeister requires real
MYNODE,DVSWITCH_NODE, andBM_SelfcarePassword - TGIF requires real
MYNODE,DVSWITCH_NODE, andTGIF_HotspotSecurityKey
If a mode is not configured:
- the helper text explains what is missing
- the Connect button is disabled for that mode
- backend validation also rejects fake/default config values
AllTune2 supports mixed operation where DVSwitch can stay up while direct AllStarLink nodes are also connected.
Confirmed working behavior includes:
- BrandMeister + AllStarLink + EchoLink
- TGIF + AllStarLink + EchoLink
- YSF + AllStarLink + EchoLink
- DVSwitch local node in Local Monitor + AllStarLink + EchoLink in Transceive
This is one of the main design goals of AllTune2.
The AllStarLink / EchoLink Live Status box shows tracked direct AllStarLink / EchoLink nodes connected by AllTune2.
It includes:
- direct connected node count
- direct node numbers
- mode labels such as:
- Transceive
- Local Monitor
Important:
- only direct tracked nodes connected by AllTune2 are intended to be acted on
- downstream nodes beyond the direct link are not the target of per-node disconnect control
Normal Disconnect uses managed disconnect behavior.
When direct AllStarLink / EchoLink nodes are present, it removes the most recently tracked direct AllStarLink / EchoLink node first.
If no tracked direct AllStarLink / EchoLink node is present, it disconnects the current managed mode as appropriate.
Disconnect DVSwitch removes only the configured DVSwitch link and should not disturb direct AllStarLink / EchoLink nodes unless a different action is chosen.
The AllStarLink / EchoLink Live Status area includes a Disconnect button beside each tracked direct AllStarLink / EchoLink node.
This allows disconnect of one specific direct AllStarLink / EchoLink node without removing the others.
Disconnect All is intentionally different from normal Disconnect.
It performs full cleanup by restarting Asterisk so that stubborn sessions are cleared reliably.
This is the intended design and should remain that way.
Favorites are stored in one shared file:
data/favorites.txt
Favorites support:
- BM
- TGIF
- YSF
- AllStarLink
- EchoLink
The dashboard can load saved favorites into the control form.
The dashboard saved favorites table supports click-to-sort for:
- TG / Node / YSF
- Station Name
- Description
- Mode
The Favorites page can:
- add favorites
- edit favorites
- remove selected favorites
- AllTune2 uses its own
config.iniin the app root. - The original working AllTune app can remain untouched while AllTune2 is tested separately.
- Some users may use Allmon3 instead of Allscan, so AllTune2 should not depend on Allscan existing.
- UI helper text explains the current selected network workflow.
- Button state is part of the workflow and users should wait for the status line and button state to update before the next action.
The project .gitignore should prevent uploading local runtime files such as:
config.inidata/favorites.txt*.bak*.old*.orig*.save
- Edit
/var/www/html/alltune2/config.iniand set real values. - Open
/alltune2/public/in the browser. - Test BM, TGIF, YSF, AllStarLink, EchoLink, DVSwitch auto-load, and disconnect actions.
- Confirm favorites save correctly.
- Confirm direct AllStarLink nodes show correctly in Live Status.
- Confirm Disconnect DVSwitch and Disconnect All behave as expected.
- Confirm unconfigured modes show warnings and disable Connect as expected.
This project is being prepared for GitHub-ready installation and sharing.