Using Kenwood TH-F6A with usbradio as node

Hi:
I want to try using my Kenwood TH-F6A HT in 1200 baud mode with a modified fob, and usbradio with DSP detection of PL tone, as I think this will sound a lot better than any of the portable 818-based node modules out there, I.E. SHARI, clear node, etc.
I have a fob that I’m pretty sure will work. It was modified such that DC voltage will pull up cos for simpleusb, but for my TH-F6A, that won’t work. The rest of the setup should be fine so long as DSP can detect and filter out my CTCSS. I can transmit just fine with this radio using simpleusb even though cos doesn’t quite work right, because the bias isn’t right. It works fine with a Baofeng HT or similar, but that won’t give me flat audio.
I don’t think my problem is with the hardware.
However, I can’t seem to get chan_usbradio.so to work as I expect.

Here is how things are configured in /etc/asterisk/usbradio.conf.

[general]

[usb_508423]

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 = 1 ; 0 - 20db attenuator inserted
; 1 - 20db attenuator removed
; Set to 1 for additonal gain if using a low-level receiver output

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.
; http://allstarnode.com/wiki/lib/exe/fetch.php?media=asterisk-notes-wj8g.pdf

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 = 0 ; Set to 1 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

ctcssfrom = usbinvert ; 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.

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

txboost = 0 ; Add transmitter audio gain boost: 0,1

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

invertptt = 0 ; Invert PTT: 0,1
; 0 - ground to transmit
; 1 - open to transmit

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

In /etc/asterisk/modules.conf,
load => chan_usbradio.so
and in /etc/asterisk/rpt.conf in the stanza for my node:
rxchannel = Radio/usb_508423
However, when I then load Asterisk, it usually breaks at importing from /etc/asterisk/usbradio.conf. Sometimes, it gets as far as saying something like chan_usbradio.so wasn’t stuck after all, then Asterisk usually crashes.'Is anyone still using this module? Does it even work anymore?
It seems to create an empty configuration file for usradio_tune_usb_508423.conf. Just for fun, I tried copying my simpleusb_tune_usb_508423.conf to usbradio_usb_tune_508423.conf, not knowing if the same parameters are shared, since I haven’t actually seen a working example, but it didn’t seem to help.
I miss the sound of my Motorola Radius (currently in storage) and thought this would be a pretty good substitute if I could get it working.
I am trying this on a rPi 3B Plus running the ASL 1.01 image.

Any help would be appreciated.

Thanks and 73
de
KE4DYI

Howdy Dustin,

One thing that might be making it difficult to interface and make COS work correctly is your understanding of how the hardware COS (and CTCSS) is actually asserted on a C-Media chipset. While this doesn’t address your desire to use usbradio and detect PL using the application, maybe it will steer you in the right direction so you can make simpleusb work on that radio. This dissertation won’t tell you what to do to make it work with that radio, but it will properly explain what the CM-1XX chip is looking for (and what it isn’t looking for).

There is much confusion surrounding the “hardware” COS and CTCSS inputs to the CM1XX chipsets.

The COS and PL logic inputs on CM1XX based radio adapters were originally the volume-up and volume-down functions, actuated by manual (push button tactile) switches in a standard audio adapter (FOB). These inputs are internally pulled high, to about 3V, and have to be pulled low enough to become valid. As such the push-button switches apply a ground when depressed, as that’s what the other side of the switch is tied to - ground. Most AllStar radio adapters use protection diodes (BAT-43’s) that don’t allow voltage to be sent into the CM1XX chip. If voltage is allowed to be inputted to these pins, the chip is destroyed. So - with the diodes in place, it doesn’t matter what voltage is present on the COS or CTCSS hardware inputs, because voltage on these pins doesn’t make anything happen, and because of the protection diodes, it doesn’t hurt anything if voltage is present. Pull-up resistors are totally unnecessary, because we need a ground to assert the condition. Any reference you see to “active high” or anything indicating the COS and CTCSS signals need to go high to become valid is technically incorrect.

Okay, so the CM108/119’s logic inputs are looking for a ground to be valid. This “active low” condition is required NO MATTER if the setting in the conf file is upright or inverted. So - the setting in the configuration file doesn’t change the fact that the adapter needs an active low to be valid and assert the condition. Sure - it needs to go high when not asserted, but the level of this high condition is not important - going low, and being able to go opposite of that is what’s necessary. All this software setting does is change if the low condition exists when the radio is hearing a valid signal, or when it’s not. Using a DMM, you can read the voltage on the CM119 side of the BAT-43 diodes to see if the logic level is properly changing from 3V (or there abouts) to 0.0 (or a few tenths of a volt).

Not all radio logic signals are created equal. Some logic circuits can source current, but lack the ability to sink. Sometimes active high circuits (circuits that provide a voltage when the state becomes active) don’t have the ability to pull to ground very well. These circuits may not have the capability to pull the COS and CTCSS inputs low enough on the radio adapter to become valid/active. A pull-down resistor can help, but nothing beats a real active low circuit. A 2N2222 (or similar NPN transistor) with the emitter grounded usually works well. Use the correct biasing technique to fully saturate the junction so it pulls the pin low enough to reliably actuate.

Hope this helps…
Kevin