Setting up OpenWebRX on a Raspberry Pi 2 - ha7ilm/openwebrx GitHub Wiki
OpenWebRX should work out of the box on your RPi, if you set it up by going through this guide.
You will need at least a Raspberry Pi 2.
Raspberry Pi 1 won't work as its CPU just doesn't have enough processing capability to make it.
(csdr
can make use of both NEON and the multiple cores on the RPi2).
As noted by Zsolt, HG2ECZ the Raspberry Pi 3 can limit the CPU frequency if the maximum available current of the power supply is too low, which may result in decreased signal processing speed. Having a correct power supply is required for running OpenWebRX. An 5V, 2A unit (or better) should do.
Common issues with the RPi 2
It is not sure that you will run into any of these, but anyway:
- Audio underruns and
csdr flowcontrol
issue - Port 8888 is already in use on your system:
- Edit
config_rtl.py
andconfig_webrx.py
and replace this port number with another).
- Edit
- The Pi doesn't start with RTL-SDR is plugged in / restarts when plugging in RTL-SDR / fails to recongize RTL-SDR:
- Maybe your power supply cannot provide enough current. You should try a dedicated 5V / 2A power supply like this. I wasn't able to use the RPi from a laptop USB port, needed a dedicated PSU.
Compromise between performance and the maximum number of clients
The Raspberry Pi 2 should be able to handle about 5-10 clients simultaneously at the sampling rate of 250 ksps.
It is quite good from an embedded ARM board, but your PC would do of course better than that.
I'm constantly working on getting OpenWebRX faster on the Pi (in the dev
branch I've already done some manual assembly optimizations for NEON).
You will have to set the max_clients
and the samp_rate
correctly.
If you allow too much clients to connect, audio will lag for all of them (will get audio underruns), as the CPU just can't make it.
The higher the sampling rate is:
- the higher bandwidth will be seen on the waterfall diagram,
- the higher the CPU usage gets (per client as well),
- the less clients can connect without lags.
You should try to open many browser windows and see at how many clients will the audio start to lag.
Some general advice to increase reliability and security
Use a firewall
If you don't want to learn iptables
, you can use ufw
on Debian/Ubuntu based systems. ufw
stands for Uncomplicated Firewall. After ufw
has been started, it will block any incoming TCP connections / UDP packets unless specifically enabled.
(This part is to be finished.)
sshd
away from TCP port 22
Put (This part is to be done.)
Avoid possible file system corruption on power-off
If you just pull the plug from your Raspberry without properly shutting it down, it may or may not boot the next time.
halt
every time
1. Shutdown the RPi with Use the proper command to halt the operating system:
sudo halt
You will see one of the LEDs blinking at a given time interval, and then both LEDs switch off.
2. Start your system in read-only mode, and switch to read-write only if required.
In my article about pi-rw you will find advice on doing that.
3. What if my file system has already corrupted?
fsck
is a Linux tool meant for repairing corrupted file systems.
You can:
- Run
fsck
from a laptop running Linux, having the SD card attached. - Run
fsck
from a Ubuntu Live CD. - Run
fsck
from the shell over the RPi serial port (but you will need a serial adapter). - Run
fsck
with a keyboard and HDMI screen attached to the RPi.
You cannot however run fsck
from ssh
remotely, as the OS hasn't booted properly yet.
First take a look at which device corresponds to your SD card. You can list the block devices with lsblk
:
ha7ilm@pc ~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 123,4G 0 disk
├─sda1 8:1 0 120,0G 0 part /
└─sda2 8:2 0 3,4G 0 part [SWAP]
mmcblk0 179:0 0 7,4G 0 disk
├─mmcblk0p1 179:1 0 56M 0 part /media/ha7ilm/boot
└─mmcblk0p2 179:2 0 7,4G 0 part /media/ha7ilm/18b2d310-8421-01f9-a0e0-1001b0d00173
Over here, the corresponding device is mmcblk0p2
. To run fsck
on it:
sudo fsck /dev/mmcblk0p2