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
"Graph Neural Controlled Differential Equations for Traffic Forecasting", AAAI 2022

Graph Neural Controlled Differential Equations for Traffic Forecasting Setup Python environment for STG-NCDE Install python environment $ conda env cr

Jeongwhan Choi 55 Dec 28, 2022
Motion planning algorithms commonly used on autonomous vehicles. (path planning + path tracking)

Overview This repository implemented some common motion planners used on autonomous vehicles, including Hybrid A* Planner Frenet Optimal Trajectory Hi

Huiming Zhou 1k Jan 09, 2023
Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting

Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting This is the origin Pytorch implementation of Informer in the followin

Haoyi 3.1k Dec 29, 2022
PatrickStar enables Larger, Faster, Greener Pretrained Models for NLP. Democratize AI for everyone.

PatrickStar: Parallel Training of Large Language Models via a Chunk-based Memory Management Meeting PatrickStar Pre-Trained Models (PTM) are becoming

Tencent 633 Dec 28, 2022
TakeInfoatNistforICS - Take Information in NIST NVD for ICS

Take Information in NIST NVD for ICS This project developed with Python. When yo

5 Sep 05, 2022
NeRF Meta-Learning with PyTorch

NeRF Meta Learning With PyTorch nerf-meta is a PyTorch re-implementation of NeRF experiments from the paper "Learned Initializations for Optimizing Co

Sanowar Raihan 78 Dec 18, 2022
In the case of your data having only 1 channel while want to use timm models

timm_custom Description In the case of your data having only 1 channel while want to use timm models (with or without pretrained weights), run the fol

2 Nov 26, 2021
Technical Indicators implemented in Python only using Numpy-Pandas as Magic - Very Very Fast! Very tiny! Stock Market Financial Technical Analysis Python library . Quant Trading automation or cryptocoin exchange

MyTT Technical Indicators implemented in Python only using Numpy-Pandas as Magic - Very Very Fast! to Stock Market Financial Technical Analysis Python

dev 34 Dec 27, 2022
This repository compare a selfie with images from identity documents and response if the selfie match.

aws-rekognition-facecompare This repository compare a selfie with images from identity documents and response if the selfie match. This code was made

1 Jan 27, 2022
An end-to-end machine learning library to directly optimize AUC loss

LibAUC An end-to-end machine learning library for AUC optimization. Why LibAUC? Deep AUC Maximization (DAM) is a paradigm for learning a deep neural n

Andrew 75 Dec 12, 2022
Ready-to-use code and tutorial notebooks to boost your way into few-shot image classification.

Easy Few-Shot Learning Ready-to-use code and tutorial notebooks to boost your way into few-shot image classification. This repository is made for you

Sicara 399 Jan 08, 2023
Text-Based Ideal Points

Text-Based Ideal Points Source code for the paper: Text-Based Ideal Points by Keyon Vafa, Suresh Naidu, and David Blei (ACL 2020). Update (June 29, 20

Keyon Vafa 37 Oct 09, 2022
DIRL: Domain-Invariant Representation Learning

DIRL: Domain-Invariant Representation Learning Domain-Invariant Representation Learning (DIRL) is a novel algorithm that semantically aligns both the

Ajay Tanwani 30 Nov 07, 2022
ManimML is a project focused on providing animations and visualizations of common machine learning concepts with the Manim Community Library.

ManimML ManimML is a project focused on providing animations and visualizations of common machine learning concepts with the Manim Community Library.

259 Jan 04, 2023
CVPR 2021 Challenge on Super-Resolution Space

Learning the Super-Resolution Space Challenge NTIRE 2021 at CVPR Learning the Super-Resolution Space challenge is held as a part of the 6th edition of

andreas 104 Oct 26, 2022
Stacked Recurrent Hourglass Network for Stereo Matching

SRH-Net: Stacked Recurrent Hourglass Introduction This repository is supplementary material of our RA-L submission, which helps reviewers to understan

28 Jan 03, 2023
A simple Rock-Paper-Scissors game using CV in python

ML18_Rock-Paper-Scissors-using-CV A simple Rock-Paper-Scissors game using CV in python For IITISOC-21 Rules and procedure to play the interactive game

Anirudha Bhagwat 3 Aug 08, 2021
Official code for "Simpler is Better: Few-shot Semantic Segmentation with Classifier Weight Transformer. ICCV2021".

Simpler is Better: Few-shot Semantic Segmentation with Classifier Weight Transformer. ICCV2021. Introduction We proposed a novel model training paradi

Lucas 103 Dec 14, 2022
Trajectory Extraction of road users via Traffic Camera

Traffic Monitoring Citation The associated paper for this project will be published here as soon as possible. When using this software, please cite th

Julian Strosahl 14 Dec 17, 2022
Information-Theoretic Multi-Objective Bayesian Optimization with Continuous Approximations

Information-Theoretic Multi-Objective Bayesian Optimization with Continuous Approximations Requirements The code is implemented in Python and requires

1 Nov 03, 2021