Releases: f4exb/sdrangel
Tx support for hardware devices
🎉 Tx support for real!
At last transmission side is supported for BladeRF. Use the "BladeRF Output plugin". See https://github.com/f4exb/sdrangel/tree/master/plugins/samplesink/bladerfoutput for details. Since version 2.2 only file output was available. Improvements and support for HackRF will come next but this is already a working solution and a major step for SDRangel.
These channel plugins are available to get something out:
- AM modulator
- Narrowband FM modulator
- SSB/DSB/CW modulator
- Wide FM modulator
Other changes
- WFM modulator fixes - WFM demodulator fixesFixed multiple modulators lockup issue
Fixed multiple modulators lockup issue
This fixes issue #11. See issue for details. Now multiple modulators in the same baseband can run smoothly. However multiple modulators is different from multiple demodulators as for transmission mixing is required and adds complexity. Moreover the relative power of each modulator must be reduced as the number of modulators is increased. Having more than two of them is more or less a curiosity. An information message is displayed when more than one modulator is added to the baseband.
This fix however also improves performance of single modulator operation.
Other changes
- Removed useless mutex lock on audio input and output FIFOs. This may improve multiple channel reception fluidity. Apparently this is a requirement to work in OSX. - Fixed core dump when ending application and Tx is still running - Windows build: fixed deployment of WFM modulatorWFM Modulator
WFM Modulator
Modulator for wideband FM signals. Bandwidth may span from 12.5 to 250 kHz and FM deviation from 1 to 100 kHz.
DSD demod: D-Star slow text fix
You have to compile with version 1.5.4 of dsdcc to benefit from the change or use the distributed binaries that have this version built in. Non printable characters are filtered out and replaced by dots. This avoids stray characters to mess up with the text display.
Other changes
- Changed implementation details of the sample source FIFO - AM, NFM and WFM modulators: implement channel mute toggle button with specific icons - NFM CTCSS - Use precision NCOs for: - Channel Analyzer and SSB mod/demod channel NCO - AM, NFM, SSB and WFM tones - CTCSS tone - Set volume modulators span to [0.0,2.0] - Set modulators reference levels to -1 dB. - WFM demod: added 100 kHz RF bandwidthSSB Modulator
SSB Modulator
Implemented a SSB modulator. Look for the "SSB Modulator" plugin.
It does USB/LSB (by reversing the filter limit similarly to the SSB demodulator) and also DSB. It can optionally use binaural input i.e. I and Q samples are taken from the left and right stereo channels (or reversed). In DSB with binaural setting in Tx and Rx this effectively transmits in stereo.
CW keyer
Implemented a CW keyer for the SSB, AM and NFM modulators. You can enter the text that will be keyed in Morse code at speeds from 1 to 26 WPM (Words Per Minute). You can also send a series of dots or dashes. Transitions are smoothed with a 4 ms ramp that follows the smootherstep function f(x) = 6x⁵ - 15x⁴ + 10x³ This function has zero first and second derivatives at 0 and 1. This reduces the "clicking" efficiently and in turn reduces the spectrum splatter very significantly.
Other changes
- Fixed possible segfault in SDRdaemonFEC plugin - NFM and DSD demod plugins: revised the squelch method to use a short average on the calculated instantaneous channel power - dB calculator: use a floor value (default -100 dB) when the input is zero instead of zero dB (which means maximum). - Updated sdrbase readme with details on how to use the recorded I/Q files. This fixes issue #10NFM Modulator
NFM Modulator
Implemented a Narrowband FM (NFM) Modulator. Look for "NFM Modulator" plugin.
Signal level meter
A signal level meter in dB has been implemented in the following demodulator plugins:
- AM demod
- Broadcast FM (BFM) demod
- Digital Speech Decoder (DSD) demod
- Narrowband FM (NFM) demod
- SSB demod
Debian builds fix
- Restored the missing SDRdaemon and SDRdaemonFEC plugins - Removed useless dependency on libglu1-mesa package (libGLU.so.1)Other changes
- AM demod: removed useless AF filtering - NFM demod: fixed squelch so that it is actually based on average channel power - Adjust minimum GUI size of some demod pluginsAM modulator updates
AM modulator updates
New modulation sources:
- file input
- mic (audio in)
The GUI has changed to reflect these changes.
Other changes
- Audio in supportSDRplay comes into play
Support of SDRplay RSP1
SDRplay RSP1 is now supported in Linux version only. SDRplay is based on the MSi001 and MSi2500 chips from Mirics. The standard API provided by Mirics is closed source moreover it could not be implemented successfully in SDRangel. An open source API libmirisdr-2 has been written by Miroslav Slugen and later amended by Leif Asbrink SM5BSZ. It depends only on libusb. This API uses a new flavour called libmirisdr-4 in this very same Github space. It contains enhancements and bug fixes. Unfortunately the Windows version is unstable causing software abort and BSOD therefore no Windows version is provided.
GUI documentation can be found here.
To activate the plugin compilation you will have to compile libmirisdr-4
and install it in your system. When installed in non standard folders the include and library paths have to be specified on the cmake command line. Say if you install libmirisdr-4
in /opt/install/libmirisdr
you will have to add -DLIBMIRISDR_INCLUDE_DIR=/opt/install/libmirisdr/include -DLIBMIRISDR_LIBRARIES=/opt/install/libmirisdr/lib/libmirisdr.so
on the cmake command line.
The Debian package is provided with libmirisdr so it is not a dependency.
Other changes
Frequency dial (value dial) improvement
- When right clicking on a digit the digits on the right are all set to zero. This effectively does a floor rounding at the current position. - When left clicking on a digit a cursor is set on it and you can also use the arrows to move the corresponding thumbwheel. It was the any button click behaviour previously.Build correction
Fixed SDRdaemon and SDRdaemonFEC builds so that they are included only if dependent libraries are found. This fixes issue #9
Code enhancement
- Corrected clang warnings - BladeRF plugin: cleanup of useless methods and attributes - Debian build: remove USE_SSE2 flag for inner libairspy compilationOptimization of FIR halfband filters
Optimization of FIR halfband filters
- SIMD optimization with SSE4.1
- Push decimators halfband filter order to 64
- rationalize build process with SIMD options
Windows build
- use SIMD optimizations systematically in all pluginsTx full baseband interpolation chain (phase 2)
Tx full baseband interpolation chain (phase 2)
Half-band interpolator filter chain in up channelizer. Rational resampler interpolator in the modulator. Arbitrary sample rates in the File Sink to test all possible configurations. Decimation is also possible so any rate can be implemented (ex: 32 kS/s).
Interpolator/Decimator support
This is experimental in the AM modulator and demodulator. It allows rates lower than 48 kS/s in both. However there are race conditions with the audio system as the 48 kS/s rate cannot be exactly on spot with the interpolator/decimator input or output. This results in audible clicks but is a clear improvement from the original.
Decimators and interpolators filters improvements
These optimizations allow lowering the spurs below -72.5 dBc on Tx. On Rx there was no measurements done but a significant improvement in spurs rejection in the presence of a strong signal is expected
Half-band filter improvement
Optimized filter coefficients. Increased filter order to 48 for the half-band decimators (Rx). Changed algorithm to use the double buffer technique. CPU usage improvement is not significant but the frequency response is better.
Rational resampler filter improvement
Optimize the number of taps per phase in the polyphase filter. This improves the frequency response without increasing CPU usage.
SSE 4.1
Now SSE 4.1 is needed for x86_64 SIMD support. This anticipates further optimizations and is already needed in other parts of the code.
Debian package with BladeRF support
The BladeRF support has been added to the Debian builds.
Other changes and fixes
DV serial support
Fallen back the multi FIFO support as it introduced bugs and it is not possible to effectiely handle two conversations simultaneously on the same dongle.
SDRDaemoFEC plugin
Set SIMD options so that it is effective for FEC processing.
Main window
Fixed device input dock not visible when application is first run. Re-order Window submenu items
Dependencies
Removed useless dependency on QTOpenGL end QTMultimedia where it was not necessary.
Minimalist Tx support (Tx phase 1)
Minimalist Tx support
Phase 1 of deployment. There is a sine modulated AM modulator with a File Sink device for the Tx device. Everything works at a single rate of 48 kS/s (no interpolation). The I/Q (.sdriq) file output can be re-injected in the File Source device for verification.
In the Device menu of the top bar of the main window click on "Add sink device" to open a set of tabs oriented towards transmission (sink devices). Then in the device selector you can activate the only device available (FileSink) and you can add as many AM modulators as you would do for demodulators. The carriers will be mixed in the baseband that you can watch in the main spectrum window.
Debian package
At last we will distribute a .deb package which will install the software in /opt/sdrangel
since it is not part of any official Debian or Ubuntu distribution. Therefore it will not interfere with the standard installation. Moreover it has specific plugin libraries and embedded libraries that you don't want interfering with standard locations. BladeRF is not supported yet due to its complicated build process as an internal dependency this will come soon however.
Install it as usual for a .deb package:
- Make sure the
universe
repository is in your/etc/apt/sources.list
sudo apt-get update
sudo dpkg -i sdrangel_v2.2.0-1_amd64.deb
sudo apt-get -f install
This installs missing dependencies
You can then start it from the command line:
/opt/sdrangel/bin/sdrangel
By default the sampling devices panel is not visible so on the very first time you start you will need to go to the "Window" item on the top bar menu of the main window and activate it by checking "Sampling devices"