Non CTCSS Audio getting passed into node

Hi,

I have set up a node using an R1-2023 URI connected to a Motorola GM338 with the encoder on its listening frequency.

The issue is that even when I do not add the required CTCSS code in my handheld, although the radio speaker is quiet, ASL3 still receives audio which is propagated on the network to all connected nodes.

I am using simpleusb.conf in half-duplex. I tried playing around with the usbradio.conf and its CTCSS options but audio quality deteriorated and it was still sending the non CTCSS audio through although I had selected 136.5 for RX CTCSS in usbradio.conf

Does anyone have any experience with this or could you guide me to what I could change for proper encoding/decoding? Maybe I am missing certain things when using usbradio.conf. As far as I read on the internet, simpleusb.conf isn't able to handle CTCSS, but I could be wrong.

I searched a lot but could not find anything on this forum or elsewhere on the internet.

Regards,
Adam

Adam, can you post a copy of your usbradio.conf? Put a line of three back ticks (```) above and below the text when you paste it here so it gets formatted nicely.

While I am not positive with ASL3,
I do believe you need to be using usbradio
PL filtering is not automatic.

This line will filter PL in usbradio
plfilter=yes

1 Like

This should also work in simpleusb...

@Mason10198 The file is as follows;

USBRadio

;!
;! Automatically generated configuration file
;! Filename: usbradio.conf (/etc/asterisk/usbradio.conf)
;! Generator: chan_usbradio
;! Creation Date: Fri May  9 01:51:08 2025
;!
;**************************************************
;********   Template-tized usbradio.conf   ********
;**************************************************
; Note to editors: set tabs to 4 space characters. No wrap to keep comments neat.
; vim: tabstop=4
;
; USBRadio channel driver Configuration File
;
;;;;;                 New to ASL3                 ;;;;;
;;;;; The USBRadio "tune" settings have moved to  ;;;;;
;;;;; this file. The usbradio_tune_usb_1999.conf  ;;;;;
;;;;; file is no longer used.                     ;;;;;

; If you are going to use this channel driver, you MUST enable it in modules.conf
; noload => chan_usbradio.so    ; CM1xx USB Cards with Radio Interface Channel Driver (DSP)
; noload => res_usbradio.so     ; Required for both simpleusb and usbradio
; to:
; load => chan_usbradio.so      ; CM1xx USB Cards with Radio Interface Channel Driver (DSP)
; load => res_usbradio.so       ; Required for both simpleusb and usbradio

[general]
;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
; jbenable = yes            ; Enables the use of a jitterbuffer on the receiving side of an
                            ; USBRADIO channel. Defaults to "no". An enabled jitterbuffer will
                            ; be used only if the sending side can create and the receiving
                            ; side can not accept jitter. The USBRADIO channel can't accept jitter,
                            ; thus an enabled jitterbuffer on the receive USBRADIO side will always
                            ; be used if the sending side can create jitter.

; jbmaxsize = 200           ; Max length of the jitterbuffer in milliseconds.

; jbresyncthreshold = 1000  ; Jump in the frame timestamps over which the jitterbuffer is
                            ; resynchronized. Useful to improve the quality of the voice, with
                            ; big jumps in/broken timestamps, usualy sent from exotic devices
                            ; and programs. Defaults to 1000.

; jbimpl = fixed            ; Jitterbuffer implementation, used on the receiving side of an USBRADIO
                            ; channel. Two implementations are currenlty available - "fixed"
                            ; (with size always equals to jbmax-size) and "adaptive" (with
                            ; variable size, actually the new jb of IAX2). Defaults to fixed.

; jblog = no                ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------

[node-main](!)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; Template for all your USBRadio nodes ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

eeprom = 0                  ; EEPROM installed: 0,1
                            ; 0 = no (default)
                            ; 1 = yes

hdwtype = 0                 ; Leave this set to 0 for USB sound fobs modified using
                            ; the instructions from usbfob.pdf. Use a setting of
                            ; 1 is for Dingotel/Sph interfaces.

rxboost = yes               ; no  - 20db attenuator inserted
                            ; yes - 20db attenuator removed
                            ; Set to yes for additonal gain if using a low-level receiver output
                            ; CM119B devices are hard coded to rxboost 20dB attenuator removed

rxctcssrelax = 1            ; reduce talkoff from radios w/o CTCSS TX HPF
                            ; Do not change this, leave this as a 1

rxsqhyst = 3000             ; Setting Squelch Hysteresis
                            ; 3000 is the default amount.
                            ; An amount of 500 seems good.
                            ; Then set the squelch to the highest number revealed when doing a "radio
                            ; tune rxsquelch" - running the command multiple (like 20) times in a row.

txctcssdefault = 100.0      ; default TX CTCSS frequency, any frequency permitted
rxctcssfreqs = 100.0,91.5   ; RX CTCSS frequencies list in floating point. must be in table
txctcssfreqs = 100.0,91.5   ; TX CTCSS frequencies list. any frequency permitted. will follow RX CTCSS frequency
rxctcssoverride = no        ; Set to yes to start out in carrier squelch mode

carrierfrom = dsp           ; no,usb,usbinvert,dsp,vox
                            ; no - no carrier detection at all
                            ; usb - from the COR line on the USB sound fob (Active high)
                            ; usbinvert - from the inverted COR line on the USB sound fob (Active low)
                            ; dsp - from RX noise using DSP techniques
                            ; vox - voice activated from RX audio
                            ; pp - from parallel port (Active high)
                            ; ppinvert - from the inverted parallel port (Active low)

voxhangtime = 2000          ; If carrierfrom=vox, mS to wait detecting RX audio before setting rxcarrierdetect=0
                            ; 2000 is the default but results in 2 seconds of silence added after RX unkey.
                            ; 500 seems more optimal. Lower values may result in unintended drops in RX CD.

ctcssfrom = dsp             ; no,usb,usbinvert,dsp
                            ; no - no CTCSS decoding, system will be carrier squelch
                            ; usb - from the CTCSS line on the USB sound fob (Active high)
                            ; usbinvert - from the inverted CTCSS line on the USB sound fob (Active low)
                            ; dsp - CTCSS decoding using RX audio in DSP.
                            ; rxdemod option must be set to flat for this to work.
                            ; pp - from parallel port (Active high)
                            ; ppinvert - from the inverted parallel port (Active low)

rxdemod = flat              ; input type from radio: no,speaker,flat
                            ; no - RX audio input not used
                            ; flat - Use RX audio from discriminator (before de-emphasis)
                            ; speaker - use de-emphasized audio

rxsquelchdelay = 30         ; delayline in ms carrier squelch tail eliminator

rxondelay = 0               ; Number of 20mSec intervals following the release of PTT.
                            ; Uncomment and/or adjust for simplex nodes to eliminate "Ping Ponging"
                            ; or "Relay Racing". A positive value here will instruct the usbradio
                            ; driver to ignore the COR line for a specified number of 20mSec
                            ; intervals following the release of PTT. Use this ONLY on simplex
                            ; nodes, and leave commented out for repeaters or other full duplex nodes.

txoffdelay = 0              ; Ignore the reciever for a specified number of 20 millisecond
                            ; intervals after the transmitter unkeys.
                            ; This is useful when setting up a half-duplex link with an existing
                            ; repeater, where you need to ignore the repeater's hangtime.

txboost = no                ; Add transmitter audio gain boost: no,yes

txprelim = yes              ; Audio processing on left output channel: no,yes
                            ; no  - Audio is not pre-emphasized and limited.
                            ;   (suitable for use on a microphone input)
                            ; yes - Audio is pre-emphasized and limited.
                            ;   (suitable for direct connection to an FM modulator)

txlimonly = yes             ; Audio limiting with no pre-emphasis on output channel: no,yes
                            ; no  - Audio is not limited.
                            ; yes - Audio is  limited.
                            ; Suitable for transmitters with no limiting but with pre-emphasis.

txtoctype = notone          ; Transmit tone control type: no,phase,notone
                            ; no - CTCSS tone encoding with no hang time
                            ; phase - encode CTCSS and reverse phase
                            ; AKA ("reverse burst") before unkeying TX
                            ; notone - encode CTCSS and stop sending tone before unkeying TX
                            ; AKA ("chicken burst")

txmixa = composite          ; Left channel output: no,voice,tone,composite,auxvoice
                            ; no - Do not output anything
                            ; voice - output voice only
                            ; tone - CTCSS tone only
                            ; composite - voice and tone
                            ; auxvoice - auxiliary voice output at headphone level for monitoring

txmixb = no                 ; Right channel output: no,voice,tone,composite, auxvoice
                            ; no - Do not output anything
                            ; voice - output voice only
                            ; tone - CTCSS tone only
                            ; composite - voice and tone
                            ; auxvoice - auxiliary voice output at headphone level for monitoring

; Audio filters
rxlpf = 0                   ; Receiver Audio Low Pass Filter 0,1 2
                            ; 0 - 3.0 kHz cutoff (Default) value for reduced noise and increased intelligibility.
                            ; 1 - 3.3 kHz cutoff for increased high end, sibilance and brightness.
                            ; 2 - 3.5 kHz cutoff for even more high end, sibilance and brightness.
rxhpf = 0                   ; Receiver Audio High Pass Filter 0,1
                            ; 0 - 300 Hz cutoff. (Default) value to reduce sub-audible signals for retransmission and in the receiver speaker.
                            ; 1 - 250 Hz cutoff for additional received and retransmitted bass response.
                            ; recommend using this filter with a CTCSS tone no higher than 186.2 Hz.
txlpf = 0                   ; Transmitter Audio Low Pass Filter 0,1
                            ; 0 - 3.0 kHz cutoff. (Default) value.
                            ; 1 - 3.3 kHz cutoff for increased high end, sibilance and brightness.
txhpf = 0                   ; Transmitter Audio High Pass Filter 0,1,2
                            ; 0 - 300 Hz cutoff. (Default) value to reduce interference between voice and sub-audible signaling tones and codes.
                            ; 1 - 250 Hz cutoff for increased bass response in transmitted audio.
                            ; 2 - 120 Hz cutoff for special applications requiring additional bass response in transmitted audio.
                            ; Not recommended due to the increased possibility of voice energy interfering with sub-audible signaling

invertptt = yes             ; Invert PTT: no,yes
                            ; no  - ground to transmit
                            ; yes - open to transmit

duplex = 0                  ; Duplex 0,1
                            ; 0 - half duplex
                            ; 1 - full duplex
duplex3 = 0                 ; duplex 3 gain setting (0 to disable) ???

clipledgpio = 0             ; Enable ADC Clip Detect feature to use a GPIO output (0 to disable).
                            ; Supports URI Clip LED by setting a GPIO (if available) high for 500mS
                            ; when clipping detected. Value = GPIO# to use (GPIO1 recommended)

legacyaudioscaling = no     ; If yes, continue to do raw audio sample scaling and clipping, resulting in Tx audio levels increasing
                            ; by 0.83dB and Rx audio levels decreasing by 1.94dB. Should be set to no unless you have an existing
                            ; node with precisely adjusted audio levels and are unable to adjust them. This parameter and associated
                            ; scaling/clipping code will be deleted once existing installs have been able to verify their audio levels

;;; End of node-main template

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;; Configure your nodes here ;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Note: there is no need to duplicate entire settings. Only
;       place settings that are different than the template.
;
; Note: the device string is automatically found when the
;       USB setting "devstr=" is empty.
;
; Note: the interface "tune" settings will be added to the
;       per-node settings (below).

[638383](node-main)
rxboost = no

;;;;; ASL3 Tune settings ;;;;;
devstr = 2-3:1.0
rxmixerset = 500
txmixaset = 350
txmixbset = 500
rxvoiceadj = 0.500000
rxctcssadj = 0.500000
txctcssadj = 200
rxsquelchadj = 500
txctcssdefault = 100.0,88.5,136.5      ; default TX CTCSS frequency, any frequency permitted
rxctcssfreqs = 100.0,88.5,136.5   ; RX CTCSS frequencies list in floating point. must be in table
txctcssfreqs = 100.0,88.5,136.5   ; TX CTCSS frequencies list. any frequency permitted. will follow RX CT>
rxctcssoverride = yes
carrierfrom = usbinvert
ctcssfrom = usbinvert
invertptt = no
fever = 0

SimpleUSB

;!
;! Automatically generated configuration file
;! Filename: simpleusb.conf (/etc/asterisk/simpleusb.conf)
;! Generator: chan_simpleusb
;! Creation Date: Mon May 12 15:03:55 2025
;!
;***************************************************
;********   Template-tized simpleusb.conf   ********
;***************************************************
; Note to editors: set tabs to 4 space characters. No wrap to keep comments neat.
; vim: tabstop=4
;
; SimpleUSB channel driver Configuration File
;
;;;;;                 New to ASL3                 ;;;;;
;;;;; The SimpleUSB "tune" settings have moved to ;;;;;
;;;;; this file. The simpleusb_tune_usb_1999.conf ;;;;;
;;;;; file is no longer used.                     ;;;;;

; If you are going to use this channel driver, you MUST enable it in modules.conf
; change:
; noload => chan_simpleusb.so       ; CM1xx USB Cards with Radio Interface Channel Driver (No DSP)
; noload => res_usbradio.so         ; Required for both simpleusb and usbradio
; to:
; load => chan_simpleusb.so         ; CM1xx USB Cards with Radio Interface Channel Driver (No DSP)
; load => res_usbradio.so           ; Required for both simpleusb and usbradio

[general]
;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
; jbenable = yes              ; Enables the use of a jitterbuffer on the receiving side of an
                              ; simpleusb channel. Defaults to "no". An enabled jitterbuffer will
                              ; be used only if the sending side can create and the receiving
                              ; side can not accept jitter. The simpleusb channel can't accept jitter,
                              ; thus an enabled jitterbuffer on the receive simpleusb side will always
                              ; be used if the sending side can create jitter.

; jbmaxsize = 200             ; Max length of the jitterbuffer in milliseconds.

; jbresyncthreshold = 1000    ; Jump in the frame timestamps over which the jitterbuffer is
                              ; resynchronized. Useful to improve the quality of the voice, with
                              ; big jumps in/broken timestamps, usualy sent from exotic devices
                              ; and programs. Defaults to 1000.

; jbimpl = fixed              ; Jitterbuffer implementation, used on the receiving side of an simpleusb
                              ; channel. Two implementations are currenlty available - "fixed"
                              ; (with size always equals to jbmax-size) and "adaptive" (with
                              ; variable size, actually the new jb of IAX2). Defaults to fixed.

; jblog = no                  ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------

[node-main](!)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; Template for all your SimpleUSB nodes ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

eeprom = 0                          ; EEPROM installed: 0,1
                                    ; 0 = no (default)
                                    ; 1 = yes

hdwtype = 0                         ; Leave this set to 0 for USB sound fobs designed for app_rpt
                                    ; or modified cmxxx sound fobs.
                                    ; 1 is for Dingotel/Sph interfaces.
                                    ; 2 is for NHC interfaces.
                                    ; 3 is for a custom interface.

; Receiver parameters
rxboost = no                        ; no = 20db attenuator inserted, yes = 20db attenuator removed
                                    ; Set to yes for additonal gain if using a low-level receiver output
                                    ; CM119B devices are hard coded to rxboost 20dB attenuator removed

carrierfrom = usbinvert             ; no,usb,usbinvert
                                    ; no - no carrier detection at all
                                    ; usb - from the COR line on the USB sound fob (Active high)
                                    ; usbinvert - from the inverted COR line on the USB sound fob (Active low)
                                    ; pp - from parallel port (Active high)
                                    ; ppinvert - from the inverted parallel port (Active low)

ctcssfrom = usbinvert               ; no,usb,usbinvert
                                    ; no - CTCSS decoding, system will be carrier squelch
                                    ; usb - CTCSS decoding using input from USB sound fob (Active high)
                                    ; usbinvert - from the inverted CTCSS line on the USB sound fob (Active low)
                                    ; pp - from parallel port (Active high)
                                    ; ppinvert - from the inverted parallel port (Active low)

deemphasis = no                     ; enable de-emphasis (input from discriminator)

plfilter = yes                      ; enable PL filter

rxondelay = 0                           ; Number of 20mSec intervals following the release of PTT.
                                    ; Uncomment and/or adjust for simplex nodes to eliminate "Ping Ponging"
                                    ; or "Relay Racing". A positive value here will instruct the usbradio
                                    ; driver to ignore the COR line for a specified number of 20mSec
                                    ; intervals following the release of PTT. Use this ONLY on simplex
                                    ; nodes, and leave commented out for repeaters or other full duplex nodes.

txoffdelay = 0                          ; Ignore the reciever for a specified number of 20 millisecond
                                    ; intervals after the transmitter unkeys.
                                    ; This is useful when setting up a half-duplex link with an existing
                                    ; repeater, where you need to ignore the repeater's hangtime.

; Transmitter parameters
txmixa = voice                      ; Left channel output (A): no,voice
                                    ; no - Do not output anything
                                    ; voice - output voice only

txmixb = no                         ; Right channel output (B): no,voice
                                    ; no - Do not output anything
                                    ; voice - output voice only

invertptt = no                      ; Invert PTT: no,yes
                                    ; no  - ground to transmit
                                    ; yes - open to transmit

preemphasis = no                    ; Perform standard 6db/octave pre-emphasis

; pager = no                        ; no,a,b (e.g. pager = b means "put the normal repeat audio on channel A, and the pager audio on channel B")

; duplex3 = 0                       ; duplex 3 gain setting (0 to disable)

clipledgpio = 1                     ; Enable ADC Clip Detect feature to use a GPIO output (0 to disable).
                                    ; Supports URI Clip LED by setting a GPIO (if available) high for 500mS
                                    ; when clipping detected. Value = GPIO# to use (GPIO1 recommended)

legacyaudioscaling = no             ; If yes, continue to do raw audio sample scaling and clipping, resulting in Tx audio levels increasing
                                    ; by 0.78dB and Rx audio levels increasing by 0-1.5dB. Should be set to no unless you have an existing
                                    ; node with precisely adjusted audio levels and are unable to adjust them. This parameter and associated
                                    ; scaling/clipping code will be deleted once existing installs have been able to verify their audio levels

;;; End of node-main template

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;; Configure your nodes here ;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Note: there is no need to duplicate entire settings. Only
;       place settings that are different than the template.
;
; Note: the device string is automatically found when the
;       USB setting "devstr=" is empty.
;
; Note: the interface "tune" settings will be added to the
;       per-node settings (below).

[638383](node-main)
preemphasis = yes

ctcssfrom = no
rxondelay = 20

;;;;; ASL3 Tune settings ;;;;;
devstr = 2-3:1.0
rxmixerset = 5
txmixaset = 10
txmixbset = 350

@Mike PL Filter shows up as enabled. I think it was like that by default.

@Chuck I didn't know that. I tried setting carrier to no and ctcssfrom to usbinvert but that did not work. Is there a particular way that would make it function properly?

Just to be clear, I tried usbradio but then moved back to simpleusb because of audio quality.

Thanks!
Adam

You have carrier squelch enabled, allowing your receiver to open up for any carrier over the squelch threshold, regardless of coded squelch.

You should be using carrierfrom OR ctcssfrom, not both.

carrierfrom is for carrier squelch operation. You want tone squelch operation, so just use ctcssfrom.

So, for USBRadio:

carrierfrom = no
ctcssfrom = dsp

And for SimpleUSB:

carrierfrom = no
ctcssfrom = usbinvert

(assuming that these are the correct polarities for your particular interface)

BTW, plfilter doesn't have anything to do with squelch operation. All that does is filter out any audible CTCSS buzz from the audio on its way into Asterisk.

Yea, my misreading of the original post was that I thought the PL tones were getting passed. Sorry.

This is a logic line of a external decoder. It does no signal processing.
It is simply true/false. If you trip the line manually correct, it should block everything.

If you want asl to select, decode and filter PL , it must be DSP.

Or use external source with the logic line on the USB FOB or parallel port. Which do have to be defined to use.

Thank you so much everyone! It was a programming issue. The URI was picking up carrier instead of PL/DPL because the relevant pin (8) was set to carrier. Once it was changed to PL/DPL in motorola cps, the following worked great in simpleusb.conf

Thanks again!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.