jks
About
- Username
- jks
- Joined
- Visits
- 27,605
- Last Active
- Roles
- Member, Administrator, Moderator
- Points
- 203
Reactions
-
Audio timing walkabout [FT8 decoder problems solved with tighter limits on audio buffering]
So the problem here is that FT8 has a much greater time synchronization requirement (i.e. "wall clock" time) than WSPR does. The timing of the audio hitting FT8 must match what time the FT8 program is getting from the host operating system within a second or two at most.
The Kiwi produces a delay in the audio stream because it has some buffering. Buffering is required because it is the only defense against latency/interruption issues in the network, particularly when the audio is being delivered by the Internet over long distances with lots of potential points of interruption. So you are already being disadvantaged by the time delay of this buffering to begin with. Any additional cumulative delay by other software behaving badly (e.g. sample rate compensation by the VAC) may push the total timing over the FT8 limit.
One thing you could try is reducing the Kiwi buffer size to reduce the fixed delay. The penalty for doing this is that you will have much less immunity to short-term network interruptions. That means it's important to make sure there are no highly variable latency devices in the path between the Kiwi and computer running the browser, like a WiFi router or a cheap Ethernet switch that might behave badly with heavy traffic on the other ports.
Add "abuf=n.nn" to the URL where n.nn is a number in seconds of the minimum audio buffer size. Start with 0.5 and experiment with a range from 0.3 to 0.8
It would also be interesting to know on the control panel "Stats" tab what the value of the Audio "Qlen" (queue length) is when you are having problems versus what the value is when starting (this value will vary when the abuf= value is changed) -
Preset HPF setting [fixed in v1.454]
v1.453,454 May 14, 2021
Added default passband adjustment to admin page, config tab.
As each passband parameter field is changed (low, high, center, width) the other
fields will be automatically adjusted. So if you know you want a USB filter
with a low frequency of 300 Hz that is 3300 Hz wide just enter those two fields
and the high and width values will be derived. An error message will appear if
you attempt to define an invalid passband.
The former "CW offset" field has been removed. To set your desired CW offset
simply set the default passband center frequency of the CW/CWN mode passbands
to the offset value. E.g. If you want to hear a 1000 Hz tone in the CW modes
set the passbands to have a 1000 HZ center.
After the passband is changed on the admin page, existing user connections will have
to reload the page to get the new passband values.
-
v1.456,458,459
From the CHANGE_LOG file:
v1.455,456 May 19, 2021
Admin page
Config tab: Added button to reset passband fields to default values.
Connect tab: Improved proxy setup UI.
Right-click menu: Added "snap to nearest" mode. Setting is remembered/restored per Kiwi
visited just like freq/mode etc. Waterfall cursor differs when snap mode active.
When snap is active the freq step keys (j/i, left/right arrow keys) are modified so
the ctrl/alt-key steps the smallest amount and the unmodified key steps the same
amount as the snap (e.g. 9/10 kHz on MW). Usually the unmodified key step the
smallest amount.
Changes to more easily support general (even non-SDR) FPGA development.
-
v1.441: camping fixes, AGC CW threshold, audio FFT extension fixes, misc fixes
From the CHANGE_LOG file:
v1.441 March 15, 2021
Audio camping bug fixes:
URL redirect now respects URL camp parameter. More work needed for other cases.
Audio now plays on Safari.
Added separate CW AGC threshold control.
Typically a lower AGC threshold is required for very narrow passband settings to
avoid low sensitivity. Since narrow passbands are most often associated with the
CW/CWN modes it was decided to add a separate AGC threshold control active only in
those modes. The original threshold control applies to all other modes.
The two are stored in their own separate browser cookies.
Fixed bugs in the Audio FFT display (the one that appears in 8-channel mode when more
than two channels are busy, or if the URL "no_wf" parameter is given):
The LSB passband is drawn in the same place as the actual FTT output.
The FFT display bins were flipped to be correct (i.e. low vs high frequency).
Autoscale mode works better than before.
Disabled compression ("comp") button in DRM/SAS/QAM modes since it has no meaning
and effect in these modes.
Fixed shift-click in SWBC bands not selecting nearest 5 kHz boundary.
Fix long audio latency on browsers that display "Click to start OpenWebRX" overlay.
-
v1.440: C-QUAM & channel queueing/camping
From the CHANGE_LOG file:
v1.439,440 March 14, 2021
Channel queuing and camping:
When all the Kiwi channels are busy(*) it is now possible to enter a queue to wait
for the next available channel. The queue is FIFO and multiple parties can
occupy the queue (your queue order will be shown).
If all channels are busy you can also now "camp" on an existing connection and
hear the audio of that channel. The only adjustment is to change the audio volume.
Otherwise you experience all the changes performed by the owner of the channel
(tuning, mode, etc).
You can also be in the queue waiting for your own channel while camping.
It is possible to use camping even if free channels are available by connecting
using the URL parameter "camp", e.g. my_kiwi:8073/?camp
You might want to do this if you know there is already a connection you want to
camp on, but there are also free channels you don't want to unnecessarily occupy.
In theory camping requires only slightly more resources because the audio stream
is simply being duplicated and sent to the camper's network connection.
The Kiwi admin can configure the maximum number of campers allowed, including zero.
Later on we can look at adding audio-related features to camping that only require
browser/javascript resources, hence place no additional load on the Kiwi server
(e.g. S-meter, recording, audio FFT waterfall/spectrum display).
These changes are complex and will no doubt have bugs and corner cases to fix.
(*) or unavailable due to password protection on those Kiwis that have split
public/private channels.
Added C-QUAM AM stereo mode to SAM mode button which now cycles as: SAM/SAL/SAU/SAS/QAM
Based on the work of Github user MaPePeR, see: github.com/jks-prv/Beagle_SDR_GPS/issues/395
Remember that alt-click will toggle the mode buttons backwards, e.g.
alt-click on SAM wraps back to QAM (faster than clicking forward on SAM 4 times).
The same applies to the keyboard shortcut: shift-A is SAM mode forward to SAL
alt-shift-A is SAM backward to QAM.
Apply ITU region selection to band display (e.g. 40m ham band now stops at 7.2M for R1)
It is possible this change will cause problems if extensive customization of
the kiwi.config/config.js file has been made by the user. Please let us know if
this happens to you.
-
Early demonstration of "channel nulling"
Here is a very early demonstration of using the Kiwi's synchronous AM detector (SAM) to subtract one sideband from the other. So a strong on-channel signal that is covering up a weaker one (either on-channel or close by) can be attenuated. This is something I'm tentatively calling "channel nulling". There is much work to be done, but this is at least an existence proof.
In the first image there is a local powerhouse on 882 kHz and a much weaker carrier on 880 kHz can just be seen in the RF waterfall (green arrow).
In the second image "null LSB" has been selected from the new menu on the SAM line of the audio tab (bottom right). This puts the SAM detector in "SAL" (synchronous AM LSB) mode such that the USB component is not passed through to the audio. However, just prior to that the USB component is subtracted from the LSB, and, given the sideband symmetry of AM signals, the LSB is effectively nulled (to a varying degree). In the spectrum display above the waterfall you'll note the weak station carrier 2 kHz away now appears above the noise and, sure enough, a Spanish language station can be heard which was impossible previously.
The "spectrum display" in this case is not the usual spectrum data from the RF waterfall but rather a single-sided spectrum of the audio channel (hence symmetry either side of center). Note that an extension called "FFT" has been selected. This is going to be an expansion of the existing "integrate" extension to include more general audio FFT and spectrum capabilities.
The RF waterfall doesn't change between these two images because it is from the RF/IF path and not the demodulated/nulled audio.
This technique is not perfect. Due to the subtraction involved It depends on excellent USB/LSB signal symmetry which can be easily upset by frequency selective fading. A very common problem on shortwave and medium wave at night (at a time when you're most likely to want to use such a feature). But in the presence of fading the nulling effectiveness will vary and it just might give you the chance to "bag a new one" on MW if conditions are right.
As usual, many thanks to Youssef of AirSpy who recently pioneered this idea. A superior implementation is found in SDR# (the "Co-Channel Canceller" https://swling.com/blog/?s=co-channel). Maybe someday I'll understand how he does it (but probably not, lol).
-
v1.456,458,459
-
possible feature : TUNING lock
I agree. It should work like a browser. I'll update the bug list. There was something similar on there before.Also already on the list is the idea of having the classic A/B VFO buttons and a "band memory". So when you hop between bands using the select band menu it goes to the last selected frequency in the band instead of the mid-point, which is what it does now. -
pub0.kiwisdr.com & pub1.kiwisdr.com
These are from a recent attempt to make a "user preferences" function work. They are required by xdLocalStorage. I tried again about 6 months ago with xdLocalStorage. More recent browser security changes mean the scheme had to be changed once again compared to work that was done some years ago. It quickly got complicated, so I had to set the work aside for the moment.
For those that don't know, user preferences would be an extension that allows you, an ordinary Kiwi user (not owner/admin), to do things like: Setting the default cw passband set to 270 Hz and have that apply to every single Kiwi you ever visit from that point onward. Or the same with keyboard shortcut bindings. Or just about any other user interface customization that could be easily added.
That, plus a real mobile user interface, are the two major missing elements of the software (besides adding an extension to decode your favorite modulation waveform).
-
v1.456,458,459
Short version: Old behavior restored so external apps, including those using kiwiclient et al, should work as before. But Kiwi web interface uses new changes as described below.
v1.459 May 23, 2021
Waterfall / spectrum:
Fixed the CIC compensation added to the last release.
Added waterfall interpolation URL parameter "wfi=N" e.g. kiwi:8073/?spec&wfi=13
Also available as an API parameter on the waterfall web socket: "SET interp=N"
Value N below. Add 10 to enable the CIC filter compensation.
The value below answers the question: "What to do when multiple FFT values
contribute to a single waterfall/spectrum pixel bin". In most cases the FFT
is larger than the 1024 display pixels of the waterfall (or external application).
0 take max (old and continuing server default for kiwiclient, external apps etc.)
1 take min
2 take last
3 do drop sampling
4 take cumulative moving average of values
...
13 drop sampling + CIC compensation (new Kiwi browser interface default)