Simpleusb vs usbradio

Is it possible to use some of the usbradio parameters in simplusb?

For example, the audio filters? rx squelch delay?

; 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

;rxsquelchdelay = 30 ; delayline in ms carrier squelch tail eliminator

or…

;rxaudiodelay = 5 ; rx audio delay in 20ms frames (no effect)

Mainly, when using the ASL node as the local repeater controller, I’d like to be able to remove the squelch crash at the end of a received signal, similar to an audio delay board in an RLC or Scom controller. Also I’d prefer the wider ā€œ1ā€ audio filtering rather than the default ā€œ0ā€ values per the table above from usbradio.conf.

Will these syntax options work in simplusb.conf? Or am I better off using usbradio, even though I simply using RL-20M or RIM-Lite interfaces?

Eric

K2CB

____________________________________________________________________

Setup Information

********** AllStarLink [ASL] Version Info **********

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

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-pi-appliance 1.10.0-1.deb12
asl3-update-nodelist 1.5.1-1.deb12
cockpit 287.1-0+deb12u3
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-wifimanager 1.1.1-1.deb12
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

Inquiry

See https://allstarlink.github.io/user-guide/troubleshooting/ on how to ask a good question to obtain the quickest and best assistance

No, you cannot use them. That's the "simple" part of SimpleUSB. :slight_smile: Use USBRadio. Shouldn't be a problem.

Excellent question, and response. I have the same set-up on two repeaters.

I’ll give USBRadio a try again when time permits. The last time I played with it, I ran into a few strange anomolies.

Thanks for the replies.

Eric

K2CB

Can someone confirm if the audio level calculations in software are different between simpleusb and usbradio, even if the rx or tx boost are set so both modes are using the same boost setting?

For example, on the tx output side, what is the difference in gain between simpleusb and usbradio, and is the tx boost always on for simpleusb? Same question for the rx input - is the rx boost always on for simpleusb?

I discovered that when I switch from simpleusb to usbradio, the rx input audio level drops way down. The tx output level as well, but not as much. Once I had the boost enabled, it seemed as though the levels were not the exactly the same as in simpleusb, and required different values to get to the same rx input and tx output audio levels on the workshop repeater being used for testing on the bench.

Another thing I noticed is that whenever I would attempt to go into the "O" optional menu, if I turned on the rx boost or tx boost, it would also turn on and off the transmitter and receiver pre/de-emphasis settings. I could not change them separately, even though the menus lead you to believe otherwise. They just would not toggle. I actually had to manually edit the usbradio.conf file to disable the pre and de emphasis settings (my test bench repeater is using flat audio in and out, and not discriminator/modulator audio). Once I did that and restarted asterisk, the audio became flat in and out. Then I was able to move on to experimenting with the audio filters and levels.

My main goal in my attempt to switch to usbradio was to be able to use the four audio filter settings, to possibly increase the audio fidelity a little bit, and improve the high frequency roll-off. Once I finally got the levels set properly using usbradio, I did a quick and simple audio frequency sweep from 300-3000Hz and compared levels with those measured using simpleusb. End result, I did not see much improvement, if any. At least not with the few quick frequency point measurements I made.

Can anyone confirm what the default characteristics are for simpleusb? Do they match the four default ("0") 300-3000Hz rx & tx audio filter settings in usbradio? Or are they different?

In the meantime, I went back to simpleusb for now. It is working fine. I just figured it there was a better way, why not try it.

I'll experiment some more when time allows.

Eric
K2CB

SimpleUSB and USBRadio should give very similar levels on incoming audio from the USB interface. Only the rxmix settings should affect that, and the CM1xx has loads of gain thus low local Rx levels should never be an issue. In the local Tx direction levels should now be pretty much exactly what come in over IAX, but those levels typically vary from -10 to -4 dBFS peak from various other nodes/systems. This will then result in eg. -10dBFS levels out of SimpleUSB if that’s what’s coming in from remote connected nodes, which is not ideal as the URI may be capable of 3Vpp to a radio modulator input but < 1Vpp actually goes out. USBRadio has the txboost option, which will add 6dB boost if txboost=yes OR if txmix[a/b]=composite. Combined with txprelim=yes or txlimonly=yes this will nicely smooth out incoming levels a bit and bring things closer to -4dBFS.

With USBRadio it is advised to use ā€˜1’ for the 4 rx/tx hpf/lpf settings. This should give a very clean and even response from 250 - 3.3KHz (-3dB), and a wider fuller response than SimpleUSB, though I have not personally confirmed what the response looks like on SUSB.

Thanks for the feedback,

I did notice that the audio levels varied when switching from SimpleUSB to USBRadio (all settings being equal), but I was doing multiple things at the time. I will dedicate some bench time to methodically compare the two methods and report back with my findings.

Eric
K2CB

I had some time this evening to experiment and compare usbradio to simpleusb, using the same repeater rx & tx, and the same usb audio interface.

Both channel drivers were set for speaker (line) audio and no de-emphasis or pre-emphasis in ASL. That is being handled in the repeater (a Motorola SLR5700).

Using the interface tune menu tx audio level with the transmit test tone toggled on, I measured the 1k test tone on a service monitor. Both simpleusb and usbradio were set to the same value of 500. Both resulted in an identical 3.0KHz deviation measurement on the COM120B.

I then injected a -40dbm 1k tone 3KHz deviated signal into the receiver. Simpleusb was set for a rx level of 500, which resulted in the receiver level arrow right at the 3KHz marker. When I switched to usbradio, I needed to increase the rx level to 750 in order to get the level indicator to the same 3KHz marker indicator.

Now hear is where it gets interesting..........

I used the R menu option to monitor the rx audio statistics.

With both channel drivers set for the 3KHz bar graph reading, I noticed that the same test tone, or even an average transmitting station for that matter, would result in an average max reading of -15 dbFS, with peaks around -10 dbFS while using simpleusb.

With the same test signals, usbradio would result in an average max reading of -10 dbFS or higher (closer towards 0), while the peaks wee around -2 to -4 dbFS.

I can only conclude that the AGC or other characteristics must be different between the two channel drivers.

Performing some simple audio tone tests in the 300-3000Hz range, I noticed no real difference in levels down around 300Hz, but at 3000Hz, there was about a 0.5KHz deviation increase from simpleusb to usbradio, confirming the better high-end frequency response. When using the echo test utility, my echo'ed audio in simpleusb always seemed to sound a little flatter and lacking a little, whereas with usbradio the echo;ed audio sounded much more closer to the original transmission, seeming to have more "sparkle" to it.

I then proceeded to convert three of my nodes over from simpleusb to usbradio. Further testing revealed another possible issue........

I have my nodes set for mode "0", using them as links on port three of SCOM 7330 controllers. The controllers are programmed to mix audio from all ports (no receiver priority).

I also have "linktolink" set to yes, so that the links are somewhat full duplex. This has been working great to hear when different repeater sites are doubling (or now mixing), and making it possible for users to hear when it occurs, unlike the old days of simplex rf link radios.

However, once I switched the three sites from simpleusb over to usbradio, it appears it broke the "linktolink" full duplex action.

For example, if I use the "V" option in the interface tune menu to monitor incoming ptt and outgoing cos/pl activity, while in simplusb mode, if the local node is receiving cos activity and sending audio out to the net, if another node keys up and sends traffic, the local node's ptt will go active, and the local repeater will transmit both the local and remote user's audio. Likewise, if the ptt from remote traffic is already active, and the local receiver raises cos & ctccs, the local and remote node audio will mix.

After switching to usbradio, with all else being equal (no changes in rpt.conf), now, if the local cos & ctcss inputs are active, the remote node traffic will no longer raise ptt active and mix the remote audio with the local audio. Likewise, if the ptt is already active, if a local user keys up, the cos will NOT go active (athough the ctcss WILL go active, but both are needed as configured for the COS OUT to become active) and the local audio path will not turn on and be sent upstream to the network (to other nodes).

It appears usbradio is not allowing "linktolink=yes" to function as expected.

Eric
K2CB

1 Like

With your above settings, yes Tx levels to the URI should be identical for both channel drivers.

Re. linktolink duplex, do you have duplex=1 in usbradio.conf?

Rx levels into USBRadio are currently an undocumented mystery. SimpleUSB true to its name uses only the rxmix conf setting and thus you end up with exactly the Rx level you expect. USBRadio however has that and also RxVoiceAdj, which is somehow also factored in, possibly in ā€˜adjusting’ the actual CM1xx rx mix setting, and/or in scaling audio after received from the URI. The audio calibration functions in the radiotune menu are not at all clear about the relationship of rxmixerset and RxVoiceAdj, and do not work reliably, sometimes requiring the utils to be run several times and manually editing RxVoiceAdj in the .conf file to get the gains where they need to be. It’s on my list to fix all this but I may not get it for another month or two.

Re. frequency response, other than high and low pass filtering, SimpleUSB should be passing the audio through unmodified, whereas in some limited testing I saw some significant discoloration and degradation in one case by USBRadio, but still need to do further testing of that with various config setting options. Audio Filters - AllStarLink Manual has some more details on the response of the different rx/tx filter options.

Hi David,

I overlooked the duplex= setting in USBRadio, being I did not have to set that parameter in SimpleUSB, simply relying on the duplex setting in the node stanza section in rpt.conf.

I just changed the duplex= from 0 to 1, and tested a few of my nodes, and now things are working as before (user audio from the nodes mix with each other). Thank you for pointing that out.

To your point about the USBRadio audio settings being a mystery - in SimpleUSB, I have found that you can make an audio parameter change, and the change takes effect immediately. In USBRadio, most of the parameters (other than the tx and rx levels) seem to need a restart of asterisk in order to take effect. The "o" options menu seems to be quirky at best. Some of the items toggle the change, some do not, requiring a manual edit of usbradio.conf, followed by a restart, and then they show up as changed in the interface tune menus.

I do like the audio frequency response and overall quality better using USBRadio with the four filters set to "1".

That, and in instances when using the node itself to fully control a repeater, rather than connecting the node to a traditional multi-port repeater controller, the rxsquelchdelay is a necessity to remove squelch tail clicks (in the absence of the controller's audio delay circuit).

If we could get those two items (audio filters and rxsquelchdelay) in SimpleUSB, there would be almost no reason for me to use USBRadio, as most of the other settings are either of no use, or are not supported by the non-dsp usb radio interfaces (Repeater Builder, Master Comm, etc.).

I have to say, listening to users on my system the past day or so using USBRadio with the audio filters tweaked to "1", the audio is as good as the link radios I used prior to migrating to voip links.

I was not aware of the RxVoiceAdj setting having an effect on the receiver audio input; I was not sure what exactly it would affect and had not played with it yet. I will have to experiment with it and see if I can find a value where it would allow the RX level setting to be the same between SimpleUSB and USBRadio, unless in the meantime, someone can chime in with a recommended value to get to that point.

Eric
K2CB

Re. any issues you see with asl-menu I would suggest opening an issue report at GitHub Ā· Where software is built Allan is pretty quick to fix any issues with that once they are reported with clear steps how to reproduce. In general though editing the .conf directly is often the simplest and most direct way to confirm the settings you want for a specific channel driver. Asl-menu is great for general node setup functions but it can only go so far in providing menu options for every parameter and clear explanations of what each setting does.

And I do generally recommend USBRadio and don’t really see the point of SimpleUSB as it doesn’t do anything that USBRadio doesn’t, omits some useful features, and just results in unnecessary code duplication. With some reorganization and a few added comments in usbradio.conf (ie. put the commonly used parameters first then the lesser used parameters lower in the file) it wouldn’t be any harder to configure for simple use cases than SimpleUSB is. And to clarify, all URIs I know of do support flat audio and all of USBRadio’s features.

After some test bench measurements, I determined that setting the RxVoiceAdjust to 1.0000 results in the rxmixer levels being the same in both USBRadio and SimpleUSB to achieve the same 3KHz bar graph level with a given test signal. Also confirmed using the Echo Test, generating a 3KHz signal, then measuring the playback on the service monitor.

I noticed that any time a rxmixer level change is made in the tune menu and written (W), the RxVoiceAdjust also gets over written in usbradio.conf along with the new rxmixer value, and always seems to default to 0.50000. I had to manually set it back to 1.0000 each time I changed the rxmixer value via the menu.

I changed a few of my nodes over to USBRadio and set the rxmixer value to the same value I originally used in SimpleUSB, along with manually setting the RxVoiceAdjust to 1.0000. I then confirmed the levels were the same.

They sounded fine for a day or so, but after listening to them today, the rx audio seemed to drop down. I verified that the settings in USBRadio.conf stayed the same, but something definitely changed in the running config, with system users complaining that the audio levels dropped. I have switched back to SimpleUSB for the time being.

It also seemed like at times that while the peak deviation was the same between SimpleUSB and USBRadio after the above settings, the average audio level seemed to be lower in USBRadio when user were speaking, almost like there was some sort of AGC or gain control taking place in SimpleUSB that was not there in USBRadio.

Two settings in USBRadio that I have not figured out yet are
fever = 0
and
txslimsp = 12000

Especially txslimsp. It would just randomly show up in USBRadio after only re-adjusting the rxmixer value. I would delete it, and after the next change via the menu, I would see it re-appear in usbradio.conf.

Is there any sort of documentation the fully explains all of the available settings in USBRadio? I tried searching but could not find anything other than a few simple help pages. Nothing too techical or mentioning the more advanced settings.

I will test some more as time allows.

Eric
K2CB

That is very good information. RxVoiceAdj defaulting to 0.5 (-6dB) instead of 1 would explain why that often needs to be manually edited in the .conf file to get audio levels back up where they should be. And I had not seen txslimsp ā€œTX soft limiting setpointā€ in the .conf file before, looks like app-rpt was changed in the recent past to write that value there, presumably to allow the value to be set to a non-default setting and stay set there. It defaults to 12000 which is -8.5dBFS. This could be the key to get USBRadio output levels a bit higher and thereby use the full dynamic range of the URI DAC. From the small amount of testing I’ve done on USBRadio the limiter seems to be very effective and getting audio above that ~-8.5dB is almost impossible. Therefore if you were to change txslimsp to something more like -3dBFS, which equates to 2^15 * 10^(-3/20) = 23198, and set txboost=yes, your tx levels should then be about 5.5dB louder (or maybe a bit less if the incoming IAX levels are < -9dBFS), and the chance of any clipping should be very minimal, though you would want to listen carefully and test with as loud of incoming IAX audio as possible and make sure there’s no distortion or crackling. (The txboost 6dB is applied prior to the limiter.)

As for ā€œfeverā€ that seems to be used in only one place in xpmr.c:pmr_rx_frontend(), has zero documentation in the code, doing something with a buffer size in frontend Rx lowpass filtering/squelch detection, but the variable does not appear to actually affect any audio.