Node Setup Guide
Build a radioless AllStarLink ASL3 node on a Raspberry Pi and connect it from OpLine.
A "radioless" node is a Pi running AllStarLink with no attached radio hardware. It acts as your personal hub on the network - your phone connects to it over IAX2, and from there you can link to any other AllStarLink node.
1. What you'll need
- Raspberry Pi 3B+, 4, or 5. Pi 4 with 2GB RAM is the sweet spot.
- microSD card, 16 GB or larger, decent quality (A1/A2 rated).
- Power supply appropriate for your Pi model.
- Wired Ethernet recommended over Wi-Fi for stability.
- An AllStarLink account - free, requires a valid call sign.
- Router access to forward one UDP port.
2. Get an AllStarLink node number
- Sign up at allstarlink.org with your call sign.
- Once your license is verified, request a node number from the portal.
- In the portal, set a node password - you'll plug this into your Pi later.
Approval is typically same-day to a couple of days. Save the node number and password somewhere safe.
3. Install ASL3 on your Raspberry Pi
ASL3 runs on Debian 12 (Bookworm). The cleanest install is:
- Download Raspberry Pi Imager.
- In Imager, choose Raspberry Pi OS Lite (64-bit) - the Bookworm release.
- Click the gear icon to preset hostname, SSH on, your Wi-Fi (if needed), and a username/password.
- Flash to your microSD card.
- Boot the Pi, give it a minute, then SSH in:
ssh youruser@nodepi.local
Update the system, then add the AllStarLink repository and install ASL3:
sudo apt update && sudo apt -y full-upgrade
sudo apt -y install curl gnupg
# Add the ASL3 repo (per allstarlink.org/install)
curl -s https://apt.allstarlink.org/repos/repo_signing.key \
| sudo gpg --dearmor -o /usr/share/keyrings/allstarlink.gpg
echo "deb [signed-by=/usr/share/keyrings/allstarlink.gpg] \
https://apt.allstarlink.org/repos/asl3 bookworm main" \
| sudo tee /etc/apt/sources.list.d/allstarlink.list
sudo apt update
sudo apt -y install asl3 asl3-asterisk
4. First boot & initial config
Run the ASL3 setup wizard:
sudo asl3-node-setup
You'll be prompted for:
- Node number (from your AllStarLink portal)
- Node password (from your AllStarLink portal)
- Call sign
- Radio interface - choose "none" or "radioless / no radio" (wording varies by version).
The wizard writes the right defaults into /etc/asterisk/. When it finishes, restart Asterisk:
sudo systemctl restart asterisk
sudo systemctl status asterisk
5. Configure as a radioless node
If the wizard didn't fully strip the radio interface, edit /etc/asterisk/rpt.conf and confirm your stanza looks roughly like this (replace NODENUM with your actual node number):
[NODENUM]
rxchannel = dahdi/pseudo
duplex = 0
hangtime = 1000
althangtime = 4000
totime = 180000
idrecording = |i NODENUM
idtalkover = |i NODENUM
politeid = 30000
unkeytime = 1000
nounkeyct = 1
holdofftelem = 0
telemdefault = 1
telemdynamic = 1
linkmode = 0
nolocallinkct = 0
Key bits for radioless operation:
rxchannel = dahdi/pseudo- uses Asterisk's pseudo channel instead of a real radio.duplex = 0- half-duplex with no local radio.
Reload Asterisk after edits:
sudo asterisk -rx "rpt reload"
6. Open UDP 4569 on your router
AllStarLink nodes talk to each other (and to OpLine) over IAX2 on UDP port 4569. In your router's admin panel:
- Forward UDP 4569 to your Pi's local IP (e.g.
192.168.1.50). - Set a DHCP reservation so the Pi keeps the same local IP.
You don't need to set up your own DDNS service. Once your node is registered with AllStarLink, the network publishes a hostname for it automatically at NODENUM.nodes.allstarlink.org and keeps it pointed at your current public IP. That's the host you'll use in OpLine.
7. Add an IAX user for OpLine
OpLine uses the standard AllStarLink iaxrpt user and context by default - the same convention used by the long-running iaxRpt desktop client - so you don't need to type anything custom into the app. Add a stanza to /etc/asterisk/iax.conf:
[iaxrpt]
type = friend
secret = a-strong-password-you-pick
host = dynamic
context = iaxrpt
disallow = all
allow = ulaw
qualify = yes
deny = 0.0.0.0/0
permit = 0.0.0.0/0
Then make sure /etc/asterisk/extensions.conf (or your rpt_extnodes include) routes that context to your node:
[iaxrpt]
exten => NODENUM,1,rpt(NODENUM)
exten => NODENUM,n,Hangup()
Reload IAX and the dialplan:
sudo asterisk -rx "iax2 reload"
sudo asterisk -rx "dialplan reload"
8. Connect from OpLine
In OpLine, add a new node with the following:
| Field | Value |
|---|---|
| Host | NODENUM.nodes.allstarlink.org - the DNS name AllStarLink assigns every registered node automatically |
| Port | 4569 |
| Node number | Your AllStarLink node number |
| Username | iaxrpt (matches OpLine's default and the stanza above) |
| Secret | The password you set in iax.conf |
| Codec | ulaw |
The AllStarLink network keeps DNS for every registered node up to date, so NODENUM.nodes.allstarlink.org always resolves to your current public IP - you don't need DuckDNS, No-IP, or any other dynamic DNS service unless you want one for other reasons.
Save the node, mark it as a favorite, and tap Connect. Hold push-to-talk and you should hear your node's ID. From there you can link to any other AllStarLink node - try connecting to the AllStarLink Parrot (node 2002) for an echo test.
9. Troubleshooting
Asterisk won't start
Check the log: sudo journalctl -u asterisk -n 100 --no-pager. Most issues are typos in rpt.conf or iax.conf.
OpLine can't connect
- Confirm UDP 4569 is forwarded to the Pi's local IP - test with a port checker.
- Watch live:
sudo asterisk -rvvv- try connecting and look for auth errors. - Double-check the username/secret in OpLine matches
iax.confexactly.
Connected but no audio
- Codec mismatch - make sure both ends allow
ulaw. - Check that the OpLine app has microphone permission in iOS Settings.
Node won't link to other nodes
From the Asterisk CLI: rpt fun NODENUM *3OTHERNODE connects, *1OTHERNODE disconnects. If commands fail, your node likely isn't registered with the AllStarLink network - verify the node password matches your portal.