CTCSS Encode Issues using DSP with usbradio

The encode CTCSS seems to be be drifting off frequency or something. Sometimes my test radio opens the squelch part way through the audio sometimes it doesnt. its outputing around .75k deviation which is where it should be. Its hard to figure out whats going on here but if i key it up with the radio key command but my test radios squelch opens up theres definately some deviation coming out the transmitter. Anyone have any ideas?

USBRadio.conf

;!
;! Automatically generated configuration file
;! Filename: usbradio.conf (/etc/asterisk/usbradio.conf)
;! Generator: chan_usbradio
;! Creation Date: Thu Oct  2 21:31:03 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, usually 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 currently 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 additional 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 = 162.2      ; default TX CTCSS frequency, any frequency permitted
rxctcssfreqs = 162.2   ; RX CTCSS frequencies list in floating point. must be in table
txctcssfreqs = 162.2   ; 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 receiver 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 before unkeying TX (AKA "reverse burst")
                            ; 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 = no              ; Invert PTT: no,yes
                            ; no  - ground to transmit
                            ; yes - open to transmit

duplex = 1                  ; 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

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

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

[611413](node-main)


;;;;; ASL3 Tune settings ;;;;;
devstr = 1-1.2:1.0
rxmixerset = 688
txmixaset = 635
txmixbset = 500
rxvoiceadj = 0.638531
rxctcssadj = 0.916298
txctcssadj = 213
rxsquelchadj = 350
fever = 1

Setup Information

DMK URIX with a Motorola MTR2000 wired to discriminator and aux tx input with audio set to flat

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

Installed ASL packages :

Package Version
============================== ==============================
allmon3 1.6.0-3.deb12
asl3 3.9-1.deb12
asl3-asterisk 2:22.4.1+asl3-3.5.5-1.deb12
asl3-asterisk-config 2:22.4.1+asl3-3.5.5-1.deb12
asl3-asterisk-modules 2:22.4.1+asl3-3.5.5-1.deb12
asl3-menu 1.14-1.deb12
asl3-update-nodelist 1.5.1-1.deb12
cockpit-bridge 287.1-0+deb12u3
cockpit-networkmanager 287.1-0+deb12u3
cockpit-packagekit 287.1-0+deb12u3
cockpit-sosreport 287.1-0+deb12u3
cockpit-storaged 287.1-0+deb12u3
cockpit-system 287.1-0+deb12u3
cockpit-ws 287.1-0+deb12u3
dahdi 1:3.1.0-2
dahdi-dkms 1:3.4.0-8.asl.deb12
dahdi-linux 1:3.4.0-8.asl.deb12

I’m no expert w/chan_USB but the first thing I’d do (at least to eliminate it) is make certain both the repeater and my SU was dead-nuts on frequency on a service monitor.

Increase the gain a bit in the config file. Sounds like you’re on the edge of being solid.

Thanks,

Bob

K6ECM

± 3hz so as dead on as its going to get, thanks though. Totally works with all the other repeaters, and this one when i enable the built in tone encode.