The KiwiSDR 2 online store is open for orders! Please visit
Today's v1.694 update is hopefully a working version of the failed v1.691,692 release of a few days ago.
See the first post of the "v1.694" thread below for the CHANGE_LOG notes.
Please visit (documentation) and (online store)



Last Active
Member, Administrator, Moderator
  • 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.694 [hopefully a working version of the failed v1.691,692 update]

    From the CHANGE_LOG file: (part 3/3)

      Admin config tab: (thanks Tremolat, G8JNJ, Ben, et al)

        New checkbox "Show user names to user connections". When checked will show "(private)" in

        place of usual user name displayed in the user tab of the main control panel. The user name

        is still shown on the admin status tab and /users URL query.


        New "initial value" menus for audio compression, display setup and option bar.

        (thanks HB9TMC, N6GN)


        By special request: Checkbox below WF cal slider to disable the automatic correction

        that is applied to the WF-min slider (3 dB per zoom step). It is not recommended that you

        set this option as it causes undesirable results. But it also provides a good learning

        opportunity why 3 dB correction is needed every time the WF bandwidth changes by 2x.

        Think SSB vs CW filters and why a narrower filter has a lower noise floor.


      Admin webpage and public tabs: (thanks ZL2LD)

        In an effort to simplify things there has been a general rearrangement and elimination of

        duplicate fields on the webpage and public tabs:


        1) The lat/lon, grid square and altitude fields have been removed from the public tab.

        When publicly registering a Kiwi these values are now taken from the webpage tab where they

        were duplicated. So there is now only one place where you need to set these values.

        See below for an explanation of the new "continuous update" feature.


        2) The admin email and antenna fields have moved to the webpage tab where they more

        properly belong.


        3) There remain two separate "location (name)" fields on the webpage and public tabs.

        Because you may want different location content to appear on the user page top bar

        versus what's displayed on your public listing.


      Marine mobile grid square and lat/lon tracking: (thanks S50SVM/MM)

        All of the lat/lon and grid square fields now have the ability to be continuously updated

        by the GPS. So this includes the fields on the admin webpage tab as well as the FT8 and WSPR

        extension tabs. Previously this only existed for the WSPR tab. Although all the grid and

        lat/lon fields had (and continue to have) a button to do a one-time update from GPS.


        Setting continuous update will cause the values displayed on the user page top bar, public listing, /staus query etc to update as the GPS returns a new location.

        In addition the updated values are used for FT8 and WSPR spots.


        For FT8/WSPR autorun when continuous update is active the grid is added to all the user

        lists where the decode count is shown. So for example in the user tab the previous

        "(N decoded)" becomes "(N decoded, GRID)". And when preemption is enabled for an autorun

        "(N decoded, preemptable)" becomes "(N decoded, GRID, pre)".

      SNR measurement:

        Measuring SNR on-demand will now work even though the periodic "SNR measurement interval"

        setting on the admin control tab is set to "disable". On-demand means the "Measure SNR now"

        button on the admin control tab or use of the "/snr?meas" control URL.


      Fixed the anti-HFDL monitoring countermeasure so it does not exclude the 80m ham band.

    (end of document)

  • v1.683

    From the CHANGE_LOG file:

    v1.683 May 30, 2024

      Antenna switch: Fixed problems with Arduino Netshield backend script. (thanks N8OOU)

      CAT interface: Removed newline characters (\r\n) from end of each transmitted CAT string

      because it was reported to cause problems with some CAT software. (thanks DF6DBF)


      DX community database: UNID FSK signal at 61.84 is Inskip GBR. (thanks HB9TMC)

      Added entries to satellite table for Galileo gsat0227 and gsat0225 launched 2024-04-28 and

      currently under commissioning. (thanks F4FPR)

      We have now formally purchased a license to use the Kiwi logo from Hayes Roberts at Previously we had an informal agreement with Hayes where he allowed us to use

      the logo provided we always included the domain text "" wherever the logo was used.

      By purchasing a licence we can now remove the text and make uses of the logo look a bit cleaner.

      Big thanks to Hayes for giving the KiwiSDR its logo identity recognized by SDR enthusiasts

      around the world.

  • 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:

        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" Maybe someday I'll understand how he does it (but probably not, lol).

  • This is why we can't have nice things

    v1.689 (and later) has countermeasures against the "botnet".

    v1.690 (and later) is necessary for your Kiwi to resume using the proxy service.

    These updates will happen automatically overnight (local time) unless you've disabled automatic updates. You can manually update by going to the admin page "update" tab and clicking "build now" and waiting 30 minutes or so for the build to complete. Your Kiwi will restart when the build is complete.

  • This is why we can't have nice things

    Don't start multiple threads about the botnet topic. They will be deleted.

    The proxy service has been disabled because the money (for which I am not compensated) is now flying out of my back pocket:

    I will try and develop a fix in the code to better identify and remove these connections.

    Update: The proxy service has been re-enabled if you're running v1.690 or later.