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 visible (Hide)

sdrangel - New sampling devices handling

Published by f4exb almost 7 years ago

The selection of the sampling device in the "Sampling device control" section is now done via a dialog that opens when the change push button is clicked (hand icon). The list of devices is updated with changes when plugins take and release devices or channels inside devices therefore you only see what is available at any one time. For multiple channel devices like the LimeSDR that is 2x2 MIMO you can now select the second Rx or Tx device directly even if the first is not used. This implements issue #52

Details described here: https://github.com/f4exb/sdrangel/tree/master/sdrgui#3-sampling-devices-control

As it is a fairly important change in the UI this motivated the minor version upgrade.

Further work on separating the GUI from the core application. This was facilitated actually by the main feature of this version described previously. A lot of code cleanup could be made in the PluginManager removing non relevant code. The channels processing was also reworked repatriating code in the non GUI base library (sdrbase).

sdrangel - PlutoSDR and LimeSDR fixes

Published by f4exb almost 7 years ago

Fixed the Tx and Rx/Tx relationship so that Tx support can be restored. This fixes issue #81

One should use the same size for Rx and Tx buffers and then since the Rx part is on one I/Q interleaved channel and the Tx in parallel I and Q channels they don't behave the same way.

The Tx side will return a buffer with 2 channels each with a 2 bytes sample hence 4 bytes per iteration.
The Rx side will return a buffer with a single channels with a 2 bytes sample hence 2 bytes per iteration.

The trick is to call the Rx refill twice on the Rx side and the push once on the Tx side giving the same size (this is the size in channel samples) when creating Rx and Tx buffers.

This fixes the stream lockup problems when Rx and Tx work at the same time more definitely than the workaround adding a delay after start and stop stream (fix in v3.7.6)

In fact to make sure LMS_StartStream is called before m_startWaiter.wakeAll() it could be simply placed early in the startWork() method. Similarly LMS_StopStream can be placed as the last instruction of stopWork()

Details here: https://discourse.myriadrf.org/t/sdrangel-rx-tx/1239/346

IMPORTANT: this version (binaries) is built with LimeSuite 17.10.0 and this goes with gateware revision 2.11 and you should upgrade to the latest gateware using LimeUtil --upgrade. Of course yous should also upgrade if you compile with the latest version of LimeSuite

sdrangel - PlutoSDR Tx support removed

Published by f4exb almost 7 years ago

it is not possible to get PlutoSDR working on Tx even on a simple carrier example so I am removing Tx support. The PlutoSDR output plugin code is still there so developers may re-activate it and try it for themselves.

Use 3.7.8 or later

sdrangel - LimeSDR support fixes

Published by f4exb almost 7 years ago

  • Try to fix lockup situation when Rx and Tx run concurrently and changes are made on one side while the other is running. Handle suspend / resume streams correctly and when appropriate. Handle calibration when appropriate. Added a 0.1s delay after starting and stopping a stream. This should fix issue #83
  • Handle ADC or DAC sample rate change correctly thus allowing possible different host/device sample rates between Rx and Tx. This fixes issue #82
  • split sdrbase library into sdrbase and sdrgui. The sdrgui library will contain the common GUI part that depends on QWidget and OpenGL and sdrbase will not be dependent on GUI libraries and therefore compatible with a console application (future SDRangel server).
sdrangel - BFM demod and CW keyer fixes and enhancement

Published by f4exb almost 7 years ago

The frequency shift was not effective anymore. Fixes issue #78.

To further reduce clicking and spreading the pulse shaping ramp time is made 20% of the dot length. Thus spreading is made dependent on CW speed which makes sense. Implements issue #76.

  • Removed start threaded sink from device engine
  • Further implementation of separate settings object in the channel plugins and partial separation of GUI and core. Now phase 1 is complete.
sdrangel - Bug fixes and cosmetic changes

Published by f4exb about 7 years ago

  • DSD demod: fixed volume too low when using DV serial dongle
  • Demod GUI corrections from v3.7.3
  • SSB modulator: fixed saturation when going DSB
  • Source and sink plugins: force settings at startup and on deserialize when missing
  • LimeSDR and BladeRF output: do not resize sample FIFO to a fixed value in the thread constructor
  • Set title text color of rollup widget depending on title bar peceived brightness
  • UDP source: changed default color to be different from SSB mod/demod
  • PlutoSDR: print error string from libiio in console message
  • PlutoSDR input: display actual gain value returned from device

Further implementation of separate settings object in the channel plugins and partial separation of GUI and core.

sdrangel - Transverter mode support

Published by f4exb about 7 years ago

For some devices: Airspy, Funcube Pro and Pro+, PlutoSDR Rx and Tx, RTLSDR added a "X" button that opens a dialog to set a frequency shift so that the actual center frequency sent to the device will be the one displayed minus this frequency shift. This facilitates the usage of up or down converters with these devices. This implements issue #54

  • LimeSDR: implemented a better way to enable/disable the NCO would using the CMIX_BYP_RXTSP or CMIX_BYP_TXTSP. This fixes issue #68
  • LimeSDR: suspend the other threads while doing the stream delete/create on Tx side. Fixes lockup when Rx is running concurrently. This should fix issue #67
  • Ubuntu 17.04 build: added libnanomsg4 as an alternative for nanomsg dependency. Fixes issue #66
  • Exit DSPDeviceSourceEngine thread directly on stop() fixing a possible mutex lockup issue. This should fix issue #65

Further refactoring to separate the GUI from the core application. Focusing on channel Rx plugins. Work done partially for AM, BFM, Channel Analyzers, ATV, SSB and DSD.

There was no real use of it.

sdrangel - RTLSDR and PlutoSDR bug fixes

Published by f4exb about 7 years ago

  • RTLSDR: fixed the GUI not taking the device RF gains into account preventing gain setting from the GUI. Fixes issue #63
  • PlutoSDR: remove from the list of devices if it cannot be opened (already open in another instance or software)

Return of the Windows 64 build. Built on Win7 with a new toolchain with Qt 5.9.1 and gcc 5.3.0

sdrangel - PlutoSDR Tx support

Published by f4exb about 7 years ago

PlutoSDR Tx suport with the PlutoSDR output plugin:
https://github.com/f4exb/sdrangel/tree/master/plugins/samplesink/plutosdroutput

LimeSDR plugins are now compiled with the release 17.09 of LimeSuite. It appears to have important bug fixes.

  • HackRF: effective Rx-Tx frequency linking
  • More non functional changes to isolate the GUI
sdrangel - PlutoSDR Rx support

Published by f4exb about 7 years ago

PlutoSDR Rx part is now supported with the PlutoSDR input plugin: https://github.com/f4exb/sdrangel/tree/master/plugins/samplesource/plutosdrinput

Tx part to follow in the next release.

  • Code refactoring: PluginManager: removed useless dependency on main window
  • Code refactoring: removed PluginGUI dependency on QWidget and made it a generic PluginUI class
  • Code refactoring: moved the FileRecord object out of the GUI
  • HackRF: use DeviceHackRF as a singleton to handle HackRF library init and exit only once.
  • Reduced preset debug output messages
sdrangel - UDP functionality extension

Published by f4exb about 7 years ago

Some demodulator plugins have now the possibility to export the audio output via UDP. These are:

  • AM demod
  • BFM demod (can be used for transponding broadcast FM)
  • DSD demod (can be used for transponding digital voice transmissions)
  • NFM demod

Used in conjunction with the UDP sink plugin introduced in the previous release many transponder combinations can be made.

Note that UDP functionality does not work in Windows.

The basic settings implemented in the channel marker can now be modified using a popup dialog. This makes it more convenient than the original options appearing at the bottom of the channel plugin window. Moreover more functionality has been implemented.

You can change:

  • the window title
  • the window top bar and spectrum overlay color
  • the text displayed on the spectrum frequency scale:
    • absolute frequency
    • window title
    • UDP address and send port
    • UDP address and receive port

Details of the dialog are described here: https://github.com/f4exb/sdrangel/blob/master/sdrbase/readme.md#6-channels.

UDP addresses and ports for the UDP plugins are now specified using this dialog.

sdrangel - UDP sink plugin

Published by f4exb about 7 years ago

This is for Linux only. Included in Mac O/S build but not tested.

New sink (Tx) channel plugin to get the channel input from UDP. This is the Tx counterpart of the UDP source plugin.

Main purpose is to add the linear transponder capability. It is also possible to transpose individual channels with various output modulations: AM, FM, SSB. Thus in combination with the UDP source plugin cross modulation transponders are possible (AM->FM, FM->SSB, ...) but also FM->FM, AM->AM, ...

More details here: https://github.com/f4exb/sdrangel/blob/master/plugins/channeltx/udpsink/readme.md

This implements issue #37

  • Revision of the UDP source plugin with major GUI changes
  • LimeSDR output: fixed Tx not stopping on stop. Fixes issue #50
  • Make Boost package required by cmake. Fixes issue #46
  • reorder main window default widgets position so that the sampling device interface appears on the top left
sdrangel - Optimize transmission latency

Published by f4exb about 7 years ago

In order to optimize the transmission latency the size of the sample FIFO of physical devices sample sink plugins has been calculated in order to maintain when possible a fixed delay of 250 ms. The minimum baseband sample rate at which the delay reaches a fixed value of 250 ms depends on the device. At lower rates the delay will be larger (see each output plugin documentation to get the details):

  • BladeRF: 300 kS/s doc
  • HackRF: 600 kS/s doc
  • LimeSDR: 192 kS/s doc

This closes issue #44

LimeSDR plugins now use the LimeSuite version 17.06.0 in the Debian package. It brings at least these improvements:

  • Starting up the plugin is much faster
  • The amplifier setting on transmission can use the full range. Previously on VHF and above it was saturating when set over a few dB.

If you build from source you have to make sure that LimeSuite 17.06.0 is installed system wide or a 17.06.0 installation is referenced in the cmake command.

  • The size of audio FIFO in audio transmission channel plugins (AM, NFM, SSB, WFM) has been reduced from 1s to 100ms
sdrangel - Bug fixes and audio compressor for SSB modulator

Published by f4exb about 7 years ago

  • LimeSDR: fixed NCO limits calculation to clamp lower limit to zero. Fixes issue #42
  • LimeSDR: fixed NCO de-tune when sample rate or hardware decimation/interpolation changes. Fixes issue #42
  • Fixed the audio input garble on all audio modulators (AM, NFM, SSB, WFM) when the baseband sample rate is greater or equal to twice the audio sample rate (i.e. >= 96 kS/s). Fixes issue #43

See the SSB modulator documentation for more details: https://github.com/f4exb/sdrangel/blob/master/plugins/channeltx/modssb/readme.md

sdrangel - AGC for the SSB demod

Published by f4exb about 7 years ago

Added an AGC on the channel filtered signal so that the audio volume does not vary following the signal power from station to station or due to QSB. Also added a power threshold squelch so that background noise does not rise at normal signal level when there is no signal. This is really necessary in a multi-channel (multi-plugin) configuration.

More details in the SSB demodulator readme: https://github.com/f4exb/sdrangel/blob/master/plugins/channelrx/demodssb/readme.md

  • ChannelAnalyzerNG: improved LSB handling in the GUI
sdrangel - HackRF, RTLSDR and SSB improvements

Published by f4exb about 7 years ago

  • Automatically stop Rx when starting Tx and vice versa in a Rx/Tx configuration with the same HackRF device
  • Added option to drive Tx frequency from Rx frequency in a Rx/Tx configuration with the same HackRF device
  • Added option to control the RTL2838 AGC
  • Improved SSB and DSB span and bandwidth values displays
  • Show negative frequencies in the spectrum frequency axis in LSB mode
  • Improved documentation
sdrangel - LimeSDR support improvements

Published by f4exb over 7 years ago

  • LimeSDR input plugin: added option to individually control the LNA, TIA and PGA gains. This implements issue #32
  • LimeSDR input and output plugins: show board temperature. This implements issue #34
  • LimeSDR input and output plugins: show the actual ADC/DAC sample rate
  • Implemented a generic "buddy leader" logic for multiple input/output devices such as the LimeSDR
  • UDP source: edit masks for IP and ports and set a GUI minimum size
  • ValueDialZ: added missing inter-wheel gap on the last digit
  • ChannelAnalyzerNG: set bandwidth text appropriately considering SSB/DSB setting
  • SDRdaemonSink: corrected getCenterFrequency
  • Added pulseaudio and libqt5multimedia5-plugins in the Debian dependencies. This fixes issue #31
  • Updated readme with a paragraph on the not so obvious pulseaudio setup. This fixes issue #31
  • HackRF: extend LO ppm correction range to +/-30 (specs of AVX CX3225GB crystal)
  • Do not compile the broadcast FM demod plugin when the host is a Raspberry Pi because of unsufficient memory
  • Updates for building on aarch64 and openSUSE
sdrangel - SDRdaemon transmit support

Published by f4exb over 7 years ago

With the new major version v3.0.0 of SDRdaemon transmit capable SDR devices are supported. For now only HackRF is supported and more will come with next versions of SDRdaemon.

A new sample sink plugin SDRdaemonSink has been created to support remote transmission with a UDP link to the remote SDRdaemon Tx instance.

SDRdaemonFEC has been renamed SDRdaemonSource and SDRdaemon plugin is removed from the build and no more supported. In consequence there is no more dependency on liblz4.

This makes things simpler with a SDRdaemonSource for remote reception and SDRdaemonSink for remote transmission using the SDRdaemon package installed on a distant machine with connected SDR devices.

There are important changes in the GUI to make it more convenient and aligned on the new SDRdaemonSink plugin.

The value dials aspect has changed from a reverse video aspect to a more realistic thumbwheel aspect.

For values admitting negative values a new value dial class has been created to support seamless move across the zero value.

  • AF squelch and NFM
  • Changed ready/running/error color status of sample sinks to match those of sample sources
  • HackRF input: force settings after deserialization
  • Turned on compilation warnings and solved them
  • Removed some useless dependencies
  • Rearranged dock widgets so device interface is on the top and presets are on the bottom
  • Fixed code typo preventing remove last device to work correctly
  • Fixed re-enumeration of static devices
  • Updated documentation
sdrangel - Downchannelizer, AM and NFM demod fixes

Published by f4exb over 7 years ago

Fixed the downsampling half band filter chain so that each stage output is divided by two before entering the next stage. This fixes irregular power readings on channel Rx plugins while the spectrum appears flat.

  • added an optional bandpass sharp (boxcar) filter to cut frequencies below 300 Hz. This can help with small signals on air band.
  • refactoring of demodulator
  • use double type for all moving averages
  • Refactored optional AF squelch that replaces the deviation squelch
  • Squelch refactoring with ramp up and down using a smootherstep function to minimize head and tail noises
  • use double type for all moving averages
  • Officially includes Windows64 support
  • Fixed NCO button
  • Fixed frequency reading on spectrum when starting with NCO
sdrangel - LimeSDR support for Win64 and fixes

Published by f4exb over 7 years ago

This is the first release to contain input and output plugins for LimeSDR in the Windows 64 bit version

Some fixes carried out but the LimeSuite library is overall unstable or so badly documented that it cannot be used properly. This version makes a few fixes to improve experience with LimeSDR input and output plugins but is clearly far fromt perfect.

This closes the updates made to LimeSDR plugins until LimeSDR gets more mature.

As suggested by Martin lib64 paths have been added to the search paths for various dependencies. This should improve the builds on OpenSUSE.