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 - Tx full baseband interpolation chain (phase 2)

Published by f4exb almost 8 years ago

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).

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.

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

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.

Optimize the number of taps per phase in the polyphase filter. This improves the frequency response without increasing CPU usage.

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.

The BladeRF support has been added to the Debian builds.

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.

Set SIMD options so that it is effective for FEC processing.

Fixed device input dock not visible when application is first run. Re-order Window submenu items

Removed useless dependency on QTOpenGL end QTMultimedia where it was not necessary.

sdrangel - Minimalist Tx support (Tx phase 1)

Published by f4exb almost 8 years ago

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.

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"

sdrangel - RTLSDR decimation by 32

Published by f4exb about 8 years ago

There is not much more visible things than this in this version. Decimation by 32 is now supported with RTLSDR plugin

More class name changes to avoid collisions with Tx tabs

Changes in view to support more than one audio flow by device. Unfortunately the AMBE3000 does not seem to cope with it so it is still limited to one flow by device. The code is kept like this as it can be modified in the future to support simultaneous encode/decode which should be possible according to AMBE3000 documentation.

This should be the last of the 2.1 series. Next will see embryonic Tx support (one simple modulator with file output) and therefore the versioning will bump to 2.2

sdrangel - Windows Airspy plugin fix for Airspy Mini

Published by f4exb about 8 years ago

The Windows build of the plugin was not reading sample rates dynamically this is now fixed and thus Airspy Mini with 6.0 and 3.0 MS/s sample rate is supported with the Windows relase bundle.

The keenerd's version of librtlsdr was found to work not so great with strong signals giving more ghost images than the original. So we switched back to the original librtlsdr in development version with just the mods for no mod direct sampling support in addition.

Corrected issue when last user of the audio output quits. Thus it is now possible to start and stop devices (including file source) randomly even in single device mode.

Following a fix in DSDcc version 1.5.1 the voice on indicator is correctly handled for YSF mode. Of course you have to use version 1.5.1 or above of DSDcc to benefit from it. This is integrated in the Windows build bundle.

Some classes were renamed to avoid collision with future classes supporting transmission (Tx mode). The channel plugin repository was also renamed to channelrx

sdrangel - DSD demod plugin: Yaesu System Fusion (YSF) support

Published by f4exb about 8 years ago

You have to use version 1.5.0 of DSDcc or above to benefit from the changes. Please refer to DSD plugin documentation for details on the new (and existing) features of the DSD demod plugin.

DSD demod plugin now supports Yaesu System Fusion abbreviated YSF. YSF is developed and promoted by Yaesu for Amateur Radio customers. The voice full rate mode with SerialDV is not supported (garbled).

D-star slow data is now decoded and displayed in the status display bar of the DSD demod plugin. Thus the following information is made available:

  • header data even if the header frame was missed (late entry)
  • the 20 character user informative message
  • the geopositional data sent in the $$CRC frames
sdrangel - DSD demod plugin: major refactoring of DMR

Published by f4exb about 8 years ago

The refactoring of DMR processing in DSDcc v1.4.0 brings dramatic improvements to DMR experience. Make sure you compile using v1.4.0 of DSDcc to benefit from the enhancements. This includes:

  • better processing with less errors
  • new status display including source and target addresses information
  • ability to select the time slot for voice output or mixing both
  • ability to split voice time slots to left and right audio stereo channels
sdrangel - DSD plugin: major fix in FSK modem

Published by f4exb about 8 years ago

Again there is no change in SDRangel itself but you must make sure you compile it with DSDcc version 1.3.0 that contains these improvements.

This is a dramatic improvement to the Digital Voice modes experience with this plugin. The clicks and distorsions on the voice are completely removed and decoding of data frames is much more robust.

The rewrite of the FSK modem in DSDcc yields some changes and improvements to the GUI along with other fixes:

  • Button to select/deselect matched filter although you will want it most of the time liberty is granted to the user to play with it
  • When the matched filter is engaged its output is shown on the scope and not the discriminator output to fit what really enters in the FSK demod
  • Button to switch between transitions constellation display (the only one previously) and symbol synchronization monitor signal display
  • Signal level range and center displays
  • Display of the percentage of synchronization zero crossing hits per symbol
  • Display of the calculated symbol framing jitter
  • Fixed the channel power display
  • Fixed the monospace font type so that it displays nicely both in Linux and Windows versions.
sdrangel - DSD plugin: partial support of dPMR and NXDN

Published by f4exb about 8 years ago

Although DSDcc library has many bugs it should be able to at least partially detect dPMR and NXDN frames. Actual changes in SDRangel itself are very light with only small changes to the DSD plugin GUI. Most importantly you should use the release 1.2.0 of DSDcc that effectively contains the new code.

sdrangel - New SDRdaemonFEC plugin

Published by f4exb about 8 years ago

This plugin works with the FEC enabled version of SDRdaemon. When FEC is used the format of the data is completely different from what it is without FEC. The functionnality i also rather different so instead of trying to fit it into the existing SDRdaemon plugin this is easier and more straightforward to have a plugin on its own.

The addition of FEC blocks and the sequence tagging of frames and blocks make the transmission more robust. While it is unlikely to be beneficial with copper or fiber links it can improve links over WiFi particularly on distant links.

Please refer to the corresponding readme for further details about this plugin.

The auto correction buttons now have the same labels "DC" and "IQ" as the corresponding buttons in the other source plugins with the auto-correction feature.

sdrangel - Build on Mac OS

Published by f4exb over 8 years ago

Thanks to sigysmund contribution SDRangel can now be built for Mac OS. Please be aware that this is still experimental and being currently tested by sigysmund.

There is no binary package for this release.

sdrangel - Multi device support

Published by f4exb over 8 years ago

This is the main point of this release and justifies the bump in major version. This is effectively an evolution of paradigm and involves a lot of internal changes although it may not catch the eye when looking at the interface.

Starting with this release multiple sampling devices (i.e. RTL-SDR dongles, Funcube dongles, HackRFs, File Source instances, SDRdaemon instances, etc..) are allowed to run concurrently. The audio of all channels producing audio from all devices is mixed in the final audio output. Each device resides in a device slot with corresponding device tabs in some critical windows of the main display. Thus the previous "X0" tab that was static is replaced with dynamically allocated tabs "R0, R1, R2, ..." corrsponding to the device slots 0, 1, 2, ... The "R' denotes a receiving device and is a provision for future (version 3) transmitting devices that will be tagged "T".

Device slots are added at the end of the device stack or removed from the top of device stack using the main window Acquisition menu "Add device" and "Remove device" options. The first device slot (R0) is added at startup and cannot be removed.

It may not seem obvious at first look but there are however important changes in the main interface. You can check here for the main interface documentation. The changes are:

  • The "File" menu is left with only the Exit (Ctl-Q) option
  • The "View" menu is left with only the Fullscreen (F11) option
  • The "Acquisition" menu original options (Start/Stop device, Start/Stop recording) is replaced with the "Add device" and "Remove device" options. The original function key shortcuts (F5 to F8) are removed. These options are now handled at device level. Using these options you can add more sampling devices and remove them one by one (see main interface documnentation for details)
  • The "Window" menu is unchanged but the original Source window has been replaced by two windows: Sampling Devices and Sampling Devices Control.
  • The status bar has changed completely since device related displays have been moved to the Sampling Device window. It has been replaced with a general status and current date and time.

Functions related to device management (start/stop, start/stop recording) are reported to the Sampling Device window for each device.

Following the windows re-arrangement with presets filed from the previous SDRangel revisions the new windows may not display the way you like. It is usually convenient to have the Sampling Devices window sitting at the top of the left bar. You can just drag and drop the window there and save the preset the next time you load the preset it will appear in the desired place.

The following inactive plugins code has been removed:

  • gnuradio
  • osmosdr
  • v4l-rtl
  • v4l-msi
  • tetra demodulator
sdrangel - DV serial devices support for DSD demod

Published by f4exb over 8 years ago

DV serial devices such as the ThumbDV are now supported to decode AMBE frames. Such devices expose the serial interface of the official DVSI AMBE3000 chip. This lifts possible patent issues with mbelib as already mentioned and offers a slightly better audio. However bear in mind that it uses a serial interface at 460 kb/s which is fairly fast but not as fast as a software codec. This limits the possibility of running decodes in parallel. To circumvent this you can add as many DV serial devices to your system as you wish and all will contribute to the global throughput.

Please note that this does not work in Windows.

sdrangel - Updates for RTL-SDR, DSD demod and main menus

Published by f4exb over 8 years ago

New rates: 256k and 1600k

Show color code in DMR specific status area

Preferences with only the audio settings has been moved to a main entry in the top menu as Preferences. The Audio device choice dialog has been moved under it. This will allow more general preferences to be specified.

Fixed missing initialization in D-Star header process causing random segmentation fault.

sdrangel - DMR and D-Star support

Published by f4exb over 8 years ago

Using DSDcc library which is a rewrite of DSD program as a C++ library a new DSD Demodulator channel plugin has been written. At present it decodes the following formats:

  • DMR/MOTOTRBO: European two slot TDMA standard. MOTOTRBO is a popular implementation of this standard.
  • D-Star: developed and promoted by Icom for Amateur Radio customers.

DSDcc itself uses mbelib to decode AMBE frames. While DSDcc is intended to be patent-free, mbelib that it uses describes functions that may be covered by one or more U.S. patents owned by DVSI Inc. The source code itself should not be infringing as it merely describes possible methods of implementation. Compiling or using mbelib may infringe on patents rights in your jurisdiction and/or require licensing. It is unknown if DVSI will sell licenses for software that uses mbelib.

If you are not comfortable with this just do not install DSDcc and/or mbelib and the plugin will not be compiled and added to SDRangel. For packaged distributions just remove:

  • For Linux distributions: plugins/channel/libdemoddsd.so
  • For Windows distributions: dsdcc.dll, mbelib.dll, plugins\channel\demoddsd.dll

If you choose to compile and install this plugin you will need to have DSDcc installed in your system. Please follow instructions in DSDcc readme to build and install DSDcc. If you install it in a custom location say /opt/install/dsdcc you will need to add these defines to the cmake command: -DLIBDSDCC_INCLUDE_DIR=/opt/install/dsdcc/include/dsdcc -DLIBDSDCC_LIBRARIES=/opt/install/dsdcc/lib/libdsdcc.so

If you have mbelib installed in a custom location, say /opt/install/mbelib you will need to add these defines to the cmake command: -DLIBMBE_INCLUDE_DIR=/opt/install/mbelib/include -DLIBMBE_LIBRARY=/opt/install/mbelib/lib/libmbe.so

Please refer to DSD demodulator readme.md for details on the GUI.

sdrangel - UDP source NFM demod and Scope GUI changes and fixes

Published by f4exb over 8 years ago

The key change is to maintain a fixed UDP payload size of 2048 bytes that was changing depending on the sample rate settings. This may cause discontinuity in the samples flow in the client application. The receiving application must make sure it acknowledges this block size. UDP may fragment the block but there will be a point when the last UDP block will fill up a complete block of 2048 bytes. So all blocks filling up to 2048 bytes must be received before the 2048 bytes block is passed to the rest of the application. In particular in GNUradio the UDP source block must be configured with a 2048 bytes payload size.

The UDP source utility buffer wrap around logic was fixed so there is no sample loss anymore.

In the GUI added the missing channel frequency display on the channel marker when the mouse is passed on the GUI.

Added a readme docimentation.

Block incoming traces (trigger) while in memory mode. This avoids an annoying trace shift in history when a new trace is received. Block all trigger related GUI controls accordingly. Fixed the pre-trigger samples initialization when trace size changes. Do not apply trigger changes when sample rate changes as this is unnecessary if not even creating bugs. These fixes make the trace history stable.

Added the current displayed trace sample rate in the GUI.

Added a squelch gate control. The fixed 50ms squelch gate can now be varied from 10 to 500ms in 10ms steps. This avoids longer transients to open the squelch.

Revamped the GUI so that it takes even less screen space. Added a readme docimentation.

sdrangel - Export/Import presets

Published by f4exb over 8 years ago

The main objective of this release is to provide export and import of presets functionality. Two icons have appeared at the bottom of the preset window symbolizing an outgoing arrow for export and an incoming arrow for import. The intent is to facilitate the exchange of presets between machines saving the tedious task to recreate all channels and settings each time.

To perform an export the cursor in the preset tree view must be located on a preset item. You then choose the location of the file that gets automatically suffixed with .prex

To perform an import the cursor in the preset tree view must be located either on a preset item or a group item. The preset will be imported in the located group. You then choose the location of the file filtered by .prex extension. Note that you will have either to exit the program normally or press the save presets button (the diskette with a green tag) for the changes to be permanent.

Preset is serialized into a binary blob that is translated to base64 before being written to file thus the file appears as a text file but is unreadable. However this can be easire to handle than a binary file. In the opposite direction the blob is created from the base64 string and is deserialized into a preset that is added to the preset tree.

Some cosmetic changes have been made in the Airspy, BladeRF, HackRF and RTL-SDR input plugin GUIs to rationalize some widgets and gain screen space.

sdrangel - SDRdaemon plugin updates and Windows build updates

Published by f4exb over 8 years ago

There is now the possibility to control the distant SDRdaemon instance from the plugin. See SDRdaemon plugin readme for details. These parameters are stored in the preset and automatically sent when the preset is loaded.

The BladeRF is now supported. libbladeRF is significantly harder to compile than the oher hardware interface libraries but it could eventually be done.

It was possible to build SDRangel with MinGW64 thus there is now a 64 bit distribution. The SDRdaemon plugin is implemented only in this version. The 32 bit version fails when sending configuration messages with nanomsg. The corresponding .7z archive is the one starting with sdrangel64 it will unpack in a sdrangel64 subdirectory and the name of the executable stays the same: sdrangel.exe

Now the audio mute button lits in green when the squelch is open helping identifying which channels are active in a multi-channel configuration.

sdrangel - SDRdaemon plugin updates and Windows release

Published by f4exb over 8 years ago

In order to support the release under Windows I had to make SDRdaemon plugin more resilient to all sorts of troubles due to Windows being incapable of scheduling tasks properly and accurately. Thus we have now the following enhancements:

  • Main buffer length display in seconds. A lag of half of this amount vs real time is expected.
  • Read/Write pointers position in main buffer auto-correction (this is the B button in the GUI). You normally will want this one active
  • Button to reset the Read/Write pointers to their initial position
  • Button to control auto skew rate compensation activation (normally off)
  • Gauges and display value to monitor the Read vs Write pointers drift
  • Auto adapt to actual read polling throttle. In Windows this is way off the 50ms tick. Linux version also benefits from it since tick it is not always strictly every 50ms.
  • Use a main buffer length of at least 8s and up to 50 times the frame size so that auto R/W pointer distance locking algorithm can be efficient statistically.

The remote control from the plugin is not implemented. This may become available in the near future. For now you have to control it directly via ZMQ messages. You can use the Python utility found in the SDRdaemon sources.

Fixed intermittent segmentation fault due to missing initializations.

This is a major update for the OpenGL components (the spectrum and scope views). Initially this was in a move towards porting SDRangel to Android for which old fixed pipeline calls (OpenGL 1.1) are removed. The port to Android is still unsuccessful however it turned out that it facilitated the port to Windows and it makes the code ready for a possible future complete drop of fixed pipeline interfaces.

There is no change in functionality other that indirect changes to SDRdaemon plugin but this is a major step towards opening SDRangel to new platforms and thus possibilities. One may think of the Pipo series for example that run exclusively on Windows or Android. This can turn it into a nice portable SDR and signal analyzer. It was tested successfully on my Pipo-X8 under Windows8 with a RTL-SDR dongle.

However this comes with some limitations:

  • BladeRF is not supported
  • SDRdaemon plugin for working with a remote receiver does not work in all conditions or even does not work at all. This is a limitation of the OS. SDRdaemon works beautifully under Linux.

The code has been partially re-organized to facilitate integration with QtCreator:

  • All files pertaining to sdrbase library are now located in the sdrbase folder. The include folder has been removed
  • Some channel demod pliugins were renamed (xxx to demodxxx like am to demodam)

You can build it yourself or just unpack the .7z archive in this release to anywhere on your disk (ex: D:\Programs) and click on sdrangel.exe

You will need to install Zadig to get USB support for hardware devices. Please refer to Zadig website for details. Basically if you get things working for SDR# or HDSDR then it will work with SDRangel.

sdrangel - File source plugin UI enhancements

Published by f4exb over 8 years ago

sdrangel - Fixed program crash when editing IP address of UDP source plugin

Published by f4exb over 8 years ago

Fixes issue #3. Fixed a missing method body causing program crash when address text is edited.