-[[.:start]]
====== Allstar Expands ======
** Digging Deeper into Allstar **
I've seen a few examples of small networks and am interested in building up a larger system.
Some examples that interested me:
* Milnet [[http://milnet.io/]] with Allstar connected nodes and a DMR bridge
* Allstar node status [[http://stats.allstarlink.org/nodeinfo.cgi?node=424611]]
* W2YMM [[https://w2ymm.home.blog/allstar-howto/]] with a group of connected gateways, repeaters and a bridge to DMR etc.
* This one was discovered by accident on Allstar's Portal I mistyped my own original base node ID (pre-NNX) **48148** as [[http://stats.allstarlink.org/nodeinfo.cgi?node=48418 | 48418]] and found his system with lots of information on his blog
===== Adding more nodes =====
{{ :public:radio:2025:networkmap_2_.jpg?direct&600 |}}
It's possible to have up to 10 individual Node IDs with a single Allstar node number, by using NNX to add a 6th digit to the base node number...
My Base Number is ''48148'' and I activated the ''NNX'' feature and created 3 nodes
* ''481480''
* ''481481''
* ''481482''
Since they are all behind a NAT firewall, sharing one public IP address the nodes must use different UDP ports. To make this possible I created 2 new ''Server'' instances on the Allstar Portal, one per node, and chose the UDP ports :
[[https://www.allstarlink.org/portal/servers.php]]
* ''node481480'' => ''UDP 4569''
* ''node481481'' => ''UDP 4570''
* ''node481482'' => ''UDP 4571''
The choice of which server is used per node is chosen on the Node configuration page for each node, on the Allstar Portal
[[https://www.allstarlink.org/portal/nodes.php]]
Then I flashed new SD cards for the new nodes using the ASL 2.0.0 Beta 6 image I've used for the initial VHF Gateway node.
[[https://github.com/AllStarLink/ASL-Live-Build/releases/download/2.0.0-beta.6/asl-2.0.0-beta.6-kc1kcc-20210324-raspberrypi-armhf.img.zip]]
The config. for the original node had to be changed, to reflect the new node number ''481480'' versus ''48148'' which means editing (at least)
* ''/etc/asterisk/rpt.conf''
* ''/etc/asterisk/iax.conf''
* ''/etc/asterisk.extensions.conf''
To ensure each internal LAN node can find each other (can't rely on Allstar's DNS) it's necessary to add each one to the ''[nodes]'' stanza in each node's config file ''/etc/asterisk/rpt.conf'' using the appropriate IP and UDP port depending on which node is being configured.
; from the VHF Gateway node 481480
[nodes]
481480 = radio@127.0.0.1:4569/481480,NONE
481481 = radio@192.168.21.250:4570/481481,NONE
481482 = radio@192.168.21.251:4571/481482,NONE
I added the DVSwitch bridging to the hub node ''481481'' which is configured as //radioless//, I made a local/private node on that machine ''1399'' for this purpose.
All 3 nodes have ''supermon'' and this needed some configuration to make sure the Asterisk Manager ports were available on their external interfaces ''bindaddr = 0.0.0.0'' and not just on the loopback ''bindaddr = 127.0.0.1''
''/etc/asterisk/manager.conf'' =>
;
; Asterisk Call Management support
;
; By default asterisk will listen on localhost only.
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
[admin]
secret = YOUR_MANAGER_PASSWORD
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config
==== Port Forwarding ====
My ADSL router has the following port forwards to allow external incoming connections to be set up
* ''UDP 4569'' => ''192.168.21.109'' for the VHF Gateway / Echolink node
* ''UDP 4570'' => ''192.168.21.250'' for the DMR Bridge node
* ''UDP 4571'' => ''192.168.21.251'' for the Test Node
* ''UDP 5198-5199'' => ''192.168.21.109'' for Echolink client connections
* ''TCP 42110'' => ''192.168.21.109'' for the VHF Gateway/Echolink node's Dashboard
* [[http://gm4slv.plus.com:42110]]
* ''TCP 42111'' => ''192.168.21.250'' for the DMR Bridge node's Dashboard
* [[http://gm4slv.plus.com:42111]]
* ''TCP 42112'' => ''192.168.21.252'' for the Test node's Dashboard
* [[http://gm4slv.plus.com:42112]]
To allow the node numbers to be resolved to useful names tp display on the dashboards the script ''astdb.php'' should run nightly to maintain a lookup table.
The image came with several copies of ''astdb.php'' in different places, all updating a central data file ''/var/log/asterisk/astdb.txt''. Which was confusing, as they all looked in different places for the file detailing private nodes.
To allow private node numbers to appear as useful information, rather than ''not in database'' you first put the information in a file ''privatenodes.txt''
1399|GM4SLV|Bridge to DMR|TGIF TG2354429
and then the ''astdb.php'' script pulls it in, with all the other nodes downloaded from the web, but ''astdb.php'' must know where to find the ''privatenodes.txt'' file.
The easiest way is to run the ''astdb.php'' from the directory containing ''privatenodes.txt''
and therefore it's the copy in ''/var/www/html/supermon/'' that is used, since ''privatenodes.txt'' resides here too.
To automate the process the update is done nightly via ''/etc/cron.daily/allstar_helpers'' which was modified to point to the correct version of ''astdb.php''
#!/bin/bash
# Get new allmon data daily
/var/www/html/supermon/astdb.php
The nodes monitored, and the menu to select them, and external websites, on each node's Supermon Dashboard is configured by ''allmon.ini''
Here's the current version:
++++ Generic /var/www/html/supermon/allmon.ini |
[All Nodes]
nodes = 481480,481481,481482,1399
menu = yes
system = Nodes
[481480]
host = 192.168.21.109:5038
user = admin
passwd = "XXXX"
menu = yes
hideNodeURL = no
system = Nodes
[481481]
host = 192.168.21.250:5038
user = admin
passwd = "XXXX"
menu = yes
hideNodeURL = no
system = Nodes
[481482]
host = 192.168.21.251:5038
user = admin
passwd = "XXXX"
menu = yes
hideNodeURL = no
system = Nodes
[1399]
host = 192.168.21.250:5038
user = admin
passwd = "XXXX"
menu = yes
hideNodeURL = yes
system = Nodes
; Set the node number for the specific node that this copy of allmon.ini is written for
[lsNodes]
url = "/cgi-bin/lsnodes_web?node=481481"
menu = yes
[Node 481840]
url = "http://gm4slv.plus.com:42110/"
menu = yes
system = Dashboards
[Node 481841]
url = "http://gm4slv.plus.com:42111/"
menu = yes
system = Dashboards
[Node 481842]
url = "http://gm4slv.plus.com:42112/"
menu = yes
system = Dashboards
[GM4SLV Wiki]
url = "https://gm4slv.org.uk/dokuwiki/doku.php?id=start"
menu = yes
system = External Sites
[Echolink Link Status]
url = "https://echolink.org/links.jsp?d=1&gs=IP90gg&sel=gridsq"
menu = yes
system = External Sites
[TGIF]
url = "https://tgif.network/"
menu = yes
system = External Sites
[AllStarLink]
url = "http://www.allstarlink.org"
menu = yes
system = External Sites
++++
===== VHF Gateway =====
|Platform| Raspberry Pi 2 Model B Rev 1.1 |
|Interface|CM108 Soundcard - modified|
|Radio|FT-1500M @ 5W|
|Frequency|144.9125MHz|
|Allstar Node | 481480 |
|Dashboard| http://gm4slv.plus.com:42110/|
The initial node, described here : [[gm4slv_allstar_2025|]] got too cumbersome adding DMR Bridging, along with handling Echolink.
I decided, since I had a few spare Raspberry Pi boards doing nothing much, to split the DMR Bridging to a separate node.
I removed the DVSwitch bridging from the VHF Gateway node.
++++ /etc/asterisk/rpt.conf |
; Radio Repeater configuration file (for use with app_rpt)
; Your Repeater
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; This is where you define your nodes which can be connected to.
;
[nodes]
; 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.
481480 = radio@127.0.0.1:4569/481480,NONE ; This must be changed to your node number
481481 = radio@192.168.21.250:4570/481481,NONE ; second node on LAN
;1399 = radio@192.168.21.250:4570/1399,NONE
481482 = radio@192.168.21.251:4571/481482,NONE
;[1999]
;rxchannel = USRP/127.0.0.1:34001:31001 ; Use the USRP channel driver. Must be enabled in modules.conf
; ; 127.0.0.1 = IP of the target application
; ; 34001 = UDP port the target application is listening on
; ; 32001 = UDP port ASL is listening on
;duplex = 0 ; 0 = Half duplex with no telemetry tones or hang time. Ah, but Allison STILL talks!
;hangtime = 0 ; squelch tail hang time 0
;althangtime = 0 ; longer squelch tail hang time 0
;holdofftelem = 1 ; Hold off all telemetry when signal is present on receiver or from connected nodes
; ; except when an ID needs to be done and there is a signal coming from a connected node.
;telemdefault = 0 ; 0 = telemetry output off. Don't send Allison to DMR !!!!!!!!!!!!!!!!! Trust me.
;telemdynamic = 0 ; 0 = disallow users to change the local telemetry setting with a COP command,
;linktolink = no ; disables forcing physical half-duplex operation of main repeater while
; ; still keeping half-duplex semantics (optional)
;nounkeyct = 1 ; Set to a 1 to eliminate courtesy tones and associated delays.
;totime = 180000 ; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)
;idrecording = |ie ; id recording or morse string see http://ohnosec.org/drupal/node/87
;idtalkover = |ie ; Talkover ID (optional) default is none see http://ohnosec.org/drupal/node/129
[481480] ; Change this to your assigned node number
;[48148] ; Change this to your assigned node number
; Must also be enabled in modules.conf
; Rx audio/signalling channel. Choose ONLY 1 per node stanza
; Enable the selected channel driver in modules.conf !!!
;rxchannel = dahdi/pseudo ; No radio (hub)
rxchannel = SimpleUSB/usb_48148 ; SimpleUSB
; rxchannel = Pi/1 ; Raspberry Pi PiTA
; rxchannel = Radio/usb_48148 ; USBRadio (DSP)
; rxchannel = Dahdi/1 ; PCI Quad card
; rxchannel = Beagle/1 ; BeagleBoard
; rxchannel = USRP/127.0.0.1:34001:32001; GNU Radio interface USRP
; rxchannel = Voter/48148 ; RTCM device
duplex = 1 ; 0 = Half duplex with no telemetry tones or hang time.
; Special Case: Full duplex if linktolink is set to yes.
; This mode is preferred when interfacing with an external multiport repeater controller.
; Comment out idrecording and idtalkover to suppress IDs also
; 1 = Half duplex with telemetry tones and hang time. Does not repeat audio.
; This mode is preferred when interfacing a simplex node.
; 2 = Full Duplex with telemetry tones and hang time.
; This mode is preferred when interfacing a repeater.
; 3 = Full Duplex with telemetry tones and hang time, but no repeated audio.
; 4 = Full Duplex with telemetry tones and hang time. Repeated audio only when the autopatch is down.
linktolink = no ; disables forcing physical half-duplex operation of main repeater while
; still keeping half-duplex semantics (optional)
linkmongain = 0 ; Link Monitor Gain adjusts the audio level of monitored nodes when a signal from another node or the local receiver is received.
; If linkmongain is set to a negative number the monitored audio will decrease by the set amount in db.
; If linkmongain set to a positive number monitored audio will increase by the set amount in db.
; The value of linkmongain is in db. The default value is 0 db.
erxgain = -3 ; Echolink receive gain adjustment
; Note: Gain is in db-volts (20logVI/VO)
etxgain = 3 ; Echolink transmit gain adjustment
; Note: Gain is in db-volts (20logVI/VO)
eannmode = 2 ; 1 = Say only node number on echolink connects (default = 1)
; 2 = say phonetic call sign only on echolink connects
; 3 = say phonetic call sign and node number on echolink connects
;controlstates = controlstates ; system control state stanza
scheduler = schedule ; scheduler stanza
functions = functions ; Repeater Function stanza
phone_functions = functions ; Phone Function stanza
link_functions = functions ; Link Function stanza
telemetry = telemetry ; Telemetry stanza
morse = morse ; Morse stanza
wait_times = wait-times ; Wait times stanza
context = radio ; dialing context for phone
callerid = "Repeater" <0000000000> ; callerid for phone calls
accountcode = RADIO ; account code (optional)
hangtime = 200 ; squelch tail hang time (in ms) (optional, default 5 seconds, 5000 ms)
althangtime = 300 ; longer squelch tail
totime = 300000 ; 5 mins (12/4/22) transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)
telemnomdb = -3 ;
telemduckdb = -10 ;
;idrecording = /home/gm4slv/gm4slv_id
;idrecording = /home/gm4slv/mb7aze_id
idrecording = |iGM4SLV ; Main ID message
;idtalkover = |iGM4SLV ; Talkover ID message
idtalkover = |iGM4SLV ; Talkover ID message
; See Telemetry section Example: idrecording = rpt/nodenames/48148
idtime = 900000 ; 15 mins (12/4/22) id interval time (in ms) (optional) Default 5 minutes (300000 ms)
politeid = 30000 ; time in milliseconds before ID timer expires to try and ID in the tail. (optional, default 30000)
unlinkedct = ct12 ; Send a this courtesy tone when the user unkeys if the node is not connected to any other nodes. (optional, default is none)
remotect = ct3 ; remote linked courtesy tone (indicates a remote is in the list of links)
linkunkeyct = ct4 ; sent when a transmission received over the link unkeys
;nolocallinkct = 0 ; Send unlinkedct instead if another local node is connected to this node (hosted on the same PC).
; Supermon smlogger
connpgm=/usr/local/sbin/supermon/smlogger 1
discpgm=/usr/local/sbin/supermon/smlogger 0
;connpgm = yourconnectprogram ; Disabled. Execute a program you specify on connect. (default)
; passes 2 command line arguments to your program:
; 1. node number in this stanza (us)
; 2. node number being connected to us (them)
;discpgm = yourdisconnectprogram ; Disabled. Execute a program you specify on disconnect. (default)
; passes 2 command line arguments to your program:
; 1. node number in this stanza (us)
; 2. node number being disconnected from us (them)
lnkactenable = 0 ; Set to 1 to enable the link activity timer. Applicable to standard nodes only.
lnkacttime = 3600 ; Link activity timer time in seconds.
lnkactmacro = *73 ; Function to execute when link activity timer expires.
lnkacttimerwarn = custom/timeout ; Message to play when the link activity timer has 30 seconds left.
;remote_inact_timeout = 60 ; Specifies the amount of time without keying from the link. Set to 0 to disable timeout. (15 * 60)
;remote_timeout = ; Session time out for remote base. Set to 0 to disable. (60 * 60)
;remote_timeout_warning_freq = ; 30
;remote_timeout_warning = ; (3 * 60)
;nounkeyct = 0 ; Set to a 1 to eliminate courtesy tones and associated delays.
holdofftelem = 0 ; Hold off all telemetry when signal is present on receiver or from connected nodes
; except when an ID needs to be done and there is a signal coming from a connected node.
telemdefault = 1 ; 0 = telemetry output off
; 1 = telemetry output on (default = 1)
; 2 = timed telemetry output on command execution and for a short time thereafter.
telemdynamic = 1 ; 0 = disallow users to change the local telemetry setting with a COP command,
; 1 = Allow users to change the setting with a COP command. (default = 1)
beaconing = 0 ; Send ID regardless of repeater activity (Required in the UK, but probably illegal in the US)
parrotmode = 1 ; 0 = Parrot Off (default = 0)
; 1 = Parrot On Command
; 2 = Parrot Always
; 3 = Parrot Once by Command
parrottime = 1000 ; Set the amount of time in milliseconds
; to wait before parroting what was received
;rxnotch=1065,40 ; (Optional) Notch a particular frequency for a specified
; b/w. app_rpt must have been compiled with
; the notch option
startup_macro = *813481481 ; *81*70
; nodenames = /var/lib/asterisk/sounds/rpt/nodenames.callsign ; Point to alternate nodename sound directory
; Stream your node audio to Broadcastify or similar. See https://wiki.allstarlink.org/wiki/Stream_Node_Audio_to_Broadcastify
; outstreamcmd = /bin/sh,-c,/usr/bin/lame --preset cbr 16 -r -m m -s 8 --bitwidth 16 - - | /usr/bin/ezstream -qvc /etc/ezstream.xml
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Need more information on these
;extnodes = extnodes-different ; section in extnodefile containing dynamic node information (optional)
;extnodefile = /home/gm4slv/rpt_extnodes ; Points to nodelist file containing dynamic node info default = /var/lib/asterisk/rpt_extnodes (optional)
;extnodefile2 = ; Is this a list of node files? Possible a list of private nodes or a list of static IPs for known nodes????
;nodenames = /foo/names ; locaton of node sound files default = /var/lib/asterisk/sounds/rpt/nodenames
;archivedir = /tmp ; defines and enables activity recording into specified directory (optional)
;monminblocks = 2048 ; Min 1K blocks to be left on partition (will not save monitor output if disk too full)
; ; The tailmessagetime,tailsquashedtime, and tailmessagelist need to be set
; ; to support tail messages. They can be omitted otherwise.
;tailmessagetime = 300000 ; Play a tail message every 5 mins
;tailsquashedtime = 30000 ; If squashed by another user,
; ; try again after 30 seconds
;tailmessagelist = msg1,msg2 ; list of messages to be played for tail message
; alt_functions
; ctgroup
; dphone_functions
; idtime
; iobase
; iospeed
; locallist
; mars Remote Base
; memory
; nobusyout
; nodes
; nolocallinkct
; notelemtx
; outxlat
; parrot
; propagate_phonedtmf
; rptnode
; rptinactmacro Macro to execute when inactivity timer expires
; rptinacttime Inactivity timer time in seconds (0 seconds disables feature)
; rxnotch Optional Audio notch
; simplexphonedelay
; tonemacro
; tonezone
; txlimits
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; *** Status Reporting ***
; Comment the following statpost line stop to reporting of the status of your node to stats.allstarlink.org
statpost_url = http://stats.allstarlink.org/uhandler ; Status updates
[functions]
; Prefix Functions
; *1 Disconnect Link
; *2 Monitor Link
; *3 Connect Link
; *4 Command Mode
; *5 Macros
; *6 User Functions
; *7 Connection Status/Functions
; *8 User Functions
; *9 User Functions
; *0 User Functions
; *A User Functions
; *B User Functions
; *C User Functions
; *D User Functions
; Mandatory Command Codes
1 = ilink,1 ; Disconnect specified link
2 = ilink,2 ; Connect specified link -- monitor only
3 = ilink,3 ; Connect specified link -- tranceive
4 = ilink,4 ; Enter command mode on specified link
70 = ilink,5 ; System status
;99 = cop,6 ; PTT (phone mode only)
; End Mandatory Command Codes
74 = ilink,16 ; Reconnect links disconnected with "disconnect all links"
76 = ilink,6 ; Disconnect All Links
80 = status,11 ; Force ID (local only)
;81 = status,12 ; Give Time of Day (local only)
91 = cop,21 ; Enable Parrot Mode
92 = cop,22 ; Disable Parrot Mode
93 = cop,55 ; Parrot Once if parrot mode is disabled
98 = cop,2 ; System enable
99 = cop,3 ; System disable
901 = cop,1 ; System warm boot
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Macro Commands
5 = macro
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Autopatch Commands
; Note, This may be a good place for other 2 digit frequently used commands
;61 = autopatchup,noct = 1,farenddisconnect = 1,dialtime = 20000 ; Autopatch up
;62 = autopatchdn ; Autopatch down
; autopatchup can optionally take comma delimited setting=value pairs:
; context = string ; Override default context with "string"
; dialtime = ms ; Specify the max number of milliseconds between phone number digits (1000 milliseconds = 1 second)
; farenddisconnect = 1 ; Automatically disconnect when called party hangs up
; noct = 1 ; Don't send repeater courtesy tone during autopatch calls
; quiet = 1 ; Don't send dial tone, or connect messages. Do not send patch down message when called party hangs up
; Example: 123=autopatchup,dialtime=20000,noct=1,farenddisconnect=1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Status Commands
; 1 - Force ID (global)
; 2 - Give Time of Day (global)
; 3 - Give software Version (global)
; 4 - Give GPS location info
; 5 - Last (dtmf) user
; 11 - Force ID (local only)
; 12 - Give Time of Day (local only)
;721 = status,1 ; Force ID (global)
;722 = status,2 ; Give Time of Day (global)
;723 = status,3 ; Give software Version (global)
;724 = status,4 ; Give GPS location info
;725 = status,5 ; Last (dtmf) user
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Link Commands
; 1 - Disconnect specified link
; 2 - Connect specified link -- monitor only
; 3 - Connect specified link -- tranceive
; 4 - Enter command mode on specified link
; 5 - System status
; 6 - Disconnect all links
; 7 - Last Node to Key Up
; 8 - Connect specified link -- local monitor only
; 9 - Send Text Message (9,,Message Text, etc.
; 10 - Disconnect all RANGER links (except permalinks)
; 11 - Disconnect a previously permanently connected link
; 12 - Permanently connect specified link -- monitor only
; 13 - Permanently connect specified link -- tranceive
; 15 - Full system status (all nodes)
; 16 - Reconnect links disconnected with "disconnect all links"
; 17 - MDC test (for diag purposes)
; 18 - Permanently Connect specified link -- local monitor only
; ilink commands 1 through 5 are defined in the Mandatory Command section
;806 = ilink,6 ; Disconnect all links
;827 = ilink,7 ; Last Node to Key Up
;808 = ilink,8 ; Connect specified link -- local monitor only
;809 = ilink,9,48148,"Testing" ; would send a text message to node 48148 replace 48148 with 0 for all connected nodes
;810 = ilink,10 ; Disconnect all RANGER links (except permalinks)
811 = ilink,11 ; Disconnect a previously permanently connected link
812 = ilink,12 ; Permanently connect specified link -- monitor only
813 = ilink,13 ; Permanently connect specified link -- tranceive
;815 = ilink,15 ; Full system status (all nodes)
;817 = ilink,17 ; MDC test (for diag purposes)
;818 = ilink,18 ; Permanently Connect specified link -- local monitor only
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Control operator (cop) functions.
; Change these to something other than these codes listed below!
; Uncomment as needed.
;901 = cop,1 ; System warm boot
; 904 = cop,4 ; Test tone on/off (toggle)
; 905 = cop,5 ; Dump system variables on console (debug use only)
; 907 = cop,7 ; Time out timer enable
; 908 = cop,8 ; Time out timer disable
; 909 = cop,9 ; Autopatch enable
; 910 = cop,10 ; Autopatch disable
; 911 = cop,11 ; User linking functions enable
; 912 = cop,12 ; User linking functions disable
; 913 = cop,13 ; Query system control state
; 914 = cop,14 ; Set system control state
; 915 = cop,15 ; Scheduler enable
; 916 = cop,16 ; Scheduler disable
; 917 = cop,17 ; User functions enable (time, id, etc)
; 918 = cop,18 ; User functions disable
; 919 = cop,19 ; Select alternate hang time (althangtime)
; 920 = cop,20 ; Select standard hangtime (hangtime)
; 924 = cop,24 ; Flush all telemetry
; 925 = cop,25 ; Query last node un-keyed
; 926 = cop,26 ; Query all nodes keyed/unkeyed
; 927 = cop,27 ; Reset DAQ minimum on a pin
; 928 = cop,28 ; Reset DAQ maximum on a pin
; 930 = cop,30 ; Recall Memory Setting in Attached Xcvr
; 931 = cop,31 ; Channel Selector for Parallel Programmed Xcvr
; 932 = cop,32 ; Touchtone pad test: command + Digit string + # to playback all digits pressed
; 933 = cop,33 ; Local Telemetry Output Enable
; 934 = cop,34 ; Local Telemetry Output Disable
; 935 = cop,35 ; Local Telemetry Output on Demand
; 936 = cop,36 ; Foreign Link Local Output Path Enable
; 937 = cop,37 ; Foreign Link Local Output Path Disable
; 938 = cop,38 ; Foreign Link Local Output Path Follows Local Telemetry
; 939 = cop,39 ; Foreign Link Local Output Path on Demand
; 942 = cop,42 ; Echolink announce node # only
; 943 = cop,43 ; Echolink announce node Callsign only
; 944 = cop,44 ; Echolink announce node # & Callsign
; 945 = cop,45 ; Link Activity timer enable
; 945 = cop,46 ; Link Activity timer disable
; 947 = cop,47 ; Reset "Link Config Changed" Flag
; 948 = cop,48 ; Send Page Tone (Tone specs separated by parenthesis)
; 949 = cop,49 ; Disable incoming connections (control state noice)
; 950 = cop,50 ; Enable incoming connections (control state noicd)
; 951 = cop,51 ; Enable sleep mode
; 952 = cop,52 ; Disable sleep mode
; 953 = cop,53 ; Wake up from sleep
; 954 = cop,54 ; Go to sleep
; 956 = cop,56 ; Rx CTCSS Enable
; 957 = cop,57 ; Rx CTCSS Disable
; 958 = cop.58 ; Tx CTCSS On Input only Enable
; 959 = cop,59 ; Tx CTCSS On Input only Disable
; 960 = cop,60 ; Send MDC-1200 Burst (cop,60,type,UnitID[,DestID,SubCode])
; ; Type is 'I' for PttID, 'E' for Emergency, and 'C' for Call
; ; (SelCall or Alert), or 'SX' for STS (ststus), where X is 0-F.
; ; DestID and subcode are only specified for the 'C' type message.
; ; UnitID is the local systems UnitID. DestID is the MDC1200 ID of
; ; the radio being called, and the subcodes are as follows:
; ; Subcode '8205' is Voice Selective Call for Spectra ('Call')
; ; Subcode '8015' is Voice Selective Call for Maxtrac ('SC') or
; ; Astro-Saber('Call')
; ; Subcode '810D' is Call Alert (like Maxtrac 'CA')
; 961 = cop,61 ; Send Message to USB to control GPIO pins (cop,61,GPIO1=0[,GPIO4=1].....)
; 962 = cop,62 ; Send Message to USB to control GPIO pins, quietly (cop,62,GPIO1=0[,GPIO4=1].....)
; 963 = cop,63 ; Send pre-configred APRSTT notification (cop,63,CALL[,OVERLAYCHR])
; 964 = cop,64 ; Send pre-configred APRSTT notification, quietly (cop,64,CALL[,OVERLAYCHR])
; 965 = cop,65 ; Send POCSAG page (equipped channel types only)
[functions-remote]
0 = remote,1 ; Retrieve Memory
1 = remote,2 ; Set freq.
2 = remote,3 ; Set tx PL tone
3 = remote,4 ; Set rx PL tone
40 = remote,100 ; Rx PL off
41 = remote,101 ; Rx PL on
42 = remote,102 ; Tx PL off
43 = remote,103 ; Tx PL on
44 = remote,104 ; Low Power
45 = remote,105 ; Medium Power
46 = remote,106 ; High Power
711 = remote,107 ; Bump -20
714 = remote,108 ; Bump -100
717 = remote,109 ; Bump -500
713 = remote,110 ; Bump +20
716 = remote,111 ; Bump +100
719 = remote,112 ; Bump +500
721 = remote,113 ; Scan - slow
724 = remote,114 ; Scan - quick
727 = remote,115 ; Scan - fast
723 = remote,116 ; Scan + slow
726 = remote,117 ; Scan + quick
729 = remote,118 ; Scan + fast
79 = remote,119 ; Tune
51 = remote,5 ; Long status query
52 = remote,140 ; Short status query
67 = remote,210 ; Send a *
69 = remote,211 ; Send a #
;91 = remote,99,CALLSIGN,LICENSETAG ; Remote base login.
; Define a different dtmf sequence for each user which is
; authorized to use the remote base to control access to it.
; For examble 9139583=remote,99,WB6NIL,G would grant access to
; the remote base and announce WB6NIL as being logged in.
; Another entry, 9148351=remote,99,WA6ZFT,E would grant access to
; the remote base and announce WA6ZFT as being logged in.
; When the remote base is disconnected from the originating node, the
; user will be logged out. The LICENSETAG argument is used to enforce
; tx frequency limits. See [txlimits] below.
85 = cop,6 ; Remote base telephone key
[telemetry]
; Telemetry entries can be shared across all repeaters, or defined for each repeater.
; Can be a tone sequence, morse string, or a file
;
; |t - Tone escape sequence
;
; Tone sequences consist of 1 or more 4-tuple entries (freq1, freq2, duration, amplitude)
; Single frequencies are created by setting freq1 or freq2 to zero.
;
; |m - Morse escape sequence
;
; Sends Morse code at the telemetry amplitude and telemetry frequency as defined in the
; [morse] section.
;
; Follow with an alphanumeric string
;
; |i - Morse ID escape sequence
;
; Sends Morse code at the ID amplitude and ID frequency as defined in the
; [morse] section.
;
; path/to/sound/file/without/extension
;
; Send the sound if in place of a constructed tone. Do not include the file extension
; Example: ct8 = rpt/bloop
; Example: idrecording = rpt/nodenames/48148
ct1 = |t(350,0,100,2048)(500,0,100,2048)(660,0,100,2048)
ct2 = |t(660,880,150,2048)
ct3 = |t(440,0,150,4096)
ct4 = |t(550,0,150,2048)
ct5 = |t(660,0,150,2048)
ct6 = |t(880,0,150,2048)
ct7 = |t(660,440,150,2048)
ct8 = |t(700,1100,150,2048)
ranger = |t(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,150,0)
remotemon = |mR
;remotemon = |t(1209,0,50,2048) ; local courtesy tone when receive only
remotetx = |mK
;remotetx = |t(1633,0,50,3000)(0,0,80,0)(1209,0,50,3000) ; local courtesy tone when linked Trancieve mode
cmdmode = |t(900,903,200,2048)
;functcomplete = |mW
functcomplete = |t(1000,0,100,2048)(0,0,100,0)(1000,0,100,2048)
remcomplete = |t(650,0,100,2048)(0,0,100,0)(650,0,100,2048)(0,0,100,0)(650,0,100,2048)
pfxtone = |t(350,440,30000,3072)
patchup = rpt/callproceeding
patchdown = rpt/callterminated
ct12 = |me
ct13 = |mR
; As far as what the numbers mean,
; (000,000,010,000)
; | | | |-------amplitude
; | | |-------------duration
; | |-------------------Tone 2
; |-------------------------Tone 1
; So, with 0,0,10,0 That says No Tone1, No Tone2, 10ms duration, 0 Amplitude.
; Use it for a delay. Fine tuning for how long before telemetry is sent, in conjunction with the telemdelay parameter)
; The numbers, like 350,440,10,2048 are 350Hz, 440Hz, 10ms delay, amplitude of 2048.
; Morse code parameters, these are common to all repeaters.
[morse]
speed = 20 ; Approximate speed in WPM
frequency = 600 ; Morse Telemetry Frequency
amplitude = 2048 ; Morse Telemetry Amplitude
idfrequency = 1065 ; Morse ID Frequency
idamplitude = 1024 ; Morse ID Amplitude
;
; This section allows wait times for telemetry events to be adjusted
; A section for wait times can be defined for every repeater
;
[wait-times]
telemwait = 400 ; Time to wait before sending most telemetry
idwait = 500 ; Time to wait before starting ID
unkeywait = 200 ; Time to wait after unkey before sending CT's and link telemetry
calltermwait = 2000 ; Time to wait before announcing "call terminated"
; Memories for remote bases
[memory]
;00 = 146.580,100.0,m
;01 = 147.030,103.5,m+t
;02 = 147.240,103.5,m+t
;03 = 147.765,79.7,m-t
;04 = 146.460,100.0,m
;05 = 146.550,100.0,m
; Place command macros here
[macro]
;11 = *141223# ; disc. hubnet
;21 = *241223# ; monitor hubnet
;31 = *341223# ; transceive hubnet
;12 = *1424611# ; disc MilNet
;22 = *2424611# ; monitor MilNet
;32 = *3424611# ; transceive MilNet
;13 = *129332# ; disc Alaska
;23 = *229332# ; monitor Alaska
;33 = *329332# ; transceive Alaska
;14 = *154383# ; disc CQ North
;24 = *254383# ; monitor CQ North
;34 = *354383# ; transceive CQ North
;191 = *140894# ; disconnect hubnet Echo
;391 = *340894# ; connect hubnet echo
;19 = *13009999# ; dis echolink echotest
;39 = *33009999# ; con echolink echotest
31 = *3481481# ; link to 481481 hub node
41 = *4481481 ; command mode 481481 hub node
32 = *3481482 ; link to 481482 echolink node
42 = *4481482 ; command mode 481482 echolink node
; Data Acquisition configuration
;[daq-list]
;device = device_name1
;device = device_name2
;Where: device_name1 and device_name2 are stanzas you define in this file
;device = daq-cham-1
; Device name
;[daq-cham-1] ; Defined in [daq-list]
;hwtype = uchameleon ; DAQ hardware type
;devnode = /dev/ttyUSB0 ; DAQ device node (if required)
;1 = inadc ; Pin definition for an ADC channel
;2 = inadc
;3 = inadc
;4 = inadc
;5 = inadc
;6 = inadc
;7 = inadc
;8 = inadc
;9 = inp ; Pin definition for an input with a weak pullup resistor
;10 = inp
;11 = inp
;12 = inp
;13 = in ; Pin definition for an input without a weak pullup resistor
;14 = out ; Pin definition for an output
;15 = out
;16 = out
;17 = out
;18 = out
;[meter-faces]
;face = scale(scalepre,scalediv,scalepost),word/?,...
;
; scalepre = offset to add before dividing with scalediv
; scalediv = full scale/number of whole units (e.g. 256/20 or 12.8 for 20 volts).
; scalepost = offset to add after dividing with scalediv
;
;face = range(X-Y:word,X2-Y2:word,...),word/?,...
;face = bit(low-word,high-word),word/?,...
;
; word/? is either a word in /var/lib/asterisk/sounds or one of its subdirectories,
; or a question mark which is a placeholder for the measured value.
;
;
; Battery voltage 0-20 volts
;batvolts = scale(0,12.8,0),rpt/thevoltageis,?,ha/volts
; 4 quadrant wind direction
;winddir = range(0-33:north,34-96:west,97-160:south,161-224:east,225-255:north),rpt/thewindis,?
; LM34 temperature sensor with 130 deg. F full scale
;lm34f = scale(0,1.969,0),rpt/thetemperatureis,?,degrees,fahrenheit
; Status poll (non alarmed)
;light = bit(ha/off,ha/on),ha/light,?
;[alarms]
;
;tag = device,pin,node,ignorefirst,func-low,func-hi
;
;tag = a unique name for the alarm
;device = daq device to poll
;pin = the device pin to be monitored
;ignorefirstalarm = set to 1 to throwaway first alarm event, or 0 to report it
;node = the node number to execute the function on
;func-low = the DTMF function to execute on a high to low transition
;func-high = the DTMF function to execute on a low to high transition
;
; a '-' as a function name is shorthand for no-operation
;
;door = daq-cham-1,9,1,2017,*7,-
;pwrfail = daq-cham-1,10,0,2017,*911111,-
;
; Control states
; Allow several control operator functions to be changed at once using one command (good for scheduling)
;
;[controlstates]
;statenum = copcmd,[copcmd]...
;0 = rptena,lnkena,apena,totena,ufena,noicd ; Normal operation
;1 = rptena,lnkena,apdis,totdis,ufena,noice ; Net and news operation
;2 = rptena,lnkdis,apdis,totena,ufdis,noice ; Repeater only operation
; Scheduler - execute a macro at a given time
[schedule]
;dtmf_function = m h dom mon dow ; ala cron, star is implied
;8 = 55 12 * * * ; at midnight, execute macro 2.
; See https://wiki.allstarlink.org/wiki/Event_Management
[events]
#includeifexists custom/rpt.conf
++++
++++ /etc/asterisk/iax.conf |
; Inter-Asterisk eXchange driver definition
[general]
; !!! Change this to match your node registration !!!
register=481480:XXXXXXXX@register.allstarlink.org ; This must be changed to your node number, password
; remove the leading ";"
bindport = 4569 ; bindport and bindaddr may be specified
; NOTE: bindport must be specified BEFORE
; bindaddr or may be specified on a specific
; bindaddr if followed by colon and port
; (e.g. bindaddr=192.168.0.1:4569)
; bindaddr = 192.168.0.1 ; more than once to bind to multiple
; addresses, but the first will be the
; default
disallow = all ; The permitted codecs for outgoing connections
; Audio Quality Bandwidth
;allow = ulaw ; best 87 kbps
;allow = adpcm ; good 55 kbps
;allow = gsm ; medicore 36 kbps
allow = ulaw
allow = adpcm
allow = g722
allow = g726aal2
allow = gsm
allow = ilbc
jitterbuffer = yes
forcejitterbuffer = yes
dropcount = 2
maxjitterbuffer = 4000
maxjitterinterps = 10
resyncthreshold = 1000
maxexcessbuffer = 80
minexcessbuffer = 10
jittershrinkrate = 1
tos = 0x1E
autokill = yes
delayreject = yes
; iaxthreadcount = 30
; iaxmaxthreadcount = 150
; Incoming radio connections
[radio]
type = user
disallow = all
allow = ulaw
allow = adpcm
allow = g722
allow = g726aal2
allow = gsm
allow = ilbc
codecpriority = host
context = radio-secure
transfer = no
[iaxrpt] ; Connect from iaxrpt Username field (PC AllStar Client)
type = user ; Notice type is user here <---------------
context = iaxrpt ; Context to jump to in extensions.conf
auth = md5
secret = Your_Secret_Pasword_Here
host = dynamic
disallow = all
allow = ulaw
allow = adpcm
allow = gsm
transfer = no
[iaxclient] ; Connect from iax client (Zoiper...)
type = friend ; Notice type here is friend <--------------
context = iax-client ; Context to jump to in extensions.conf
auth = md5
secret = Your_Secret_Password_Here
host = dynamic
disallow = all
allow = ulaw
allow = adpcm
allow = gsm
transfer = no
[allstar-sys]
type = user
context = allstar-sys
auth = rsa
inkeys = allstar
disallow = all
allow = ulaw
[allstar-public]
type = user
context = allstar-public
auth = md5
secret = allstar
disallow = all
allow = ulaw
allow = gsm
; The following should be un-commented to support Allstar Autopatch service
; [allstar-autopatch]
; type = peer
; host = register.allstarlink.org
; username =
; secret =
; auth = md5
; disallow = all
; allow = ulaw
; transfer = no
#includeifexists custom/iax.conf
++++
++++ /etc/asterisk/extensions.conf |
[general]
static = yes ; These two lines prevent the command-line interface
writeprotect = yes ; from overwriting the config file. Leave them here.
[globals]
HOMENPA = 999 ; change this to your Area Code
NODE = 481480 ; change this to your node number
;NODE1 = 1999
[default]
exten => i,1,Hangup
[radio-secure]
exten => ${NODE},1,rpt,${NODE}
;exten => ${NODE1},1,rpt,${NODE1}
[iaxrpt] ; entered from iaxrpt in iax.conf
exten => ${NODE},1,rpt(${NODE}|X) ; NODE is the Name field in iaxrpt
; Info: The X option passed to the Rpt application
; disables the normal security checks.
; Because incoming connections are validated in iax.conf,
; and we don't know where the user will be coming from in advance,
; the X option is required.
[iax-client] ; for IAX VIOP clients.
exten => ${NODE},1,Ringing
exten => ${NODE},n,Wait(3)
exten => ${NODE},n,Answer
exten => ${NODE},n,Set(NODENUM=${CALLERID(number)})
exten => ${NODE},n,Playback(rpt/node|noanswer)
exten => ${NODE},n,SayDigits(${EXTEN})
exten => ${NODE},n,Set(CALLERID(num)=0)
exten => ${NODE},n,Rpt,${NODE}|P|${CALLERID(name)}
exten => ${NODE},n,Hangup
exten => ${NODE},n(hangit),Answer
exten => ${NODE},n(hangit),Wait(1)
exten => ${NODE},n(hangit),Hangup
; Comment-out the following clause if you want Allstar Autopatch service
[pstn-out]
exten = _NXXNXXXXXX,1,playback(ss-noservice)
exten = _NXXNXXXXXX,2,Congestion
; Un-comment out the following clause if you want Allstar Autopatch service
;[pstn-out]
;exten = _NXXNXXXXXX,1,Dial(IAX2/allstar-autopatch/\${EXTEN})
;exten = _NXXNXXXXXX,2,Busy
[invalidnum]
exten = s,1,Wait,3
exten = s,n,Playback,ss-noservice
exten = s,n,Wait,1
exten = s,n,Hangup
[radio]
exten = _X11,1,Goto(check_route|${EXTEN}|1);
exten = _NXXXXXX,1,Goto(check_route|1${HOMENPA}${EXTEN}|1)
exten = _1XXXXXXXXXX,1,Goto(check_route|${EXTEN}|1)
exten = _07XX,1,Goto(parkedcalls|${EXTEN:1}|1)
exten = 00,1,Goto(my-ip|s|1)
[check_route]
exten =_X.,1,Noop(${EXTEN})
; no 800
exten = _1800NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1888NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1877NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1866NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1855NXXXXXX,2,Goto(invalidnum|s|1)
; no X00 NPA
exten = _1X00XXXXXXX,2,Goto(invalidnum|s|1)
; no X11 NPA
exten = _1X11XXXXXXX,2,Goto(invalidnum|s|1)
; no X11
exten = _X11,2,Goto(invalidnum|s|1)
; no 555 Prefix in any NPA
exten = _1NXX555XXXX,2,Goto(invalidnum|s|1)
; no 976 Prefix in any NPA
exten = _1NXX976XXXX,2,Goto(invalidnum|s|1)
; no NPA=809
exten = _1809XXXXXXX,2,Goto(invalidnum|s|1)
; no NPA=900
exten = _1900XXXXXXX,2,Goto(invalidnum|s|1)
; okay, route it
exten = _1NXXXXXXXXX,2,Goto(pstn-out|${EXTEN:1}|1)
exten = _X.,2,Goto(invalidnum|s|1)
[my-ip]
exten = s,1,Set(MYADDR=${CURL(http://myip.vg)})
exten = s,2,Wait,1
exten = s,3,SayAlpha(${MYADDR})
exten = s,4,Hangup
[allstar-sys]
exten => _1.,1,Rpt(${EXTEN:1}|Rrpt/node:NODE:rpt/in-call:digits/0:PARKED|120)
exten => _1.,n,Hangup
exten => _2.,1,Ringing
exten => _2.,n,Wait(3)
exten => _2.,n,Answer
exten => _2.,n,Playback(rpt/node)
exten => _2.,n,Saydigits(${EXTEN:1})
exten => _2.,n,Rpt(${EXTEN:1}|P|${CALLERID(name)}-P)
exten => _2.,n,Hangup
exten => _3.,1,Ringing
exten => _3.,n,Wait(3)
exten => _3.,n,Answer
exten => _3.,n,Playback(rpt/node)
exten => _3.,n,Saydigits(${EXTEN:1})
exten => _3.,n,Rpt(${EXTEN:1}|Pv|${CALLERID(name)}-P)
exten => _3.,n,Hangup
exten => _4.,1,Ringing
exten => _4.,n,Wait(3)
exten => _4.,n,Answer
exten => _4.,n,Playback(rpt/node)
exten => _4.,n,Saydigits(${EXTEN:1})
exten => _4.,n,Rpt(${EXTEN:1}|D|${CALLERID(name)}-P)
exten => _4.,n,Hangup
exten => _5.,1,Ringing
exten => _5.,n,Wait(3)
exten => _5.,n,Answer
exten => _5.,n,Playback(rpt/node)
exten => _5.,n,Saydigits(${EXTEN:1})
exten => _5.,n,Rpt(${EXTEN:1}|Dv|${CALLERID(name)}-P)
exten => _5.,n,Hangup
[allstar-public]
exten => s,1,Ringing
exten => s,n,Set(RESP=${CURL(https://register.allstarlink.org/cgi-bin/authwebphone.pl?${CALLERID(name)})})
exten => s,n,Set(NODENUM=${CALLERID(number)})
exten => s,n,GotoIf($["${RESP:0:1}" = "?"]?hangit)
exten => s,n,GotoIf($["${RESP:0:1}" = ""]?hangit)
exten => s,n,GotoIf($["${RESP:0:5}" != "OHYES"]?hangit)
exten => s,n,Set(CALLSIGN=${RESP:5})
exten => s,n,Wait(3)
exten => s,n,Playback(rpt/node|noanswer)
exten => s,n,Saydigits(${NODENUM})
exten => s,n,Set(CALLERID(name)=${CALLSIGN})
exten => s,n,Set(CALLERID(num)=0)
exten => s,n,Rpt(${NODENUM}|X)
exten => s,n,Hangup
exten => s,n(hangit),Answer
exten => s,n(hangit),Wait(1)
exten => s,n(hangit),Hangup
#includeifexists custom/extensions.conf
++++
++++ /etc/asterisk/modules.conf (load echolink) |
;
; Asterisk configuration file
;
; Module Loader configuration file
;
; By default DIAL does NOT load every module, only what is needed
; You can enable or disable any of the asterisk modules
; All modules are compiled and installed.
; To enable a module: load => module_name.so
; To disable a module: noload => module_name.so
; You will want to enable the channel driver modules you will be using.
; There are below in the Channle Driver section
; The most common Channel drivers for app_rpt are:
; chan_echolink.so echolink channel driver
; chan_simpleusb.so Simple USB Radio Interface Channel Drive
; chan_usbradio.so USB Console Channel Driver
; chan_usrp.so USRP Channel Module
; chan_voter.so radio Voter channel driver
[modules]
autoload=no
; Applications
noload => app_adsiprog.so ; Asterisk ADSI Programming Application
noload => app_alarmreceiver.so ; Alarm Receiver for Asterisk
noload => app_amd.so ; Answering Machine Detection Application
load => app_authenticate.so ; Authentication Application
noload => app_cdr.so ; Tell Asterisk to not maintain a CDR for
noload => app_chanisavail.so ; Check channel availability
noload => app_channelredirect.so ; Channel Redirect
noload => app_chanspy.so ; Listen to the audio of an active channel
noload => app_controlplayback.so ; Control Playback Application
noload => app_dahdibarge.so ; Barge in on channel application
noload => app_dahdiras.so ; DAHDI RAS Application
noload => app_dahdiscan.so ; Scan Zap channels application
noload => app_db.so ; Database Access Functions
load => app_dial.so ; Dialing Application
noload => app_dictate.so ; Virtual Dictation Machine
noload => app_directed_pickup.so ; Directed Call Pickup Application
noload => app_directory.so ; Extension Directory
noload => app_disa.so ; DISA (Direct Inward System Access) Appli
noload => app_dumpchan.so ; Dump Info About The Calling Channel
noload => app_echo.so ; Simple Echo Application
load => app_exec.so ; Executes dialplan applications
noload => app_externalivr.so ; External IVR Interface Application
noload => app_festival.so ; Simple Festival Interface
noload => app_flash.so ; Flash channel application
noload => app_followme.so ; Find-Me/Follow-Me Application
noload => app_forkcdr.so ; Fork The CDR into 2 separate entities
noload => app_getcpeid.so ; Get ADSI CPE ID
noload => app_gps.so ; GPS interface module
noload => app_hasnewvoicemail.so ; Indicator for whether a voice mailbox ha
noload => app_ices.so ; Encode and Stream via icecast and ices
noload => app_image.so ; Image Transmission Application
noload => app_lookupblacklist.so ; Look up Caller*ID name/number from black
noload => app_lookupcidname.so ; Look up CallerID Name from local databas
load => app_macro.so ; Extension Macros
noload => app_meetme.so ; MeetMe conference bridge
noload => app_milliwatt.so ; Digital Milliwatt (mu-law) Test Applicat
noload => app_mixmonitor.so ; Mixed Audio Monitoring Application
noload => app_morsecode.so ; Morse code
noload => app_mp3.so ; Silly MP3 Application
noload => app_nbscat.so ; Silly NBS Stream Application
noload => app_page.so ; Page Multiple Phones
noload => app_parkandannounce.so ; Call Parking and Announce Application
load => app_playback.so ; Sound File Playback Application
noload => app_privacy.so ; Require phone number to be entered, if n
noload => app_queue.so ; True Call Queueing
noload => app_radbridge.so ; Radio Bridging interface module
noload => app_random.so ; Random goto
noload => app_readfile.so ; Stores output of file into a variable
noload => app_read.so ; Read Variable Application
noload => app_realtime.so ; Realtime Data Lookup/Rewrite
noload => app_record.so ; Trivial Record Application
load => app_rpt.so ; Radio Repeater/Remote Base Application
noload => app_sayunixtime.so ; Say time
noload => app_senddtmf.so ; Send DTMF digits Application
load => app_sendtext.so ; Send Text Applications
noload => app_setcallerid.so ; Set CallerID Application
noload => app_setcdruserfield.so ; CDR user field apps
noload => app_settransfercapability.so ; Set ISDN Transfer Capability
noload => app_sms.so ; SMS/PSTN handler
noload => app_softhangup.so ; Hangs up the requested channel
noload => app_speech_utils.so ; Dialplan Speech Applications
noload => app_stack.so ; Stack Routines
load => app_system.so ; Generic System() application
noload => app_talkdetect.so ; Playback with Talk Detection
noload => app_test.so ; Interface Test Application
load => app_transfer.so ; Transfer
noload => app_url.so ; Send URL Applications
noload => app_userevent.so ; Custom User Event Application
noload => app_verbose.so ; Send verbose output
noload => app_voicemail.so ; Comedian Mail (Voicemail System)
noload => app_waitforring.so ; Waits until first ring after time
noload => app_waitforsilence.so ; Wait For Silence
noload => app_while.so ; While Loops and Conditional Execution
noload => app_zapateller.so ; Block Telemarketers with Special Informa
; CDR
noload => cdr_csv.so ; Comma Separated Values CDR Backend
noload => cdr_custom.so ; Customizable Comma Separated Values CDR
noload => cdr_manager.so ; Asterisk Manager Interface CDR Backend
; Channels
noload => chan_agent.so ; Agent Proxy Channel
noload => chan_alsa.so ; ALSA Console Channel Driver
noload => chan_beagle.so ; Beagleboard Radio Interface Channel Driver
load => chan_dahdi.so ; DAHDI Telephony
load => chan_echolink.so ; echolink Channel Driver
noload => chan_features.so ; Feature Proxy Channel
noload => chan_gtalk.so ; Gtalk Channel Driver
load => chan_iax2.so ; Inter Asterisk eXchange (Ver 2)
load => chan_local.so ; Local Proxy Channel (Note: used internal
noload => chan_oss.so ; Channel driver for OSS sound cards
noload => chan_phone.so ; Generic Linux Telephony Interface driver
noload => chan_pi.so ; DMK Engineering "PITA" Board on Rpi2/3 Channel Driver
load => chan_simpleusb.so ; CM1xx USB Cards with Radio Interface Channel Driver (No DSP)
noload => chan_sip.so ; Session Initiation Protocol (SIP)
noload => chan_tlb.so ; TheLinkBox Channel Driver
noload => chan_usbradio.so ; CM1xx USB Cards with Radio Interface Channel Driver (DSP)
load => chan_usrp.so ; GNU Radio interface USRP Channel Driver
noload => chan_voter.so ; Radio Voter Channel Driver
; Codecs
; CODEC AUDIO QUALITY BANDWIDTH (including IP and Ethernet headers)
; ULAW best 87 kilobits per second (kbps)
; ADPCM good 55 kbps
; GSM mediocre 36 kbps
; g726aal2
; ilbc
load => codec_adpcm.so ; Adaptive Differential PCM Coder/Decoder
load => codec_alaw.so ; A-law Coder/Decoder
load => codec_a_mu.so ; A-law and Mulaw direct Coder/Decoder
noload => codec_dahdi.so ; Generic DAHDI Transcoder Codec Translato
load => codec_g726.so ; ITU G.726-32kbps G726 Transcoder
load => codec_gsm.so ; GSM Coder/Decoder
load => codec_ulaw.so ; mu-Law Coder/Decoder
noload => codec_ilbc.so ; http://en.wikipedia.org/wiki/Internet_Low_Bitrate_Codec
; Formats
load => format_g723.so ; G.723.1 Simple Timestamp File Format
load => format_g726.so ; Raw G.726 (16/24/32/40kbps) data
load => format_g729.so ; Raw G729 data
load => format_gsm.so ; Raw GSM data
load => format_h263.so ; Raw H.263 data
load => format_h264.so ; Raw H.264 data
load => format_ilbc.so ; Raw iLBC data
noload => format_jpeg.so ; JPEG (Joint Picture Experts Group) Image
load => format_pcm.so ; Raw/Sun uLaw/ALaw 8KHz (PCM,PCMA,AU), G.
load => format_sln.so ; Raw Signed Linear Audio support (SLN)
load => format_vox.so ; Dialogic VOX (ADPCM) File Format
load => format_wav_gsm.so ; Microsoft WAV format (Proprietary GSM)
load => format_wav.so ; Microsoft WAV format (8000Hz Signed Line
; Functions
load => func_base64.so ; base64 encode/decode dialplan functions
load => func_callerid.so ; Caller ID related dialplan function
load => func_cdr.so ; CDR dialplan function
load => func_channel.so ; Channel information dialplan function
load => func_curl.so ; Load external URL
load => func_cut.so ; Cut out information from a string
load => func_db.so ; Database (astdb) related dialplan functi
load => func_enum.so ; ENUM related dialplan functions
load => func_env.so ; Environment/filesystem dialplan function
load => func_global.so ; Global variable dialplan functions
load => func_groupcount.so ; Channel group dialplan functions
load => func_language.so ; Channel language dialplan function
load => func_logic.so ; Logical dialplan functions
load => func_math.so ; Mathematical dialplan function
load => func_md5.so ; MD5 digest dialplan functions
load => func_moh.so ; Music-on-hold dialplan function
load => func_rand.so ; Random number dialplan function
load => func_realtime.so ; Read/Write values from a RealTime reposi
noload => func_sha1.so ; SHA-1 computation dialplan function
noload => func_strings.so ; String handling dialplan functions
noload => func_timeout.so ; Channel timeout dialplan functions
noload => func_uri.so ; URI encode/decode dialplan functions
; PBX
noload => pbx_ael.so ; Asterisk Extension Language Compiler
load => pbx_config.so ; Text Extension Configuration
noload => pbx_dundi.so ; Distributed Universal Number Discovery (
noload => pbx_loopback.so ; Loopback Switch
noload => pbx_realtime.so ; Realtime Switch
noload => pbx_spool.so ; Outgoing Spool Support
; Resources
load => res_adsi.so ; ADSI Resource
noload => res_agi.so ; Asterisk Gateway Interface (AGI)
noload => res_clioriginate.so ; Call origination from the CLI
noload => res_convert.so ; File format conversion CLI command
load => res_crypto.so ; Cryptographic Digital Signatures
load => res_features.so ; Call Features Resource
load => res_indications.so ; Indications Resource
noload => res_jabber.so ; AJI - Asterisk Jabber Interface
noload => res_monitor.so ; Call Monitoring Resource
noload => res_musiconhold.so ; Music On Hold Resource
load => res_smdi.so ; Simplified Message Desk Interface (SMDI)
noload => res_snmp.so ; SNMP [Sub]Agent for Asterisk
noload => res_speech.so ; Generic Speech Recognition API
[global]
++++
===== DMR Bridging Node =====
|Platform | Raspberry Pi 3 Model B Rev 1.2 |
|Allstar Node | 481481 |
|Dashboard| http://gm4slv.plus.com:42111/|
This one is for running DVSwitch to bridge to (at the moment) TGIF TG2354429 (my so-called //ID Talkgroup// )
I added the DVSwitch software, in the same way described here [[gm4slv_allstar_2025|]] and decided to bridge to ''TGIF'' instead of Brandmeister.
++++ /etc/asterisk/rpt.conf |
; Radio Repeater configuration file (for use with app_rpt)
; Your Repeater
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; This is where you define your nodes which can be connected to.
;
[nodes]
; 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.
481481 = radio@127.0.0.1:4570/481481,NONE ; This must be changed to your node number
; and iax port number if not the default
481480 = radio@192.168.21.109:4569/481480,NONE
481482 = radio@192.168.21.251:4571/481482,NONE
1399 = radio@127.0.0.1:4570/1399,NONE
[1399]
rxchannel = USRP/127.0.0.1:34001:31001 ; Use the USRP channel driver. Must be enabled in modules.conf
; 127.0.0.1 = IP of the target application
; 34001 = UDP port the target application is listening on
; 32001 = UDP port ASL is listening on
duplex = 0 ; 0 = Half duplex with no telemetry tones or hang time. Ah, but Allison STILL talks!
hangtime = 0 ; squelch tail hang time 0
althangtime = 0 ; longer squelch tail hang time 0
holdofftelem = 1 ; Hold off all telemetry when signal is present on receiver or from connected nodes
; except when an ID needs to be done and there is a signal coming from a connected node.
telemdefault = 0 ; 0 = telemetry output off. Don't send Allison to DMR !!!!!!!!!!!!!!!!! Trust me.
telemdynamic = 0 ; 0 = disallow users to change the local telemetry setting with a COP command,
linktolink = no ; disables forcing physical half-duplex operation of main repeater while
; still keeping half-duplex semantics (optional)
nounkeyct = 1 ; Set to a 1 to eliminate courtesy tones and associated delays.
totime = 180000 ; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)
idrecording = |ie ; id recording or morse string see http://ohnosec.org/drupal/node/87
idtalkover = |ie ; Talkover ID (optional) default is none see http://ohnosec.org/drupal/node/129
[481481] ; Change this to your assigned node number
; Must also be enabled in modules.conf
; Rx audio/signalling channel. Choose ONLY 1 per node stanza
; Enable the selected channel driver in modules.conf !!!
rxchannel = dahdi/pseudo ; No radio (hub)
; rxchannel = SimpleUSB/usb_481481 ; SimpleUSB
; rxchannel = Pi/1 ; Raspberry Pi PiTA
; rxchannel = Radio/usb_481481 ; USBRadio (DSP)
; rxchannel = Dahdi/1 ; PCI Quad card
; rxchannel = Beagle/1 ; BeagleBoard
; rxchannel = USRP/127.0.0.1:34001:32001; GNU Radio interface USRP
; rxchannel = Voter/481481 ; RTCM device
duplex = 1 ; 0 = Half duplex with no telemetry tones or hang time.
; Special Case: Full duplex if linktolink is set to yes.
; This mode is preferred when interfacing with an external multiport repeater controller.
; Comment out idrecording and idtalkover to suppress IDs also
; 1 = Half duplex with telemetry tones and hang time. Does not repeat audio.
; This mode is preferred when interfacing a simplex node.
; 2 = Full Duplex with telemetry tones and hang time.
; This mode is preferred when interfacing a repeater.
; 3 = Full Duplex with telemetry tones and hang time, but no repeated audio.
; 4 = Full Duplex with telemetry tones and hang time. Repeated audio only when the autopatch is down.
linktolink = no ; disables forcing physical half-duplex operation of main repeater while
; still keeping half-duplex semantics (optional)
linkmongain = 0 ; Link Monitor Gain adjusts the audio level of monitored nodes when a signal from another node or the local receiver is received.
; If linkmongain is set to a negative number the monitored audio will decrease by the set amount in db.
; If linkmongain set to a positive number monitored audio will increase by the set amount in db.
; The value of linkmongain is in db. The default value is 0 db.
erxgain = -3 ; Echolink receive gain adjustment
; Note: Gain is in db-volts (20logVI/VO)
etxgain = 3 ; Echolink transmit gain adjustment
; Note: Gain is in db-volts (20logVI/VO)
eannmode = 2 ; 1 = Say only node number on echolink connects (default = 1)
; 2 = say phonetic call sign only on echolink connects
; 3 = say phonetic call sign and node number on echolink connects
;controlstates = controlstates ; system control state stanza
scheduler = schedule ; scheduler stanza
functions = functions ; Repeater Function stanza
phone_functions = functions ; Phone Function stanza
link_functions = functions ; Link Function stanza
telemetry = telemetry ; Telemetry stanza
morse = morse ; Morse stanza
wait_times = wait-times ; Wait times stanza
context = radio ; dialing context for phone
callerid = "Repeater" <0000000000> ; callerid for phone calls
accountcode = RADIO ; account code (optional)
hangtime = 200 ; squelch tail hang time (in ms) (optional, default 5 seconds, 5000 ms)
althangtime = 300 ; longer squelch tail
totime = 300000 ; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)
;idrecording = |iGM4SLV ; Main ID message
;idtalkover = |iGM4SLV ; Talkover ID message
; See Telemetry section Example: idrecording = rpt/nodenames/481481
;idtime = 540000 ; id interval time (in ms) (optional) Default 5 minutes (300000 ms)
politeid = 30000 ; time in milliseconds before ID timer expires to try and ID in the tail. (optional, default 30000)
unlinkedct = ct2 ; Send a this courtesy tone when the user unkeys if the node is not connected to any other nodes. (optional, default is none)
remotect = ct3 ; remote linked courtesy tone (indicates a remote is in the list of links)
linkunkeyct = ct8 ; sent when a transmission received over the link unkeys
;nolocallinkct = 0 ; Send unlinkedct instead if another local node is connected to this node (hosted on the same PC).
; Supermon smlogger
connpgm=/usr/local/sbin/supermon/smlogger 1
discpgm=/usr/local/sbin/supermon/smlogger 0
;connpgm = yourconnectprogram ; Disabled. Execute a program you specify on connect. (default)
; passes 2 command line arguments to your program:
; 1. node number in this stanza (us)
; 2. node number being connected to us (them)
;discpgm = yourdisconnectprogram ; Disabled. Execute a program you specify on disconnect. (default)
; passes 2 command line arguments to your program:
; 1. node number in this stanza (us)
; 2. node number being disconnected from us (them)
;lnkactenable = 0 ; Set to 1 to enable the link activity timer. Applicable to standard nodes only.
;lnkacttime = 1800 ; Link activity timer time in seconds.
;lnkactmacro = *52 ; Function to execute when link activity timer expires.
;lnkacttimerwarn = 30seconds ; Message to play when the link activity timer has 30 seconds left.
;remote_inact_timeout = ; Specifies the amount of time without keying from the link. Set to 0 to disable timeout. (15 * 60)
;remote_timeout = ; Session time out for remote base. Set to 0 to disable. (60 * 60)
;remote_timeout_warning_freq = ; 30
;remote_timeout_warning = ; (3 * 60)
nounkeyct = 1 ; Set to a 1 to eliminate courtesy tones and associated delays.
holdofftelem = 1 ; Hold off all telemetry when signal is present on receiver or from connected nodes
; except when an ID needs to be done and there is a signal coming from a connected node.
telemdefault = 0 ; 0 = telemetry output off
; 1 = telemetry output on (default = 1)
; 2 = timed telemetry output on command execution and for a short time thereafter.
telemdynamic = 0 ; 0 = disallow users to change the local telemetry setting with a COP command,
; 1 = Allow users to change the setting with a COP command. (default = 1)
;beaconing = 0 ; Send ID regardless of repeater activity (Required in the UK, but probably illegal in the US)
parrotmode = 0 ; 0 = Parrot Off (default = 0)
; 1 = Parrot On Command
; 2 = Parrot Always
; 3 = Parrot Once by Command
parrottime = 1000 ; Set the amount of time in milliseconds
; to wait before parroting what was received
;rxnotch=1065,40 ; (Optional) Notch a particular frequency for a specified
; b/w. app_rpt must have been compiled with
; the notch option
startup_macro = *31399
; nodenames = /var/lib/asterisk/sounds/rpt/nodenames.callsign ; Point to alternate nodename sound directory
; Stream your node audio to Broadcastify or similar. See https://wiki.allstarlink.org/wiki/Stream_Node_Audio_to_Broadcastify
; outstreamcmd = /bin/sh,-c,/usr/bin/lame --preset cbr 16 -r -m m -s 8 --bitwidth 16 - - | /usr/bin/ezstream -qvc /etc/ezstream.xml
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Need more information on these
;extnodes = extnodes-different ; section in extnodefile containing dynamic node information (optional)
;extnodefile = /foo/nodes ; Points to nodelist file containing dynamic node info default = /var/lib/asterisk/rpt_extnodes (optional)
;extnodefile2 = ; Is this a list of node files? Possible a list of private nodes or a list of static IPs for known nodes????
;nodenames = /foo/names ; locaton of node sound files default = /var/lib/asterisk/sounds/rpt/nodenames
;archivedir = /tmp ; defines and enables activity recording into specified directory (optional)
;monminblocks = 2048 ; Min 1K blocks to be left on partition (will not save monitor output if disk too full)
; ; The tailmessagetime,tailsquashedtime, and tailmessagelist need to be set
; ; to support tail messages. They can be omitted otherwise.
;tailmessagetime = 300000 ; Play a tail message every 5 mins
;tailsquashedtime = 30000 ; If squashed by another user,
; ; try again after 30 seconds
;tailmessagelist = msg1,msg2 ; list of messages to be played for tail message
; alt_functions
; ctgroup
; dphone_functions
; idtime
; iobase
; iospeed
; locallist
; mars Remote Base
; memory
; nobusyout
; nodes
; nolocallinkct
; notelemtx
; outxlat
; parrot
; propagate_phonedtmf
; rptnode
; rptinactmacro Macro to execute when inactivity timer expires
; rptinacttime Inactivity timer time in seconds (0 seconds disables feature)
; rxnotch Optional Audio notch
; simplexphonedelay
; tonemacro
; tonezone
; txlimits
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; *** Status Reporting ***
; Comment the following statpost line stop to reporting of the status of your node to stats.allstarlink.org
statpost_url = http://stats.allstarlink.org/uhandler ; Status updates
[functions]
; Prefix Functions
; *1 Disconnect Link
; *2 Monitor Link
; *3 Connect Link
; *4 Command Mode
; *5 Macros
; *6 User Functions
; *7 Connection Status/Functions
; *8 User Functions
; *9 User Functions
; *0 User Functions
; *A User Functions
; *B User Functions
; *C User Functions
; *D User Functions
; Mandatory Command Codes
1 = ilink,1 ; Disconnect specified link
2 = ilink,2 ; Connect specified link -- monitor only
3 = ilink,3 ; Connect specified link -- tranceive
4 = ilink,4 ; Enter command mode on specified link
70 = ilink,5 ; System status
99 = cop,6 ; PTT (phone mode only)
; End Mandatory Command Codes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Macro Commands
5 = macro
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Autopatch Commands
; Note, This may be a good place for other 2 digit frequently used commands
61 = autopatchup,noct = 1,farenddisconnect = 1,dialtime = 20000 ; Autopatch up
62 = autopatchdn ; Autopatch down
; autopatchup can optionally take comma delimited setting=value pairs:
; context = string ; Override default context with "string"
; dialtime = ms ; Specify the max number of milliseconds between phone number digits (1000 milliseconds = 1 second)
; farenddisconnect = 1 ; Automatically disconnect when called party hangs up
; noct = 1 ; Don't send repeater courtesy tone during autopatch calls
; quiet = 1 ; Don't send dial tone, or connect messages. Do not send patch down message when called party hangs up
; Example: 123=autopatchup,dialtime=20000,noct=1,farenddisconnect=1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Status Commands
; 1 - Force ID (global)
; 2 - Give Time of Day (global)
; 3 - Give software Version (global)
; 4 - Give GPS location info
; 5 - Last (dtmf) user
; 11 - Force ID (local only)
; 12 - Give Time of Day (local only)
721 = status,1 ; Force ID (global)
722 = status,2 ; Give Time of Day (global)
723 = status,3 ; Give software Version (global)
724 = status,4 ; Give GPS location info
725 = status,5 ; Last (dtmf) user
711 = status,11 ; Force ID (local only)
712 = status,12 ; Give Time of Day (local only)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Link Commands
; 1 - Disconnect specified link
; 2 - Connect specified link -- monitor only
; 3 - Connect specified link -- tranceive
; 4 - Enter command mode on specified link
; 5 - System status
; 6 - Disconnect all links
; 7 - Last Node to Key Up
; 8 - Connect specified link -- local monitor only
; 9 - Send Text Message (9,,Message Text, etc.
; 10 - Disconnect all RANGER links (except permalinks)
; 11 - Disconnect a previously permanently connected link
; 12 - Permanently connect specified link -- monitor only
; 13 - Permanently connect specified link -- tranceive
; 15 - Full system status (all nodes)
; 16 - Reconnect links disconnected with "disconnect all links"
; 17 - MDC test (for diag purposes)
; 18 - Permanently Connect specified link -- local monitor only
; ilink commands 1 through 5 are defined in the Mandatory Command section
76 = ilink,6
806 = ilink,6 ; Disconnect all links
807 = ilink,7 ; Last Node to Key Up
808 = ilink,8 ; Connect specified link -- local monitor only
809 = ilink,9,481481,"Testing" ; would send a text message to node 481481 replace 481481 with 0 for all connected nodes
810 = ilink,10 ; Disconnect all RANGER links (except permalinks)
811 = ilink,11 ; Disconnect a previously permanently connected link
812 = ilink,12 ; Permanently connect specified link -- monitor only
813 = ilink,13 ; Permanently connect specified link -- tranceive
815 = ilink,15 ; Full system status (all nodes)
816 = ilink,16 ; Reconnect links disconnected with "disconnect all links"
817 = ilink,17 ; MDC test (for diag purposes)
818 = ilink 18 ; Permanently Connect specified link -- local monitor only
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Control operator (cop) functions.
; Change these to something other than these codes listed below!
; Uncomment as needed.
; 901 = cop,1 ; System warm boot
; 902 = cop,2 ; System enable
; 903 = cop,3 ; System disable
; 904 = cop,4 ; Test tone on/off (toggle)
; 905 = cop,5 ; Dump system variables on console (debug use only)
; 907 = cop,7 ; Time out timer enable
; 908 = cop,8 ; Time out timer disable
; 909 = cop,9 ; Autopatch enable
; 910 = cop,10 ; Autopatch disable
; 911 = cop,11 ; User linking functions enable
; 912 = cop,12 ; User linking functions disable
; 913 = cop,13 ; Query system control state
; 914 = cop,14 ; Set system control state
; 915 = cop,15 ; Scheduler enable
; 916 = cop,16 ; Scheduler disable
; 917 = cop,17 ; User functions enable (time, id, etc)
; 918 = cop,18 ; User functions disable
; 919 = cop,19 ; Select alternate hang time (althangtime)
; 920 = cop,20 ; Select standard hangtime (hangtime)
; 921 = cop,21 ; Enable Parrot Mode
; 922 = cop,22 ; Disable Parrot Mode
; 923 = cop,23 ; Birdbath (Current Parrot Cleanup/Flush)
; 924 = cop,24 ; Flush all telemetry
; 925 = cop,25 ; Query last node un-keyed
; 926 = cop,26 ; Query all nodes keyed/unkeyed
; 927 = cop,27 ; Reset DAQ minimum on a pin
; 928 = cop,28 ; Reset DAQ maximum on a pin
; 930 = cop,30 ; Recall Memory Setting in Attached Xcvr
; 931 = cop,31 ; Channel Selector for Parallel Programmed Xcvr
; 932 = cop,32 ; Touchtone pad test: command + Digit string + # to playback all digits pressed
; 933 = cop,33 ; Local Telemetry Output Enable
; 934 = cop,34 ; Local Telemetry Output Disable
; 935 = cop,35 ; Local Telemetry Output on Demand
; 936 = cop,36 ; Foreign Link Local Output Path Enable
; 937 = cop,37 ; Foreign Link Local Output Path Disable
; 938 = cop,38 ; Foreign Link Local Output Path Follows Local Telemetry
; 939 = cop,39 ; Foreign Link Local Output Path on Demand
; 942 = cop,42 ; Echolink announce node # only
; 943 = cop,43 ; Echolink announce node Callsign only
; 944 = cop,44 ; Echolink announce node # & Callsign
; 945 = cop,45 ; Link Activity timer enable
; 945 = cop,46 ; Link Activity timer disable
; 947 = cop,47 ; Reset "Link Config Changed" Flag
; 948 = cop,48 ; Send Page Tone (Tone specs separated by parenthesis)
; 949 = cop,49 ; Disable incoming connections (control state noice)
; 950 = cop,50 ; Enable incoming connections (control state noicd)
; 951 = cop,51 ; Enable sleep mode
; 952 = cop,52 ; Disable sleep mode
; 953 = cop,53 ; Wake up from sleep
; 954 = cop,54 ; Go to sleep
; 955 = cop,55 ; Parrot Once if parrot mode is disabled
; 956 = cop,56 ; Rx CTCSS Enable
; 957 = cop,57 ; Rx CTCSS Disable
; 958 = cop.58 ; Tx CTCSS On Input only Enable
; 959 = cop,59 ; Tx CTCSS On Input only Disable
; 960 = cop,60 ; Send MDC-1200 Burst (cop,60,type,UnitID[,DestID,SubCode])
; ; Type is 'I' for PttID, 'E' for Emergency, and 'C' for Call
; ; (SelCall or Alert), or 'SX' for STS (ststus), where X is 0-F.
; ; DestID and subcode are only specified for the 'C' type message.
; ; UnitID is the local systems UnitID. DestID is the MDC1200 ID of
; ; the radio being called, and the subcodes are as follows:
; ; Subcode '8205' is Voice Selective Call for Spectra ('Call')
; ; Subcode '8015' is Voice Selective Call for Maxtrac ('SC') or
; ; Astro-Saber('Call')
; ; Subcode '810D' is Call Alert (like Maxtrac 'CA')
; 961 = cop,61 ; Send Message to USB to control GPIO pins (cop,61,GPIO1=0[,GPIO4=1].....)
; 962 = cop,62 ; Send Message to USB to control GPIO pins, quietly (cop,62,GPIO1=0[,GPIO4=1].....)
; 963 = cop,63 ; Send pre-configred APRSTT notification (cop,63,CALL[,OVERLAYCHR])
; 964 = cop,64 ; Send pre-configred APRSTT notification, quietly (cop,64,CALL[,OVERLAYCHR])
; 965 = cop,65 ; Send POCSAG page (equipped channel types only)
[functions-remote]
0 = remote,1 ; Retrieve Memory
1 = remote,2 ; Set freq.
2 = remote,3 ; Set tx PL tone
3 = remote,4 ; Set rx PL tone
40 = remote,100 ; Rx PL off
41 = remote,101 ; Rx PL on
42 = remote,102 ; Tx PL off
43 = remote,103 ; Tx PL on
44 = remote,104 ; Low Power
45 = remote,105 ; Medium Power
46 = remote,106 ; High Power
711 = remote,107 ; Bump -20
714 = remote,108 ; Bump -100
717 = remote,109 ; Bump -500
713 = remote,110 ; Bump +20
716 = remote,111 ; Bump +100
719 = remote,112 ; Bump +500
721 = remote,113 ; Scan - slow
724 = remote,114 ; Scan - quick
727 = remote,115 ; Scan - fast
723 = remote,116 ; Scan + slow
726 = remote,117 ; Scan + quick
729 = remote,118 ; Scan + fast
79 = remote,119 ; Tune
51 = remote,5 ; Long status query
52 = remote,140 ; Short status query
67 = remote,210 ; Send a *
69 = remote,211 ; Send a #
;91 = remote,99,CALLSIGN,LICENSETAG ; Remote base login.
; Define a different dtmf sequence for each user which is
; authorized to use the remote base to control access to it.
; For examble 9139583=remote,99,WB6NIL,G would grant access to
; the remote base and announce WB6NIL as being logged in.
; Another entry, 9148351=remote,99,WA6ZFT,E would grant access to
; the remote base and announce WA6ZFT as being logged in.
; When the remote base is disconnected from the originating node, the
; user will be logged out. The LICENSETAG argument is used to enforce
; tx frequency limits. See [txlimits] below.
85 = cop,6 ; Remote base telephone key
[telemetry]
; Telemetry entries can be shared across all repeaters, or defined for each repeater.
; Can be a tone sequence, morse string, or a file
;
; |t - Tone escape sequence
;
; Tone sequences consist of 1 or more 4-tuple entries (freq1, freq2, duration, amplitude)
; Single frequencies are created by setting freq1 or freq2 to zero.
;
; |m - Morse escape sequence
;
; Sends Morse code at the telemetry amplitude and telemetry frequency as defined in the
; [morse] section.
;
; Follow with an alphanumeric string
;
; |i - Morse ID escape sequence
;
; Sends Morse code at the ID amplitude and ID frequency as defined in the
; [morse] section.
;
; path/to/sound/file/without/extension
;
; Send the sound if in place of a constructed tone. Do not include the file extension
; Example: ct8 = rpt/bloop
; Example: idrecording = rpt/nodenames/481481
ct1 = |t(350,0,100,2048)(500,0,100,2048)(660,0,100,2048)
ct2 = |t(660,880,150,2048)
ct3 = |t(440,0,150,4096)
ct4 = |t(550,0,150,2048)
ct5 = |t(660,0,150,2048)
ct6 = |t(880,0,150,2048)
ct7 = |t(660,440,150,2048)
ct8 = |t(700,1100,150,2048)
ranger = |t(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,150,0)
remotemon = |t(1209,0,50,2048) ; local courtesy tone when receive only
remotetx = |t(1633,0,50,3000)(0,0,80,0)(1209,0,50,3000) ; local courtesy tone when linked Trancieve mode
cmdmode = |t(900,903,200,2048)
functcomplete = |t(1000,0,100,2048)(0,0,100,0)(1000,0,100,2048)
remcomplete = |t(650,0,100,2048)(0,0,100,0)(650,0,100,2048)(0,0,100,0)(650,0,100,2048)
pfxtone = |t(350,440,30000,3072)
patchup = rpt/callproceeding
patchdown = rpt/callterminated
; As far as what the numbers mean,
; (000,000,010,000)
; | | | |-------amplitude
; | | |-------------duration
; | |-------------------Tone 2
; |-------------------------Tone 1
; So, with 0,0,10,0 That says No Tone1, No Tone2, 10ms duration, 0 Amplitude.
; Use it for a delay. Fine tuning for how long before telemetry is sent, in conjunction with the telemdelay parameter)
; The numbers, like 350,440,10,2048 are 350Hz, 440Hz, 10ms delay, amplitude of 2048.
; Morse code parameters, these are common to all repeaters.
[morse]
speed = 20 ; Approximate speed in WPM
frequency = 800 ; Morse Telemetry Frequency
amplitude = 4096 ; Morse Telemetry Amplitude
idfrequency = 1065 ; Morse ID Frequency
idamplitude = 1024 ; Morse ID Amplitude
;
; This section allows wait times for telemetry events to be adjusted
; A section for wait times can be defined for every repeater
;
[wait-times]
telemwait = 2000 ; Time to wait before sending most telemetry
idwait = 500 ; Time to wait before starting ID
unkeywait = 2000 ; Time to wait after unkey before sending CT's and link telemetry
calltermwait = 2000 ; Time to wait before announcing "call terminated"
; Memories for remote bases
[memory]
;00 = 146.580,100.0,m
;01 = 147.030,103.5,m+t
;02 = 147.240,103.5,m+t
;03 = 147.765,79.7,m-t
;04 = 146.460,100.0,m
;05 = 146.550,100.0,m
; Place command macros here
[macro]
;1 = *32011#
;2 = *12001*12011*12043*12040*12050*12060*12009*12002*12003*12004*1113*12030#
;3 = *32001*32011*32050*32030*32060#
; Data Acquisition configuration
;[daq-list]
;device = device_name1
;device = device_name2
;Where: device_name1 and device_name2 are stanzas you define in this file
;device = daq-cham-1
; Device name
;[daq-cham-1] ; Defined in [daq-list]
;hwtype = uchameleon ; DAQ hardware type
;devnode = /dev/ttyUSB0 ; DAQ device node (if required)
;1 = inadc ; Pin definition for an ADC channel
;2 = inadc
;3 = inadc
;4 = inadc
;5 = inadc
;6 = inadc
;7 = inadc
;8 = inadc
;9 = inp ; Pin definition for an input with a weak pullup resistor
;10 = inp
;11 = inp
;12 = inp
;13 = in ; Pin definition for an input without a weak pullup resistor
;14 = out ; Pin definition for an output
;15 = out
;16 = out
;17 = out
;18 = out
;[meter-faces]
;face = scale(scalepre,scalediv,scalepost),word/?,...
;
; scalepre = offset to add before dividing with scalediv
; scalediv = full scale/number of whole units (e.g. 256/20 or 12.8 for 20 volts).
; scalepost = offset to add after dividing with scalediv
;
;face = range(X-Y:word,X2-Y2:word,...),word/?,...
;face = bit(low-word,high-word),word/?,...
;
; word/? is either a word in /var/lib/asterisk/sounds or one of its subdirectories,
; or a question mark which is a placeholder for the measured value.
;
;
; Battery voltage 0-20 volts
;batvolts = scale(0,12.8,0),rpt/thevoltageis,?,ha/volts
; 4 quadrant wind direction
;winddir = range(0-33:north,34-96:west,97-160:south,161-224:east,225-255:north),rpt/thewindis,?
; LM34 temperature sensor with 130 deg. F full scale
;lm34f = scale(0,1.969,0),rpt/thetemperatureis,?,degrees,fahrenheit
; Status poll (non alarmed)
;light = bit(ha/off,ha/on),ha/light,?
;[alarms]
;
;tag = device,pin,node,ignorefirst,func-low,func-hi
;
;tag = a unique name for the alarm
;device = daq device to poll
;pin = the device pin to be monitored
;ignorefirstalarm = set to 1 to throwaway first alarm event, or 0 to report it
;node = the node number to execute the function on
;func-low = the DTMF function to execute on a high to low transition
;func-high = the DTMF function to execute on a low to high transition
;
; a '-' as a function name is shorthand for no-operation
;
;door = daq-cham-1,9,1,2017,*7,-
;pwrfail = daq-cham-1,10,0,2017,*911111,-
;
; Control states
; Allow several control operator functions to be changed at once using one command (good for scheduling)
;
;[controlstates]
;statenum = copcmd,[copcmd]...
;0 = rptena,lnkena,apena,totena,ufena,noicd ; Normal operation
;1 = rptena,lnkena,apdis,totdis,ufena,noice ; Net and news operation
;2 = rptena,lnkdis,apdis,totena,ufdis,noice ; Repeater only operation
; Scheduler - execute a macro at a given time
[schedule]
;dtmf_function = m h dom mon dow ; ala cron, star is implied
;2 = 00 00 * * * ; at midnight, execute macro 2.
; See https://wiki.allstarlink.org/wiki/Event_Management
[events]
#includeifexists custom/rpt.conf
++++
I also decided to use the ''md380_emu'' emulator for the AMBE transcoding.
++++ /opt/MMDVM_Bridge/MMDVM_Bridge.ini |
[General]
Callsign=GM4SLV
Id=235442999
Timeout=180
Duplex=0
[Info]
RXFrequency=144912500
TXFrequency=144912500
Power=1
Latitude=60.2885
Longitude=-1.4215
Height=0
Location=GM4SLV, Shetland
Description=MMDVM_Bridge
URL=https://gm4slv.org.uk
[Log]
# Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal
DisplayLevel=1
FileLevel=2
FilePath=/var/log/mmdvm
FileRoot=MMDVM_Bridge
[DMR Id Lookup]
File=/var/lib/mmdvm/DMRIds.dat
Time=24
[NXDN Id Lookup]
File=/var/lib/mmdvm/NXDN.csv
Time=24
[Modem]
Port=/dev/null
RSSIMappingFile=/dev/null
Trace=0
Debug=0
[D-Star]
Enable=0
Module=B
[DMR]
Enable=1
ColorCode=1
EmbeddedLCOnly=1
DumpTAData=0
[System Fusion]
Enable=0
[P25]
Enable=0
NAC=293
[NXDN]
Enable=0
RAN=1
Id=12345
[D-Star Network]
Enable=0
GatewayAddress=127.0.0.1
GatewayPort=20010
LocalPort=20011
Debug=0
[DMR Network]
Enable=1
Address=tgif.network
Port=62031
;Jitter=360
Jitter=750
Local=62032
Password=XXXXXXXXXXXXXXXXXXXXXXxx
# for DMR+ see https://github.com/DVSwitch/MMDVM_Bridge/blob/master/DOC/DMRplus_startup_options.md
# for XLX the syntax is: Options=XLX:4009
# Options=
Slot1=0
Slot2=1
Debug=0
[System Fusion Network]
Enable=0
LocalAddress=0
LocalPort=3200
GatewayAddress=127.0.0.1
GatewayPort=4200
Debug=0
[P25 Network]
Enable=0
GatewayAddress=127.0.0.1
GatewayPort=42020
LocalPort=32010
Debug=0
[NXDN Network]
Enable=0
#LocalAddress=127.0.0.1
Debug=0
LocalPort=14021
GatewayAddress=127.0.0.1
GatewayPort=14020
++++
++++ /opt/Analog_Bridge/Analog_Bridge.ini |
; Analog_Bridge configuration file.
; This file should be placed in either /etc or it can be
; supplied as a path on the Analog_Bridge command line.
; The best way to think of this file is that there are two main sections, the USRP (analog audio) and
; AMBE_AUDIO (compressed audio). Analog_Bridge will take everything sent to the USRP port and
; encode it for transmission on the AMBE_AUDIO port. The encoder will use the format defined in ambeMode.
; As you might expect, the reverse direction is defined too.
; Analog_Bridge supports include files. More on this later...
include = dvsm.macro
; include = asl.macro
; General Section describes settings for Analog_Bridge itself.
[GENERAL]
logLevel = 2 ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal
; Metadata management
exportMetadata = true ; Export metadata to USRP partner (transcode setups require this)
transferRootDir = /tmp ; Export database files to USRP partner
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv ; DMR ID to callsign lookup data
; General vocoder setup information
decoderFallBack = true ; Allow software AMBE decoding if a hardware decoder is not found
useEmulator = true ; Use the MD380 AMBE emulator for AMBE72 (DMR/YSFN/NXDN)
emulatorAddress = 127.0.0.1:2470 ; IP address and port of the md380 server
pcmPort = 2222 ; UDP port to send to the WebProxy
; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)
[AMBE_AUDIO]
address = 127.0.0.1 ; IP address of xx_Bridge
txPort = 31103 ; Transmit TLV frames to partner on this port
rxPort = 31100 ; Listen for TLV frames from partner on this port
ambeMode = DMR ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW (encode PCM to this format)
minTxTimeMS = 2500 ; Analog -> Digital Minimum time in MS for hang delay (0-10000)
; The metadata below is used when ASL is the source since it does not have any concept of digital modes
gatewayDmrId = 2354429 ; ID to use when transmitting from Analog_Bridge 7 digit ID
repeaterID = 235442999 ; ID of source repeater 7 digit ID plus 2 digit SSID
txTg = 2354429 ; TG to use for all frames sent from Analog_Bridge -> xx_Bridge
txTs = 2 ; Slot to use for frames sent from Analog_Bridge -> xx_Bridge
colorCode = 1 ; Color Code to assign DMR frames
; Information for USRP channel driver. This interface uses PCM to transfer audio information
; There are two typical configurations, ASL and Transcode. ASL (AllstarLink) is for analog clients connected
; to a digital network. Transcode is when Analog_Bridge actually points its PCM interfaces back at itself,
; causing a TLV <-- (pcm <--> pcm) --> TLV type of architecture.
; When using ASL, this matches the rpt.conf ASL file with a setting like:
; rxchannel = usrp/127.0.0.1:34001:32001
; When Transcoding, make two ini files and set txPort equal to the other instance rxPort (crossover). Launch
; each instance with its own ini file.
[USRP]
address = 127.0.0.1 ; IP address of USRP partner (Analog_Reflector, Allstar/Asterisk or another Analog_Bridge)
txPort = 31001 ; Transmit USRP frames on this port
rxPort = 34001 ; Listen for USRP frames on this port
usrpAudio = AUDIO_USE_GAIN ; Digital -> Analog (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)
usrpGain = 5.0 ; Gain factor when usrpAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
usrpAGC = -20,10,100 ; Set the agc threshold (db), slope (db) and decay (ms)
tlvAudio = AUDIO_USE_GAIN ; Analog -> Digital (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF)
tlvGain = 1.0 ; Gain factor when tlvAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
[MACROS]
; Where the macros are
; xxxx=yyyy
; xxxx is the dial string to match
; yyyy is the command line to execute
; xxxx must be preceded by a *
; xxxx can be any string (alphanumeric)
; yyyy is the command to execute
; yyyy will replace xxxx in the dial string
; arguments follow the macro name with a # delimiter
; For example using macro "5678" above would look like:
; *5678#9876
; Which would invoke:
; echo 9876
; Information for DV3000 hardware decoder
; There are two configuration modes: IP (AMBEServer) and serial (direct connect hardware)
; Use top server and port if using AMBEServer
; Use bottom server/port and serial = true if using the DV3000u (thumbdv)
; Did you run AMBETest4.py before using this?
[DV3000]
address = 127.0.0.1 ; IP address of AMBEServer
rxPort = 2460 ; Port of AMBEServer
; address = /dev/ttyUSB0 ; Device of DV3000U on this machine
; baud = 460800 ; Baud rate of the dongle (230400 or 460800)
; serial = true ; Use serial=true for direct connect or serial=false for AMBEServer
++++
++++ /etc/asterisk/extensions.conf |
[general]
static = yes ; These two lines prevent the command-line interface
writeprotect = yes ; from overwriting the config file. Leave them here.
[globals]
HOMENPA = 999 ; change this to your Area Code
NODE = 481481 ; change this to your node number
NODE1 = 1399
[default]
exten => i,1,Hangup
[radio-secure]
exten => ${NODE},1,rpt,${NODE}
exten => ${NODE1},1,rpt,${NODE1}
[iaxrpt] ; entered from iaxrpt in iax.conf
exten => ${NODE},1,rpt(${NODE}|X) ; NODE is the Name field in iaxrpt
; Info: The X option passed to the Rpt application
; disables the normal security checks.
; Because incoming connections are validated in iax.conf,
; and we don't know where the user will be coming from in advance,
; the X option is required.
[iax-client] ; for IAX VIOP clients.
exten => ${NODE},1,Ringing
exten => ${NODE},n,Wait(3)
exten => ${NODE},n,Answer
exten => ${NODE},n,Set(NODENUM=${CALLERID(number)})
exten => ${NODE},n,Playback(rpt/node|noanswer)
exten => ${NODE},n,SayDigits(${EXTEN})
exten => ${NODE},n,Set(CALLERID(num)=0)
exten => ${NODE},n,Rpt,${NODE}|P|${CALLERID(name)}
exten => ${NODE},n,Hangup
exten => ${NODE},n(hangit),Answer
exten => ${NODE},n(hangit),Wait(1)
exten => ${NODE},n(hangit),Hangup
; Comment-out the following clause if you want Allstar Autopatch service
[pstn-out]
exten = _NXXNXXXXXX,1,playback(ss-noservice)
exten = _NXXNXXXXXX,2,Congestion
; Un-comment out the following clause if you want Allstar Autopatch service
;[pstn-out]
;exten = _NXXNXXXXXX,1,Dial(IAX2/allstar-autopatch/\${EXTEN})
;exten = _NXXNXXXXXX,2,Busy
[invalidnum]
exten = s,1,Wait,3
exten = s,n,Playback,ss-noservice
exten = s,n,Wait,1
exten = s,n,Hangup
[radio]
exten = _X11,1,Goto(check_route|${EXTEN}|1);
exten = _NXXXXXX,1,Goto(check_route|1${HOMENPA}${EXTEN}|1)
exten = _1XXXXXXXXXX,1,Goto(check_route|${EXTEN}|1)
exten = _07XX,1,Goto(parkedcalls|${EXTEN:1}|1)
exten = 00,1,Goto(my-ip|s|1)
[check_route]
exten =_X.,1,Noop(${EXTEN})
; no 800
exten = _1800NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1888NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1877NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1866NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1855NXXXXXX,2,Goto(invalidnum|s|1)
; no X00 NPA
exten = _1X00XXXXXXX,2,Goto(invalidnum|s|1)
; no X11 NPA
exten = _1X11XXXXXXX,2,Goto(invalidnum|s|1)
; no X11
exten = _X11,2,Goto(invalidnum|s|1)
; no 555 Prefix in any NPA
exten = _1NXX555XXXX,2,Goto(invalidnum|s|1)
; no 976 Prefix in any NPA
exten = _1NXX976XXXX,2,Goto(invalidnum|s|1)
; no NPA=809
exten = _1809XXXXXXX,2,Goto(invalidnum|s|1)
; no NPA=900
exten = _1900XXXXXXX,2,Goto(invalidnum|s|1)
; okay, route it
exten = _1NXXXXXXXXX,2,Goto(pstn-out|${EXTEN:1}|1)
exten = _X.,2,Goto(invalidnum|s|1)
[my-ip]
exten = s,1,Set(MYADDR=${CURL(http://myip.vg)})
exten = s,2,Wait,1
exten = s,3,SayAlpha(${MYADDR})
exten = s,4,Hangup
[allstar-sys]
exten => _1.,1,Rpt(${EXTEN:1}|Rrpt/node:NODE:rpt/in-call:digits/0:PARKED|120)
exten => _1.,n,Hangup
exten => _2.,1,Ringing
exten => _2.,n,Wait(3)
exten => _2.,n,Answer
exten => _2.,n,Playback(rpt/node)
exten => _2.,n,Saydigits(${EXTEN:1})
exten => _2.,n,Rpt(${EXTEN:1}|P|${CALLERID(name)}-P)
exten => _2.,n,Hangup
exten => _3.,1,Ringing
exten => _3.,n,Wait(3)
exten => _3.,n,Answer
exten => _3.,n,Playback(rpt/node)
exten => _3.,n,Saydigits(${EXTEN:1})
exten => _3.,n,Rpt(${EXTEN:1}|Pv|${CALLERID(name)}-P)
exten => _3.,n,Hangup
exten => _4.,1,Ringing
exten => _4.,n,Wait(3)
exten => _4.,n,Answer
exten => _4.,n,Playback(rpt/node)
exten => _4.,n,Saydigits(${EXTEN:1})
exten => _4.,n,Rpt(${EXTEN:1}|D|${CALLERID(name)}-P)
exten => _4.,n,Hangup
exten => _5.,1,Ringing
exten => _5.,n,Wait(3)
exten => _5.,n,Answer
exten => _5.,n,Playback(rpt/node)
exten => _5.,n,Saydigits(${EXTEN:1})
exten => _5.,n,Rpt(${EXTEN:1}|Dv|${CALLERID(name)}-P)
exten => _5.,n,Hangup
[allstar-public]
exten => s,1,Ringing
exten => s,n,Set(RESP=${CURL(https://register.allstarlink.org/cgi-bin/authwebphone.pl?${CALLERID(name)})})
exten => s,n,Set(NODENUM=${CALLERID(number)})
exten => s,n,GotoIf($["${RESP:0:1}" = "?"]?hangit)
exten => s,n,GotoIf($["${RESP:0:1}" = ""]?hangit)
exten => s,n,GotoIf($["${RESP:0:5}" != "OHYES"]?hangit)
exten => s,n,Set(CALLSIGN=${RESP:5})
exten => s,n,Wait(3)
exten => s,n,Playback(rpt/node|noanswer)
exten => s,n,Saydigits(${NODENUM})
exten => s,n,Set(CALLERID(name)=${CALLSIGN})
exten => s,n,Set(CALLERID(num)=0)
exten => s,n,Rpt(${NODENUM}|X)
exten => s,n,Hangup
exten => s,n(hangit),Answer
exten => s,n(hangit),Wait(1)
exten => s,n(hangit),Hangup
#includeifexists custom/extensions.conf
++++
++++ /etc/asterisk/iax.conf |
; Inter-Asterisk eXchange driver definition
[general]
; !!! Change this to match your node registration !!!
register=481481:XXXXXX@register.allstarlink.org ; This must be changed to your node number, password
; remove the leading ";"
bindport = 4570 ; bindport and bindaddr may be specified
; NOTE: bindport must be specified BEFORE
; bindaddr or may be specified on a specific
; bindaddr if followed by colon and port
; (e.g. bindaddr=192.168.0.1:4569)
; bindaddr = 192.168.0.1 ; more than once to bind to multiple
; addresses, but the first will be the
; default
disallow = all ; The permitted codecs for outgoing connections
; Audio Quality Bandwidth
;allow = ulaw ; best 87 kbps
;allow = adpcm ; good 55 kbps
;allow = gsm ; medicore 36 kbps
allow = ulaw
allow = adpcm
allow = g722
allow = g726aal2
allow = gsm
allow = ilbc
jitterbuffer = yes
forcejitterbuffer = yes
dropcount = 2
maxjitterbuffer = 4000
maxjitterinterps = 10
resyncthreshold = 1000
maxexcessbuffer = 80
minexcessbuffer = 10
jittershrinkrate = 1
tos = 0x1E
autokill = yes
delayreject = yes
; iaxthreadcount = 30
; iaxmaxthreadcount = 150
; Incoming radio connections
[radio]
type = user
disallow = all
allow = ulaw
allow = adpcm
allow = g722
allow = g726aal2
allow = gsm
allow = ilbc
codecpriority = host
context = radio-secure
transfer = no
[iaxrpt] ; Connect from iaxrpt Username field (PC AllStar Client)
type = user ; Notice type is user here <---------------
context = iaxrpt ; Context to jump to in extensions.conf
auth = md5
secret = Your_Secret_Pasword_Here
host = dynamic
disallow = all
allow = ulaw
allow = adpcm
allow = gsm
transfer = no
[iaxclient] ; Connect from iax client (Zoiper...)
type = friend ; Notice type here is friend <--------------
context = iax-client ; Context to jump to in extensions.conf
auth = md5
secret = Your_Secret_Password_Here
host = dynamic
disallow = all
allow = ulaw
allow = adpcm
allow = gsm
transfer = no
[allstar-sys]
type = user
context = allstar-sys
auth = rsa
inkeys = allstar
disallow = all
allow = ulaw
[allstar-public]
type = user
context = allstar-public
auth = md5
secret = allstar
disallow = all
allow = ulaw
allow = gsm
; The following should be un-commented to support Allstar Autopatch service
; [allstar-autopatch]
; type = peer
; host = register.allstarlink.org
; username =
; secret =
; auth = md5
; disallow = all
; allow = ulaw
; transfer = no
#includeifexists custom/iax.conf
++++
++++ /etc/asterisk/echolink.conf |
[el0]
call = GM4SLV-L ; Change this!
pwd = XXXXXXX ; Change this!
name = John ; Change this!
qth = Allstar 481480 ; Change this!
email = gm4slv@gm4slv.plus.com ; Change this!
node = 886089 ; Change this!
; Data for EchoLink Status Page
lat = 60.2883 ; Latitude in decimal degrees
lon = -001.42533 ; Longitude in decimal degrees
freq = 144.9125 ; not mandatory Frequency in MHz
tone = 0 ; not mandatory CTCSS Tone (0 for none)
power = 2 ; 0=0W, 1=1W, 2=4W, 3=9W, 4=16W, 5=25W, 6=36W, 7=49W, 8=64W, 9=81W (Power in Watts)
height = 0 ; 0=10 1=20 2=40 3=80 4=160 5=320 6=640 7=1280 8=2560 9=5120 (AMSL in Feet)
gain = 0 ; Gain in db (0-9)
dir = 0 ; 0=omni 1=45deg 2=90deg 3=135deg 4=180deg 5=225deg 6=270deg 7=315deg 8=360deg (Direction)
maxstns = 5 ; Max Stations
rtcptimeout = 10
recfile = /tmp/echolink_recorded.gsm ;
astnode = 481480 ; Change this!
context = radio-secure ; Default in code is echolink-in
; Max 3 servers
server1 = server1.echolink.org
server2 = server2.echolink.org
server3 = server3.echolink.org
; To deny w6xxx you would add the statement: deny = w6xxx
; To prohibit computer-based connections you would write: permit = *-*
; To allow access to only a select group of callsigns: permit = w6abc,w6def,...
; permit ; comma delimited list of callsign, type (-r)
; deny
; Remote text commands thru netcat:
; o.conip (request a connect)
; o.dconip (request a disconnect)
; o.rec (turn on/off recording)
; ipaddr
; port
#includeifexists custom/echolink.conf
++++
FIXME
===== Test Node =====
|Platform | Raspberry Pi 2 Model B Rev 1.1 |
|Allstar Node | 481482 |
|Dashboard| http://gm4slv.plus.com:42112/|
This one is to use for tests and experiments....
Experiment 1
Friday 6th June 2025
Make a 2nd DMR Bridge to monitor DVSPh TG733 "MilNet"
* Made a new private node ''1398''
* Connect ''481482'' to internal private ''1398''
* Set up DVSwitch MMDVM_Bridge & Analog_Bridge
* MMDVM set to use Hotspot ID ''235442998''
* Options=StartRef=4000;RelinkTime=0;UserLink=0;TS1_1=733;
* Connected MMDVM_Bridge to DVS_Ph F server - linked to TG733
* Main VHF Gateway Node ''481481'' connected to Test Node ''481482'' in "Monitor" mode.
--- //John Pumford-Green 05/06/25 22:30 BST//
===== Further Information =====
{{tag>radio allstar dvswitch dmr echolink}}