Code Monkey home page Code Monkey logo

supersdr's Introduction

SuperSDR

SuperSDR in action SuperSDR integrates a realtime spectrum waterfall and (dual) audio receive from any KiwiSDR around the world, together with a local (or remote) controlled CAT transceiver.

There are three main scenarios in which you'd like to use SuperSDR:

  • you've got a radio without a panadapter (I have a Kenwood TS-590SG) or you're simply not happy with it, in this case this application can help you to use your (or someone else's!) KiwiSDR as a powerful panadapter and multiple receiver and to have all seamlessly synchronized: you may control your Kiwi by tuning the radio or vice versa; you may also transmit with the radio and have your Kiwi RX muted automatically;
  • you've got a KiwiSDR and you're sick of using its stock web interface, you'd like to have near-zero latency, waterfall immunity from thunderstorms, powerful keyboard shortcuts, VERY low CPU usage (you may run dozens of instances on a powerful PC), much improved waterfall averaging to detect even the faintest signals (ร  la LINRAD), ability to receive from multiple remote KiwiSDRs, you want a low resources app able to run from a Raspberry Pi to a Windows PC to a Macbook Pro, you want a very compact code that you can tweak to your needs even not being a Python programmer;
  • your HF radio is connected to a very directional antenna and you don't want to lose those faint signals from every direction: in this case you may connect your Kiwi RX to a good omnidirectional wide band receive antenna and explore the bands with it, then, when you find something interesting, you turn to your directional antenna on the CAT radio and you make the contact.

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 (dual) 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 interlinked, 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 (left/right keys) and its span (up/down).

In the screenshot you can see both KiwiSDR receivers active at the same time (green and red passbands), while the CAT Radio is the orange one on the right. Synchronization between Kiwi RXs and CAT VFO is disabled (press S to enable SYNC) in this case (CAT SYNC grayed out) so the three are working independently. You can switch MAIN/SUB Kiwi RX frequencies by pressing Y. Pressing M (un)mutes the current MAIN RX.

Notice how the lower waterfall half is noisier than the upper half thanks to 10X sample averaging (time binning). You can change averaging by pressing G/H to increase/decrease it. In this way you may also monitor a wide frequency band for several hours (e.g. you could monitor the whole MW band through the night).

Mouse over the HELP label on the bottom right corner will show you the main keyboard commands.

Main keyboard shortcuts:

  • TUNING: LEFT/RIGHT keys tune by -/+1 khz, when very zoomed in, they tune by 100 Hz, when you also press SHIFT the tuning step is 10X. You may also point and click on any signal with the mouse. Just use the VFO of your radio instead. The spectrum scope will also move by half span when you reach the borders. Pressing Z enables the center tuning and shifts the waterfall/scope while you tune keeping the RX bandpass centered;
  • SPECTRUM TUNING: UP/DOWN change zoom level (SPAN) by 2X (equivalent: mouse wheel scroll). PAGE UP/PAGE DOWN move the spectrum center by half the span, but do not affect the RX frequency, you may return to your (main) RX frequency by pressing the SPACE bar. You may DRAG the spectrum scope (not the waterfall) with your mouse and also see dynamically by how much you're dragging it;
  • FILTER BANDPASS: CONTROL+J/K grows/shrinks by 100Hz the whole filter, J/K changes the LOW/HIGH CUT and SHIFT inverts the change. Pressing O (not zero) resets it to default. Bandpass width is not supported by Hamlib (at least for my radio) so you don't affect the CAT controlled radio;
  • RECEIVERS: you start with one active RX passband whose rx mode changes automatically with frequency, you may decativate AUTO RX MODE by pressing X or manually changing mode. Second kiwi RX is activated by pressing Y that uses the same KIWISDR as the first. You may change the KIWISDR by pressing Q and entering the address:port of any KIWISDR. You may decouple the tuning of the Kiwi and that of the CAT radio by pressing S: you'll now have a separate orange bandpass representing your real VFO, press S again to relink. The currently being tuned RX is the RED one, the GREEN one has no controls and monitors the frequency you left it into. Pressing Y again you just switch the RX bandpasses and you can control the other. Each KIWI RX has a separate volume/mute control but the same AGC threshold that you can change via 1/2 keys and that level is visible on the s-meter with the short blue needle;
  • S-METER: activate it with the M key: it has an analog simulation that changes between CW and SSB/AM. The values over S9 are not accurate (it is a known problem I'm working on). The numbers in dB are correct though;
  • SPECTRUM SCOPE LEVELS: by default you have a fully automatic, dynamically set minimum and maximum values that are shown on the left. This is the most useful mode especially because it's almost insensitive to thunderstorms and you don't get those pesky horizontal lines on the low bands! But if you need to perform some measurement, you may turn AUTO mode off with the 3 key that will also get you horizontal lines every 10dB vertical division. The TOP/BOTTOM dB levels may be changed by pressing ./, keys (SHIFT to change bottom level);
  • ACCUMULATION AVERAGE: if you're familiar with LINRAD by Leif Asbrink, you'll surely be fond of the possibility to perform multiple samplings for each shown spectrum/waterfall line. This leads to large visual enhancements of the SNR both in the scope and the waterfall. This is performed by pressing G several times and it will slow down the update. Pressing H will lower the number of samples until you get back to normal;

OK, these are the main points you should be familiar with to use the software. There are several other functions but you'll discover them with the HELP menu... :)

Prerequisites:

Install Python 3 along with PYGAME, SOUNDDEVICE, 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.

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 under Linux:

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

to just explore your local kiwisdr (defaults to kiwisdr.local if not specified), 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.

To start rigctld use somthing like: rigctld -m 237 -r /dev/ttyUSB0 if you use a Kenwood TS-590SG (model nr. 237) and it is connected to the USB of your local computer. Run rigctld -l to show a list of supported radios.

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

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

supersdr's People

Contributors

jks-prv avatar mcogoni avatar thehefi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

supersdr's Issues

Window size indicator.

It should be nice if the application displays the zoom factor in terms of window sizes, e.g. 100kHz, 50kHz, 500kHz.

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.

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

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

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

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

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

pygame.error

Im getting "pygame.error: File not a Windows BMP file" using a RPi3

I am not sure if this is supported for the RPi3, bullseye

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.