RTL-SDR Tutorial: Setting up and using the SpyServer Remote Streaming Server with an RTL-SDR
A number of people have asked how to use SDR#'s SpyServer with an RTL-SDR. In this tutorial we will show how to set up SpyServer on both Windows and Linux systems. We try to assume as little knowledge as possible, but we do assume that you have decent experience with computers. Also for the Linux/Raspberry Pi setup we need to assume that you have some basic experience with Linux and setting up Raspberry Pi's.
What is SpyServer?
SpyServer is a free RTL-SDR compatible SDR server that is designed to work with the popular SDR# software. It is actually designed for the Airspy range of products, but the author has also made it compatible with RTL-SDR dongles. Running a SpyServer allows you to connect to and use a remotely positioned RTL-SDR over a network connection (such as a local LAN/WiFi or the Internet). Once connected, using the dongle is the same as if the dongle was directly connected to the users PC.
Remote servers are useful as you may want to set up an antenna in a remote location (such as up on your roof or shack), and don't want to run a long lossy coax cable down to the PC. Instead you could run Ethernet cable, or avoid cables by using WiFi. All you'd need is power for a remote computing device like a Raspberry Pi 3. Perhaps you also have a great antenna location at a friends house, or other property and want to access that antenna remotely. Or maybe you want to use your radio while travelling.
SpyServer is similar to another tool that you may already be familiar with called rtl_tcp. However, SpyServer is regarded as superior because it is signficantly more efficient at network usage. Instead of sending the entire raw data like rtl_tcp does, SpyServer only sends the IQ data of the currently tuned in signal. Waterfall data is processed on the server and sent in compressed form. There is one disadvantage to SpyServer in that it requires slightly more powerful computing hardware like a Pi 2 or Pi 3, whereas rtl_tcp can run on the lowest end hardware.
Network usage when streaming with SpyServer will be about 120 KB/s when listening to WFM and about 38 KB/s when listening to narrow band modes for one client being connected. Multiple clients can connect to the SpyServer and share the same currently tuned bandwidth.
Server: Setting up SpyServer on Windows
Setting up a SpyServer server on Windows is extremely simple.
- Log on to the Windows PC that you want to be the remote server.
- Go to www.airspy.com/download and download the latest version zip file of SDR#. Extract all the files onto a folder on your PC.
- Run the install-rtlsdr.bat file to download the RTL-SDR drivers.
- In the SDR# folder find the file spyserver.config. Right click it and select 'Open With -> Notepad'.
- Edit the 'device_type' line to show 'device_type = RTL-SDR'.
- Save and close the spyserver.config text file.
- Double click on spyserver.exe to start the server.
- Open the start menu and type in 'cmd' and then press enter to open a command prompt.
- In the new command prompt type in 'ipconfig'. This will display a list of network adapters on your PC, with their current IP addresses. Find the one actively being used (likely Ethernet or Wireless) and note down the IPv4 Address. This is your server PCs IP address.
Server: Setting up SpyServer on Linux
- Log into the Linux device that you are using for the server, and open a terminal window if needed.
- First install prerequisites such as the RTL-SDR drivers and librtlsdr.
sudo apt install rtl-sdr librtlsdr-dev
- Create a new folder for the spyserver and navigate into it.
mkdir spyserver cd spyserver
- Download the latest SpyServer and extract it using the commands below. NOTE: That you will need to download the correct version for the platform that you are using (e.g. 32 or 64-bit, ARM or x86). Go to airspy.com/download, and find the links for the SpyServer download that matches your platform. Replace the link below with it. The link used in this example is for the 32-bit ARM version which is what Raspberry Pi's and most other single board PCsww like Odroids and Orange Pi's use.
wget -O spyserver.tgz http://airspy.com/?ddownload=4247 tar xvzf spyserver.tgz
- Use a text editor like nano to edit the spyserver.config file. Change the "device_type" to "device_type = RTL-SDR" (without quotes).
If you are unfamiliar with Nano, then note that you cannot use the mouse. You will need to use the arrow keys to move the cursor. Editing is done with the bakspace/del keys and keyboard keys as usual. To save and exit, Press "Ctrl + X", and then the "y" key.nano spyserver.config
- Find your device's IP address using the "ifconfig" command. Note NOT "ipconfig" from windows, notice the "f". Write this IP address down as it is the address you'll use to connect to the SpyServer.
- Now you can run SpyServer
./spyserver
Note that if you get the error './spyserver: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./spyserver)', then you'll need to install the newer GCC-5 or GCC-6.
To do this use the following steps:
- Type 'sudo nano /etc/apt/sources.list' and change the word 'jessie' to 'stretch'. Save and close the file (Ctrl+X, Y)
- Type 'sudo apt-get update'
- Type 'sudo apt-get install gcc-5' or if that is not found 'sudo apt-get install gcc-6'
If you get error 'W: There is no public key available for the following key IDs:
EF0F382A1A7B6500' after running 'sudo apt-get update', then first install the following with 'sudo apt-get install debian-keyring debian-archive-keyring'
You'll be asked a few questions during the install and all the defaults are fine. Installation will take about 20 minutes. Once upgraded you should be able to run ./spyserver.
Tip: Setting up a headless Raspberry Pi
If you're setting up a Raspberry Pi as a server then you're probably not going to be connecting it to a monitor. This is called a headless setup. You'll also probably be using WiFi. This tip shows you how to enable SSH and enter the WiFi credentials on a Raspberry Pi without any monitor, keyboard or mouse. If you want you still can of course initially connect a monitor keyboard and mouse and set it up via the Raspbian GUI, or connect a network cable.
After writing the Raspbian image to the SD card, put it into a PC and open the boot drive partition in file explorer.
To enable SSH simply create an empty text file with the name 'SSH' in the root of the partition.
To allow a WiFi connection create a text file called 'wpa_supplicant.conf' in the root of the partition and fill it with the following text. NOTE: Make sure that it is not wpa_supplicant.conf.txt. You must set Windows to display the full file extension so you can change it to just wpa_supplicant.conf. This will set up a WiFi connection on boot and automatically connect it. (Only good for WPA2 secured systems)
network={
ssid="YOUR SSID"
psk="YOUR PASSWORD"
key_mgmt=WPA-PSK
}
Finally you'll need to look in your routers status page to find the IP address of the Raspberry Pi. Usually the routers access page can be accessed at http://192.168.1.1 or 192.168.1.254, but this address is entirely dependent on your router set up. Consult your router manual or ISP for these details if you do not know them.
Client PC: Connecting to the SpyServer
Once you've set up the server you can now connect to it from a client PC.
- Log on to the Windows PC that you want to browse the radio spectrum with (client PC). This PC should be on the same network as your server PC (or see below about port forwarding to use remotely over the internet).
- Download and extract the latest SDR# version on the client PC.
- Open SDR#.
- Under Source select 'Spy Server'.
- Enter the IP address of the server in the following format: 'sdr://IP_ADDR:5555' (without quotes).
- Press the play button.
You should now be connected to the remote SpyServer and the spectrum should be active.
There are some additional options that you'll see in the Source box. Apart from the standard gain and bandwidth settings there is an IQ format drop down box and a 'use full IQ' checkbox.
Use Full IQ - This essentially reverts SpyServer back into rtl_tcp, sending the entire IQ data over the network. Note that you'll need to press the stop button first or this option will be greyed out.
IQ Format - This enables/disables IQ compression. With an RTL-SDR in most cases you should use PCM 8bit to keep the network data as low as possible. If you experience problems you can try other options.
The limitation with 8-bit mode is that you might loose dynamic range, but for most signals (and the RTL-SDR which is 8-bits anyway) it will be fine. Higher end SDRs like the HF+ may benefit from PCB 16-bit or higher modes in some cases.
Tweaking SpyServer
If you're having performance issues on slower hardware or networks like choppy audio then you might want to reduce the frame rate. You can do this in the spyserver.config text file by editing the 'fft_fps' variable. By default it is 15, try lower values to improve performance. Lower the frame rate results in a more pixelated waterfall in SDR#.
You may also want to play with increasing the 'buffer_size_ms' and 'buffer_count' variables if you experience choppiness especially over the internet.
After editing the file restart the server.
Using SpyServer with an Upconverter
This is simple, but you need to know your upconverters offset. For example the ham-it-up upconverter has an offset of 125 MHz (-125,000,000 Hz) and the SpyVerter upconverter has an offset of 120 MHz (-120,000,000 Hz). If you have another upconverter and are unsure of the offset then consult the manufacturer or it's documentation.
To set the offset in SpyServer edit the spyserver.config file with a text editor. Uncomment the 'converter_offset' variable by removing the '#' next to it (do not delete the '#' on the two lines above). You can then set the offset used by your upconverter after the equals sign.
Running SpyServer Automatically on Boot (Raspberry Pi)
You may wish to set up your server so that it automatically starts on boot. Doing so is simple with crontab.
- Open crontab with nano
crontab -e
- Add the following line at the bottom.
@reboot /home/pi/spyserver/spyserver /home/pi/spyserver/spyserver.config
- Press Ctrl + X and then 'y' to save and quit.
Port Forwarding
If you want to connect to your SpyServer over the internet then you may need to activate port forwarding on your router. You need to tell your router what IP address or MAC address to forward data coming in from port 5555 which is the default SpyServer port. The data should be forwarded to the IP address or MAC address of the device running the SpyServer. You'll probably also want to ensure that the device running the SpyServer is set to a static IP from within your router.
Port forwarding is slightly out of the scope of this tutorial as the procedure is different for each network router. There are guides for most routers in the world at portforward.com.
You can find your public IP by browsing to whatismyip.com on a PC on your network, or by running 'curl ifconfig.me' at a Linux terminal.
Public SpyServer Servers
If you want to try out some publicly available remote SpyServers over the internet then please check out airspy.com/spy-servers. We've found that streaming over the internet even across the world is fairly smooth and problem free.
Solving the problem with starting the spyserver on Windows
Device: RTL-SDR V4 R828D RTL2832U
Server on Windows 10/11
Client error:
Server is Busy
Server error:
Device was sleeping. Wake up!
Could not acquire the device
In my case, The problem was caused by the missing one file in the server folder: rtlsdr.dll
How I solved it:
Download sdrsharp-x86.zip
Extract (unzip) sdrsharp-x86.zip
Double click on install-rtlsdr.bat from within the extracted folder
run zadig file and install drivers for RTL-SDR
Download spyserver https://airspy.com/download/
Extract spyserver_win32.zip
Copy rtlsdr.dll from sdrsharp-x86 folder to spyserver folder
Edit spyserver.config – you need to know what ip adress is of your host, the rest can start automaticly, but you can adjust few things fot better effect
start spyserver.exe
Full guide to install sdr sharp and drivers for RTL-SDR: https://www.rtl-sdr.com/rtl-sdr-quick-start-guide/
Thanks for good information.
What to change to use AirspayHF+ in config
Remote spyserver link leads to 404 page.
Hi Just having a quick look while waiting for the delivery of my RTL-SDR dongle from your AliExpress site. I’m a co-coordinator of a small microcontroller and amateur radio group (VK7CMS) at the Channel Mens Shed (Tasmania, Australia ) and to link together to two ‘camps’ it seems that a Web SDR site could be just the thing. I have seen there is a lot of projects around the Raspberry Pi but having put the HamPi image onto my Pi and felt the heat ! I don’t want to go down that path. We’ll set up a proper RedHat type web server on a desktop PC for the job …. and get our IT supervisor to let us tunnel out from the Shed network !. Any suggestions/advice would be gratefully received. Cheers TomH
When connecting to SpyServer, I always get an error in SDRSharp:
Error: Server is Busy
At this time, the following information appears in the Sql Server console window:
$ ./spyserver
SPY Server v2.0.1700
Copyright (C) 2016-2018 Youssef Touil - https://airspy.com
Reading the configuration file: spyserver.config
Listening for connections on 0.0.0.0:5555
Accepted client 192.168.1.65:49175 running SDR# v1.0.0.1784 on Microsoft Windows NT 6.1.7601 Service Pack 1
Device was sleeping. Wake up!
Could not acquire the device
Choosing the
device_sample_rate = 300000
and other values (1200000, 2400000, etc.) does not help.
Config file Spyserver:
bind_host = 0.0.0.0
bind_port = 5555
maximum_clients = 100
device_type = RTL-SDR
device_sample_rate = 2400000
Why is this happening? How can I fix this error?
I don’t know if this will help you, but I fixed this error on my windows server by doing both of the following:
1) incrementing the device_serial in spyserver config by 1 (default starts at 0) until the server error message changed from “could not acquire the device” to “no suitable device found” or something similar
2) copied all files from SDR# folder into spyserver folder, overwriting all when prompted (spyserver bundle uses same .dll’s etc as SDR#, but the latter versions seem to have better compatibility.
Where you able to solve this?
I tried everything I found in all the posts below. Nothing worked!! I played with all parameters in the spyserver.config file. Nothing worked!
I also installed SDR# on the server and can confirm that my RTL-SDR v3 dongle works just fine on this server computer!
Launching SPY Server on the server machine, I get this message:
—————————————————————————–
SPY Server v2.0.1700
Copyright (C) 2016-2018 Youssef Touil – https://airspy.com
Reading the configuration file: spyserver.config
Listening for connections on 0.0.0.0:5555
—————————————————————————–
That looks fine! when I try to connect a remote (local network) computer to the SPY server, I always get the message below:
—————————————————————————–
Accepted client 192.168.1.11:50835 running SDR# v1.0.0.1827 on Microsoft Windows NT 10.0.19042.0
Device was sleeping. Wake up!
Could not find any suitable device
—————————————————————————–
The client can reach the server but something wrong happens.
I found that I had no audio device configured, and until there was one, the software would not even give the option to connect to a server. Hope that helps!
Thank you Rob H for your reply.
The audio device is configured and working. It looks like this is not what causes my issue!
I tried to use SDR# directly on the server computer at the same time the server is running. I get the same message from the server, whether or not the SDR# program works or not in the background. This also confirmes that the RTL-SDR Blog v3 works on the server.
—————————————————————————–
Accepted client 192.168.1.11:50835 running SDR# v1.0.0.1827 on Microsoft Windows NT 10.0.19042.0
Device was sleeping. Wake up!
Could not find any suitable device
—————————————————————————–
[RESOLVED]
You have to have a working SDR# installed on you server computer. You then unzip the SpyServer files in this same SDR# installed folder without overwriting the existing .dll files.
It had nothing to do with the .config file. I left the it unchanged and it worked
Why does Chrome and Norton mark “SPY Server – SDR Server for Windows 32-bit and 64-bit” as unsafe? I can’t download the zip file.
Basically most AV software today is algorithmic based, they are looking for patterns that “evil” programs would do and not the specific details. Running a server on your local computer that can be remotely commanded to upload local data (IQ from the SDR) to a remote machine on the Internet is nearly exactly the same as any “evil” program would do. Frankly if your AV software does not at least think that there is the possibility that the program could be malicious, then your AV software may need to be replaced.
I downloaded (ctrl-j in google chrome) “SPY Server – SDR Server for Windows 32-bit and 64-bit” and uploaded it to virustotal to see what about 70 AntiVirus programs say:
https://www.virustotal.com/gui/file/9694d2fa3b57be6360eaf6c442f3eab5b3ce8da069a57d4241eb58c089dccbd8/relations 46 of 71 think that spyserver.exe is similar to generic malware.
I cannot make the spyserver it starts up but then it says
SPY Server v2.0.1700
Copyright (C) 2016-2018 Youssef Touil - https://airspy.com
Reading the configuration file: spyserver.config
Listening for connections on 0.0.0.0:5562
Detached kernel driver
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Reattached kernel driver
Detached kernel driver
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Reattached kernel driver
Please help me
put your local computers IP address into the config file
Then it will say listening on connection xxx.xxx.xxx.xxx:5555
have tried that I just get an error like this
Unable to bind xxx.xxx.xxx.xxx to 5555
Has anyone used this (or indeed rtl_tcp) to feed another machine running DSD+ decoding software over an ethernet network? (I have wired Gigabit Ethernet if that helps)
I have a plan forming in my brain 🙂
I’m trying to get the SpyServer running on my FreeBSD system. AirSpy drivers and tools are available from the pkg manager or can be compiled from source, but the only option I can find for the server itself is a precompiled binary for linux. Installing linux compatiblity allows the binary to execute, but it stops due to a library issue (which I’m having trouble finding a work-around for; compatibility layer uses an older version of GCC that I can’t seem to update). Is there a FreeBSD compatible binary or perhaps source somewhere that I’ve missed?
I also am looking for a FreeBSD Build – Has there been any Progress on this front?
hola alguien encontro el porque el error de segmentation fault??
Tip if your running Windows you have to allow inbound connections on port 5555 or which port you want to use in Windows Firewall.
If you don´t do it your spyserver will be displayed unreachable.
Does anyone have a mirror for the airspy software? The site seems to be down unfortunately…
Hi everyone…
I have SpyServer running perfectly for a single RTL dongle on Windows 7 for the host PC and client with SDRT# v 1.0.0.1672. However, I have two scenarios that i can’t figure out as follows;
Scenario 1
************
With a single dongle, the tuning range is limited to 2 MHz when a second user connects and also for the original user who had full range of tuning. When the second user disconnects – the original user regains full range tuning. Any ideas?
Scenario 2
************
I would like to run 2 dongles on a single PC and spyserver for each dongle. So far I have 2x SDR# folders (for each dongle) and have changed port numbers (5555 & 6666) in the spyserver.config in each of the SDR# folders. I can connect to 5555 okay but 6666 won’t connect. The spyserver command window for 6666 says;
usb_open error -3
Please fix the device permissions, e.g by installing the udev rules file rtl-sdr.rules
Again, any ideas please? Thank you
I’m 2 years late, you probably figured this out already, but for usb_open error -3, try changing the device_serial directive, set it to 1, if that doesn’t work, set it to 2 and so on. This error usually happens because SpyServer is trying to use the same dongle as the other SpyServer you have running.
For anyone who has this issue, you need to create a file in /etc/udev/rules.d (eg. /etc/udev/rules.d/98-rtlsdr.rules) and then either reboot or reconnect the USB device. The file contents are here:
https://github.com/osmocom/rtl-sdr/blob/master/rtl-sdr.rules
Can I get this for version of SDR sharp 1.0.0.144
Looking up the change log r144 was never released and if it was it would have been back in January 2012 (~1,528 releases since then, it would be the caveman version of SDR#). If I assumed that you made a typo and left out a 4 and actually meant r1444 that is still pretty old April 2016 (there have been 228 releases since than).
Why cling to such a really old version of the software ?
Hi Bert thank you for the reply. Yes typo meant .1444 and the reason is I’m trying to upload my sdr to globaltuners and their plugin only works on that version.
Maybe contact their support (” create a support ticket” at the bottom of this page https://www.globaltuners.com/wiki/receiver_setup ) and ask them to re-build the plugin for the current version (one that is not +2 years old).. Although that page does not explicitly say that the plugin will not work with later versions of SDR#, just that it may not, have you tried.
Yea I’ve tried with a few different versions although I’ve managed to connect to pi on sdr# by installing some stuff onto the pi and using RTL-SDR TCP option as receiver.
After install i tried:
pi@raspberrypi:~/spyserver$ ./spyserver
-bash: ./spyserver: cannot execute binary file: Exec format error
pi@raspberrypi:~/spyserver$ sudo ./spyserver
./spyserver: 1: ./spyserver: Syntax error: “(” unexpected
pi@raspberrypi:~/spyserver$
Can you help me please?
My two suggestions would be to:
1 check that you are trying to run 32 bit binary on a 32 bit OS, check that your OS is 32 bit (or 64 bit) with “getconf LONG_BIT”
2 check that all required dependencies are installed “ldd spyserver” if they are not and you are running a 64 bit OS then you will need to install the 32-bit dependencies “armhf”.
I do not own any RPi hardware so can not tell you what the exact commands would be, but I would guess the following or something similar:
$ sudo dpkg –add-architecture armhf
$ sudo apt-get update
$ sudo apt-get install libc6:armhf
Whatever dependency is missing use a command like “sudo apt-get install *:armhf” where you replace the * with the missing 32-bit dependency.
First of all, thanks for this beautifull piece of software! I tried to put in on a Raspberry Pi2 and got “Segmentation Fault” when i tried to start the spyserver. Then, the same installation moved to a Raspberry Pi 3 Model B with 1 Gb RAM. Works flawlessly! Tried to run it on a Raspberry ZeroW with 512 Mb RAM, got the same “Segmentation Fault”. I believe the Spyserver is tied to a 1GB RAM. Can the software be compiled to run on a 512 Mb RAM version of Raspberry? Thank you, 73 de Adrian YO3HJV
I’m trying to set up running two server instances running on Ubuntu Linux 16.04. Have each instance running separately but only works with the “wildcard” value (0 or unspecified) for device_serial. As soon as I change the config to specify the serial number, it fails when I try to connect to the server. I’ve tried with two dongles, one of which has the factory default serial number of 1, and the other I changed it to 3 using RtlTool.
I’m specifying it in the config file like this:
# Device Serial Number as 64bit Hex
# A value of 0 will acquire the first available device
#
device_serial = 3
Any help would be appreciated.
Here’s the error output on the server side:
SPY Server v2.0.1629 - http://airspy.com
Reading the configuration file: spyserver.config
Listening for connections on 0.0.0.0:5552
Accepted client 192.168.16.116:31253 running SDR# v1.0.0.1631 on Microsoft Windows NT 6.2.9200.0
Device was sleeping. Wake up!
Could not acquire the device
Accepted client 192.168.16.116:31256 running SDR# v1.0.0.1631 on Microsoft Windows NT 6.2.9200.0
Device was sleeping. Wake up!
Could not acquire the device
I concluded that the value required for device_serial is specifically a serial number for an AirSpy hardware device. Doesn’t look like SpyServer supports multiple generic RTL-SDR devices. Posted a question to the AirSpy support forums but never got a reply.
i had same error. Does anyone fixe completely this error? thank you !
I use windows 7 and an RTL-SDR
that error you mention appears to me when I put an incorrect device_sample_rate
for example it works well with:
# Device Sample Rate
# Possible Values:
# Airspy R0, R2: 10000000 or 2500000
# Airspy Mini: 6000000 or 3000000
# Airspy HF +: 768000
# RTL-SDR: 500000 to 3200000
# Comment to use the device’s default
#
device_sample_rate = 300000
Another value that works ok is 900001.
if I put 600000 does not work and pulls the message mentioned above
What is the lowest possible sample rate to enter when using a RTL-SDR v3? I know that it says 50000 to 3200000 but 300000 works for me as well and is significantly lower than 500000 so the information in the default config file is not correct.
win 11,rtl v4 , i had the same issue.
i fixt it
copy server files to bin and replace
device_sample_rate = 300000
execute spyserver.exe as admin
Thanks, got it working!
you must change exactly name of model which you have.
I have SpyHF+, so I change ‘device_type = AirspyHF+’, and it run very well.
pi@raspi:~ $ mkdir spyserver
pi@raspi:~ $ cd spyserver/
pi@raspi:~/spyserver $ wget -O spyserver.tgz http://airspy.com/?ddownload=4247
–2017-12-06 15:11:55– http://airspy.com/?ddownload=4247
Resolving airspy.com (airspy.com)… 5.135.3.67
Connecting to airspy.com (airspy.com)|5.135.3.67|:80… connected.
HTTP request sent, awaiting response… 301 Moved Permanently
Location: https://airspy.com/?ddownload=4247 [following]
–2017-12-06 15:11:55– https://airspy.com/?ddownload=4247
Connecting to airspy.com (airspy.com)|5.135.3.67|:443… connected.
HTTP request sent, awaiting response… 302 Found
Location: /downloads/spyserver-arm32.tgz [following]
–2017-12-06 15:11:56– https://airspy.com/downloads/spyserver-arm32.tgz
Reusing existing connection to airspy.com:443.
HTTP request sent, awaiting response… 200 OK
Length: 54585 (53K) [application/x-gzip]
Saving to: ‘spyserver.tgz’
spyserver.tgz 100%[===================>] 53.31K –.-KB/s in 0.1s
2017-12-06 15:11:56 (496 KB/s) – ‘spyserver.tgz’ saved [54585/54585]
pi@raspi:~/spyserver $ wget -O spyserver.tgz http://airspy.com/?ddownload=4247^C
pi@raspi:~/spyserver $ tar xvzf spyserver.tgz
spyserver
spyserver.config
pi@raspi:~/spyserver $ sudo cp spyserver.config spyserver.config0
pi@raspi:~/spyserver $ sudo nano spyserver.config
pi@raspi:~/spyserver $ sudo nano spyserver.config
pi@raspi:~/spyserver $ ./spyserver
Segmentation fault
I tried this today on CHIP, it simply stopped after loading without error message or any in /var/log/syslog
Raspberry Pi Zero failed at “Segmentation fault,” identical symptoms to Daniel.
2015 forums note the same issue around rtl_tcp causing segmentation fault with libusb-1 drivers (https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=76355). I’m running linux 9 Raspbian stretch light. Troubleshooting by updating the sources to use main failed, autoremove/install lib-usb-1.0-0 failed. Anyone run into the segmentation fault issue and find a solution?
This document seems to not be accurate in version 1.0.0.1822.
Spy Server is not an available source. If anyone has any tips on how to add the Spy Server as a source, I’d love to hear it, but as far as I can see, it’s just not there.
If anyone fix this please contact me on my twitter @ovsanikdaniel
Got “Segmentation Fault” on Raspberry 2 with 256 Mb RAM, ZeroW with 512 Mb RAM, work perfect on Raspberry 3 Model B with 1 GB RAM! I believe SW tries to write beyond the physical address on RAM.
Work very well, but i can’t do start on boot my spyserver. I’ve made a crontab as writed, but doesn’t work.
How do i do?
Is the directory that you installed the spyserver to the same as ours? If not update the path in the crontab.
Yes, but doesn’t work.
For anyone who may still have this issue, adding a delay fixed this for me. Try typing this which will delay the start of the program for 15 seconds after booting. (and be sure to replace “pi” with your actual directory)
@reboot sleep 15 && /home/pi/spyserver/spyserver /home/pi/spyserver/spyserver.config
I double click the spyserver.exe and the prompt window opens then closes right away, no connection. I run the exe from the prompt and I get this:
SPY Server v2.0.1617 – http://airspy.com
Reading the configuration file: spyserver.config
Unable to load user mode driver for ‘RTL-SDR’
This was with build 1617 of SDR#. Any thoughts?
If Windows is your OS did you carry out step 3:
Run the install-rtlsdr.bat file to download the RTL-SDR drivers.
Or of Linux is your OS did you carry out step 2:
First install prerequisites such as the RTL-SDR drivers and librtlsdr.
sudo apt install rtl-sdr librtlsdr-dev
I just noticed “.exe” in the file name you are running windows 7/8/8.1/10.
Will SpyServer work with a Raspberry Pi3 and dual RTL-SDRs monitoring a trucked digital network like a local Fire Department?
RPi is cheap, for a reason, when it comes to shoving large amounts of data around fast, it is at or very near the bottom of all devices I can think of. All RPi devices have one real USB 2.0 High Speed port, the B and 3 have a USB hub hardwired into that which is shared by the NIC and four ports are exposed to the world. So if there is lots of network traffic other USB devices have less available bandwidth. And if there is major USB traffic then the network starts to drop packets. It is a bit like sticking 5 funnels in a funnel, and expecting to be able to fill a bottle up faster.
But lets do the numbers
100Mbit/sec is ~11.9MB/sec (data throughput after you remove the TCP/IP packet headers)
A RTL-SDR running at the maximum rate with no drops is 2.4MSPS (I+Q) so 4.8MB/sec
Two of them would be ~9.6MB/sec
9.6MB/sec is less than 11.9MB/sec, so it should which is good. The only question now is, are the two FFT displays streaming for each device going to fit into the remaining 2.3MB/sec (or 1.15MB/sec per device) I don’t know.
Oh and with 3 devices running at once (RTL+RTL+NIC) sharing a single USB 2.0 HS port you will probably not get the maximum through put you will loose at a guess 10% to 30%, but even then there should still be enough room, unless you have other USB devices connected.
and…what is your choice for a more powerful hardware than raspi 3?
For shoving data around (not processing power) the BPI-M1 with an actual SATA-2 interface 300MB/sec (not a sata-2-usb chip 40MB/sec) and gigabit Ethernet is not bad.. But the dual core ARM Cortex-A7 (depending on the governor setting can be clocked anywhere from 30MHz up to 1.49GHz with no stability issues that I’ve seen) is about the same level of CPU number crunching as a RPI-2B with 4 ARM Cortel-A7 cores running at 700 MHz (if you ignore the GPU’s which are not usable for data processing in the BPI-M1) . There are later BPI models but they use crappy sata-2-usb chips and the same internal USB hub junk that the RPI do. So it like the RPi-2B looking at the CPU in isolation has about 50% of the number crunching ability of a RPi-3, but for moving data about it is good.
My current favourite board is the Odroid-XU4 with 4 small A7 CPUs (200MHz to 1.4GHz) and 4 big A15 CPUs (200MHz to 2GHz) which is approximately 2.5x the number crunching of the RPi3 quad core A53 @ 1.2 GHz (CPU’s only), Gigabit Ethernet, 1 USB 3.0 port (with an internal 2 port USB 3.0 hub chip connected to it) and 1 USB 2.0 HS port. Oh and an optional replaceable/upgradable eMMC which is ~140MB/sec read and ~39.3 MB/sec write (~7x/2x that of most default RPi microSD configurations http://www.pidramble.com/wiki/benchmarks/microsd-cards ) or you can use a UHS-1 MicroSD and have ~ 2x/1x the performance of the older SD-class10
There is the UP or Tinker board if Intel chips are preferred but they are a bit pricey. If you really do need GPU number crunching there is always the Jetson. I’m just amazed that people think that the whole RPi line is the bees-knees.
I should probably add that if you run a XU4 at maximum CPU load, it does get hot, and if the temperature gets too high it throttles down performance. If you plan on using it at the limits of performance, the default cooling system is a bit underwhelming and noisy, or at least it was with my revision of the board which was a while ago, they now have a XU4Q version with passive cooling. I suppose what I am saying is that I love the board, but the cooling system is bit anaemic if you are a performance junky.
I’m really impressed with AirSpy’s stuff, but I think it’s a little strange that they offer the SpyServer app for linux, but it’s nearly impossible to receive (or find documentation on how to receive) the signal with a linux computer.
SDR# only being supported on Windows is a bit of a bummer.
The new SDR# runs in Mono, also, I’d wager there’s a way (or may be at some point) to rx the IQ stream in GNURadio -> GQRX.
Ignoring the technical advantages, I imagine the whole point of compiling Spyserver for linux is so we can use our SBC’s up the tower or at a satellite dish install instead of using a desktop or rack server, not to mention not having to pay for another windows license.
Sure, I get the having spyserver as a raspi/embedded-system-of-the-week to stream the data, i’m speaking specifically of the receiver of that data stream.
I’ve been able to run SDR# in linux before with all of those mono dependencies, but it’s been years and SDR# has been closed source since then.
GQRX is great, but it doesn’t have support for SpyServer just yet.
I don’t believe SoapySDR or any of the others have support either.
Man, everyone’s just doing their own thing in their own silo. I wish all of these SDR programmers like Prog and Cseste would band together and make a really kickass product.
sudo -H apt install libairspy-dev
sudo add-apt-repository -y ppa:gqrx/gqrx-sdr
sudo apt update
sudo apt install gqrx-sdr
Yes there is definitely a lack of documentation but there is SoapySDR that has a remote feature to use with any SDR remotely..
A good server for access:
sdr://londonhf.ddns.net:5555
I created a systemd service for auto-starting and restarting spyserver on failure. One could extend to to always download the newest spyserver and unpack it, but that may not be necessary:
[Unit]
Description=Spyserver service
After=network.target
[Service]
Restart=on-failure
ExecStart=/spyserver spyserver.config
ExecStop=/usr/bin/killall spyserver
WorkingDirectory=
[Install]
WantedBy=multi-user.target