Next step,  if you started from the beginning of our quickie install example,  is to edit and configure the system files. If you want to start from the beginning CLICK HERE

A quick word once again, we are not exploring all the options you may have with this. We are assuming you care not about reading up on this stuff before you make a move. This data only pertains to ACID install.

Some rules here are that any part of a line in a .conf file that starts with ; (semicolon) is ignored and. can appear anywhere on a line but the system ignores anything after it. Lines can be very long so don’t be confused if they wordwrap to the next line.

All .conf files are located in /etc/asterisk

You can edit these .conf files locally using the “NANO” editor (included in install).

We will start with extensions.conf

cd  /etc/asterisk

nano extentions.conf


 In order to get our two apps 3CX and iaxRPT working, you need to make some entries but with your node number(s) and passwords not mine. Do not copy paste text from this text, it is formatted differently and may bugger up your file. …Just a updated note… 3cx is no longer available for pc/mac under asterisk. The company went proprietary. I suggest LINPHONE in it’s place.


static=yes       ; These two lines prevent the command-line interface
writeprotect=yes ; from overwriting the config file. Leave them here.

HOMENPA=330     ; your home telephone area code

exten => i,1,Hangup

; After the above in the file enter this for iaxRPT

exten => 29283,1,rpt(29283|X)

; then Add the next for phone control (3cx or other softphone).

exten => 29283,1,Answer
exten => 29283,n,Wait(2)
exten => 29283,n,Playback(rpt/node)
exten => 29283,n,Playback(digits/2)   ;say node digits one at a time
exten => 29283,n,Playback(digits/9)
exten => 29283,n,Playback(digits/2)
exten => 29283,n,Playback(digits/8)
exten => 29283,n,Playback(digits/3)
exten => 29283,n,Rpt,29283|P   ; make connection – the P is for phone control mode

OR *Note:  you can do the same thing with the following-

exten => 29283,1,Answer
exten => 29283,n,Wait(2)
exten => 29283,n,Playback(rpt/node)
exten => 29283,n,SayAlfa(29283)   ;says digits one at a time(plays letters & numbers)
exten => 29283,n,Rpt,29283|P   ; make connection – the P is for phone control mode

 ; save your file/exit

using nano… <ctrl> + O = write file      then <ctrl> + X = exit

But for future reference, Other options for the control mode for the extension control.
Note the preceding character is a “pipe” – “|” it’s NOT a lower case L or Upper case  I and is used in programming languages as a inline command separator. Look above the backslash on most keyboards.

D = Dumb exten
P= Phone exten
S = Simple exten
Pv = Phone VOX exten
X = Disable security checks

Next Lets edit iax.conf  next

nano iax.conf

; after these lines



; insert this for iaxRPT:

secret=mypassword   ; your password

; save your file /exit

;Now edit sip.conf for our 3cx /  softphone

; insert this to the bottom of the file and use your own pass/extension/cid

[6010]                  ;  my 3cx on  iPad extension
host=dynamic                     ; unless you set it to a static ip it is dynamic / dhcp
callerid=iPad <6010>    ; pick your own cid name

; save file /exit


;Make sure you have saved your work and entered the correct setup for your iaxRPT and 3CX/softphone and reboot your system (type “reboot”  on radio pbx command hash#)


;Next we will edit rpt.conf and explain the many options but not all of them. Posted here as a examples, see comments to see what the functions do. if your first node is a remote base then see next example.

;It helps to keep your command numbers (as you might enter them on the keypad) in order in function layout so you don’t half-dup a number that will execute before another. EX: *89 and *891. The *891 may never execute. This is most important on phone control mode – doing this could lock you out of a command. Use *890 / *891 so all *89x commands are made into 3 digits and would solve this.

;The default settings you downloaded from your allstarlink should be enough for a initial test but you will want to add  this line to rpt conf that is helpful in testing.


90=cop,1     ;warm boot – put in function stanza to restart asterisk  by phone/radio by typing *90

; the format is (your assigned command)=(static internal system command)

; a leading star is assumed

Set up the 3CX software : Use data from your IP and your assigned extension number.

; from3CX/softphone… dial your node number ex 29283, then try commands.

; Test your set-up so far / otherwise here is a example rpt.conf:

[29283]            ; assigned node number my 220 repeater

rxchannel = SimpleUSB/usb        ; Rx audio/signalling channel
;rxchannel=Radio/usb29283           ; cm108 usb sound

; txchannel=Radio/usb29283           ;use only if tx is different usb than rx.
duplex=2   ; 1=half duplex

erxgain=2                      ; Echolink receive gain adjustment
etxgain=2                      ; Echolink transmit gain adjustment
; Note: Gain is in db-volts (20logVI/VO)
iobase = 0x378           ; parallel port address if used

; controlstates=controlstates    ; system control state list
scheduler=schedule29283    ;this node has a specific sched of its own
morse=morse-all          ; i use a common morse for all nodes on my system
macro=macro29283    ;this node has its own macro list
functions=functions-all       ; i use a common function command list for all my nodes
phone_functions=functions-all    ; part of the common command list above
link_functions=functions-all   ; part of the common command list above

callerid = “Repeater” <0000029283>
idrecording = |iKB8JNM-R
; archivedir= /etc/asterisk/activitylog/    ; use this only if you need it as it will slow your system a bit if doing so on multiple nodes and/or have high load scripts running from crontab. enable at least once to see how it works.

parrotmode=0   ; 0=off 1= By Cop Command and 2=Full time parrot simplex/rpt rpt


; *** Status Reporting *** For ACID ***
statpost_url=http://stats.allstarlink.org/uhandler.php ; Status updates

;macro# to run then  m h dom mon dow – ala cron, star is “any” wildcard

; our example here will call macro 1 below to play time on the hour
1=00 * * * *   ;run macro 1 on the hour

;Macro number = command string (ea command separated by space) -end with HASH
1=*81#    ; play time – (this time command output is a built in string and can’t be changed)


0=autopatchdn    ; Autopatch down
1=ilink,1         ; Disconnect Link xxx
2=ilink,2         ; Con Link xxx RX-Only (mon)
3=ilink,3         ; Con Link xxx TX
4=ilink,4         ; Enter Command Mode on XXX
5=macro           ; Run a macro ##

6=autopatchup,noct=1,farenddisconnect=1,dialtime=20000     ; Autopatch up

70=ilink,5        ; Link Status (long)
71=ilink,6        ; Disconnect All Links
73=ilink,15       ; Full Sys Status (all nodes)
74=ilink,16       ; Reconnect Links (that were disconnected by command)

80=status,1       ; Force id global
81=status,2       ; Time
82=status,3       ; Give Software ver Global
88=cop,32         ; DTMF Pad test – end test string with a “#”

8900=cop,24   ; cancel localplay stream & telemetry

8901=localplay,/var/lib/asterisk/sounds/wx/wxfc    ;my custom wx script player example

8902=localplay,/var/lib/asterisk/sounds/wx/wxalert    ;my custom wx alert script player example

90=cop,1          ;warm boot
91=cop,2           ; System enable – you should not comment these out in a live system
92=cop,3        ; System disable

99=cop,6          ; Remote sip/telephone PTT key command  (# to unkey)

910=cop,4        ; Test tone on/off
912=cop,5        ; Dump system variables on console (debug use only)
914=cop,7        ; Time out timer enable
915=cop,8        ; Time out timer disable
916=cop,9        ; Autopatch enable
917=cop,10        ; Autopatch disable
918=cop,11        ; User linking functions enable
919=cop,12          ; User linking functions disable
920=cop,13        ; Query system control state
921=cop,14        ; Set systemc control state
922=cop,15        ; Scheduler enable
923=cop,16        ; Scheduler disable
924=cop,17        ; User functions enable (time, id, etc)
925=cop,18        ; User functions disable
926=cop,19        ; Select alternate hang time (althangtime)
927=cop,20        ; Select standard hangtime (hangtime)

998=cop,61,pp8=1    ;switch parallel port pin 8 on
999=cop,61,pp8=0   ;same as above but turn off (set ioport=hex val to work)


; This section allows wait times for telemetry events to be adjusted
; A section for wait times can be defined for every repeater


; Morse code parameters.

;; controlstates allow several control operator functions to be grouped together so that one command may be used
;; to select one of 10 groups of control operator functions.
;; These are the valid control operator function pairs
;; rptena,rptdis         –       Repeater Enable/Disable
;; lnkena,lnkdis         –       Linking functions Enable/Disable
;; apena,apdis           –       Autopatch functions Enable/Disable
;; totena,totdis         –       Timeout timer Enable/Disable
;; skena,skdis           –       Scheduler Enable/Disable
;; ufena,ufdis         –     User functions enable/disable
;; atena,atdis         –     Alternate hang time enable/disable
;; up to 10 control state combinations can be defined
;; Upon startup, state 0 will be loaded.
;; If no control states are defined, all control states will default to being enabled.
;0 = rptena,lnkena,totena,apena
;1 = rptena,lnkena,totdis,apdis
;2 = rptena,lnkdis,totena,apdis

; This is where you define your nodes which can be connected to.
; Note, if you are using automatic update for allstar link nodes,
; no allstar link nodes should be defined here. Only place a definition
; for your local nodes, and private (off of allstar link) nodes here.

29283 = radio@,NONE  ; this node connected to this computer

#includeifexists custom/rpt.conf          ;if the rpt.conf file exists in the child directory (custom), load it also.


At this point you should have a working node “Without Radios” !

Want to test it out and learn a few commands… NEXT


Want to look at more info…

Select from the menu above -Amateur Radio/app_rpt/



app_rpt – Asterisk HAM Radio Repeater Controller – The Skinny Set-Up

app_rpt is a software app written in C for the open source ASTERISK PBX that will basically turn Asterisk into a voice switch for radio equipment. A repeater controller/remote base with phone patch and internet linking with echolink and/or allstarlink and or private linking between repeaters and/or phone systems.

The primary group of folks using this as a “great ham repeater switch” would be the ALLSTARLINK.ORG group. However, documentation is sparse and some that you find on the net is not fully explained. I could never find the info I was looking for to do a set-up of remote bases and found many broken links to what looked like what I needed.  I found a alternative way… looking at the source code. (located in /usr/src/astsrc/asterisk/apps/app_rpt.c)

For those of you looking to get up and running, I will note it does take a little time and even more if you have no LINUX, ASTERISK experience and/or REPEATER experience ( I hope you realize that if you strike-out on all three, it will take some time to absorb all of this no matter what).

I will attempt to save you weeks/months of frustration trying to get this to run so you can understand how it works as it is running. For me having plenty of years of ASTERISK and REPEATER, LINUX and PROGRAMMING experience, this app_rpt application was giving me a quite a few head aches for a nearly a week to set-up my 4 repeaters and remote bases. Mainly due to no/poor documentation.

In a effort to promote better documentation, I will try to lay-out the fastest set-up even for those that have no experience. But more important, in later pages, give you better doc’s on setting up the “.conf” configuration files.

In our quickie install, we are using the allstarlink.org quick setup but you are not obligated to use the allstarlink system. We are just making a easy quick basic set-up of your first machine. Although you should consider the benefits of a wide linking system. We are assuming that you do not care to explore all your options to see what is best for you in the first place so these pages are in no way advice, even though they may contain some specific advice about specific items.

Our example system set-up is probably the easiest to do with less money and less hardware and pretty reliable. All be it, this may not be the configuration you want to end up with. But this gives you a chance to learn how it works and then you can decide what works for your needs.

This quicky is intended for a PC and the ACID install. There are many other options, one of which is a set-up on a beagle-board-black (BBB) by WA3DSP and can be found at http://www.crompton.com/hamradio/BeagleBoneBlackAllstar/BeagleBoneBlack.pdf

Do not hook  this up with a actual repeater until you have configured and tested it properly and know how to issue commands for control.



You will need/want a newer computer with

a dual-core cpu and preferably one that has no ps2 style ports but has 6 usb 2.0/3.0 ports on it. Sorry to say, Intel boards with Intel chipsets do work best but others will most likely be fine.

2gb ram, 40gb hdd & a cd-rom


USB Dongle with cmedia cm108/ah


one or more USB sound cards with a cm108/cm108ah chipset (ebay $4 – 8 ea)

additionally, to prevent you from needing to hack the USB sound for cor/ptt control, you should pick-up a parallel port interface output board. The best would be the type that are advertised on ebay for use with CNC control and have “opto-coupled transistors” on the outputs. This isolates/buffers your machine from a mishap on your input/output connections and/or lightning. I see good ones on ebay that use the opto-couples for $25 -35 with a cable.  You do not have to have this but it is worthwhile to have and you can’t build one for that price. A mishap of sending to much voltage to one of the

Parallel Port Breakout card with Opto-Coupled Transisters on output.

Parallel Port Breakout card with Opto-Coupled Transisters on output.

parallel port pins directly can trash the machine as compared to just burning out one of the opto-coupled transistors ($1-5).  Not all mainboards have proper buffering for what we use them for.  Please, Take it from my experience in ’95 when I built a bunch of repeater controllers in DOS Box’s and built a card just like this for protection. Use One ! It makes a nice neat,clean hook-up with the terminal strips and pins are well marked preventing further mistakes/shorts.

It helps while getting started to have a second machine with FILEZILLA FTP Client program to do some quick edits on the “.conf”  files on a windows/linux machine and PUTTY ssh program will allow you to remotely run/edit the system. Find them both at sourceforge.net

Also, 2 windows programs called 3CX phone a sip softphone and iaxRPT. You can also get the 3CX phone as a iphone/ipad/android app. Once configured in your radio pbx, they will allow you to test and run the system even without any radio equipment connected.

Yes, you can use less computer but depending on what you do, you may regret doing this with less computer if you create more than 1 or 2 nodes. I say this for varying reasons that are to much to print here.

In advance, something to think about is,  unless you have a static ip address, if you are going to run this at a remote site with internet connection, you “may” want to set your router for a dynamic dns connection so you can get in and re configure it remotely. (not explained here) . The system, by default, can play the IP back to you on the air.

Go to allstarlink.org and sign-up for account. When this has been checked and authorized (day or two), sign-up for a server and  one node(also takes a day or two). Once this has been authorized and you get a node number, download the ACID linux distribution iso and burn the cd.  This is a centos (community enterprise os) server distribution and is very lean, clean and stable even if not the latest version (stay with the program and do not install newer OS than is in the distro). It’s a lot like RHEL if you are familiar with that.

While you may be waiting for parts to arrive, please set-up your first node/repeater/remote base  on your first node at allstarlink.org.   After you think you have a descent setup go to the next step (This does not need to be exact at this point as you will edit your files that are generated, by hand at a later time) .

Setting up the PC machine….

First and foremost, remove all unneeded cards and USB devices except for your keyboard. Then get into the machines BIOS and reset to factory defaults. SAVE/EXIT and upon reboot and enter BIOS again and set-up what it needs for your drives etc and disable any built in stuff you do not need. BUT DO NOT DISABLE network, video, parallel port or sound and do not disable serial port if you will be using it for a hf remote via rs232 “CAT interface”. This is to free and reset possible irq handling for the Plug and play system… don’t skip this first step, it may cause you grief / head scratching later. Set the pc boot order for 1st-cd-rom & 2nd-hdd.

You might take a note as to what address the parallel port is assigned… i.e. 378,278 etc.  If your bios gives you a choice of manual configuration, choose 378 for your first port unless you have good reason not to.

What you have now done is clear problems that may have been buggering the PNP system up most especially for the irq sharing. You may have had potential problems without knowing it.  Most important if using multiple nodes. Even at this day and age, Plug-N-Play does still have its problems in certain situations especially for usb handling and mainly because of irq shares and poor handling of them and manufactures that do not adhere to PNP specs.

Set-up your router:

If you intend to set-up echolink, you need to set port forwarding for udp ports 5198 and 5199 to your radio pbx’s ip. Even though most 2.0 versions of echolink software will revert to tcp port 5200 when udp ports fail, some nodes are on older software and (at the time of writing) iPad/iPhone apps will not revert to tcp 5200 when udp ports fail to connect.

If you intend to use allstarlink or use direct private network between nodes, you want  to forward udp port 4569 to your radio pbx ip.

Make sure your machine has adequate internet access when starting the next steps (plug in Ethernet).

Now install the ACID distribution cd keeping in mind that the system will need to boot to the cd and it will partition and format the hard drive without asking as it installs (everything on drive will be lost).

It installs Centos OS from the cd and goes to the internet for the latest app_rpt distribution and supporting files.

At the end of the distributed install, it will ask you to create a system password. Make it at least 12 characters of letters and numbers and punctuation. Write it down in advance and don’t loose it. Then it will ask you for your user name and password for your allstar system to be able to download the config files you made when you set-up your node online. This will give you a basic framework to get started with. It will then ask you to install the USB FOB (usb sound) dongle as the system reboots so have it handy.

Next Step…

Check the radio pbx’s ip address & write it down. (use router to see what ip’s are assigned and connected for your radio pbx)

For those of you that have good linux experience, I would suggest at this point you install webmin to access/edit/manage your machine. The following is for all others.

Fire up the second machine that’s connected to your network with filezilla/putty/iaxrpt installed

A word of caution if you edit app_rpt/system files on a windows based machine:

edit only “.conf files” .

This is because your system editor/notepad/wordpad on a windows machine handles carriage return and line feeds differently than a linux/unix system. But because the way the .conf files are read into the system, it does not matter. Do not edit script files ( .sh ) or system  crontab  using a windows editor. you will be lost and confused when things don’t work and you can’t see why when it all looks right.

Those of you that are old DOS hounds will be able to easily convert to editing in linux by using “vi” or “nano” for editing files. After going to the directory,  just type “vi filename.conf”  or  “vi  /path/to/directory/filename.ext” .

One other note for those new to linux: When you log in and see you are in “root”,     ” root  ” is not the top of the directory tree, it is a directory.

Type the following to get a quick demo:

cd /        brings you to the top of tree

ls           list files/directories

cd /etc/asterisk/

ls    *.conf          list files with extention .conf  (the old wildcards work here).

Old dos folks probably have a grip on this now but I can’t teach linux in this article.

Once editing a file in vi, you need to hit your insert key to actually change text and escape when done to enter a command of ” : ” and then “quit” to exit without saving or      :exit    to exit and save your work.

The following is for the folks yet intimidated by linux and want to get moving. Others go to next page link at bottom.

Start your filezilla ftp client on your second machine and set-up a new site. Enter your ip details and port to 222 (change this later), set to ssh mode and normal log-in and use root for username and then your password you created for your system during initial setup.

Since all of the files we are editing are in the directory /etc/asterisk/  , we can backup our files on this second machine by ftp transferring them back to a known directory you see in the left pane.

When you hit the connect button, you will see a directory tree on the right. Click on the top of that tree to see all root directories, then double click “etc” dir and when that opens up double click on asterisk sub-directory.

Now you can see all of the files that make up the user editable configuration files in the pane below the tree.

If you right click the  ” extensions.conf ” file a submenu appears / select view-edit and your system editor will load with that file to edit.

When done editing, save the file (normal) but once you do go directly to filezilla as it will ask you to upload the changed edited file to the server it came from and select yes and check done editing.

This is the procedure for editing all .cong files for those yet to intimidated by linux. (you will have to change that eventually)