Bot releases are hidden (Show)
Published by f4exb over 6 years ago
Now building with release 18.04.1 of LimeSuite that appears to fix the Tx problems. Also the Tx sample rate on the Mini can now go below 2.5 MS/s (tested at 1 MS/s). Unfortunately the Lime-Mini does not work in Windows since libusb and Zadig driver do not seem to work with the Mini. It is fine with the LimeSDR-USB though.
The transverter frequency translation has been implemented for both Rx and Tx thus implementing issue #155
Some plugins that are using the FFT filter were not deleting it at the right time thus in some cases some samples could still be processed through it after deletion. Sometimes it was not deleted at all thus creating a memory leak. This is now fixed and resolves issue #159
Published by f4exb over 6 years ago
Added support of source plugins:
Added support of sink plugins:
Added support of channel Tx now covering the full list of plugins:
Fixed the segfault in RDS parser. Fixes issue #157
Published by f4exb over 6 years ago
Fixed lowpass filter initialization to correct segfault when using CTCSS on both NFM demodulator and modulator
Published by f4exb over 6 years ago
Complete redesign of the audio management with the possibility to set preferences by device in particular the sample rate. The audio device used for the audio stream of modulators and demodulators can be selected individually. This allows all sorts of audio plumbing between channel plugins and with external applications. Also by using sample rates as low as 8000 S/s it is possible to set the baseband sample rate below 48k (AM, NFM, SSB). The sending of a copy of the audio stream via UDP is handled at device level taking the audio mix. RTP protocol can be used over UDP for better connection to players that accept this format using SDP files. Consequently the UDP support at plugin level has been entirely removed. This implements issue #145
More details here: https://github.com/f4exb/sdrangel/blob/master/sdrgui/audio.md
Published by f4exb over 6 years ago
introduced a few fixes to work with LimeSuite version matching the 2.14 gateware i.e. commit https://github.com/myriadrf/LimeSuite/commit/90c39911b4a5f3db6488c8b1a199734a5db37a0e
Be careful not to use the latest commit for gateware 2.15 that has not been verified.
Now the Rx part is working with all its features. Unfortunately the Tx part still does not work (garbled modulation).
Fixes issue #139
New entry points to get the channel report data. Includes average power received and squelch status. A "scanner" Python script client scanner.py
has been created in the swagger/sdrangel/examples
folder. Check all options with python ./scanner.py --help
. This script will create a series of equally spaced channel of the same type (AM or NFM) then the center frequency will sweep the requested band thus sweeping the channel "comb" over the requested band. As soon as one of the channel squelch is active the sweeping is stopped and resumes after a user defined delay. Some frequencies can be excluded so that it will not stop on continuous transmissions.
Support of AirspyHF source and AM demodulator added.
Partially implements issue #143
Published by f4exb over 6 years ago
🎉 New demodulator to decode DATV (Digital Amaeur TeleVision) signals. Many thanks to Laurent F4HKW for writing this plugin and Pascal F4DAV for LeanSDR that is at the heart of the demodulation and decoding process. For now only the DVB-S standard without audio is supported. More may come in the future and firstly the decoding of audio.
More information here: https://github.com/f4exb/sdrangel/tree/master/plugins/channelrx/demoddatv
Note that due to dependency with ffmpeg it is not possible to provide a Windows version at the moment.
The AM, NFM, SSB and WFM demodulators have now the option to send audio data over UDP using the RTP protocol by clicking on the "R" checkbox nest to the "U" button. Format is 48 kHz single channel with 16 bit signed samples. You may try to play this file saved with a .sdp extension with VLC:
c=IN IP4 127.0.0.1
m=audio 9998 RTP/AVP 96
a=rtpmap:96 L16/48000/1
Replace IP address 127.0.0.1
and port 9998
by your values. Note that the port should be an even number.
The scope with all its controls has been removed in favor of a more simple "magic eye" display. Thus you are not obliged to go through the complex controls of the scope and can concentrate on bandwidth, FM deviation and gain to get the figure right for best decoding conditions.
More information here: https://github.com/f4exb/sdrangel/tree/master/plugins/channelrx/demoddsd
This release uses the latest version of LimeSuite that goes with the latest firmware on LimeSDR-USB and LimeSDR-Mini. Unfortunately many of the recent changes break the way things used to work and possibly some critical bugs have been introduced.
Therefore only single Rx is actually working. If you need anything else from your Lime please use the previous version of SDRangel and previous revisions of the firmware for the Lime.
clang-cl
compile without warningsPublished by f4exb over 6 years ago
The Perseus is now supported in the Linux flavor only. If you compile from source you have to set the -DRX_SAMPLE_24BIT=ON
flag on the cmake command line. This is to build with a 24 bit Rx DSP chain. The Perseus sends genuinely 24 bit samples so this is to match its sample size. More details here: https://github.com/f4exb/sdrangel/tree/master/plugins/samplesource/perseus
This implements #130 The I/Q correction was not working correctly since its origin missing the actual phase imbalance correction. This is now fixed with a more complete algorithm.
The following tools have been run against the code:
-fsanitize=address
optionI hope this will make the code more robust and the application more stable. In addition some other issues were found and fixed and some dead code removed.
The code for an internal RTP library and the DATV demodulator plugin are still a work in progress. The code compiles but cannot be considered as operational yet.
Note: the Windows build now comes in a single 32 bit flavor. Thus only the official Qt MinGW toolchain is used to build the release. An up to date toolchain with Qt 5.10.1 is used. 32 bit code can be used on 64 bit systems so this is not an issue. In addition it has the benefit of using Qt Angle which can help with systems without up to date OpenGL support.
Note2: the Linux builds are made with the 24 bit Rx DSP chain option.
Published by f4exb over 6 years ago
Use option -DRX_SAMPLE_24BIT=ON
on the cmake command line to build SDRangel with 24 bit wide samples for the Rx DSP processing. This is mostly useful for Airspy HF+ with decimation. Airspy HF+ has already 16 bit samples native so any decimation will not gain bit precision (hence dynamic range) when using 16 bit samples in the Rx DSP. However for sample rates over 1 MS/s the CPU load is increased by a small margin. Therefore this remains an option. The binary packages are still built with 16 bit Rx samples.
Published by f4exb over 6 years ago
New source plugin to support Airspy HF+. See: https://github.com/f4exb/sdrangel/tree/master/plugins/samplesource/airspyhf If you compile this project you will need my copy of AirspyHF. See the readme for instructions.
Created a source plugin that generates a continuous wave for testing the software internals. See the plugin folder for details. This helped discover a few bugs in the decimation chain that are fixed in this version.
Published by f4exb almost 7 years ago
Fixed segfault when stopping one device in multiple stream configuration. Was due to wrong initialization of shared data copying the other thread address as its own.
Refactor the rational decimator filtering. The cutoff was half of what it should be and was like this since quite a long time maybe since the creation of the plugin. In addition relaxed the filtering since the sharp filtering is done by a FFT filter. This can slightly increase performance.
Published by f4exb almost 7 years ago
This is mostly intended to power users.
Added possibility to launch processes from the GUI. This is set up and controlled from the commands view which details are described here This implements issue #49
Using the web REST API you can launch automated processes like the PTT (Push To Talk). In the swagger examples one can find the example of a PTT Python script. This is a working example however since the API does not cover all plugins yet this will work only with HackRF, LimeSDR or RTLSDR.
As an example in order to set this scenario up in the commands view you need to create a pair of commands one supporting the Rx to Tx and the other the Tx to Rx. You can create the first one then duplicate it and modify the copy.
To create the Rx to Tx:
PTT
for the groupTransmit
for the description-a %1:%2 -d %3 -t
for the argumentsTo create the Tx to Rx duplicate the first command and edit it:
Receive
for example-t
: -a %1:%2 -d %3
release
check boxTo activate the newly created PTT key click on the button with the keyboard icon at the very right of buttons at the bottom of the commands tree view. Please note that if you do other actions in other windows in the meantime you may loose command control via keyboard in which case the keyboard button is released. You need to click it again to recover control.
The provided PTT script assumes that the Rx and Tx device sets (tabs) are next to each other (like R0
and T1
) and that the Rx tab is active at the time the PTT is engaged for transmission.
This was tested successfully in a RTL-SDR (Rx) and HackRF (Tx) configuration. Please note that the ptt.py
script will not work with LimeSDR Rx and Tx combination. With LimeSDR you should keep the Tx stream running and use the NFM modulator channel mute to stop transmission.
All commands with the same associated key are launched in parallel. This opens a new range of possibilities. For example you can combine the script that controls Rx/Tx in SDRangel with another one that handles PA control (you need to synchronize it with the Rx/Tx script as all scripts run in parallel). Then you don't need any physical connection between the Rx/Tx hardware and the PA. Everything would run in software. To launch commands in parallel you can also put all related commands in the same group and use the run button while the group is selected in the command tree view.
Published by f4exb almost 7 years ago
There was a long lasting problem where the multi threading in source channels was not effective while for Rx the channel sinks are really running concurrently. This fix should largely improve fluidity when using multiple or even a single source channel.
You will need version 1.7.4 of dsdcc to support this with the default mbelib support. A Butterworth filter with -3 dB cutoff at 240 Hz is used instead of the Chebyshev with a -3 dB cutoff at 480 Hz used previously. Both are 2 pole IIR filters..
Published by f4exb almost 7 years ago
Implementation of a new binary sdrangelsrv
that is similar to sdrangel
but does not fire up a GUI. This server mode binary has therefore no dependency on Qt Widgets nor OpenGL. Since ot has no GUI its control is left entirely up to the web REST API interface.
It can serve two purposes:
This is a proof of concept at this stage with only a subset of plugins available:
This is distributed only in Linux packages.
Implemented an optional high-pass filter on audio so that voice readability can be improved in some cases. Please note that this makes use of the version v1.7.3 of DSDcc thus this release (or later) must be used if you want to compile the DSD demodulator plugin.
Published by f4exb almost 7 years ago
Binary releases are compiled with the latest version of LimeSuite (commit 04b57e0) to fix segfault when using only the second channel or starting the second channel first.
Published by f4exb almost 7 years ago
This helps support LimeSDR mini correctly in particular the change of Rx and Tx path routing according to antenna switch (issue #100)
Main window can be controlled almost completely with the web API. A complete configuration can be set up using a script. For example the following Python script does the following:
import requests
base_url = "http://127.0.0.1:8091/sdrangel"
# commands list. Each command is a list:
# - URL suffix (API function)
# - HTTP method (GET, PATCH, POST, PUT, DELETE)
# - Params as key:value pairs or None if unused
# - JSON body or None if unused
# - Descriptive message fragment
commands = [
["/deviceset/0/device", "PUT", None, {"hwType": "BladeRF"}, "setup BladeRF on Rx 0"],
["/preset", "PATCH", None, {"deviceSetIndex": 0, "preset": {"groupName": "OM144", "centerFrequency": 145640000, "type": "R", "name": "Repeaters extended"}}, "load preset on Rx 0"],
["/devicesets", "POST", None, None, "add Rx 1 device set"],
["/deviceset/1/device", "PUT", None, {"hwType": "SDRdaemonSource"}, "setup SDRdaemonSource on Rx 1"],
["/preset", "PATCH", None, {"deviceSetIndex": 1, "preset": {"groupName": "OM430", "centerFrequency": 439550000, "type": "R", "name": "F5ZKP Daemon RPi3 SUSE"}}, "load preset on Rx 1"],
["/devicesets", "POST", None, None, "add Rx 2 device set"],
["/deviceset/2/device", "PUT", None, {"hwType": "SDRplay1"}, "setup SDRplay on Rx 2"],
["/preset", "PATCH", None, {"deviceSetIndex": 2, "preset": {"groupName": "40m", "centerFrequency": 7130000, "type": "R", "name": "SSB low"}}, "load preset on Rx 2"],
["/dvserial", "PATCH", {"dvserial": 1}, None, "set DV serial processing for AMBE frames decoding"]
]
requests_methods = {
"GET": requests.get,
"PATCH": requests.patch,
"POST": requests.post,
"PUT": requests.put,
"DELETE": requests.delete
}
for command in commands:
url = base_url + command[0]
method = requests_methods.get(command[1], None)
if method is not None:
r = method(url=url, params=command[2], json=command[3])
if r.status_code == 200:
print("Done: %s" % command[4])
else:
print("Error %d:%s" % (r.status_code, command[4]))
print(r.text)
exit(1)
else:
print("requests method error")
exit(1)
print("All done!")
Published by f4exb almost 7 years ago
Used Swagger to design the web API. You can sneak peek in the generated documentation in HTML by browsing swagger/sdrangel/code/html2/index.html
directly with a browser in your cloned repository. Only the client code is generated for Qt5 but the data structures can be re-used for the server.
At the moment only the information summary /sdrangel
path is implemented. The default host and port at startup is 127.0.0.1:8091
this can be changed with the -a
(host address) and -p
(port) options given as arguments to the sdrangel
binary.
Published by f4exb almost 7 years ago
Thanks to the Stefan Frings' QtWebApp logging package which was modified to fit SDRangel needs a more professional looking logging has been put in place. Included is the option to log messages to a file along with the console. This is particularly interesting when running in Windows where no console message are displayed. Thus it is now possible to visualize debug messages in Windows.
A new dialog opens from Preferences > Logging menu in the main window to control settings. See details here: https://github.com/f4exb/sdrangel/tree/master/sdrgui#12-logging-preferences
Note: in order to be able to see debug messages the Ubuntu and Debian builds are set with debug messages ON at compilation time. The minimum message level to be logged is "debug" by default but can be adjusted in the logging preference dialog. This setting is persistent in the presets and current preset.
Published by f4exb almost 7 years ago
Fixed a segfault and/or infinite loop by re-organizing constructor instructions sequence. This fixes issue #88
GUI and Rx/Tx channel core separation: modulator/demodulator constructor separated from the modulator.demodulator GUI constructor.
Published by f4exb almost 7 years ago
Added a dialog to LimeSDR plugins to be able to switch the clock reference to the external clock input. See here for detals.
This implements issue #74
Fixed issues with SSB modulator GUI when fiddling with SSB/DSB or the bandwidth sliders. This fixes issue #87
Use the current locale to set the group delimiter on the value dials (separator between thousands). This used to be a dot (".") which is the case in many countries but the US and the UK where a comma is used. Anyway most hams and professionals alike are used the the US/UK notation so as the binaries are built on machines with US locale the separator will be a comma. If you compile from source it will be the separator used in your locale.
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).