Latest ASL3 image 3.1.1 DTMF not working

Setup Information:
********** AllStarLink [ASL] Version Info **********

OS : Debian GNU/Linux 13 (trixie)
OS Kernel : 6.12.47+rpt-rpi-v8

Asterisk : 22.5.2+asl3-3.6.2-1.deb13
ASL [app_rpt] : 3.6.2Inquiry

=================

  1. I installed allstar3-arm64-3.1.1.img.xz and am running into and issue . . .
  2. When I execute a DTMF command it does not trigger an event . . .
    using: asterisk -rvvv
    Asterisk 22.5.2+asl3-3.6.2-1.deb13, Copyright (C) 1999 - 2025, . . .
  3. I execute a “806 = ilink,6 ; Disconnect all links” with *806 . . .

RESULT In astrisk CLI:

-- Hungup 'DAHDI/pseudo-1944362564'

== Manager 'admin' logged on from 127.0.0.1
-- Event on node 671040 doing rpt command cop,62,GPIO4:1 for condition c|t|RPT_RXKEYED
-- Event on node 671040 doing rpt command cop,62,GPIO4:0 for condition c|f|RPT_RXKEYED
-- Hungup 'DAHDI/pseudo-1507881698'

What am I missing or what is missing from a conf file . . .

Any help would be appreciated!

Thank you

Gregory

NOTE:

I did not have this issue with the previous version of ALS3

OS : Debian GNU/Linux 12 (bookworm)
OS Kernel : 6.12.47+rpt-rpi-v8

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

Can you post what you have for your functions? Specifically, do you have any other functions that start with *80?

I just installed a fresh install of ASL3 on a VM and moved my nodes over from a HamVOIP installation to the VM. The DTMF tones on my repeater are working fine. I noticed a long time ago that you cannot have numbers that repeate for DTMF codes. For example, if you have a 80 function, then you can’t also have a 80X function listed as these will not work. Anytime you key 80X, the system assumes you’re running the function for *80. I’m not sure if this is the problem you’re running into, but worthy looking at.

I just used that one as an example . . .
but ones like *721 to id do not work either.
On my Pi4 running Debian GNU/Linux 12 (bookworm) all the command execute fine.
Even the ones that call the shell scripts.
It is probably something obvious but i just cant see it.

=====================
functions-main
;;;;;;;;;;;;;;;;;;; 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 :: <<--- disabled for DTMF commands via bash script

;;;;; 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
;;; . . ** ALL COMMENTED OUT **
; 18 - Permanently connect specified link -- local monitor only

;;;;; ilink commands ;;;;;
; commands 1 through 5 are defined in the Mandatory Command section

959 = ilink,6 ; Disconnect all links
; 806 = ilink,6 ; Disconnect all links
; 807 = ilink,7 ; Last Node to Key Up
;;; . . ** ALL COMMENTED OUT ** ; 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
;;; . . ** ALL COMMENTED OUT **
; 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)

;===== [CUSTOM TONE functions] ==========
981=cop,48,!700/100,!900/60 ; DT 1331 Connect
982=cop,48,!500/100,!1400/60 ; DT DMR Connect
983=cop,48,!900/100,!1900/60 ; DT ASL Connect
984=cop,48,!800/100,!1200/60 ; DT ASL Monitor
985=cop,48,!499/100,!339/60 ; DT ALL Disconnect

989=cop,48,!800/60,!1000/60 ; two tone Command Accepted

;============================= SkywarnPlus =============================
; SkyControl DTMF Commands
831 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py enable toggle ; Toggles SkywarnPlus
832 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py sayalert toggle ; Toggles SayAlert
833 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py sayallclear toggle ; Toggles SayAllClear
834 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py tailmessage toggle ; Toggles TailMessage
835 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py courtesytone toggle ; Toggles CourtesyTone
836 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py alertscript toggle ; Toggles AlertScript
837 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py idchange toggle ; Toggles IDChange
838 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py changect normal ; Forces CT to "normal" mode
839 = cmd,/usr/local/bin/SkywarnPlus/SkyControl.py changeid normal ; Forces ID to "normal" mode
; SkyDescribe DTMF Commands
841 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 1 ; SkyDescribe the 1st alert
842 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 2 ; SkyDescribe the 2nd alert
843 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 3 ; SkyDescribe the 3rd alert
844 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 4 ; SkyDescribe the 4th alert
845 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 5 ; SkyDescribe the 5th alert
846 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 6 ; SkyDescribe the 6th alert
847 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 7 ; SkyDescribe the 7th alert
848 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 8 ; SkyDescribe the 8th alert
849 = cmd,/usr/local/bin/SkywarnPlus/SkyDescribe.py 9 ; SkyDescribe the 9th alert
;============================= SkywarnPlus =============================

;============== Tx31 [BCAST COMMANDS] ==================================
040 = cmd,/etc/asterisk/local/040-playARN-now.sh ; PLAY ARNewsLine

;============== Tx31 [WX COMMANDS] =========================
041 = cmd,/etc/asterisk/local/041-READ-WX-TTS.sh ; READ AFDBOU
042 = cmd,/etc/asterisk/local/042-READ-WX-TTS.sh ; READ HWOBOU

;; 048 = cmd,/etc/asterisk/local/948-PLAY-WX-TTS.sh ; READ Space WX
049 = cmd,/etc/asterisk/local/049-PLAY-WX-TTS.sh ; PLAY Tropical WO

;============== Tx31 [set Node+Channel TX/RX] =========================
;; 50 = cmd,/etc/asterisk/local/ ; ** NODE PARROT
051 = cmd,/etc/asterisk/local/Node-tune.sh TX 410460 ; PRA (RX)
651 = cmd,/etc/asterisk/local/Node-tune.sh RX 410460 ; PRA (TX/RX)
052 = cmd,/etc/asterisk/local/Node-tune.sh TX 46079 ; SkyHub Link (RX)
652 = cmd,/etc/asterisk/local/Node-tune.sh RX 46079 ; SkyHub Link (TX/RX)
053 = cmd,/etc/asterisk/local/Node-tune.sh TX 485322 ; SkyHub SVRWX (RX)
653 = cmd,/etc/asterisk/local/Node-tune.sh RX 485322 ; SkyHub SVRWX (TX/RX)
;; 054 =
;; 654 =
055 = cmd,/etc/asterisk/local/Node-tune.sh TX 576337 ;* WX5OKM OK (RX)
655 = cmd,/etc/asterisk/local/Node-tune.sh RX 576337 ;* WX5OKM OK (TX/RX)

;============== Tx31 [set TGIF TX/RX] =========================
070 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 91910 ; RV America TG (TX/RX)
071 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 2021 ; FreeSpeech TG (TX/RX)
072 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 31665 ; Mothership TG (TX/RX)
073 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 117 ; HF talk TG (TX/RX)
074 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 59650 ; TX-DFWS TG (TX/RX)
075 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 756 ;* KD5FMU TG (TX/RX)
076 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 7399 ; ARMS TG (TX/RX)

079 = cmd,/etc/asterisk/local/TG-tune.sh TGIF RX 31670 ;World Wide Talk (TX/RX)

;============== Tx31 [set BM TX/RX] =========================
;; 080 = cmd,/etc/asterisk/local/TG-tune.sh TGIF TX 9990 ; ** BM PARROT
081 = cmd,/etc/asterisk/local/TG-tune.sh BM TX 91 ; World Wide (TX/RX)
082 = cmd,/etc/asterisk/local/TG-tune.sh BM TX 93 ; North America (TX/RX)
083 = cmd,/etc/asterisk/local/TG-tune.sh BM TX 31088 ; Colorado HD (TX/RX)

;============== Tx31 [Node BRIDGE COMMANDS] =========================
952 = cmd,/etc/asterisk/local/850-TGIF-bridge.sh ; 1331 TGIF bridge
953 = cmd,/etc/asterisk/local/950-BM-bridge.sh ; 1331 BM bridge

;============== Tx31 [CONTROL COMMANDS] =========================
066 = cmd,/etc/asterisk/local/066-DROP-ALL-CMD.sh ; DROP-ALL LINKS
9751 = cmd,/etc/asterisk/local/server-reboot.sh ; node reboot
9750 = cmd,/etc/asterisk/local/server-shutdown.sh ; node shutdown
9755 = cmd,/etc/asterisk/local/9755-XC-Tx21.sh ; Cross Connect Tx21
;==============================================================================

; [functions-remote]
;;;;; Functions for remote bases ;;;;;
;
; 0 = remote,1 ; Retrieve Memory
; 1 = remote,2 ; Set freq.
; 2 = remote,3 ; Set TX PL tone
;;; . . ** ALL COMMENTED OUT **
; 726 = remote,117 ; Scan + quick
; 729 = remote,118 ; Scan + fast
; 79 = remote,119 ; Tune
; 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 example 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

functions

In the "functions" portion of the rpt.conf that you shared you have :

; 806 = ilink,6 ; Disconnect all links

The leading ; means that it's a comment.

Yes. I understand that.

I had un-ommented it to test then saved rpt.conf and restarting asterisk . .. - no joy

I also tested: (none of which were commented out)
721 = status,1 ; Force ID (global)
722 = status,2 ; Give Time of Day (global)
and
712 = status,12 ; Give Time of Day (local only)

including a couple of my custom ones that work on my other node.
found lower in the conf . . . like:
066 = cmd,/etc/asterisk/local/066-DROP-ALL-CMD.sh ; DROP-ALL LINKS

I have also tested my .sh scripts (like 066 above) independently and they work fine from the command line.
I have also tested commands from within the Asterisk CLI and those ALSO work fine.

The issue is they are not executing via radio DTMF.
And they usually show up in the Asterisk CLI as each tone is entered and processed.

Gregory

Are you saying that when you exec the sudo asterisk -r -vvvv command, watch the Asterisk CLI output, key/PTT and press each of the touch tone buttons that you don't see the digits being processed?

1 Like

Yes sir.
That was what was happening.

Now . . . just a while ago while in the Asterisk CLI I executed the following:
rpt debug level 7
then I went to PARROT:
rpt fun <my_node> *355553

I was able to hear my voice via parrot and set my level in simpleusb.conf
also . . AFTER “rpt debug level 7” I was able to see my DTMF in the CLI.
AND execute (while in the CLI) my custom commands like *066 and they worked.

After EXITING the CLI they stopped working.

So heres the weird part:
Now . . . I dont know what happened but after doing this a few times they worked even after exiting the CLI and even after a reboot. ??

I do not know WHY ??
any thoughts ??

Gregory.

The DTMF decoding is affected by the audio levels. Any adjustments that you made could explain the issues you were experiencing.

To be clear about this, DTMF codes have to match in length as they are a "shortest path wins" scenario. For example if you've defined *8 and *81 and *82, only *8 will ever match because it's the shortest path. That's why the stock ASL3 configuration has all three-digit default codes as *7nn to *9nn.

1 Like

Thank you Allan - I amy play with that just to see if that is what affected my result - for my own learning and peace of mind.

and thank you N8EI - your explanation here was actually very helpful in understanding how that pwrt of the program thinks.
I appreciate it! :slight_smile: