USBRadio Channel Driver

From AllStarLink Wiki
Jump to navigation Jump to search
Legacy Version - This page is about a legacy version of AllStarLink. See https://allstarlink.github.io/adv-topics/usbinterfaces/

chan_usbradio is a feature rich DSP radio interface. It requires more CPU than SimpleUSB Channel Driver and therefore SimpleUSB Channel Driver may be a better choice on smaller computers.

You must enable chan_usbradio.so load in modules.conf.


usbradio.conf

usbradio.conf setting are well documented in the configuration file itself:

;
; Usbradio channel driver Configuration File
;

[general]

[usb]
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 additional 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

txctcssdefault = 100.0	; Default TX CTCSS frequency, any frequency permitted
rxctcssfreqs = 100.0	; RX CTCSS frequencies in floating point.  This list is comma delimited. Frequency must be in table.
txctcssfreqs = 100.0	; TX CTCSS frequencies in floating point, any frequency permitted.  This list is comma delimited.  Will follow the RX CTCSS Frequency.
;rxctcssoverride = 0	; Set to 1 or 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 (Active Low)
			; dsp - from RX noise using DSP techniques
			; vox - voice activated from RX audio

ctcssfrom = dsp		; no,usb,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 = 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 = 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

; Audio filters - requires version newer than ASL_1.01
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 = 1           ; Invert PTT: 0,1 
                        ; 0 - ground to transmit
                        ; 1 - open to transmit

duplex = 0              ; Duplex 0,1
                        ; 0 - half duplex
                        ; 1 - full duplex

duplex3 = 0             ; duplex 3 gain setting (0 to disable) 
                        ; when enabled, connects the receive audio from the sound card directly to the transmit audio.

Configuration

Parallel Port

When setting chan_usbradio to use a parallel port for I/O you must set a definition for the port address in rpt.conf:

iobase=0x378     ; Parallel port address (using for cor/ptt & switches +dh-rbi  - 378,278,3bc common Lpt 1,2,3

You must then define the parallel port pins used for I/O in usbradio.conf:

[usb]
pp6=ptt
pp11=cor

Node Number Configuration

When configuring your usbradio node you MUST ensure that the name of the radio is the same in both rpt.conf and usbradio.conf.

Node names are in format of usb_<nodenumber>. Where <nodenumber> = the AllStar Link node of your system. Note that usb and the node number are separated by an underscore (_) character.

Example:

Your usbraido.conf file defines your usb radio as [usb_1000]. Your rpt.conf file would then have:

rxchannel = radio/usb_1000

If you are reusing the usbradio.conf file from an older installation (i.e., ACID), take special note of the change in naming. chan_usbradio may not work without first making this change to your usbradio.conf file.

Sound Card Audio Buffers

On some systems, the sound card driver buffers may need to be adjusted. If you see messages like soundcard_writeframe: Channel usb_1999: Sound device write buffer overflow - used 6 blocks, the number of allocated buffers is not sufficient. Increasing the queuesize may be needed.

The following entries can be added to usbradio.conf.

queuesize = 20              ; number of buffers
frags = 1966092             ; request 30 buffers (fragments) of size 4096

queuesize specifies the maximum number of driver buffers that can be used before reporting a buffer overflow. This value should be 1 less than the number of buffers requested with frags. The default value is 20.

frags specifies the number of buffers and buffer size to allocate. This is a 4-byte value. The first 2-bytes specify the number of buffers. The second 2-bytes specify the size of the buffer. The buffer size is 2 raised to the value specified.

The default frags value is 001E000C hex (1966092 decimal). 001E is 30 decimal. This asks for 30 buffers. 000C is 12 decimal. This requests 2 raised to the power of 12, which is 4096 bytes. The value 1966092 decimal (001E000C hex) requests that the sound card driver give chan_usbradio 30 buffers that are 4096 bytes in length.

The queuesize should always be greater than 1.

Miscellaneous

Parallel Port Pin Numbers

More information regarding numbering of parallel port hardware pins to their software equivalents can be found at Parallel Port Pin Numbers