Alrighty so I was mistaken before; MDC does appear to be working. I've attached our RPT.conf file below:
;*********************************************
;******** Template-tized rpt.conf ********
;*********************************************
; Note to editors: set tabs to 4 space characters. No wrap to keep comments neat.
; vim: tabstop=4
;
; Radio Repeater configuration file for use with app_rpt ASL3
;
[general]
node_lookup_method = file ;method used to lookup nodes
;both = dns lookup first, followed by external file (default)
;dns = dns lookup only
;file = external file lookup only
[nodes]
401 = radio@127.0.0.1/401,NONE ; Pinal
402 = radio@127.0.0.1/402,NONE ; Lemmon
403 = radio@127.0.0.1/403,NONE ; Heliograph
404 = radio@127.0.0.1/404,NONE ; Guthrie
405 = radio@127.0.0.1/405,NONE ; Alpine
406 = radio@127.0.0.1/406,NONE ; Nutrioso
410 = radio@127.0.0.1/410,NONE ; Greens Remote Base
451 = radio@127.0.0.1/451,NONE ; Mule Mountain
452 = radio@127.0.0.1/452,NONE ; Sunsites
; 453 = radio@127.0.0.1/453,NONE ; Portal Sierra Vista
454 = radio@127.0.0.1/454,NONE ; NW Tucson
[node-main](!)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; Template for all your nodes ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Set the defaults for your node(s) here.
; Add your nodes below the line that says
; Add you nodes below.
rxchannel = dahdi/pseudo ; No radio (hub)
node_lookup_method=file ; Private system
extnodefile=/tmp/rpt_extnodes ; Use private node list
duplex = 3 ; 0 = Half duplex with no telemetry tones or hang time.
linktolink = no ; disables forcing physical half-duplex operation of main repeater while
linkmongain = -22 ; Link Monitor Gain adjusts the audio level of monitored nodes when a signal from another node or the local receiver is received.
erxgain = -3 ; Echolink receive gain adjustment
etxgain = 3 ; Echolink transmit gain adjustment
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
macro = macro101 ; Default is AZ Main hub macros
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 = 2000 ; squelch tail hang time (in ms) (optional, default 5 seconds, 5000 ms)
althangtime = 4000 ; longer squelch tail
totime = 180000 ; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)
idrecording = |iK6DSA ; id recording or morse string
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 = ct4 ; 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
lnkactenable = 1 ; Set to 1 to enable the link activity timer. Applicable to standard nodes only.
lnkacttime = 900 ; Link activity timer time in seconds.
lnkactmacro = *59 ; 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)
holdofftelem = 0 ; Hold off all telemetry when signal is present on receiver or from connected nodes
telemnomdb = -3 ; Telemetry Nominal Amplitude reference in dB
telemduckdb = -15 ; Telemetry Ducking in dB when local or link voice tx in progress
telemdefault = 2 ; 0 = telemetry output off
telemdynamic = yes ; yes = disallow users to change the local telemetry setting with a COP command
parrotmode = 0 ; 0 = Parrot Off (default = 0)
parrottime = 1000 ; Set the amount of time in milliseconds
; archivedir = /var/log/asterisk/recordings
;;; End of node-main template
[functions]
;;;; This section redacted from forum post
[telemetry]
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(440,0,75,1024) ; Unlinked CT
ct5 = |t(660,0,150,2048)
ct6 = |t(880,0,150,2048)
ct7 = |t(660,440,150,2048) ; Remote base CT
ct8 = |t(1047,0,75,1024) ; link traffic CT
ct9 = |t(1633,0,50,1000)(0,0,30,0)(1209,0,50,1000);
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(1320,0,50,1024)(0,0,80,0)(1320,0,50,1024) ; 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
[morse]
;;;;; Mores code ;;;;;
; Morse code parameters, these are common to all repeaters.
speed=20
frequency=500
amplitude=800
idfrequency=500
idamplitude=800
[wait-times]
; This section allows wait times for telemetry events to be adjusted
; A section for wait times can be defined for every repeater
telemwait = 1000 ; Time to wait before sending most telemetry
idwait = 500 ; Time to wait before starting ID
unkeywait = 1000 ; Time to wait after unkey before sending CT's and link telemetry
calltermwait = 1000 ; Time to wait before announcing "call terminated"
[macro100]
; Macros for hub use (no macros)
[macro101]
; Redacted from ASL forum post
[controlstates]
;;;;; Control states ;;;;;
; Allow several control operator functions to be changed at once using one command (good for scheduling)
;statenum = copcmd,[copcmd]... https://wiki.allstarlink.org/wiki/Rpt.conf#Control_States_Stanza
0 = rptena,lnkena,apdis,totena,ufena,noicd ; Normal operation
1 = rptena,lnkena,apdis,totdis,ufena,noice ; Net and news operation
2 = rptena,lnkdis,apdis,totena,ufena,noice ; Repeater only operation
[schedule]
;;;;; Scheduler - execute a macro at a given time ;;;;;
;dtmf_function = m h dom mon dow ; ala cron, star is implied
;2 = 00 00 * * * ; at midnight, execute macro 2.
[dtmfkeys]
1004=K6DSA
[mdcmacro]
I1004=K1004
;;;;; The following are the active nodes and overrides on this server
;;;; AZ Main System
[401](node-main) ; Pinal Peak
rxchannel = voter/401 ; RTCM
totime = 60000 ; TOT to 60 seconds
[402](node-main) ; Mt. Lemmon
rxchannel = voter/402 ; RTCM, a few of them
duplex = 2 ; Non-local repeater for voter-simulcast system
dtmfkey=yes ; Enable PTT ID for testing purposes
[403](node-main) ; Heliograph Peak
rxchannel = voter/403 ; RTCM
[404](node-main) ; Guthrie Peak
rxchannel = voter/404 ; RTCM
[405](node-main) ; South Mountain (Alpine)
rxchannel = voter/405 ; RTCM
[406](node-main) ; Cobbler Point (Nutrioso)
rxchannel = voter/406 ; RTCM
[410](node-main) ; Greens remote base (No longer alive?)
duplex = 0 ; Remote base, shotgun style
rxchannel = voter/410 ; RTCM
;;;; AZ Southeast System
[451](node-main) ; Mule Mountain
rxchannel = voter/451 ; RTCM
[452](node-main) ; Sunsites
rxchannel = voter/452 ; RTCM
[454](node-main) ; NW Tucson
rxchannel = voter/454 ; RTCM
I still however have the issue of dtmfkeys accepting random key codes; for example if I dial a 5 it opens up the repeater, a 6 does not, MDC appears to work fine. With the posted configuration only code 1004 should open up the machine.
Excerpts from the console:
Connected to Asterisk 22.2.0+asl3-3.4.5-1.deb12 currently running on asterisk3 (pid = 2809534)
[2025-05-07 20:47:48.202] DTMF[2809584]: channel.c:4019 __ast_read: DTMF begin '6' received on voter/402
[2025-05-07 20:47:48.202] DTMF[2809584]: channel.c:4030 __ast_read: DTMF begin passthrough '6' on voter/402
[2025-05-07 20:47:48.343] DTMF[2809584]: channel.c:3905 __ast_read: DTMF end '6' received on voter/402, duration 127 ms
[2025-05-07 20:47:48.343] DTMF[2809584]: channel.c:3956 __ast_read: DTMF end accepted with begin '6' on voter/402
[2025-05-07 20:47:48.343] DTMF[2809584]: channel.c:3994 __ast_read: DTMF end passthrough '6' on voter/402
[2025-05-07 20:47:53.644] DTMF[2809584]: channel.c:4019 __ast_read: DTMF begin '5' received on voter/402
[2025-05-07 20:47:53.644] DTMF[2809584]: channel.c:4030 __ast_read: DTMF begin passthrough '5' on voter/402
[2025-05-07 20:47:53.824] DTMF[2809584]: channel.c:3905 __ast_read: DTMF end '5' received on voter/402, duration 178 ms
[2025-05-07 20:47:53.824] DTMF[2809584]: channel.c:3956 __ast_read: DTMF end accepted with begin '5' on voter/402
[2025-05-07 20:47:53.824] DTMF[2809584]: channel.c:3994 __ast_read: DTMF end passthrough '5' on voter/402
[2025-05-07 20:47:54.225] DEBUG[2810868]: app_rpt/rpt_telemetry.c:1060 rpt_tele_thread: Requested channel DAHDI/pseudo-919935163
[2025-05-07 20:47:54.225] DEBUG[2810868]: app_rpt/rpt_bridging.c:374 dahdi_conf_add: Channel DAHDI/pseudo-919935163 joining conference 1019
[2025-05-07 20:47:58.803] DEBUG[2809584]: app_rpt.c:3605 rxchannel_read: Got MDC-1200 (single-length) packet on node 402:
[2025-05-07 20:47:58.803] DEBUG[2809584]: app_rpt.c:3606 rxchannel_read: op: 01, arg: 80, UnitID: 1234
[2025-05-07 20:47:59.425] DEBUG[2810869]: app_rpt/rpt_telemetry.c:1060 rpt_tele_thread: Requested channel DAHDI/pseudo-1131243473
[2025-05-07 20:47:59.425] DEBUG[2810869]: app_rpt/rpt_bridging.c:374 dahdi_conf_add: Channel DAHDI/pseudo-1131243473 joining conference 1019
asterisk3*CLI>