SuperSDR: multiplatform KiwiSDR + CAT transceiver integrator

Overview

SuperSDR

SuperSDR integrates a realtime spectrum waterfall and audio receive from any KiwiSDR around the world, together with a local (or remote) controlled CAT transceiver. There are three main items that may be independently controlled:

  • the KIWI WATERFALL, that may be linked to the CAT radio or to the mouse/keyboard tuning;
  • the KIWI RECEIVER, that may be tuned everywhere on the HF bands;
  • the CAT radio that serves as the main tuning method.

All three may be strictly intelinked, or set up separately depending on the operating convenience:

  • the WF is usually tuned by the VFO on the CAT radio to serve as a panadapter and the KIWI RX may be turned off if not necessary;
  • the KIWI RX may be tuned on a secondary frequency with keyboard and mouse or with the VFO, then the CAT radio is unlinked from the RX and is free to explore other frequencies;
  • the RX and the CAT radio are both active on different frequencies while you can explore the bands moving around the WF window and its span. In the future I plan to support multiple KIWI channels both for the WF and the RX.

SuperSDR in action

Prerequisites:

Install Python 3 along with PYGAME, PYAUDIO, MATPLOTLIB and NUMPY/SCIPY, or whatever it asks when breaking apart upon launch ;) If you use Linux I hope I don't have to tell you how to install librearies and Python components: I presonally use a Arch based distro and pip to keep everything updated.

On Windows:

There is now a preliminary Windows executable thanks to Giovanni Busonera. This version doesn't need any library nor Python environment. The Windows executable will always lag a bit during the development.

I don't personally use Windows, but a beta tester let me know that you can run it there:

  • Install miniconda and the proposed version of Python (3.8)
  • Now open the miniconda powershell to install the packages as below:
    • conda config --add channels conda-forge
    • conda install pyaudio
  • then use pip on a powershell:
    • pip install numpy
    • pip install scipy
    • pip install matplotlib
    • pip install pygame

Use:

SuperSDR tutorial

There is now the possibility to launch the program with no command line options and select the kiwi server at the start or change it at runtime (still buggy, but it mostly works). To use the CAT, at least for now, you have to specify it from the command line.

To launch the program:

./supersdr.py --kiwiserver 192.168.1.82 --kiwiport 8073 -z 9 -f 198 -w password

to just explore your local kiwisdr, or:

./supersdr.py --kiwiserver sibamanna.duckdns.org --kiwiport 8073 -S 192.168.1.89 -P 4532 -z 9 -f 198

to connect to a remote kiwi AND to a local CAT radio for which rigctld is running on the server located at 192.168.1.89.

Just use --help to show all available command line options.

Main key commands during use are shown by pressing H or moving the mouse to the HELP label on the bottom right.

When connected to both a kiwisdr and to a CAT radio any click on the waterfall synchronizes the radio and, vice versa, moving the VFO on the radio, changes the tuning on the waterfall causing the WF window to follow when outside the span.

Have fun!

73, marco / IS0KYB

Comments
  • password - time limit override

    password - time limit override

    I issue the following command to start (password changed below)

    Connection is stated ok and rigctld work as expected but the timelimit override password does not work - it times out

    supersdr.py -w xxxxxxxx --kiwiserver vk6qs.proxy.kiwisdr.com --kiwiport 8073 -S 127.0.0.1 -P 4532

    On the same kiwi this http works fine

    http://vk6qs.proxy.kiwisdr.com:8073/?password=xxxxxxxx

    opened by mshurmer 4
  • run error

    run error

    $ python3 supersdr.py --kiwiserver 192.168.1.86 --kiwiport 8073 -z 9 -f 198
    pygame 1.9.6
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
      File "/home/dan/inst/supersdr/supersdr.py", line 47, in <module>
        sdrdisplay = pygame.display.set_mode((disp.DISPLAY_WIDTH, disp.DISPLAY_HEIGHT), 
    TypeError: 'vsync' is an invalid keyword argument for this function
    
    opened by ok1hra 2
  • error on windows 10

    error on windows 10

    Hello - I get the following error when starting

    C:\Users\mshur\Downloads\WinSuperSDR\WinSuperSDR>supersdr.exe v pygame 2.0.1 (SDL 2.0.14, Python 3.8.5)

    Please enter: hostname [port] [password] vk6qs.proxy.kiwisdr.com vk6qs.proxy.kiwisdr.com 8073 8 14200 KiwiSDR Server: vk6qs.proxy.kiwisdr.com:8073 Zoom factor: 8 Actual frequency: 14141.407012939453 kHz Trying to contact vk6qs.proxy.kiwisdr.com... Socket open... Waterfall data stream active... Starting to retrieve waterfall data... 14200 USB 30 3000 Trying to contact server... Audio data stream active... Filling audio buffer... kiwi sound not started! server closed the connection cleanly Traceback (most recent call last): File "supersdr.py", line 295, in NameError: name 'exit' is not defined [6576] Failed to execute script supersdr

    opened by mshurmer 2
  • Should auto select the proper modulation for the given band.

    Should auto select the proper modulation for the given band.

    The application should provide an 'AUTO" mode to auto select the modulation, i.e.:

    • "AUTO" mode is selected
    • frequency is 7100, LSB is selected
    • frequency is switched to 14100, mode should switch to USB

    "AUTO" is disabled if the operator manually change the mode.

    opened by mgaggero 1
  • New useful features

    New useful features

    Hi, I'm using the SDR with the new features and it looks fantastic. I don't wanna bother you, but I think that some other features could be useful and can increase definitely the donation rate :-). I identified these most important ones (in my opinion):

    • make the filter passband variable
    • show the current frequency of the mouse pointer
    • enabling the mouse wheel for zooming

    Thank you again, Bye Giovanni

    opened by Strato75 1
  • Volume control and S-meter features

    Volume control and S-meter features

    Hi, this project is outstanding but in my opinion, adding a volume control and the S-meter could make it perfect :-). Is it possible to add those features? Giovanni

    opened by Strato75 1
  • New API for Kiwi v1.359+ to reduce waterfall artifacts and enable spectrum leveling (CIC comp)

    New API for Kiwi v1.359+ to reduce waterfall artifacts and enable spectrum leveling (CIC comp)

    opened by jks-prv 0
  • Mute if radio is transmitting

    Mute if radio is transmitting

    Hello,

    Would it be possible to have the audio mute if the radio connected by CAT is transmitting. I think you might have looked at this as an option some time ago. Thanks

    Matt

    opened by mshurmer 1
  • Frequency

    Frequency

    Nice piece of software, tracks my K3 and gives me real time waterfall.

    Some minor problems: CW frequency is given as the bfo frequency, not the carrier frequency so my K3 is off by the sidetone. Ok on SSB and AM.

    Ideally software should use defaults on startup, eg kiwisdr.local:8073 and rigctld on localhost:4532

    The connection to dxcluster is superfluous and are better served by other software.

    73 de Olaf - LA3RK

    opened by la3rk 2
Releases(v3.14)
  • v3.14(May 20, 2022)

    Several bugs fixed, notably:

    • audio buffer now works as it should, no more clicks and pops;
    • pulseaudio stream now closes correctly when changing server or disabling second rx (thanks Luigi Pacella);
    • private kiwis are accessible now;
    • workaround for hamlib bug vfo a/b and cleaned some code;
    • fixed the EIBI labeling behavior;

    New features:

    • QRZ.COM lookup now on by default within the logger;
    • dynamic window resize;
    • added ADC overflow indicator;
    • improved visuals.

    --> Windows executable added

    73, marco IS0KYB

    Source code(tar.gz)
    Source code(zip)
    WinSuperSDR_3.14.zip(63.17 MB)
  • v3.13(Mar 31, 2022)

  • v3.12(Mar 9, 2022)

  • v3.11b(Feb 21, 2022)

  • v3.11(Feb 18, 2022)

    Hi, big release for a smallish 0.01 version difference! I just added the Logger subsystem so you can log new QSOs interactively and search for old ones. It saves data in a simple and human readable/editable log file: no databases! Even if you have a log with 100K QSOs it will be something like 10MB... The graphical interface has been optimized and several small bugs corrected: now the red/green colors of the MAIN/SUB RX make sense. There is still something to do when CAT is active. The logger dialogs use TKinter, so a new dependence... sorry, it would have been really ugly to implement them in SDL/PYGAME from scratch. I'll convert the KIWI selection dialog too in the near future.

    SLOW/FAST tuning mode is now usable by pressing CONTROL/SHIFT and the arrows. I also lowered the CW pitch to 500Hz, if you don't like it, just change the constant value in the utils python file ;)

    Enjoy!

    Source code(tar.gz)
    Source code(zip)
  • v3.1(Feb 15, 2022)

    Hi, this version should be stable. I fixed bugs regarding:

    • the memory system,
    • the audio recording system,
    • the audio buffer size, and the desyncing over long times due to fractional audio sampling of the kiwis,
    • much improved DXCLUSTER client and spot management/visualization (new colors showing spot age),
    • new command line option to increase window size (1920 goes full screen),
    • deep code cleanup,
    • sub-khz resolution for command line frequency,
    • improved s-meter behavior.
    • added the possibility to disable the DXCLUSTER client without losing the accumulated spots (P shortcut).

    Enjoy!

    73, marco / IS0KYB

    Source code(tar.gz)
    Source code(zip)
  • v3.0beta(Jan 31, 2022)

  • v2.1(May 23, 2021)

    Hi! Introducing several new features and bugfixes.

    • The main new feature is dual receive from the same or from two different kiwis. To activate it on the same kiwi, just press Y at runtime, pressing Y again switches A/B VFOs. You can independently change all RX parameters and audio volume. To turn off the second receiver, you may either press M to mute it or press SHIFT-Y. To activate the 2nd RX from a different kiwi, just press Q (to select a different kiwi) and it will be stored in the permanent Kiwi repository saved to disk. Now that your different kiwi is stored with a number, lets's say NUMBER 1, you can activate the 2nd rx by pressing Q, then R1 and ENTER. Now pressing Y will contact the nr. 1 receiver and open it as the 2nd rx;
    • Another cool feature is temporal averaging to detect extremely weak signals (a bit in the spirit of Leif Asbrink's LINRAD): you may increase (G key) or reduce (H) the averaging. Keep in mind that an averaging of 100X produces a frame rate of one hundredth, so it may be useful to monitor the band for an extended time;
    • Colormap fine tuning: up to now the colormap was automatically and dynamically set up. For most applications it was fine, but to really exploit the averaging you can now change the upper (lower) limits by pressing , and . (+ SHIFT respectively). This parameters are visible in the upper left part of the spectrum.
    • DX cluster is now much better integrated and the graphical presentation is much better;
    • Click and drag tuning on the spectrum display, with visual freq shift indicator.

    73! marco / IS0KYB

    Source code(tar.gz)
    Source code(zip)
    WinSuperSDR_v2.1.zip(61.62 MB)
  • v2.0(May 8, 2021)

    In this release I fixed several bugs and unintended behavior, entirely reviewed the interface, added the panadapter on top of the waterfall, added the audio recording feature and the possibility to change kiwi server at runtime and at the start. Please let me know of any bug you find!

    Thanks! marco / IS0KYB

    Source code(tar.gz)
    Source code(zip)
    WinSuperSDR.zip(37.18 MB)
  • v1.1beta(May 1, 2021)

    This release features several new features and bugfixes. The code has been thoroughly refactored following a more object-oriented style even if there is still a lot of work to do. The user can now choose at runtime which operating mode to use: SYNC or not. SYNC means that CAT and KIWI tuning are linked and every change on the real radio or the supersdr interface will change the other. Disabling SYNC frees the CAT VFO from the KIWI RX frequency/mode and the waterfall continues to work as a panadapter for CAT and the KIWI RX will act as a second receiver on a monitor frequency. The two receivers are resyncable to converge again on the same freq. Memories are now implemented as a circular buffer: you press W and store, press R repeatedly and you cycle through them. 10 memories are available, the oldest will be erased if you store more than 10.

    We also feature a new Windows release

    Source code(tar.gz)
    Source code(zip)
    WinSuper_mainSDR.zip(37.02 MB)
  • 1.0(Apr 24, 2021)

    This is a pre-release. It may contain several bugs, but it is mostly stable and useful. Basic functions have been implemented.

    There is an experimental Windows version that you may try without having to install any library.

    Have fun!

    marco / IS0KYB

    Source code(tar.gz)
    Source code(zip)
    WinSuperSDR.zip(61.45 MB)
Owner
Marco Cogoni
A physicist with too many interests
Marco Cogoni
Gradient Step Denoiser for convergent Plug-and-Play

Source code for the paper "Gradient Step Denoiser for convergent Plug-and-Play"

Samuel Hurault 11 Sep 17, 2022
A repo to show how to use custom dataset to train s2anet, and change backbone to resnext101

A repo to show how to use custom dataset to train s2anet, and change backbone to resnext101

jedibobo 3 Dec 28, 2022
Official implementation of cosformer-attention in cosFormer: Rethinking Softmax in Attention

cosFormer Official implementation of cosformer-attention in cosFormer: Rethinking Softmax in Attention Update log 2022/2/28 Add core code License This

120 Dec 15, 2022
Submission to Twitter's algorithmic bias bounty challenge

Twitter Ethics Challenge: Pixel Perfect Submission to Twitter's algorithmic bias bounty challenge, by Travis Hoppe (@metasemantic). Abstract We build

Travis Hoppe 4 Aug 19, 2022
CVPR 2020 oral paper: Overcoming Classifier Imbalance for Long-tail Object Detection with Balanced Group Softmax.

Overcoming Classifier Imbalance for Long-tail Object Detection with Balanced Group Softmax ⚠️ Latest: Current repo is a complete version. But we delet

FishYuLi 341 Dec 23, 2022
Official page of Struct-MDC (RA-L'22 with IROS'22 option); Depth completion from Visual-SLAM using point & line features

Struct-MDC (click the above buttons for redirection!) Official page of "Struct-MDC: Mesh-Refined Unsupervised Depth Completion Leveraging Structural R

Urban Robotics Lab. @ KAIST 37 Dec 22, 2022
MoveNet Single Pose on DepthAI

MoveNet Single Pose tracking on DepthAI Running Google MoveNet Single Pose models on DepthAI hardware (OAK-1, OAK-D,...). A convolutional neural netwo

64 Dec 29, 2022
The fastest way to visualize GradCAM with your Keras models.

VizGradCAM VizGradCam is the fastest way to visualize GradCAM in Keras models. GradCAM helps with providing visual explainability of trained models an

58 Nov 19, 2022
ElegantRL is featured with lightweight, efficient and stable, for researchers and practitioners.

Lightweight, efficient and stable implementations of deep reinforcement learning algorithms using PyTorch. 🔥

AI4Finance 2.5k Jan 08, 2023
Code & Data for the Paper "Time Masking for Temporal Language Models", WSDM 2022

Time Masking for Temporal Language Models This repository provides a reference implementation of the paper: Time Masking for Temporal Language Models

Guy Rosin 12 Jan 06, 2023
DGL-TreeSearch and the Gurobi-MWIS interface

Independent Set Benchmarking Suite This repository contains the code for our maximum independent set benchmarking suite as well as our implementations

Maximilian Böther 19 Nov 22, 2022
A simplistic and efficient pure-python neural network library from Phys Whiz with CPU and GPU support.

A simplistic and efficient pure-python neural network library from Phys Whiz with CPU and GPU support.

Manas Sharma 19 Feb 28, 2022
Repo for "Event-Stream Representation for Human Gaits Identification Using Deep Neural Networks"

Summary This is the code for the paper Event-Stream Representation for Human Gaits Identification Using Deep Neural Networks by Yanxiang Wang, Xian Zh

zhangxian 54 Jan 03, 2023
This repository contains notebook implementations of the following Neural Process variants: Conditional Neural Processes (CNPs), Neural Processes (NPs), Attentive Neural Processes (ANPs).

The Neural Process Family This repository contains notebook implementations of the following Neural Process variants: Conditional Neural Processes (CN

DeepMind 892 Dec 28, 2022
The description of FMFCC-A (audio track of FMFCC) dataset and Challenge resluts.

FMFCC-A This project is the description of FMFCC-A (audio track of FMFCC) dataset and Challenge resluts. The FMFCC-A dataset is shared through BaiduCl

18 Dec 24, 2022
official implementation for the paper "Simplifying Graph Convolutional Networks"

Simplifying Graph Convolutional Networks Updates As pointed out by #23, there was a subtle bug in our preprocessing code for the reddit dataset. After

Tianyi 727 Jan 01, 2023
This repo contains research materials released by members of the Google Brain team in Tokyo.

Brain Tokyo Workshop 🧠 🗼 This repo contains research materials released by members of the Google Brain team in Tokyo. Past Projects Weight Agnostic

Google 1.2k Jan 02, 2023
Program your own vulkan.gpuinfo.org query in Python. Used to determine baseline hardware for WebGPU.

query-gpuinfo-data License This software is not presently released under a license. The data in data/ is obtained under CC BY 4.0 as specified there.

Kai Ninomiya 5 Jul 18, 2022
A deep learning model for style-specific music generation.

DeepJ: A model for style-specific music generation https://arxiv.org/abs/1801.00887 Abstract Recent advances in deep neural networks have enabled algo

Henry Mao 704 Nov 23, 2022
Prototype for Baby Action Detection and Classification

Baby Action Detection Table of Contents About Install Run Predictions Demo About An attempt to harness the power of Deep Learning to come up with a so

Shreyas K 30 Dec 16, 2022