jks

About

Username
jks
Joined
Visits
36,197
Last Active
Roles
Member, Administrator, Moderator
Points
638
  • Alpha (RSDN-20) navigation: Krasnodar, Novosibirsk, Khabarovsk active

    The most common three Alpha stations are currently active. ID'd by their relative timing using the Kiwi FFT extension with Alpha integration preset. Heard on Kiwi in Finland, Tambov and Khabarovsk.


    HB9TMCF5AFYsmgrz3dvp
  • Tech Minds YouTube review questions #1

    Questions from the Tech Minds YouTube review:

    It only goes up to 30MHz?

    Yes, it was designed as "shortwave" receiver covering 10 kHz (VLF) to 30 MHz (32 MHz with reduced specs). It is possible to use a downconverter ahead of the Kiwi to cover VHF/UHF and a number of public Kiwi owners have done just that. See here: non-HF Kiwis


    I’ve connected my kiwi sdr but it does not show only says “No KiwiSDR(s) found for your public IP address”. Does anyone has the same problem? How to solve this?

    The my.kiwisdr.com page will only show information about your Kiwi if the network your Kiwi is attached to has a connection to the Internet at the time it starts up. Also, that network must have a DHCP server to assign a local IP address to the Kiwi. Try restarting the Kiwi. Our documentation describes other methods for determining the local IP address including decoding the pattern blinked out by the 4 blue LEDs.


    Why does it not have wifi, so we can cut down on the cord clutter and make better placement choices?

    The BeagleBone Green we used back in 2016 did not include WiFi. There is something called the BeagleBone Green Wireless, but it is not physically compatible with the Kiwi board. Instead, we recommend using a TP-Link TL-WR802N WiFi nano router which can plug directly into the Kiwi's Ethernet connector and your WiFi network. It requires minimal configuration and none on the Kiwi side if you use DHCP to assign the Kiwi its local IP address. Future products will definitely include WiFi.

    jimjackiistudentkranitroenginejolo22
  • v1.806

    From the CHANGE_LOG file:

    v1.806 March 12, 2025

      Let DRM extension kick preemptable channels so it can run. (thanks VK6KCH)

      SSTV extension: Fixed Robot B/W modes and added R36-BW. (thanks N1NKM)

      Fixed "continuous update from GPS" of admin webpage grid/location fields. (thanks JQ6LIA)

      TDoA extension: Flag sampling hosts as having low GPS resolution (but not doing this just yet).

      Fixed more cases of failing to restart proxy client when proxy configuration changed.


    TremolatG4ZFEHB9TMCnitroengine
  • v1.707

    The new git "rebase" I'm working on reduces the size of the Kiwi repo by about 90% to 55 MB. So that should fix this problem.

    SM7IUNrz3dvpsmgjolo22
  • Forum rules and etiquette

    Bump. You know, for the incoming shit-storm.

    Nate_Rsmgquadkanixnitroengine
  • 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.

    HB9TMCstudentkranitroenginejolo22
  • 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.

    IK8SUTnitroenginestudentkrajolo22
  • v1.456,458,459

    v1.457,458 May 21, 2021

      Waterfall / spectrum:

        Fixed low-level post-FFT artifacts spotted by Marco's SuperSDR app. Thanks Marco!

        Added CIC filter compensation to better level spectrum at top end.

       

      FAX extension:

        Added GM-11F Sevastopol 7090.9 kHz per fabrys on Kiwi forum. Thanks fabrys!


    njcHB9TMCUR5VIBfabrys
  • v1.820

    From the CHANGE_LOG file:

    v1.820 August 18, 2025

      TDoA extension: (thanks UDXF forum)

        Fixed problem with sampling hosts not consistently appearing on result maps.

        Added new checkbox: Show "TDoA map with hosts". This causes the "... with hosts" result map

          to always be shown at the end of a run rather than the default "... no hosts".

       

      Connections to URLs of the form "kiwisdr.local:8073" work again. (thanks nitroengine)


    nitroengineHB9TMCG4ZFE
  • About Python KiwiClient [Kiwi API question]

    The Kiwi protocol requires the client to send "keep alive" messages at least once every 60 seconds. Otherwise it is assumed the client (Javascript in the browser usually) isn't really running even if the web socket connection is still open for some reason. This had to be done in order to prevent connections from remaining open for long periods of time even through no one was really there. If no keep alive is received the connection is closed.

    I don't know if it helps, but I was able to make web socket connections and send Kiwi commands and receive Kiwi sound and waterfall binary data using a program called websocat (web socket concatenate). See: https://github.com/vi/websocat There are binaries available for Windows, Linux and Mac and I was able to run the Mac one without problems.

    So, to connect to a Kiwi and get sound data do something like this from the Mac command line:

    cat snd.ws.txt | websocat_mac -n ws://my_kiwi:8073/12345678/SND

    Where my_kiwi is the name of the Kiwi and the file snd.ws.txt contains these commands to send to the Kiwi:

    SET auth t=kiwi p=

    SET AR OK in=12000 out=44100

    SET squelch=0 max=0

    SET genattn=0

    SET gen=0 mix=-1

    SET ident_user=kiwirecorder.py

    SET mod=am low_cut=-5000 high_cut=5000 freq=7550.000

    SET agc=1 hang=0 thresh=-100 slope=6 decay=1000 manGain=50

    SET keepalive

    12345678 is a number and needs to be unique for each connection (hence a timestamp in msec). The websocat -n argument keeps the connection to the Kiwi open after all the commands in the file are sent. But note the connection will still close because additional SET keepalive commands are not being periodically sent.

    What you will receive from the Kiwi will be a combination of messages and data looking something like this:

    MSG client_public_ip=[your public ip address as seen by the Kiwi]

    MSG rx_chans=4

    MSG chan_no_pwd=0

    MSG chan_no_pwd_true=0

    MSG is_local=0,1

    MSG max_camp=4

    MSG badp=0

    MSG version_maj=1 version_min=447

    MSG load_cfg= (large amount of configuration data omitted)

    MSG center_freq=15000000 bandwidth=30000000 adc_clk_nom=66666600

    MSG audio_init=1 audio_rate=12000 sample_rate=12001.062106

    MSG stats_cb={"ct":4633,"ce":0,"cf":1000,"cc":0,"cu":[51],"cs":[49],"ci":[0],"ac":0,"wc":0,"fc":0,"ah":0,"as":0,"sr":12001.062106,"ga":0,"gt":0,"gg":0,"gf":0,"gc":66.665900,"go":0,"gr":"RF82ci","ad":0,"au":0,"ae":0,"ar":0,"an":4,"an2":32,"ap":[0,7439,0,0],"ai":[0,2121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"sa":9,"sh":9,"tu":"04:04","tl":"17:04","ti":"NZDT","tn":"Pacific%5c%2fAuckland"}

    SND [binary sound data]

    SND [binary sound data]

    ...

    You can do something similar for the waterfall with the command line:

    cat wf.ws.txt | websocat_mac -n ws://my_kiwi:8073/12345678/W/F

    And the wf.ws.txt file:

    SET auth t=kiwi p=

    SET zoom=0 cf=7550.000000

    SET maxdb=-10 mindb=-110

    SET wf_comp=0

    SET wf_speed=1

    SET ident_user=kiwirecorder.py

    SET keepalive

    And you'll receive the waterfall data:

    MSG rx_chans=4

    MSG chan_no_pwd=0

    MSG chan_no_pwd_true=0

    MSG max_camp=4

    MSG badp=0

    MSG version_maj=1 version_min=447

    MSG center_freq=15000000 bandwidth=30000000 adc_clk_nom=66666600

    MSG kiwi_up=1 rx_chan=0

    MSG extint_list_json=%5b%22colormap%22,%22cw_decoder%22,%22devl%22,%22DRM%22,%22fax%22,%22FFT%22,%22fsk%22,%22IBP_scan%22,%22iframe%22,%22iq_display%22,%22loran_c%22,%22navtex%22,%22noise_blank%22,%22noise_filter%22,%22sig_gen%22,%22S_meter%22,%22SSTV%22,%22TDoA%22,%22timecode%22,%22wspr%22%5d

    MSG wf_fft_size=1024 wf_fps=23 wf_fps_max=23 zoom_max=14 rx_chans=4 wf_chans=4 wf_chans_real=4 wf_setup

    MSG zoom=0 start=0

    MSG wf_fps=1

    MSG request_dx_update

    W/F [binary waterfall data]

    W/F [binary waterfall data]

    ...

    This discussion is not complete because we need to talk about the parameters for the various SET commands and also the content of the returned binary data. These details are all handled by the kiwiclient / kiwirecorder Python code and that's why you should really try and make an effort to understand it.

    bayUR5VIBF5AFY