This page provides guidance on deploying RemoteRF hosts, which provide a way to connect SDRs to the RemoteRF server over Wi-Fi, LAN, or VPN.
Hosts thus allow instructors to create large-scale testbeds where SDRs may be geographically distributed across rooms, buildings, or even entire campuses.
A typical host may be a lightweight single-board computer, such as a Raspberry Pi, or similar low-cost computer with one or more SDRs physicall connected to it.
As long as the host is connected to the same network as the RemoteRF server, its SDRs will be accessible to RemoteRF users, just as those SDRs directly connected to the server are.
Assuming a RemoteRF server has already been set up, deployment of RemoteRF hosts consists of the following steps:
The first step in deploying RemoteRF is to acquire the necessary hardware.
While this can vary widely across deployments, every deployment will need the following:
A Linux-based computer to act as the RemoteRF server.
One or more SDRs that will be made remotely accessible by the RemoteRF server.
Each of these hardware components can be purchased from any vendor of your choice.
Linux-Based Machine
RemoteRF host software must be run on a Linux-based machine, such as a single-board computer, like a Raspberry Pi.
It can be either x86_64 or ARM.
The RemoteRF host software is confirmed to work properly on Ubuntu 24.04 LTS (desktop or server).
If you prefer another Linux distribution, feel free, but we cannot ensure serious issues will not be encountered.
We recommend that you begin set up of the RemoteRF host on a fresh installation of Ubuntu 24.04 LTS.
To do so, follow the instructions on this page to install/boot Ubuntu Server by downloading the Ubuntu Server ISO, writing it to a USB installer, rebooting the target PC, opening the BIOS/UEFI boot menu (often F12/Esc/Del), and booting from the USB to run the installer.
This documentation will assume a fresh install of Ubuntu 24.04 LTS and that you have root/sudo access.
One or More SDRs
You will need to acquire one or more SDRs to connect to the RemoteRF host.
For initial setup of a RemoteRF host, we recommend using one Pluto SDRs, each of which can be purchased for less than $250 from DigiKey or Mouser Electronics.
Host Software Installation
Once the above hardware components have been acquired, installation of the RemoteRF host software can commence, which we provide documentation for below.
Our walkthrough below uses conda and mamba to create a remoterf environment and then install dependencies.
System Prerequisites
After booting up the Ubuntu machine, log into your user account.
Then open a terminal and run the following commands:
To confirm conda has been installed correctly, run the following.
conda --version
Install Mamba
Next, we will use conda to install mamba, which will be used to install dependencies needed to install the RemoteRF server software.
Install mamba with the following:
conda install -n base -c conda-forge -y mamba
You may need to accept Conda’s terms of service by running the following:
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
To confirm mamba has been installed correctly, run the following:
mamba --version
Create the Environment
Now, use conda to create the remoterf environment with the following:
Then, activate the newly created environment with the following:
conda activate remoterf
Then, update pip with the following:
python -m pip install -U pip
Finally, run the following to install the remoterf-server software.
python -m pip install pyadi-iio remoterf-server
Network Configuration
Depending on your IT/ISP setup, the details vary, but you will need a stable address for the Server—either a static IP or a DNS name that resolves to it.
In most campus networks this means requesting IT to (1) assign a static IP / DNS for the server, and (2) allow inbound connectivity to the server on the required ports (e.g., TCP 61005–61006) so machines on the campus LAN/VPN can reach it directly.
Example will use:
Static IP: 192.168.1.50
Ports: 61005, 61006
Generate CA Certificates
If static IP connection: (force overrides existing)
Troubleshooting:
Some distros come with default firewall settings that block traffic on specific ports. Make sure that your firewall settings permit traffic to and from the server. Depending on the setup, you may also have ISP firewalls.
Connecting SDRs to the Host
We now walk through how to connect SDRs to the server.
Currently, only Pluto SDRs are supported, with work ongoing to add support for other SDRs.
We will thus describe below how to connect a Pluto SDR to the server, with the understanding that this process would be repeated to connect more than one.
To start, open a new terminal and run the following to activate the remoterf environment.
conda activate remoterf
Connect the Pluto SDR to the server via USB.
Information about connecting SDRs to the server via LAN, Wi-Fi, or VPN will be covered on this page, which documents setup of RemoteRF hosts.
After connecting the Pluto SDR, run the following command in the newly opened terminal:
iio_info -s
If the Pluto SDR is not listed upon running the above command, run the following:
sudo iio_info -s
Then, run the commands below:
sudo groupadd -f plugdev
sudo usermod -aG plugdev "$USER"
sudo tee /etc/udev/rules.d/53-adi-usb.rules >/dev/null <<'EOF'
# Type the below in
SUBSYSTEM=="usb", ATTR{idVendor}=="0456", MODE="0660", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger
Then, reboot the server by typing the following into the terminal:
sudo reboot now
Upon reboot, log back in, and open a new terminal.
Activate the remoterf environment by typing the following.
conda activate remoterf
The below should work as intended now:
iio_info -s
The output should be something similar to the following:
Note: after updating any server/device config, you must restart the running server instance by terminating serverrf -s, then relaunching it.
Verifying Host Deployment
On the RemoteRF server, start it via serverrf -s, if it is not already running.
Then, run the command hosts status, which should produce an output similar to the following.
Terminal (RemoteRF Server)
server@remoterf: hosts status
Welcome to the RemoteRF PlatformCurrent version: 1.1.2 (LATEST)All times are in Pacific Time (Los Angeles)
Please login or register to continue. (l/r): r
Registering new account ...Enrollment Code: JFZUUsername: ianPassword (Hidden):Confirm Password:Email: email@ucla.edu
You should see your newly added host, and that is online.
If the host doesn’t show up, confirm that the server is reachable from your host machine (using the server’s static IP and port):
If not, then it is a network issue. Contact your ISP/IT.
Once the host is properly connected, all devices under the host will be accessible from users/server in the same way as server-local devices. Each host will try to reconnect over and over again if the server goes down/can’t be found.