← All guides

Setup guide

Connecting QSO One to a node with IAX Direct

IAX Direct connects QSO One straight to a specific AllStar server using credentials issued by that server's operator. No central registry, no Web Transceiver relay: your audio goes directly to the node. AllStarLink's own documentation calls this method IAX Direct Authentication and describes it as the most flexible and reliable way to connect without the full registration infrastructure.

This guide has two halves: what the node operator configures on the server (once), and what you enter in QSO One.

Part 1: Server setup (node operator)

Stock ASL3 (most servers installed since 2024)

ASL3 ships ready for IAX Direct. The default iax.conf already contains an [iaxrpt] template, and the default extensions.conf already routes dialed numbers to any node hosted on the server. You only add users.

Create or edit /etc/asterisk/custom/iax/iaxrpt-users.conf and add one stanza per user:

[W1ABC](iaxrpt)
user = W1ABC
secret = ChangeThisToAStrongPassword
callerid = "W1ABC" <0>

Replace W1ABCwith the user's callsign and set a strong secret. The (iaxrpt) suffix inherits everything else (codecs, context, auth) from the template in iax.conf. The callerid line makes the user display properly on Allmon and Supermon dashboards.

Then reload:

asterisk -rx "iax2 reload"

That's it. No extensions.conf edit is needed: the stock [iaxrpt] context pattern-matches any node number, checks that the node exists on your server, and connects it. Your user can dial any node you host.

Two notes for ASL3 operators:

  • QSO One supports IAX2 call tokens, so you do NOT need requirecalltoken = no for QSO One users. That line exists in the template for older clients that never implemented call tokens.
  • If your server doesn't have the iaxrpt template (heavily customized installs), a standalone stanza works:
[W1ABC]
type=user
secret=ChangeThisToAStrongPassword
context=iaxrpt
host=dynamic
auth=md5
disallow=all
allow=ulaw
allow=adpcm
allow=gsm
callerid="W1ABC" <0>

HamVOIP and older ASL2 installs

Legacy servers need both halves configured by hand.

First, add the user stanza directly to /etc/asterisk/iax.conf (type=friend and context=iax-clientare common on DVSwitch-tutorial setups; either context name works as long as the app's Called Context matches).

Second, add a dialplan entry to extensions.conffor each node the user may dial, inside a context whose name matches the stanza's context= line:

[iax-client]
exten => 12345,1,Rpt(12345,X)
exten => h,1,Hangup

Replace 12345 with your node number. Then reload both:

asterisk -rx "iax2 reload"
asterisk -rx "dialplan reload"

Part 2: App setup (the user)

Get four things from the node operator: the server's hostname, the IAX port (usually 4569), your username, and your secret.

In QSO One: Networks, IAX Direct, Add Credential.

  • Host / Port: the server's hostname and port.
  • Node Number: the node you want to talk to. On stock ASL3 servers, any node hosted on that server works. On HamVOIP/legacy servers, the number must have a matching dialplan line (the operator will know).
  • Username: exactly the bracketed stanza name the operator created, case-sensitive.
  • Password: the stanza's secret.
  • Caller ID Name (optional): your callsign. This is what far-end dashboards display. If you leave it blank, QSO One uses your AllStarLink account callsign from the Account screen. One of the two must be set; the app won't connect without an identity.
  • Called Context (advanced): leave at the default iaxrpt unless the operator says otherwise (DVSwitch-style setups use iax-client).

Connect, key up, and you're on the node.

Troubleshooting

  • Authentication fails: username must match the stanza name exactly, including case, and the password must match the secret.
  • Connects then immediately disconnects: on ASL3 this usually means the node number isn't hosted on that server. On HamVOIP it usually means the Called Context doesn't match the stanza's context= line, or the node number has no dialplan entry.
  • You show as "null" on the node's dashboard: set your Caller ID Name (or your Account callsign) in the app, and operators can also set calleridin the user's stanza server-side.
  • Others can't hear you: update QSO One. Versions before 2.6.0 had a transmit signaling bug affecting most server configurations.