sdrangel

SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay and FunCube

GPL-3.0 License

Stars
2.7K
Committers
75

Bot releases are hidden (Show)

sdrangel - LimeSDR GPIO REST API support

Published by f4exb almost 6 years ago

Setting the LimeSDR GPIO is now supported through the REST API. The value of GPIO pins in hex form (2 hex digits LSB first) is also displayed in the GUI next to the temperature.

  • DATV demodulator
  • DSD demodulator (digital voice: D-Star, DMR, dPMR, NXDN, YSF)
  • PlutoSDR input
  • PlutoSDR output

As a consequence the 32 bit MinGW build is dropped since it supports less plugins.

  • RTL-SDR offset tuning: only beneficial to the old E4000 tuners
sdrangel - SoapySDR support

Published by f4exb almost 6 years ago

SoapySDR support for both Rx and Tx. See:

It is available in the Windows MSVC version. Unfortunately it cannot be delivered at the moment in Ubuntu/Debian binaries due to dependency issues. Of course it can be compiled from source: see Wiki

You have to install SoapySDR separately to get hardware support.

Funcube support has not been working great so far if even working at all in the recent versions. This version fixes the essential problem of the FCD audio device being captured by the software itself. Using the Qt audio classes to get the samples from the FCD audio device fixes the issue.

  • Fix of race condition leading to memory issues leading to program crash on Windows.
  • Fix complex trace allocation size fixing trace memory
sdrangel - LimeSuite 18.10.0 and Scope updates

Published by f4exb almost 6 years ago

The various builds are now done using LimeSuite 18.10.0. If you compile from source make sure you checkout the 18.10.0 tag from LimeSuite.

Quite a bit of rework has been going on to fix issues and make enhancements to provide a more enjoyable and useful experience with the scope which is used mainly in the Channel Analyzer plugin:

  • removed an old breaking optimization thus fixing trigger. This is the main fix pertaining to issue #233
  • removed dubious code that could also cause trigger bugs
  • update trace continuously for sweep times of one second or more. Clear the trace before the display sweeps.
  • corrected report of samples from one trace to the next
  • implemented trigger hold off
  • various internal optimizations
  • Spectrum: reworked the histogram palette slightly for a more uniform luminance across the palette
  • Spectrum: reworked max hold to correct some inaccuracies
  • Test source: added various pattern waveforms that were mainly used to test the scope
  • DSD demod: changed squelch 0.1 dB steps to 1 dB steps similarly to what was done for the NFM demodulator
sdrangel - Scope and spectrum updates

Published by f4exb about 6 years ago

While in memory mode added ability to save the 50 traces stored in the memory bank to file. It is also possible in the same mode to load traces from file to memory. See https://github.com/f4exb/sdrangel/tree/master/plugins/channelrx/chanalyzer#e-scope-trace-control-line for details.

Fixed separation between live and memory mode in particular the sample rate settings.

Reworked the histogram (phosphor) display:

  • Removed references to "holdoff" replaced by decay divisor which it actually is. Works only when decay is unit so that the decay rate is one over the decay divisor value.
  • A zero decay effectively keep histogram values forever. This is useful to keep the max hold (red line) until the clear histogram button is pressed.
  • Reviewed the decay, decay divisor and stroke limits.
  • Updated the color palette so that lower histogram values are rendered better. This will make the phosphor display more useful.
  • Spectrum: fixed the possible out of memory condition for large values of averaging size by capping the moving average structure to 1000 elements.
sdrangel - File input and spectrum fixes and enhancements

Published by f4exb about 6 years ago

Corrected the wrong times display on large files due to counter overflow. This should fix issue #206. A playback accelerator has been added to allow waterfall fast forward helping getting faster to the point of interest.

Added a maximum mode in the list of averaging modes. This does not perform an average actually but takes the maximum over the same number of consecutive FFTs. This can help spotting transient bursts occurring during the "averaging" period. This implements issue #207

sdrangel - File Record and BladeRF v2 fixes

Published by f4exb about 6 years ago

A few fixes and enhancements have been applied to the file recording component. This changes significantly the way the File Input plugin works. This should fix issue #206 The file header has changed to include a CRC32 checksum that will guarantee that the header is not corrupted and hence the data can be processed correctly. Files recorded with SDRangel versions earlier than v4.2.1 will not work. A conversion or rescue (in case of corruption) tool can reconstruct the header with a valid CRC: https://github.com/f4exb/sdrangel/tree/master/rescuesdriq

For more details on the File Source plugin please check: https://github.com/f4exb/sdrangel/tree/master/plugins/samplesource/filesource

This version fixes the issue of incorrect stream enabling when running in multiple output (MO) mode that is when Tx1 and Tx2 run simultaneously. This fixes issue #225

Also the output plugin is now included in the Windows distribution.

  • NFM demod: change squelch step from 0.1 db to 1 dB
sdrangel - BladeRF 2.0 micro support

Published by f4exb about 6 years ago

Support of the BladeRF 2.0 micro using the v.2 of libbladeRF more specifically the 2018.08 release.

Support plugins have been re-organized in separated sets for the classic (v1) and micro (v2) BladeRF devices:

Please follow the above links for more information.

  • Scope: corrected trace memory index position
  • AudioDeviceManager: fix device infos cleanup segfault due to iterator processing
  • Removed explicit SSE2 code in GLSpectrum. Fixes issue #192
  • WFM demod: fixed a missing mutex when re-configuring interpolator causing random segfault
  • FileSource: process record header if file is long enough. Else close so that start is aborted with error
  • Windows build: upgrade to libusb 1.0.22
sdrangel - SDRdaemon integration

Published by f4exb about 6 years ago

The companion project SDRdaemon has been integrated into SDRangel in the form of two new channel plugins:

  • DaemonSink on the receive side to send the baseband I/Q samples via UDP to a remote end point
  • DaemonSource on the transmit side to receive the baseband I/Q samples via UDP from a remote end point

Both plugins include the handling of FEC to recover possible lost UDP blocks just like in the original SDRdaemon.

The remote SDRangel instances in the headless version are controlled exclusively via their REST API. Therefore the dependency on nanomsg is lifted. To control this remote instance interactively you may use any form of client application. For example SDRangelcli that is web browser based. Note that the control from the SDRDaemon device plugins has been dropped.

Consequently the GUI of the SDRDaemonSource and SDRDaemonSink device plugins has been modified to a great extent.

The remote SDRangel instance can be of the GUI or headless variant therefore in its headless form it achieves exactly the same role as SDRdaemon used to. There are many advantages in this integration into SDRangel:

  • Better performance: early tests show at least a 2x improvement in CPU load (two times lower)
  • Integration of all devices supported by SDRangel
  • Possibility to run the Rx and Tx channels of the same device concurrently. Useful for BladeRF, LimeSDR, HackRF, PlutoSDR
  • Possibility to use the 24 bit I/Q format (at the expense of samples twice bigger than in the 16 bit version)
  • Use the same REST API as SDRangel to control all parameters. Makes nanomsg dependency obsolete.
  • Even more configuration options provided by SDRangel

Note that there are also the UDP source and sink channel plugins that seem to have the same role when used with the I/Q samples format. However these plugins have filters and rational interpolators or decimators to achieve further sample rate conversion in the baseband and are therefore less efficient when you want to transfer the whole baseband like SDRdaemon used to do. Also they do not support FEC protection.

The names of UDP source and sink have been swapped to match the same convention as the Daemon plugins:

  • A channel "sink" is used on the Rx side to receive (sink) the baseband samples from a device "source"
  • A channel "source" is used on the Tx side to feed (source) the baseband samples to a device "sink"

Note that the SDRdaemon related plugins are available only in the Linux distributions. With these plugins it becomes critical that the supporting O/S has near real time capabilities because the sample timing is handled only in software. Several tests have demonstrated that Windows is not suitable for this purpose. Consequently please note that these plugins will not run successfully in a Linux VM hosted on a Windows O/S except perhaps when Hyper-V is the supervisor (not tested).

Removed the timeout mechanism on the Audio FIFO that seems to cause program lockup particularly on the Tx side with the audio input in some conditions. When the FIFO gets full or empty the samples are simply dropped or not provided to the client. This should fix issue #210

sdrangel - Cleanup of old scope objects

Published by f4exb about 6 years ago

Removed the old "NG" scope objects to avoid confusion.

  • HTTP server: reduce debug message and put more interesting information
  • UDP source Web API setting correction.
  • UDP sink: effectively implemented low cutoff setting from web API
  • UDP source and sink: Web API: more informative report
  • Sink plugins: corrected name getters and setters
  • UDP sink GUI: fixed internal widgets minimum widths
  • UDP sink default port set to 9998
  • Set spectrum default to log
  • PlutoSDR input: install server plugin in the correct sub directory
  • UDP sink: removed queued connection on socket connection (gets stuck with Qt >= 5.8)
  • CW keyer: used signed char to avoid copmilation warnings in some installations
  • LimeSDR GUIs: always apply change of FIR bandwidth
sdrangel - SSB modulator and web API fixes

Published by f4exb about 6 years ago

Set samples to zero when no modulation is active. This fixes remaining DC leaving a carrier with no modulation. Fixes issue #204

  • fixed bug in PUT/PATCH of modulators not setting differentially
  • fixed TestSource device setting
  • AM demod: added pll and syncAMOperation settings processing
  • implemented instanceDVSerialGet
  • RTL-SDR: fixed RF bandwidth setting
  • WFM demod: corrected audio mute display
  • Fixed power display going to floor value in some demods
  • RTL-SDR: fixed low sample rate setting
sdrangel - Web API: handle pre-flight requests

Published by f4exb about 6 years ago

sdrangel - PlutoSDR output and Rest API fixes

Published by f4exb over 6 years ago

sdrangel - Spectrum linear mode

Published by f4exb over 6 years ago

Added the option to view the spectrum in linear mode (squared magnitude). Please check the documentation for details: https://github.com/f4exb/sdrangel/tree/master/sdrgui#4-spectrum-display-control

  • Scope: fixed power overlay display
  • Channel analyzer: fixed scope vertical scale display and extended amp range
  • DSD demod: Serial DV: use audio compressor at the end of audio filter chain
sdrangel - Spectrum averaging

Published by f4exb over 6 years ago

Implementation of averaging on the spectrum displays. This concerns the main window spectrum display and also the spectrum display on the following plugins: Broadcast FM demodulator, Channel analyzer, SSB demodulator, UDP source and UDP sink.

There are two modes for averaging N samples:

  • moving average: there is one FFT sample out for every FFT sample in and the average is made on the N last samples
  • fixed average: there is one FFT sample out for every Nth FFT sample the average is also made on the N last samples but averaging is done one after the other and not by sliding the average window. The effect is to slow down the waterfall by the averaging value.

There are two new controls on the spectrum GUI for the averaging mode and value and other controls have been shuffled around a little bit. The details of the GUI can be found here: https://github.com/f4exb/sdrangel/tree/master/sdrgui#4-spectrum-display-control

sdrangel - DSD demod NXDN support

Published by f4exb over 6 years ago

If you compile from source you will need to checkout the latest version v1.8.3 of dsdcc.

Adds NXDN to the list of digital voice modes supported according to latest dsdcc version. More information can be found in the readme,md file of the plugin: https://github.com/f4exb/sdrangel/blob/master/plugins/channelrx/demoddsd/readme.md

It has been tested only on the 4800 b/s version of the standard (2400 S/s) so it may or may not work on 9600 b/s (4800 S/s) transmissions. In any case the voice full rate decoding (EFR mode) works only if you have a DVSI AMBE dongle (DV serial).

  • Channel Analyzer: corrected suqared magnitude (power) display in dB
  • Scope and channel analyzer: new squared magnitude (linear power) projection mainly for radioastronomy
  • Extended scope trace amplification range and trigger minimum step
  • DSD demod: enhanced the high pass filter
  • DSD demod: use compression on the DV serial audio output to improve voice readability. This can change the correct volume settings
  • DATV demod: include it only if FFmpeg > 3.1 is installed
  • Fixes for Arch. Manual merge of pull request #183.
sdrangel - Web API and Server

Published by f4exb over 6 years ago

Many of you will not see a dramatic change for this new major version and in fact it has been in preparation for a while starting with v3.8.6. Now it is complete with almost all plugins supported:

  • Channel Rx: AM, BFM, DSD, NFM, SSB, WFM demodulators and UDP source.
  • Channel Tx: AM, ATV, NFM, SSB, WFM modulators and UDP sink.
  • Sample sources: Airspy, AirspyHF, BladeRF, FCDPro, FCDPro+, File source, HackRF, LimeSDR, Perseus, PlutoSDR, RTL-SDR, SDRdaemon, SDRPlay, Test source
  • Sample sinks: BladeRF, File sink, HackRF, LimeSDR, PlutoSDR, SDRdaemon

The HTTP REST API is self documented using Swagger UI. The address of the Swagger UI is documented in the "About" window and by default is http://127.0.0.1:8089.

The sdrangelsdrv server instance is a UI less version of SDRangel. As there is no UI all interaction is done via the REST API.

For both the server and REST API more information can be found in the sdrsrv folder. More information will also be given in the Wiki in the near future.

  • The Channel Analyzer NG plugin has been renamed to Channel Analyzer and the old Channel Analyzer has been decommissioned.
  • The TCP source plugin has been discontinued.
  • BladeRF input: fixed settings handling and therefore sample rate vs center frequency discrepancies when using shifted decimators
  • BFM demod: fixed squelch to be compatible with server mode
  • SDRdaemon input: removed old message and tick handling
  • BladeRF: cleanup: removed useless fixed sample rates support
sdrangel - Channel Analyzer (NG) updates

Published by f4exb over 6 years ago

Support exploration of PSK signals adding the following features:

  • PLL with multi-phase locking able to lock to signals with 1 (CW), 2 (BPSK), 4 (QPSK), 8 or 16 equally spaced phase symbols. The NCO of the PLL is then mixed with the signal to achieve de-rotation.
  • Trace projection mapping phase sectors to levels in the [-1..1] range for soft symbol display.
  • Extension to FLL locking for FM signals (AFC).

Check plugin documentation for details. This implements issue #33 .

Added a choice of signals to display:

  • input signal possibly mixed with PLL or FLL NCO
  • PLL or FLL NCO signal
  • Input signal auto-correlation over a fixed length of 4096 samples (actual length depends on sample rate).

In addition refactored to use settings structure similarly to other plugins.

Added synchronous AM option to the AM demodulator. Use a PLL to lock to the carrier and mix with the signal. Synchronous AM does not fix all selective fading distortion affecting broadcast on shortwave but does pretty well with the carrier fading which is the most annoying. Hopefully this will bring more comfort to the ears of the broadcast listeners.

  • RTL-SDR: fixed inf/sup decimators
  • Put all logged or displayed dates in ISO format
  • Internal: moving average with variable history size
sdrangel - Inf/Sup frequency shift fixes

Published by f4exb over 6 years ago

Firstly the decimator for inf/sup decimation with shift was not working properly just missing the FIR filter causing possible massive ghost images problems. I am wondering why this was not found before maybe it is not so much used. Anyway thaks to beta-tester for having incidentally pointed me on this important bug. The original finding (issue #172) was that PlutoSDR was not showing the appropriate frequency shift on the spectrum. In order to fix that the calculation was moved in a single place thus it is the same for all plugins implementing the inf/sup feature. The shifting scheme has been changed also to have the baseband as close as possible to the device center frequency. This optimizes the device RF filtering not requiring exaggeratedly large bandwidths. See the plugins documentation for details. Some slight performance improvements to the decimators were made also.

My main development platform was updated from Ubuntu 16.04 to 18.04 which is the new LTS. Consequently the Qt version was bumped to 5.9.5 and a few adjustments and fixes were required:

  • SDRdaemonsource plugin fixes with UDP sink signal handling changes. See issue #173
  • The default governor in 18.04 is powersave (ondemand was dropped) and this makes some cosmetic changes to the CPU load you can observe in top for example. Overall this is fine as it optimizes power and heat but it ruins any benchmarking. It is unknown if high throughput operation is affected. A paragraph was added to documentation to avoid surprises as it occured to me. See issue #174
  • The dialogs (file and color) now use the native (GTK3) dialogs systematically. This breaks the overall look and feel so the option to use Qt dialogs instead was added to all dialog calls.
  • Changed default name of the record file avoiding collision on repeated operation by having a timestamp as part of the name. Fixes issue #170 A custom name can be specified using the Web API (no GUI support presently). An empty file name triggers the timestamped default name.
  • Fixed keyboard input for negative values on relative integer value dials. Fixes issue #168
  • NFM demod: fixed squelch indicator being always off when audio is muted
  • Benchmarking: added inf/sup decimators test
  • BladeRF library upgrade to 1.9.0
sdrangel - Benchmark program and decimators optimization

Published by f4exb over 6 years ago

New benchmark program to test decimators. Run sdrangelbench -h to display all options. This supports issue #166 to take a decision on further developments. While tuning the benchmark some optimizations on decimators could be made based on the benchmark results. Not tremendous improvements still on an average usage one can expect a few % improvement on CPU load.

Unify font usage across distributions using Liberation Sans (proportional) or Liberation Mono (monospace). Included font files in GUI resources (sdrgui) which should ensure a look and feel independent of the O/S or Linux distribution. One can expect a slight change in this look an feel however it is very similar to the default that was used previously. It could only look a bit more sleek.

  • fixed SSB modulator channel un-registration. This fixes issue #167
  • AM demodulator: fixed delayed squelch
  • NFM demodulator: fixed squelch tail cutting useful transmission in some cases
  • SSB demodulator: improved AGC threshold (squelch like) to better fit useful begin and end of transmission
  • Scaling engine improvement on tick spacing calculation that should prevent text collision in some cases
  • DSD demod: allow audio rates integer multiples of 8k other than 48k
sdrangel - Buffered squelch

Published by f4exb over 6 years ago

The idea is to pass samples through a delay line so that the exact squelch open and close times can be optimized to match the actual transmission. See here: https://brmlab.cz/user/jenda/kukuruku ("Squelch sucks").

Applied to NFM and AM demods. Most significant improvement is with the suppression of squelch noise tail in the NFM demod. This has been improved too in the SSB demod.

Applied to DSD demod also to help catch the very beginning of transmission regardless of gate time which is important for digital transmissions.

Merged contributions of jigpu (thanks!) to fix memory issues and spelling errors in documentation.