- Last Active
- Member, Administrator, Moderator
The S-meter code is literally:
Where I and Q are the two quadrature components (complex number) of the audio signal after passband filtering. So it contains all the data you see (and hear) within the yellow passband area on the waterfall, except that the actual data is coming from the audio path not the waterfall path. So it doesn't have anything to do with the spec plot. The spec plot is just the waterfall data plotted in a non-scrolling way (as a 2D graph).
s_meter_power = I*I + Q*Q s_meter_dBm = 10.0 * log10(s_meter_power / SND_MAX_VAL) s_meter_value = an_averaging_function(s_meter_dBm)
It's easy to forget because they both typically tune together. But the audio and waterfall are two entirely independent DDC (digital down conversion) receivers. You can re-tune the waterfall to go look at a completely different part of the spectrum without effecting the currently received audio. So a "4-channel" Kiwi is actually an 8-channel DDC SDR. This is why the unbalanced FPGA configurations are possible, i.e. rx8_wf2. The lack of waterfall on the other 6 audio channels is made up for by the audio FFT computed on the browser basically for free.
I didn't have time yesterday to elaborate. The answer is no because to work at all in the real-time Kiwi environment the FFT's in the WSPR algorithm had to be spread across the two minute sampling interval so as not to load the Beagle cpu too much. But this means the required data is not available at the right time to perform the two-pass algorithm where the entire result must spectrally subtracted and the decode performed again. One possibility is to recode the algorithm again from being the standard WSPR 2 minute pipeline delay to a 4 minute pipeline. It could be done but you'd have to rewrite everything completely. There would be an extra delay in reporting results to wsprnet.org but that shouldn't matter.
Another possibility is for multicore architectures to use the original WSPR algorithm, 2nd pass and all, but force it to run on cores other than zero so as not to disturb Kiwi realtime. This is probably easier, but still a lot of work.
The devil is always in the details. Particularly with this project.
So there has been significant port scanning of kiwisdr.com recently. For example, over the last 24 hours 173 thousand scan requests were made by a single ip address from China. Also from a Digital Ocean server farm in the USA.
Some of these scans occur on the proxy ports. If the URL or packet data is particularly pathological it might trigger bugs in the proxy server code (e.g. buffer overruns). This could explain the looping and crash/restart behavior we've seen in the last several days.
Rather than try and debug the proxy code (which we didn't write), and cause significant additional proxy downtime, it was easier to strengthen our existing firewall filtering rules. Port scanning is now more reliably detected and the associated ip addresses banned.
We will closely monitor the situation and see how effective the new rules are.