Using VOX with AllStarLink and an IP Phone
Ditch the *99 command and use your phone's mute button instead
A subscriber recently shared a suggestion about using VOX with AllStarLink (ASL). After some fiddling, I got it to work on the IP phone that sits on my home desk. Surprisingly, this technique is not well documented so I offer my take on it here.
Many thanks to Tim KX4ZU for alerting me to this method of using ASL with an IP phone. It makes it more enjoyable to participate in ASL conversations with my desk phone.
The secret sauce is a small change to the extensions.conf file for your ASL node.
Why might you want to try this? If you already use an IP phone to connect to a node, you know the standard way of transmitting from the phone is to press *99 (this is the PTT command when in phone mode) and then end your transmission by pressing #.
Time for some research! I found this technique of using VOX with a SIP line published in February 2021 by WI6H. See his comment about making a small change in the node’s extensions.conf file:
This worked perfectly! (Pv vs just P)
; Allow SIP calls to local node - this is the magic part.
exten => 21411,1,rpt(21411|Pv)
Here is how I configured my ASL node to use my phone to transmit with VOX.
This is the point where I chuckle to myself because while I present my configuration as a fairly linear how to, the reality was it took several days and multiple interactions with Tim KX4ZU to succeed!
To do this, I modified three files: modules.conf, extensions.conf, and sip.conf.
First, I enabled the chan_sip.so setting in modules.conf.
Second, I added a context in extensions.conf called [sip-phones]:
Third, I created an extension in sip.conf called [211]:
Once you’ve changed these settings, Asterisk must be restarted. From a terminal window on the node, you can issue the sudo astres.sh command on the command line, or you can reboot your node.
Node configuration
modules.conf
What does the change in modules.conf do? It enables the sip channel so the node can be connected to the phone.
If you need a reminder on how to edit, open the configuration file with nano, make the changes, hit Ctrl X, and say Y to save.
extensions.conf
What about the change to extensions.conf? Adding a small “v” is the secret sauce in this method. VOX is enabled in the [sip-phones] context in extensions.conf by adding a small “v” after the capital “P” in this line for my noe 588411:
exten => 300,n,rpt(588411|Pv)
Note, too, that a command string 300 is created in the [sip-phones] context. The 300 in the extensions.conf is a numeric command that is used to initiate the connection from the node to the phone.
sip.conf
What does the sip.conf change do? Extension 211 created in sip.conf is the user ID in the Cisco SPA525G configuration. The password set in the phone configuration is the secret set in the sip.conf for the [211] extension. Let me repeat this because the words can be confusing:
The 211 extension number in sip.conf is used as the user ID in the Cisco phone configuration.
The secret set for extension 211 is used as the password in the Cisco configuration.
To review: 300 in the [sip-phones] context in extensions.conf is used to initiate a connection to the phone. 211 and the secret in sip.conf are used to authenticate the connection to the phone.
Phone configuration
What does the phone configuration look like? Find the user ID of 211 in the Subscriber Information section for my phone’s line 4 (and just to add to the confusion around extensions, line 4 is labeled as Ext 4 in the phone config):
Note that the “Mailbox ID” in the phone config is my node 588411. Also, “Proxy” is the IP address of node 588411 in my local area network. (Node 588411 is not accessible from outside my LAN. I can connect to remote nodes from 588411 but remote nodes cannot initiate a connection to 588411. I have other nodes that are accessible from outside.)
Summary: the connection
At the risk of being repetitive, let’s put all the pieces together:
The node-to-phone connection is initiated from IP address 192.168.1.147 for user 211 using the password that is set as the secret for 211 in sip.conf.
The settings in sip.conf link the phone to the extensions.conf settings. The [sip-phones] context in extensions.conf is specified in the [211] section of sip.conf, creating that linkage.
None of this works if chan_sip.so is not loaded in modules.conf.
So how does the node actually connect to the phone? It’s pretty simple. I press the button for line 4 on the phone and dial 300. That sends 300 to IP address 192.168.1.147. The node is listening for those numbers as specified in the [sip-phones] section of extensions.conf. The node then sends the user ID (the [211] in sip.conf) and the password (the secret in sip.conf) to the phone. If the user ID and password match the phone’s configuration for line 4, the connection is authenticated.
Connecting to other nodes
So now we have an open line with VOX enabled. What we don’t have is a connection to another node. You can use standard DTMF commands to manage connections to other nodes but I prefer the convenience of using AllScan by David Gleason NR9V. AllScan makes using a node connected to your computer very, very easy.
VOX is enabled
When the connection is made, the microphone is live and the system is transmitting. Therefore, it is important to remember to hit the mute button as soon as the phone connects to your node. I have a small note to myself taped to node 588411 to remind me it is set to VOX. I also have a note in a text file on the node’s desktop:
(This note reflects my first setup where I used a softphone (MicroSIP) on my Windows 11 computer and dialed the desk phone from the softphone. I’ve since simplified this by using a speed dial button on the phone.)
I want to stress the need to hit that mute button when a connection is made! If you don’t, you are in transmit mode when you connect to a remote node!
Testing VOX
You can test VOX by connecting to node 55553 (Enhanced Parrot) and speaking into your phone microphone. The DTMF command to connect to node 55553 is *355553 and to disconnect use *155553.
Here is the DTMF commanded, illustrated in the AllScan interface:
And the DTMF disconnect command:
Node 588412 on my desk is reachable from remote stations and is not set up for VOX. Node 588411 on my desk is not reachable from remote stations and is set up for VOX using my Cisco SPA525G IP phone. Both nodes are built on Dell Wyse 3040 hardware using the Debian 10 “Buster” package available from AllStarLink.org.
I’ll close with my “go to” node 588412 crafted for me by David Gleason NR9V (learn more at his AllScan site). This package has been incredibly solid, providing excellent audio transmission and reception. 588412 is connected to one of my Dell Wyse 3040 boxes, with audio input via a venerable Kenwood MC-60A microphone and audio output through a Heathkit HS-1661 speaker: