User functions, DTMF or commandline not working but Allmon3 does

System running on a Dell Wyse 3040 installed using the arm64 Debian 12 system.

********** AllStarLink [ASL] Version Info **********

OS : Debian GNU/Linux 12 (bookworm)
OS Kernel : 6.1.0-37-amd64

Asterisk : 22.4.1+asl3-3.5.4-1.deb12
ASL [app_rpt] : 3.5.4

Installed ASL packages :

Package Version
============================== ==============================
allmon3 1.5.1-1.deb12
asl3 3.8-1.deb
asl3-asterisk 2:22.4.1+asl3-3.5.4-1.deb12
asl3-asterisk-config 2:22.4.1+asl3-3.5.4-1.deb12
asl3-asterisk-modules 2:22.4.1+asl3-3.5.4-1.deb12
asl3-menu 1.14-1.deb12
asl3-update-nodelist 1.5.1-1.deb12
dahdi 1:3.1.0-2
dahdi-dkms 1:3.4.0-6+asl
dahdi-linux 1:3.4.0-6+asl

Dear ASL Community,
Further to the above info, I cannot get macros, DTMF functions of calling from the CLI to work, e.g. rpt fun xxxxx *813nnnn

However, all works fine via Allmon. Using the menu in Allmon will connect, disconnect, any function seems to work OK via the "chain-link" menu icon.

However, if I define a command in Allmon for the menu accessed via the cog icon, that doesn't work.

I have been through rpt.conf looking for typos until I am sure there are no problems, I've compared with other nodes and my rpt.conf looks fine.

I can confirm that user functions are enabled, see below:

************************ NODE 648490 STATISTICS *************************

Selected system state............................: 0
Signal on input..................................: NO
System...........................................: ENABLED
Parrot Mode......................................: DISABLED
Scheduler........................................: ENABLED
Tail Time........................................: STANDARD
Time out timer...................................: ENABLED
Incoming connections.............................: ENABLED
Time out timer state.............................: RESET
Time outs since system initialization............: 1
Identifier state.................................: QUEUED FOR CLEANUP
Kerchunks today..................................: 14
Kerchunks since system initialization............: 39
Keyups today.....................................: 133
Keyups since system initialization...............: 415
DTMF commands today..............................: 72
DTMF commands since system initialization........: 209
Last DTMF command executed.......................: 712
TX time today....................................: 01:18:35:552
TX time since system initialization..............: 03:17:14:703
Uptime...........................................: 42:57:31
Nodes currently connected to us..................: 43679
Autopatch........................................: ENABLED
Autopatch state..................................: DOWN
Autopatch called number..........................: N/A
Reverse patch/IAXRPT connected...................: DOWN
User linking commands............................: ENABLED
User functions...................................: ENABLED

I am now at a loss as to how to diagnose this issue, any pointers would be greatly appreciated.

Share as much of your rpt.conf as you can. Most likely there is a conflicting stanza with your macro prefix. But it can be hard to find.

as @w6el mentioned, there is something wrong with your rpt.conf file.
It could be that a whole stanza is missing, for instance functions=functions
or the naming of the function=? stanza does not match/typo

When you issue commands through the AMI manager... ie allmon etc,
it is basically issuing command line options that does not need rpt.conf to interpret. The core command structure.
ie
rpt cmd node# cop 18 xxx

Just as if you entered them from a asterisk CLI>

Perhaps that steers you in the direction to find it?
But that is why one method works and the others do not.
If you get stumped, try posting rpt.conf here.
Let more eyes see it.

Here goes, here's the entire rpt.conf, no secrets within!
I'm preparing to slap my forehead when you point out what mistake Ive made!! :slight_smile:
(I had to reduce the number of characters to the max limit of the forum so cur out some of the commented out parts......)

;********   Template-tized rpt.conf   ********
[general]
node_lookup_method = both           ;method used to lookup nodes
                                    ;both = dns lookup first, followed by external file (default)
                                    ;dns = dns lookup only
                                    ;file = external file lookup only

[nodes]
648490 = radio@127.0.0.1/648490,NONE


[node-main](!)

;;; rxchannel ;;;
rxchannel = Radio/648490            ; No radio (hub)

duplex = 4                          ; 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. Do 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 = -22                   ; 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 = 1                       ; 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

;echolinkdefault = 2                ; 0 = Telemetry output off
                                    ; 1 = Telemetry output on
                                    ; 2 = Timed telemetry output on command execution and for a short time thereafter
                                    ; 3 = Follow local telemetry mode

;echolinkdynamic = 1                ; 0 = Disallow users to change current EchoLink telemetry setting with a COP command
                                    ; 1 = Allow users to change the setting with a COP command

controlstates = controlstates       ; System control state stanza
events = events                     ; Events Management
functions = functions               ; Repeater Function stanza
link_functions = functions          ; Link Function stanza
morse = morse                       ; Morse stanza
phone_functions = functions         ; Phone Function stanza
scheduler = schedule                ; Scheduler stanza
telemetry = telemetry               ; Telemetry stanza
wait_times = wait-times             ; Wait times stanza
macro = macro648490
;inxlat = *,#,0123456789ABCD,Y      ; The Y is for dialtone on function, a la CACTUS
                                    ; https://wiki.allstarlink.org/wiki/Rpt.conf#inxlat.3D

context = radio                     ; dialing context for phone
callerid = "Repeater" <0000000000>  ; callerid for phone calls
accountcode = RADIO                 ; account code (optional)

hangtime = 5000                     ; squelch tail hang time (in ms) (optional, default 5 seconds, 5000 ms)
althangtime = 5000                  ; longer squelch tail
totime = 360000                     ; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)

idrecording = |iGB3VS F              ; id recording or morse string
idtalkover =  |iGB3VS                      ; Talkover ID (optional) default is none
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)

max value possible)

unlinkedct = ct1                    ; Send a this courtesy tone when the user unkeys if the node is not connected to any other nodes. (optional, default is none)
remotect = ct4                      ; 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).

;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.


;nounkeyct = 0                      ; 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.

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
                                    ; 1 = telemetry output on (default = 1)
                                    ; 2 = timed telemetry output on command execution and for a short time thereafter.

telemdynamic = yes                  ; yes = 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 = 3                      ; 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 = *81343679                    ; Best use in your node stanza (below) when more than one node

nodenames = /etc/asterisk/nodenames  ; Point to alternate nodename sound directory

;aprstt = general                   ; To enable APRStt, set this value to the stanza to use in gps.conf
                                    ; module app_gps.so will need to be enabled

;statpost_url = http://stats.allstarlink.org/uhandler ; Status updates

;;; End of node-main template

[functions]
;;;;;;;;;;;;;;;;;;; functions stanza ;;;;;;;;;;;;;;;;;;;
; 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 -- transceive
4 = ilink,4                         ; Enter command mode on specified link
70 = ilink,5                        ; System status
;99 = cop,6                          ; PTT (phone mode only)

;;;;; 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 -- transceive
; 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,<destnodeno or 0 (for all)>,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 -- transceive
; 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 ;;;;;
; commands 1 through 5 are defined in the Mandatory Command section

 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,1999,"Testing"      ; would send a text message to node 1999 replace 1999 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 -- transceive
; 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!

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
;930 = cop,30                       ; Recall Memory Setting in attached transceiver

;931 = cop,31                       ; Channel Selector for parallel programmed transceiver

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-configured APRStt notification (cop,63,CALL[,OVERLAYCHR])
; 964 = cop,64                      ; Send pre-configured APRStt notification, quietly (cop,64,CALL[,OVERLAYCHR])
; 965 = cop,65                      ; Send POCSAG page (equipped channel types only)


; [functions-remote]


[telemetry]
;;;;; 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.
;
ct1=|t(1750,0,75,2048)(0,0,75,2048)(1750,0,75,2048)(0,0,1500,2048)(440,330,75,2048)
ct2=|t(660,880,150,2048)  
ct3=|t(880,0,150,4096) 
ct4=|t(1750,0,75,2000)(0,0,1500,0)(660,0,60,3000)(0,0,50,0)(660,0,160,3000)(0,0,50,0)(660,0,60,3000)
ct5=|t(660,0,150,2048)
ct6=|t(880,0,150,2048)
ct7=|t(660,440,150,2048)
ct8=|t(1750,0,75,2048)(0,0,1500,0)(660,0,60,3048)(0,0,40,0)(660,0,160,3048)(0,0,40,0)(660,0,60,3048)
remotetx=|t(1750,0,75,3000)(0,0,1500,0)(660,0,160,3000)(0,0,40,0)(660,0,60,3000)(0,0,40,0)(660,0,160,3000); 
remotemon=|t(1209,0,50,2048) 
cmdmode=|t(900,903,200,2048)
functcomplete=|mr
;|t(1000,0,50,2048)(0,0,50,0)(1000,0,50,2048)
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]
;;;;; Morse code ;;;;;
; Morse code parameters, these are common to all repeaters.
speed = 20                          ; Approximate speed in WPM
frequency = 800                     ; Morse Telemetry Frequency
amplitude = 4096                    ; Morse Telemetry Amplitude
idfrequency = 800                  ; Morse ID Frequency
idamplitude = 1024                  ; Morse ID Amplitude

;[morse]
;speed = 35                         ; Not legal in the USA
;frequency = 800                    ; Morse Telemetry Frequency
;amplitude = 4096                   ; Morse Telemetry Amplitude
;idfrequency = 750                  ; Morse ID Frequency        *Changed
;idamplitude = 512                  ; Morse ID Amplitude        *Changed


[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 = 2000                 ; Time to wait before announcing "call terminated"

[wait-times_hd]
; Sample for half-duplex
telemwait = 100                     ; Time to wait before sending most telemetry
idwait = 100                        ; Time to wait before starting ID
unkeywait = 1000                     ; Time to wait after unkey before sending CT's and link telemetry
calltermwait = 2000                 ; Time to wait before announcing "call terminated"

[memory]
;;;;; Remote base memories ;;;;;
; Memories for remote bases (not for repeaters or hotspots). Seldom used.
;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

[macro648490]
;;;;;  Macro commands ;;;;;
1 = *711 *712       ; ident then time
2 = *711           ; ident only
3 = *81343679      ; hub connect
4 = *81143679      ; hub disconnect
5 = *806*903       ; disable
6 = *902*81343679  ; enable
7 = *81343679      ; hub connect backup

;[daq-list]
;;;;; Data Acquisition configuration ;;;;;
;Where: device_name1 and device_name2 are stanzas you define in this file
;device = daq-cham-1
;device = device_name1
;device = device_name2

;[daq-cham-1]                       ; Defined in [daq-list]
; Device name
;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 /usr/share/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,-

[events]
;;;;; Events Management ;;;;;
;status,2 = c|f|RPT_NUMLINKS               ; Say time of day when all links disconnect.

[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,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

[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.
1 = 0 * * * *     ; hourly voice ID
2 = 15 * * * *    ; qrtr past
2 = 30 * * * *    ; hlaf past
2 = 45 * * * *    ; qrtr to
;4 = 00 22 * * *   ; disable at 10pm
;7 = 00 07 * * *   ; enable at 7am


#tryinclude "custom/rpt.conf"
#tryinclude "custom/rpt/*.conf"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;; Configure your nodes here ;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Note: there is no need to duplicate entire settings. Only
;       place settings that are different than the template.
;

;;;;;;;;;;;;;;;;;;; Your node settings here ;;;;;;;;;;;;;;;;;;;
[648490](node-main)
macro=macro648490
statpost_url = http://stats.allstarlink.org/uhandler
idrecording = |iGB3VS  F
idtalkover = |iGB3VS
duplex = 4
rxchannel = Radio/648490
startup_macro = *81343679

;;;;;;;;;;;;;;;;;;; Another node settings here ;;;;;;;;;;;;;;;;;;;
;[1998](node-main)
;startup_macro = *81345488
;morse = morse_1998                 ; Sample morse stanza for node 1998

Try that ^^^^^^ above in bold

Hi Mike,

I see what you're saying, and I like your thinking, although the functions stanza was declared in the main part, I tried it in the node specific settings section as you indicated but sadly no change. I restarted Asterisk after I made the change to ensure the new modified rpt.conf was loaded.

Thanks for your time Mike, appreciated.
73's
Matt

I could be way off base here, but where are your “8” prefix commands defined? I don’t see it.

Try a *3 prefix when connecting to a node. See if that at least works.

I was looking for node-main
And thought you did not have it declared, because you don't.
I used a text search to find it's start. Not there.
So, that is why I missed it.

the context you used is

So, after posting I see that the board takes that as a linked code.

I'll look that over again later

I happen to notice this above.

Are you also using linktolink=yes ? And do you have good reason to do so ?

Hi Mike,
The duplex=4 was left as part of some earlier diagnosis, originally I was using dupex=3 so changed to 4 to see if it made any difference, it didn't sadly!

Ref W6EL's observation, yes the "8" commands are there and uncommented and I had tried a *3nnnn as a test and again, no go.

The startup macro also doesnt work, nor do most of the macros - those calling the time and ident do though!

I'm thinking I need to rebuild ASL3 from scratch with this node, which I might try but a bit worried as it is remote!

73's
Matt, G4RKY

Matt, are there any functions that work from DTMF ? If so, what are they ?

Can you issue the command to enable user functions ? Perhaps on the command line.

It seems to me though that 'duplex 4 with linktolink' was designed for interacting with a hardwired controller. Something I did a very long time ago, but I can't remember the specifics except I had issues with commands. But my memory often fails me on this stuff. I have done a lot of other things since I quit using that 12+ years ago on one system.

If you are a full duplex system, I might suggest a test of using duplex=2 or duplex =1 if on a simplex system and either without linktolink. Then you might be able to rule it out.

Hi Mike,

I'm able to call some macro's via the scheduler which is perplexing! The ID and Time functions, *711 and *712 do work.

I've discovered the core set debug app_rpt and also core set debug chan_usbradio functions, and enabled these, to try and see whats going on.

Here is the sample output when I issue the command via the CLI:

"""
GB3VS*CLI> rpt fun 648490 *81343679
[2025-07-16 22:00:38.174] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:38.274] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:38.374] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:38.374] DEBUG[322963]: app_rpt.c:1579 collect_function_digits: @@@@ action: ilink, param = 13
[2025-07-16 22:00:38.474] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:38.474] DEBUG[322963]: app_rpt.c:1579 collect_function_digits: @@@@ action: ilink, param = 13
[2025-07-16 22:00:38.574] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:38.574] DEBUG[322963]: app_rpt.c:1579 collect_function_digits: @@@@ action: ilink, param = 13
[2025-07-16 22:00:38.673] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:38.673] DEBUG[322963]: app_rpt.c:1579 collect_function_digits: @@@@ action: ilink, param = 13
[2025-07-16 22:00:38.774] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:38.774] DEBUG[322963]: app_rpt.c:1579 collect_function_digits: @@@@ action: ilink, param = 13
[2025-07-16 22:00:42.865] DEBUG[322963]: app_rpt/rpt_telemetry.c:386 cancel_pfxtone: cancel_pfxfone!!
[2025-07-16 22:00:42.865] WARNING[322963]: utils.c:2241 tvfix: warning too large timestamp 0.4092000
[2025-07-16 22:00:43.156] DEBUG[323945]: app_rpt.c:1047 perform_statpost: Response: ok
[2025-07-16 22:01:13.161] DEBUG[324149]: app_rpt.c:1047 perform_statpost: Response: ok
"""
I've tried the same tests on another node running ASL3 on an identical device, and the pfx_tone and pfx_fone messages appear there, so they seem to be a red herring, however, the "tvfix: warning too large timestamp" error message does not appear on the working machine, but searching for this error message doesn't help me!

BTW, I have returned to Duplex=2 now, also no change!

Kindest regards and thanks for your persistence Mike!
Matt

Matt, there is something wrong with your functions stanza or the pointer to it.
I have looked at this twice and I'm not seeing it.
That is not to say I didn't miss something.
Most of those functions are commented out.

Can you send as an attachment, your exact 'current' rpt.conf file

This way there is no re-formating of text the board here sometimes does.
In order to prevent that, one has to post it as code </>

I would also be looking for some corrupting character in the file that keeps it from all loading as it should. Sometimes happens by accident or from some copy/paste operations.

Can you try to issue a user function like dtmf pad test ?

In what I see, you describe this main node twice.
Once in the template and once later in the file.
As I understand it, the template values are loaded first and later definitions are added and changed if that is what it calls for.
You really do not need to describe the radio channel driver in the template, but the individual node definition that makes it different than a standard generic setting for all nodes.

Look your file over and I think you will understand what I am saying here.
So, it is a issue for me to follow along when the data is all over the place.

You should be using verbose 3 for most troubleshooting
asterisk -rvvv

EDIT: to show a little more that it is a functions stanza issue.
If you use the command line to issue the command 'NOT IN DTMF' but ilink or cop command, it should work as well as your allmon.
Your functions stanza is not interpreting the cop/ilink command to dtmf.

Hi Mike,

Many thanks for your reply and sorry for the delay in my response, It's been very busy this end!

I've attached the rpt.conf and understand exactly what you're saying and agree totally. I hadn't considered that it might be a hidden character, or something hidden in the file that I couldn't see.

I'll open the file in a different editor and see if I can see whats going on.

I can confirm that ilink commands and cop commands do indeed work correctly, so it must be in rpt.conf somewhere!

File attached,

73's
Matt
rpt.conf (33.1 KB)

Matt, I did look at the file, I may look at it again later.
I did not see what I was looking for.
I use notepad++ and reveal all chars to see that. But I can miss something.

I do want to point out you do not have many commands available for they are commented out.

So you you be specific about what commands you have tried that do not work,
or preferably, try some again, then tell me.
From dtmf only
That will give me a specific target or pastern to follow.

Good morning, I had somewhat the same difficulties bringing up a hotspot on ASL3. I’m using the same computer and software as listed in this post. I troubleshot the DTMF decoding with the CLI, which indicated that it was working. My issue seemed to be hit and miss until I got all the functions I wanted uncommented. I setup my macros as desired and did asterisk restarts after each RPT.CONF edit and save. The issue that I was having with my macros was due to syntax problems on the lines for macros 1 and 2. Once I commented those two lines out, the rest of the macros started working. So, yes, correcting little errors in text formatting, typos, et cetera, does make a difference. Tomorrow is another day! Good night all!