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
This is an unofficial PyTorch implementation of Meta Pseudo Labels

This is an unofficial PyTorch implementation of Meta Pseudo Labels. The official Tensorflow implementation is here.

Jungdae Kim 320 Jan 08, 2023
PyTorch code for the paper "Curriculum Graph Co-Teaching for Multi-target Domain Adaptation" (CVPR2021)

PyTorch code for the paper "Curriculum Graph Co-Teaching for Multi-target Domain Adaptation" (CVPR2021) This repo presents PyTorch implementation of M

Evgeny 79 Dec 19, 2022
adversarial_multi_armed_bandit_variable_plays

Adversarial Multi-Armed Bandit with Variable Plays This code is for paper: Adversarial Online Learning with Variable Plays in the Evasion-and-Pursuit

Yiyang Wang 1 Oct 28, 2021
NPBG++: Accelerating Neural Point-Based Graphics

[CVPR 2022] NPBG++: Accelerating Neural Point-Based Graphics Project Page | Paper This repository contains the official Python implementation of the p

Ruslan Rakhimov 57 Dec 03, 2022
PyTorch implementation of UNet++ (Nested U-Net).

PyTorch implementation of UNet++ (Nested U-Net) This repository contains code for a image segmentation model based on UNet++: A Nested U-Net Architect

4ui_iurz1 642 Jan 04, 2023
3DMV jointly combines RGB color and geometric information to perform 3D semantic segmentation of RGB-D scans.

3DMV 3DMV jointly combines RGB color and geometric information to perform 3D semantic segmentation of RGB-D scans. This work is based on our ECCV'18 p

Владислав Молодцов 0 Feb 06, 2022
Balancing Principle for Unsupervised Domain Adaptation

Blancing Principle for Domain Adaptation NeurIPS 2021 Paper Abstract We address the unsolved algorithm design problem of choosing a justified regulari

Marius-Constantin Dinu 4 Dec 15, 2022
(EI 2022) Controllable Confidence-Based Image Denoising

Image Denoising with Control over Deep Network Hallucination Paper and arXiv preprint -- Our frequency-domain insights derive from SFM and the concept

Images and Visual Representation Laboratory (IVRL) at EPFL 5 Dec 18, 2022
Ratatoskr: Worcester Tech's conference scheduling system

Ratatoskr: Worcester Tech's conference scheduling system In Norse mythology, Ratatoskr is a squirrel who runs up and down the world tree Yggdrasil to

4 Dec 22, 2022
Lbl2Vec learns jointly embedded label, document and word vectors to retrieve documents with predefined topics from an unlabeled document corpus.

Lbl2Vec Lbl2Vec is an algorithm for unsupervised document classification and unsupervised document retrieval. It automatically generates jointly embed

sebis - TUM - Germany 61 Dec 20, 2022
Re-implementation of the vector capsule with dynamic routing

VectorCapsule Re-implementation of the vector capsule with dynamic routing We implement the vector capsule and dynamic routing via graph neural networ

ZhenchaoTang 10 Feb 10, 2022
TilinGNN: Learning to Tile with Self-Supervised Graph Neural Network (SIGGRAPH 2020)

TilinGNN: Learning to Tile with Self-Supervised Graph Neural Network (SIGGRAPH 2020) About The goal of our research problem is illustrated below: give

59 Dec 09, 2022
A developer interface for creating Chat AIs for the Chai app.

ChaiPy A developer interface for creating Chat AIs for the Chai app. Usage Local development A quick start guide is available here, with a minimal exa

Chai 28 Dec 28, 2022
Fast methods to work with hydro- and topography data in pure Python.

PyFlwDir Intro PyFlwDir contains a series of methods to work with gridded DEM and flow direction datasets, which are key to many workflows in many ear

Deltares 27 Dec 07, 2022
CTF challenges and write-ups for MicroCTF 2021.

MicroCTF 2021 Qualifications About This repository contains CTF challenges and official write-ups for MicroCTF 2021 Qualifications. License Distribute

Shellmates 12 Dec 27, 2022
Pipeline for employing a Lightweight deep learning models for LOW-power systems

PL-LOW A high-performance deep learning model lightweight pipeline that gradually lightens deep neural networks in order to utilize high-performance d

POSTECH Data Intelligence Lab 9 Aug 13, 2022
Learning Time-Critical Responses for Interactive Character Control

Learning Time-Critical Responses for Interactive Character Control Abstract This code implements the paper Learning Time-Critical Responses for Intera

Movement Research Lab 227 Dec 31, 2022
Repository for the Bias Benchmark for QA dataset.

BBQ Repository for the Bias Benchmark for QA dataset. Authors: Alicia Parrish, Angelica Chen, Nikita Nangia, Vishakh Padmakumar, Jason Phang, Jana Tho

ML² AT CILVR 18 Nov 18, 2022
Code for NeurIPS 2021 paper "Curriculum Offline Imitation Learning"

README The code is based on the ILswiss. To run the code, use python run_experiment.py --nosrun -e your YAML file -g gpu id Generally, run_experim

ApexRL 12 Mar 19, 2022
Implementation for HFGI: High-Fidelity GAN Inversion for Image Attribute Editing

HFGI: High-Fidelity GAN Inversion for Image Attribute Editing High-Fidelity GAN Inversion for Image Attribute Editing Update: We released the inferenc

Tengfei Wang 371 Dec 30, 2022