SpyServer 2.0 Released: More Efficient Streaming for Airspy and RTL-SDR
Back in March the team behind the Airspy SDR and SDRSharp software released the SpyServer, a piece of software that allows you to stream radio data from a remote Airspy receiver over a network. Then later in April they added full support for the RTL-SDR dongle as well.
This Easter the Airspy team have released SpyServer 2.0, which improves the streaming efficiency significantly (changelog). Now the full 8 MHz bandwidth of the Airspy should be easily streamable over an internet connection. With SpyServer 1.0 it was difficult to make use of the full bandwidth of the Airspy because the network data usage was very high, since it was streaming the full raw IQ data for the sampling rate/bandwidth selected. In SpyServer 2.0 the server does not stream the full raw data, and instead only streams the wideband FFT data (for displaying the waterfall and FFT graph), and the raw data from the currently selected IF bandwidth. Of course the full IQ data can still be streamed if desired by selecting the ‘Use full IQ’ checkbox.
This new efficiency means that WFM uses only about 1.3 MB/s, and narrow band modes like NFM/AM/SSB only use about 120 kB/s of network data which is easily achievable over a local network and internet. This data usage is almost independent of the sampling rate/bandwidth selected so you can stream the full 8 MHz offered by the Airspy without trouble. Normally streaming the full raw data for 8 MHz would use about 40 MB/s, which is difficult to achieve over a local network, and impossible over the internet.
We tested the new SpyServer over our local network and were able to stream the full 8 MHz of the Airspy with no problems. With the RTL-SDR we were also able to stream 2.4 MHz without issue. WFM and NFM modes worked clearly and no skips or significant lag was noticed over a local WiFi N connection. Hopefully in the future SpyServer will be developed further to enable compressed audio streaming as well for even lower network data usage.
Some Operational Notes:
- To run SpyServer on Windows simply double click on spyserver.exe. On Linux extract “spyserver_linux_x86” and the config file, and then run “sudo chmod +x spyserver_linux_x86”. Then run it with “./spyserver_linux_x86”.
- Connect to it on the remote PC in SDR# using the servers IP address which can be found by typing “ipconfig /all” in Windows command prompt, or “ifconfig” on Linux.
- To select between using the Airspy and RTL-SDR for the SpyServer you will need to edit the spyserver.config file with a text editor and edit the “device_type” string.
- SpyServer runs on Windows/Linux as well as small embedded computers such as Raspberry Pi’s and Odroids. Download the Raspberry Pi and Odroid servers separately from SDR# at http://airspy.com/download.
- SpyServer is NOT compatible with software that expects an rtl_tcp server such as SDRTouch.
We have also seen Lucas Teske of the OpenSatellite project use the SpyServer for streaming a GOES16 downlink over a network connection with an Odroid C2. He writes that soon the OpenSatellite project software will directly support SpyServer.
#GOES16 HRIT / TLM over Spyserver streaming from #ODROID C2 ! Thats amazing! Soon @OpenSatProject support 😀 pic.twitter.com/RJ36hgkxMN
— Lucas Teske (@lucasteske) April 16, 2017
Trouble starting/connect to spyserver on raspberry pi : [email protected]:~/spyserver $ cd ~/spyserver && ./spyserver
SPY Server v2.0.1618 – http://airspy.com
Reading the configuration file: spyserver.config
Listening for connections on 0.0.0.0:5555
Accepted client 192.168.1.103:58985 running SDR# v188.8.131.522 on Microsoft Windows NT 6.2.9200.0
Device was sleeping. Wake up!
Could not acquire the device
Your address might want to be localhost – 127.0.0.1
any how how to run this oin a pi3 without user having to ssh into to start the spyserver ?
i had that working with rtl_tcp perfect, it would be great to have this running unattended too,
You can launch it with screen and leave it unattended.
When I run airspy server on my linux machine and connect to it from my SDR# i get the error “Server didn’t send the device capability and synchronisation info”
i use the latest download SDR# 184.108.40.2060 and airspy server 2.0.1558
Reading through “Using the SPY Server for Remote SDR Operation” @ http://airspy.com/quickstart/ I would guess the bit you skipped was building and installing libairspy and it’s associated tools like airspy_info.
And if the device you are using is an rtl-sdr install it’s library (“Getting Started on Linux” @ https://www.rtl-sdr.com/rtl-sdr-quick-start-guide/ ) and verify that it is accessible with rtl_test -t
Thank you for the reaction.
rtl_test is detecting the RTL-Dongel and the latest airspy tools are installed.
I already have run GNU radio on that machine with the RTL-Dongel zo this is working ok.
This error happend before the software is connecting to the “hardware” it doesn’t matter if I configure the RTL or Airspy in the config.
Well then my next guess would be there there is a firewall on the Linux machine (or possibly somewhere else), you can check if there are rules with something like these commands:
sudo iptables -L
sudo iptables -L -v
if there is no firewall you should get back three blank policies for INPUT, FORWARD and OUTPUT.
The command to open a port would be something like:
sudo iptables -I INPUT -p tcp –dport 5555 -j ACCEPT
or even more restrictive if you know the IP address of your windows PC
sudo iptables -I INPUT -p tcp -s INSERT_WINDOWS_IP_ADDRESS_HERE –dport 5555 -j ACCEPT
or if you wanted to restrict access to a local LAN, say if 192.168.0.0 ro 192.168.0.255 are the IP addresses used by the DHCP server/local router. A command something like the following could be used.
iptables -I INPUT -p tcp -s 192.168.0.0/24 –dport 5555 -j ACCEPT
( ref: http://www.putorius.net/2011/05/basic-of-iptables-opening-ports-on.html and https://www.digitalocean.com/community/tutorials/how-to-list-and-delete-iptables-firewall-rules )
Be very careful when changing the rules on a firewall, one bad screw up and you can’t connect to the machine.
Just test the port with rtl_tcp. I have the same error and no connction via airspy server.
I can’t seem to get any reasonable audio out of SDR# as a client , modulation type is the right one selected corresponding to the band, i can hear audio but not recognisable. Using ver. 1555 and it also seems like it’s responding kinda slow in the spectrum. using spysever with a rtl-sdr R820T2 on a linux box over the internet.
BW usage is about 110-150kb it says.
could it be a BW problem ? i have 1Mb up on the side of the server.
I feel like I’m having the same issue, hearing some FM radio audio but it’s skipping. Full IQ makes it a little better but increases the BW use dramatically…
What’s your ping to the server? Latency could be a problem if the streaming protocol isn’t very robust. Also remember that a 1 Mbps upload is 125 kB/sec so you may be saturating your upload if you are running 110-150 kB/sec. I believe SDR# is reporting bandwidth in kBytes not kbits (little b and big B are different by 8x).
Tnx i’ll take a look at it. I know that the DSL is not very stable, and sometimes connection to the server is also a bit of a problem. (Indeed you are right about kb and kB).
RTL_TCP works but this doesn’t work with RTL-SDR or Airpsy mini. Error is: “Server did not send the device capability info”. There is no hint of any connection made on the server. Latest Ubuntu 32-bit running live on x86 processor.
Can someone suggest the quasi-supported pi distro that spyserver likes? jesse is a mess. best…. DSR
Has anyone gotten SpyServer to work on a Raspberry Pi with a RTL-SDR yet? I had to install GCC-5 to get it to run, but when I try to connect from a Windows client I get the error “Could not acquire the device” on the server and “Device got disconnected” on the client. I did edit the spyserver.config file with ‘device_type = RTL-SDR’ the same way I’ve done with Windows SpyServers that have worked successfully. Dongle works with Gqrx just fine.
I have it working here with both the RTL-SDR and Airspy on Jessie (after installing GCC-5), although the Rpi3 seems to struggle with not having enough computing power for the Airspy and server at max bandwidth. The RTL-SDR works fine though.
Make sure the RTL-SDR dongle works with rtl_test and it should be working.
I ran rtl_test and it works just fine. But SpyServer still won’t work with the same errors. I’m using the latest Raspbian Jessie (April 2017), SPY Server (2.0.1551), and SDR# (r1553).
Why isnt this Open Source? No good if it is closed source. Sorry.
I’d like baudline to be open source, and it was annoying enough that miek came along and created inspectrum. If you do not like it, invest part of your lifetime and create something better and make it open source.
Does that means that you do not use SDR# either, since it is the only client program which supports this (currently) ?
Why would the creator(s) of SDR#(tm) only make closed-source software?
So he can keep making profit of his AirSpy(r) ™, what else lol. (They only care about money; They really dont give a fuck about usability)
Paid for by: TV Licensing
Probably because they figured no one can code as good as they do and they saw a commercial opportunity. Wait this is called Capitalism!
It is funny to see the “open source crowd” moan and complain every time a useful piece of closed source software is released. I’m afraid closed source does not automagically remove useful functionality for 99% of the user base. As a software professional, I appreciate it is made freely available for all AND it supports rtl-sdr in addition to their own products. Open source is a privilege — not a damned right.
Fully agree. If you don’t like it, keep walking.
My thanks to the authors. I’m using with rtlsdr and a raspberry pi3 over wifi!
Yeah, you sure like it if the creators of the software just break compatibility with some hardware intentionally (or simply don’t include it) and maybe even abandon it at some point?
The idealistic views in open software communities seem good in principle but in reality they are exploitive. The software consuming masses now *expect* the skilled minority to fulfil all their needs for a thank you. This occurring over many years has created many zealots with skewed expections.
If you buy a graphics card from ATI or Nvidia, you can reasonably expect them each to provide the appropriate level of software support. Nvidia do not support ATI hardware and ATI does not support Nvidia. This is exactly what is happening here yet spyserver additionally supports rtl-sdr for the benefit of many. Nothing more to it.
It could be a nice feature if the sdr# could be connected to multiple servers with different receivers providing a broader bandwidth in case of rtl-sdr. Moreover, it is unclear, what is the difference to rtl_tcp additionally to spectrum data transfer.
does’nt work in Raspbian Jessie:
./spyserver: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21′ not found (required by ./spyserver)
any advice ?
Just tried it on Raspbian Jessie and got the same error. What worked for me is upgrading to GCC-5. https://github.com/doublethinkco/cpp-ethereum-cross/issues/79, see teedeepee’s answer.
Spyserver v1.0 worked great with two clients and two different NOAA passes,
Spyserver v2.0 and SDR#1553 breaks everything so for now I am holding back on the latest SDR# and Spyserver combo untill plugins are fixed 🙂
By installing GCC-5 it seems to start ok but in the client i’ve got this message:
Server did’nt send the device capability info
the config file is as default except for listening ip address and device type (RTL-SDR)…
Any provision to offer multi-user access like WEB-SDR?
It *is* multi-user.
Damn, RTFM they say…Thank you, sir.
Wonder how many PRACTICAL concurrent streams, and the math to determine the minimum data throughput required for a given bandwidth.
Looking forward to working with the S/W!
I would like to see Direct sampling support for the RTL-SDR
Is there a public list of servers to connect to?
1546 was already a big improvement.
didnt yet installed 1553 for spyserver, but i already gonna like this.