Private RoIP (Radio over IP) System

I often work in places that are spread out over large distances and are underground or filled with radio obstructions like thick concrete/steel walls and lots of metal equipment. Getting radios to work takes some infrastructure and money.

Something I usually have access to at these sites: a reliable, isolated, fast network that goes wherever the equipment is at. So I wondered if anyone connected radios to a network to ‘extend their range’. One evening down the rabbit hole taught me that yes, of course, they did! I came across the application “app_rpt” that works with the open-source PBX software “Asterisk“, and that seemed like a good way to go.

Ten years ago, there was a Linux distro freely available that made Asterisk setup pretty simple. I guess they figured out how hard it is to make money giving away free software, so that is no longer available. Then I found the “AllStarLink” project. The ASL has a Linux distribution that has everything you need, all packaged up and ready to go. It is made for amateur radio use over the Internet, but with a little modification, it will work on a local network also.

Server

The server is also a node, and I’ve also seen it called a hub. In my case, it is a virtual machine running ASL beta2.0 and configured to be ‘radioless’ which means the radio type is set to “dahdi/pseudo”pitfall warning: don’t bother trying to use the “stable” ASL 1.01 images. Asterisk won’t start due to a conflict. Best I can tell the Debian updates caused it to break.

in the file /etc/asterisk/rpt.conf, add node definitions for all the other nodes on your local network. For example, the server node is 1500, and my other node is 1501. The default port is 4569

[nodes]
1500 = radio@127.0.0.1:4569/1500,NONE
1501 = radio@192.168.7.7:4569/1501,NONE

in the file /etc/asterisk/iax.conf, comment out the line by adding a “;” to the beginning of the line in the [general] stanza pointing to the register.allstarlink.org site. This will prevent the server node from attempting to connect. (we are all local, no internet activity)

Node(s)

The nodes are a raspberry pi loaded with the ASL Beta2.0 image with a special USB radio interface. The interface is a sound card that converts the audio and also handles two extra signals needed to make radio communications work:
1) PTT (push to talk) – this is used when the node wants the radio to transmit
2) COS (carrier operated switch) – the radio turns on this signal when the squelch is open to notify the node that someone is talking

I found 2 options for pre-assembled units in the $50 range:
1) Repeater Builder USB RIM Lite: repeater-builder.com/products/usb-rim-lite
2) ARA-1 Sound FOB by TechNo By George: technobygeorge.com

When looking for radios, keep a few things in mind:
1) the radio needs to provide a COS signal – I found one that I didn’t have to open up and modify, I could just plug into the speaker/mic jack to get all four signals I need (audio in/out, PTT, COS)
2) you need a license to use most radios (FRS is an exception)

in the file /etc/asterisk/rpt.conf, add node definitions for all the other nodes on your local network. For example, the server node is 1500, and my other node is 1501.

[nodes]
1501 = radio@127.0.0.1:4569/1501,NONE
1500 = radio@192.168.7.6:5469/1500,NONE

in the file /etc/asterisk/iax.conf, comment out the line by adding a “;” to the beginning of the line in the [general] stanza pointing to the register.allstarlink.org site. This will prevent the node from attempting to connect. (we are all local, no internet activity)

Laptop Software

If you are already sitting in front of a computer that is connected to the ‘radio’ network, there is really no reason you need a radio, your computer can run software that interfaces with Asterisk. I found a windows program called “IaxRpt” that runs on Linux using WINE. It is basically a SIP softphone application with PTT functionality.

To use this software, a few edits have to be made to your server node. In the /etc/asterisk/iax.conf file, find or add the stanza below and set up a password in the ‘secret =’:

[iaxrpt]
type = user
context = iaxrpt ; Context to jump to in extensions.conf
auth = md5
secret = xxxxxxxxxx
host = dynamic
disallow = all
allow = ulaw
allow = adpcm
allow = gsm
transfer = no

in my version of ASL, the /etc/asterisk/extensions.conf is setup with slick variables that get auto-populated with the correct node number and didn’t require any modifications as the wiki instructions indicated

[iaxrpt] ; entered from iaxrpt in iax.conf
exten => ${NODE},1,rpt(${NODE}|X)

When creating an account in IaxRpt, use the server’s node number (1500 in my case) as the “account” or “name”. (this was not obvious to me and is required for it to connect) The “host” is the IP address of the server node and the “username” is “iaxrpt”. The “password” is whatever you set “secret” to in the step 3 above here.

Click ‘connect’

Then use the keypad in the software to dial “* 3 1501” (replace 1501 with your node number) — this command connects the server node to the other node. It took me a while to figure out this step was required. I know there are other ways of connecting the two nodes, but the important thing to know is that you have to command it to happen.

Click the “TRANSMIT” button to talk to the other node, which will key up its radio and transmit your voice remotely.

This entry was posted in How-To, Projects, Technology and tagged , , , , , , , . Bookmark the permalink.

4 Responses to Private RoIP (Radio over IP) System

  1. Ed says:

    I am attempting something similar. I would like to make a private ASL network, using rPi as end nodes and an AWS instance for the server. Everyone seems to give images and I would like to simply install ASL-asterisk on to an existing install because I need them to do multiple tasks; 99% of the time they will not be running radio traffic. Since images exist, they must have solved the problems I am running into. I have been successful installing (compiling from source 2.0) with a Ubunto VM, but not with AWS ubuntu or raspberry pi 4. Do you have any insight in getting ASL-asterisk on to an existing install? I need to get past that before I can start into the setup challenges.

  2. SAFFA says:

    Hey, is it possible that the server node instead of being radioless, has simpleusb interface with DMK URIxB attached and also connecting IAXRPT to this server. Basically eliminating the raspberry pi node?

  3. Thomas says:

    Hello,
    Was interested in the radio you found that you didn’t have to pen to get the connections. Thanks!

  4. Ray Cook says:

    I am trying to learn this and frankly after reading all the different articles my brain is dead and none of the articles seem provide a clear picture. I am curious what program and/or how did you modify /etc/asterisk/rpt.conf and /etc/asterisk/iax.conf? In a nutshell, here is my long term goal I am looking to accomplish. I want a PI Server here at my QTH that accesses 3 nodes (future 4). One node controls a CDM1250 VHF that will talk to a local repeater for our ARES group. second controls a CDM1250 UHF talking to a local GMRS Repeater which the owner has no desire to link and third controls a CDM1250 UHF that connects to my local personal GMRS repeater. In the end, I have a UHF XPR4550 that I want to connect through DMR.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.