SDRuno on Linux

Discussions about everything to do with SDRuno
StandingWave
Posts: 56
Joined: Mon Feb 18, 2019 6:54 pm

SDRuno on Linux

Post by StandingWave » Tue Mar 05, 2019 3:55 pm

I have been wanting to try SDRuno on Linux but having searched this forum and read some of the posts, this initially seemed an unlikely possibility. Nevertheless, I decided to see for myself, and to that end installed SDRuno into WINE (installer file SDRplay_SDRuno_Installer_1.22.exe) as I was curious to see what would happen. Well the application did start up, but as has been previously mentioned, the application does not 'see' the radio. Now, since I already had CubicSDR running, I know that the radio works fine so there was no problem with the hardware. So what gives?

Well it turns out that WINE does not support USB devices, so the application could not identify the RSP connected to the USB port. Clearly, the standard version of SDRuno would not be able to work. But was there another solution?

Well, yes, it turns out there was. SDPplay provides an RSP_TCP server which can be used to operate the radio remotely over a network connection. This is available for the PI, but also for Linux. They also provide an EXTIO version of SDRuno that can be used as a remote client. Could RSP_TCP provide a means to allow SDRuno running under WINE to access the radio?

Well to find out, first I had to compile RSP_TCP. This requires that the API and the SoapySDR libraries are compiled and installed first. Since these libraries were also required for CubiSDR, I already had them installed. The Linux version of RSP_TCP (RSPTCPServer-master.zip) was downloaded, extracted and compiled. It compiled and installed quickly and without any fuss.

When SDRuno is installed on Windows, it installs both USB and EXTIO versions of SDRuno. On Linux, WINE does create a desktop icon for the 'standard' USB version, but not for the EXTIO version of the application. The shortcut has to be created manually. The easiest way was to copy and rename the desktop file 'SDRuno.desktop' to something like 'SDRuno EXTIO.desktop'. The file then needed to be modified which was done easily with any text editor. The resulting file looked like this:

Code: Select all

[Desktop Entry]
Name=SDRuno EXTIO
Exec=env WINEPREFIX="/home/johnc/.wine" wine C:\\\\Program\\ Files\\ \\(x86\\)\\\\SDRplay\\\\SDRuno\\\\SDRuno.EXTIO.exe
Type=Application
StartupNotify=true
Path=/home/johnc/.wine/dosdevices/c:/Program Files (x86)/SDRplay/SDRuno
Icon=0FC5_SDRuno.0
StartupWMClass=sdruno.EXTIO.exe
Now, there were two icons on the desktop, one called SDRuno and the other called 'SDRuno EXTIO'. The new icon was double-clicked to confirm that SDRuno EXTIO would launch, which it did, and the application was closed down for now.

Next, the RSP_TCP EXTIO dll was required. This was downloaded from the SDRplay site as a file called SDRplay_ExtIO_TCP_1.0.zip. From this, the ExtIO_RSP_TCP.dll file was extracted and placed in the directory that WINE recognizes as the Windows "Documents" folder. On my machine this was in /home/username/Documents. For 'username' substitute your own user name.

Now that there was an icon to launch from, the EXTIO DLL for the RSP_TCP server was in place, and the RSP_TCP server itself was installed, the next step was to proceed and test.

The rsp_tcp server was started in a terminal window, specifying the -E parameter for enhanced mode, and the -a parameter with the loopback IP address as follows:

Code: Select all

$ rsp_tcp -E -a 127.0.0.1
rsp_tcp version 1.0

libmirsdrapi-rsp version 2.13 found
detected RSP model 'RSP 2' (hw ver 2)
listening...
The output showed that the server had found the RSP and it was listening. So far so good.

Next, the SDRuno EXTIO application was started again. The terminal confirmed that the application connected to the server:

Code: Select all

client accepted!
sending RSP extended capabilities structure
started rx
At this point, it was useful to click on OPT, select RSP_TCP (if it does not appear then the application has not found the RSP_TCP EXTIO dll) and confirm that 127.0.0.1:1234 are specified as the host IP and port number.

Initially, the EXTIO version of SDRuno opens up just the Main window. It is necessary to manually configure the workspace. This can be done quite quickly and easily by clicking as follows:

On the main panel: SP1, SP2, RX
You might also require: REC_Pannel, MEM_Pan
On the receiver panel: EXW

That should open most of the familiar panels and they can be arranged as required.

It is also a good idea to check that the correct sound device is selected. This can be done via the SETT. button on the RX Control panel. Looking at the OUT tab, the audio device was set blank, so Pulseaudio was selected from the drop-down list.

All that remained was to hit Play and tune in to a favourite station!
As the desktop snapshot shows, this came though loud and clear!

A couple of points to note are, that there may be one or two graphical artefacts. For example, the audio device selection box was distorted. The EXTIO version does not seem to quite have all of the facilities that the USB version has. For example, there is no band selection button on the received panel, and no antenna selection. I think antenna selection has to be done when staring RSP_TCP by using the -P parameter.
Attachments
SDRuno-on-Linux.jpg
SDRuno-on-Linux.jpg (170.68 KiB) Viewed 36228 times

Reason: No reason

Tech_Support
Posts: 499
Joined: Mon Jun 01, 2015 7:00 pm

Re: SDRuno on Linux

Post by Tech_Support » Tue Mar 05, 2019 4:42 pm

Hello StandingWave,
After opening the ExtIO version of SDRuno, if you type the letter h, the ExtIO window will appear. This will allow you to change ports, gain etc.

Sincerely

Tech_Support

Reason: No reason

StandingWave
Posts: 56
Joined: Mon Feb 18, 2019 6:54 pm

Re: SDRuno on Linux

Post by StandingWave » Tue Mar 05, 2019 8:25 pm

Thank you for pointing that out. I forgot that these settings were in that dialogue.

When experimenting with this a bit further, I ran into some difficulties. For example, I suddenly found that SDRuno would not initialise properly, showing just a black box with an outline of some form objects. One then has to shut down the application by killing processes. It seems that RSP_TCP must be running before one starts SDRuno. Then it opens properly. This does not happen natively under windows.

I also tried changing the IP address in SDRuno to see if it would connect with RSP_TCP running the Raspberry Pi, but SDRuno stubbornly kept communicating with the local host! In fact, to accomplish this, I first had to start RSP_TCP on the PC with the RSP connected. I then remove the RSP from the PC and connected it to the Pi, and finally start RSP_TCP on there. I then changed the IP address in the RSP_TCP settings in SDRuno, but the application stubbornly continued to communicate with the local host. I shut down RSP_TCP on the local host and tried again, but the RSP_TCP server on the Pi still did not record a connection.

So it would seem that this solution only works on the local host. For remote control, one still needs to use Windows, or possibly Android.

Reason: No reason

Tech_Support
Posts: 499
Joined: Mon Jun 01, 2015 7:00 pm

Re: SDRuno on Linux

Post by Tech_Support » Wed Mar 06, 2019 12:08 pm

Hello again StandingWave,
When you try to change the IP address in the ExtIO Window, it is important to ensure that 'Auto Reconnect' and 'Persistent Connection' options are UNCHECKED before you try to change the IP address. If either of these options were checked, I recommend that you uncheck them and try again to see if that helps.

We have never tried Wine, but what you have been doing here is extremely interesting so we will look into this some more as it could be of great interest to member of our community that want to use Linux.

Sincerely

Tech_Support

Reason: No reason

StandingWave
Posts: 56
Joined: Mon Feb 18, 2019 6:54 pm

Re: SDRuno on Linux

Post by StandingWave » Wed Mar 06, 2019 2:46 pm

Thank you for your interest in my work! Yes, I was just using the default configuration and both of these options were checked. Unchecking these options does indeed facilitate changing the IP address. Steps* as follows:

1. Connect RSP to PC.
2. Start rsp_tcp
3. Start SDRuno EXTIO
4. OPT | Select Input | RSP-TCP, unckeck 'Auto Reconnect' and 'Persistent Connection', enter the IP address:port and close
5. Stop the RSP_TCP server on the localhost
6. Connect the RSP to the Pi and start the RSP_TCP server on the Pi
7. Configure workspace and band, hit Start and tune in

* it is no longer necessary to keep moving the RSP between PC and Pi/remote host. The next post shows how.

Now, if only there was a way to start SDRuno EXTIO without having to run the RSP_TCP server on the localhost....
Is there a command line parameter that would take you directly to the EXTIO config without SDRuno EXTIO first trying to start with the default localhost config?

The attachment is pretty much as above but now shows Classical FM being received using the SDRuno EXTIO client running in WINE on Mint 19 and the RSP_TCP server running on the Pi with the RSP connected.
Attachments
SDRuno-on-Linux-plus-Pi.jpg
SDRuno-on-Linux-plus-Pi.jpg (163.15 KiB) Viewed 36151 times

Reason: No reason

StandingWave
Posts: 56
Joined: Mon Feb 18, 2019 6:54 pm

Re: SDRuno on Linux

Post by StandingWave » Wed Mar 06, 2019 3:49 pm

I think I have stumbled on a way to start SDRuno EXTIO normally without a running RSP_TCP server on the localhost. It occurred to me that forwarding port 1234 to the remote host might be sufficient for the SDRuno EXTIO to recognize a valid RSP_TCP server on the local host and start normally. It turned out to be even simpler than that.

Ideally, the RSP should already be set up on the Pi or remote host and the RSP_TCP server should already be running on that remote device.

All we need to do is fool SDRuno EXTIO that port 1234 is open. The simplest way is to use netcat with the following command:

Code: Select all

nc -l 1234
This temporarily sets up a listening port on the local host.

Now, when SDRuno EXTIO starts without the RSP_TCP server running on localhost, it will still detect that port 1234 is open and initialise fully showing the Main window. From there, typing 'h' or clicking OPT will take you to the RSP-TCP config dialog. At this point, the netcat connection can be closed (Ctrl-C or close the terminal), that is, if it has not closed already. Uncheck 'Auto Reconnect' and 'Persistent Connection' and configure the IP address/port for the Pi/remote host.

Using this approach, it is no longer necessary to keep moving the RSP between the PC and the remote device.
Incidentally, it seems that 'Auto Reconnect' and 'Persistent Connection' can be checked again after the connection to the Pi/remote host has been made.

Is there not a way of saving the RSP_TCP server IP address and port so that it does not have to be entered manually every time?

Reason: No reason

sdrplay
Posts: 978
Joined: Wed Jan 07, 2015 7:58 am

Re: SDRuno on Linux

Post by sdrplay » Thu Mar 07, 2019 10:39 pm

What version of Wine do you have installed and did you get it using instructions from winehq.org?

Thanks,

SDRplay Support

Reason: No reason

StandingWave
Posts: 56
Joined: Mon Feb 18, 2019 6:54 pm

Re: SDRuno on Linux

Post by StandingWave » Fri Mar 08, 2019 12:37 am

My apologies for omitting this information. I am running WINE version 4.0 and yes, I did get it using the instructions on the WineHQ website. Since I am using Mint 19, I followed the instructions for Ubuntu and selected the repository for the "Ubuntu 18.04 / Linux Mint 19.x" version. The version of WINE supplied in the Ubuntu 18.04 repository is outdated and I had issues when running other Windows applications which were resolved by using the version from WineHQ. I do not have any add-ons installed such as Winetricks or PlayonLinux, just WINE.

Reason: No reason

deadite66
Posts: 32
Joined: Mon Jan 23, 2017 7:14 pm
Location: Norfolk, UK.

Re: SDRuno on Linux

Post by deadite66 » Sun Mar 10, 2019 8:58 am

Thanks for this post got it working.

@sdrplay any chance of making a server & extio plugin to get the full RSP capabilities in linux.

Reason: No reason
RSP2 Pro and RSP1A owner.

StandingWave
Posts: 56
Joined: Mon Feb 18, 2019 6:54 pm

Re: SDRuno on Linux

Post by StandingWave » Tue Mar 12, 2019 12:38 pm

deadite66 wrote:Thanks for this post got it working.
That's good to hear. I'm glad that my notes helped someone to get it working!
deadite66 wrote:@sdrplay any chance of making a server & extio plugin to get the full RSP capabilities in linux.
I know this question was intended for the folks at SDRplay, but can I also add a couple of questions of my own?

I noticed that the EXTIO version of SDRuno did not have some new features that were present in the USB version. One example is the band selection buttons, which are missing from the receiver panel in the EXTIO version. One might perhaps have hoped that both versions would be synchronized in terms of features, especially as they are supplied within the same installation package. Not quite sure why that is not the case, but could I ask SDRplay whether they will be at some point?

Regarding the TCP server, I gather that the RSP_TCP is based on RTL_TCP and that the latter is 8 bit. The RSP_TCP server has a '-E' parameter for "extended mode" which I did use with my RSP2 as shown in the RSP_TCP server manual. Regarding that mode, the manual states:
Please note that the -E option enables the new extended mode. In this mode, all of the functionality will be available from the client, however this will require a compatible client such as the ExtIO plugin we have provided with this release. Some RSP functionality can be achieved in “RTL compatible” mode by using the command line options to enable RSP functions such as ports, hardware notches and Bias-T
So do I understand this correctly? When used with SDRuno, an RSP and the SDRplay supplied EXTIO dll, -E enables all of the functionality available on the RSP in SDRuno? If used with another SDR software client that requires "RTL compatible" mode, then I guess it is understandable that additional command line parameters would be needed to control certain features of the RSP. Also, obviously when used with a non-RSP device (e.g.an RTLSDR dongle) then one would be limited the hardware features of that device. However, does this mean that when using -E with an RSP, the RSP_TCP server will stream in full 14-bit mode, or does it still have the limitation of 8-bit mode as inherited from the RTL_TCP driver?

Reason: No reason

Post Reply