Skip to main content

RemoteRF Host (hostrf) — Linux Setup

HostRF Installation

The guide is done/verified for Ubuntu Server/Desktop 24.04 LTS.

0) If Raspberry Pi

Raspberry Pi Imager → Install Ubuntu Server 24.04 LTS → Boot Raspberry Pi from SD card.

1) System Prerequisites (APT)

sudo apt update
sudo apt install -y curl ca-certificates bzip2 git build-essential
sudo apt install -y libusb-1.0-0 udev

Optional: confirm architecture:

uname -m
  • x86_64 → Intel/AMD
  • aarch64 → ARM64 (Raspberry Pi 64-bit, some servers)

2) Install Miniconda

2.1 Download the installer

x86_64

cd /tmp
curl -fsSLO https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

ARM64 (aarch64)

cd /tmp
curl -fsSLO https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh

2.2 Install (non-interactive, recommended)

x86_64

bash Miniconda3-latest-Linux-x86_64.sh -b -p "$HOME/miniconda3"

ARM64 (aarch64)

bash Miniconda3-latest-Linux-aarch64.sh -b -p "$HOME/miniconda3"

2.3 Enable conda in your current shell

source "$HOME/miniconda3/etc/profile.d/conda.sh"
conda --version

If you want conda available automatically in new terminals:

"$HOME/miniconda3/bin/conda" init bash
source ~/.bashrc

2.4 Install mamba (default solver)

conda install -n base -c conda-forge -y mamba
mamba --version

Might have to accept anaconda TOS.

conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main

conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

3) Create the Environment (with mamba (faster))

mamba create -n hostrf -y -c conda-forge -c defaults  python=3.10 pip setuptools wheel grpcio protobuf python-dotenv numpy scipy libiio pylibiio libusb

conda activate hostrf
python -m pip install -U pip
python -m pip install pyadi-iio remoterf-host
sudo reboot now

HostRF Config

Run the below for a comprehensive overview:

hostrf --help

To get hostrf up and running:

1) Point to a RemoteRF server

HostRF requires a RemoteRF Server already setup. See RemoteRF-Server for additional details.

hostrf stores its host config under: ~/.config/remoterf/host/

Custom device drivers are loaded from: ~/.config/remoterf/drivers/

hostrf --config --addr <host:port>
# example:
hostrf --config --addr 164.97.201.67:5000
hostrf --config --show

2) Set host parameters

On the remoterf server, run the below:

Example uses 'lab-host-01' as the host name. It will return a valid command you can just copy and paste into the host CLI.

serverrf --host --token-create lab-host-01 --length 8

Given the parameters/tokens returned, run the below:

hostrf --host --set <hostname> \"TOKEN\"
#example:
hostrf --host --set lab-host-01 "UTzhag"

3) Connect devices (Adalm Pluto)

To connect plutos to the server:

iio_info -s

If the pluto doesn't show up, yet the below works:

sudo iio_info -s

Run the below and reboot after:

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
sudo reboot now

Look for a 'hw_serial: 104473'. Keep note of said serial per device.

Add pluto to device list. Understand that the device_id (int) needs to be GLOBALLY unique!

hostrf --device --add --pluto <id>:<device_name>:<hw_serial>

#Example
hostrf --device --add --pluto 10:"hostrf pluto 0":104473

For a Pluto running the MIMO schema, configure devices.yml with the schema device type:

devices:
  - device_id: 11
    device_type: adalm_pluto_mimo
    name: hostrf pluto mimo 0
    init:
      serial: "104474"

Remove device:

hostrf --device --remove <id>

Show devices:

hostrf --device --show

Clear all device config:

hostrf --device --wipe

Run to start the host. You should be able to see host on the server if setup properly.

hostrf --serve

4) Connect an NI USRP-2901 / B200-family device

The machine connected to the radio must provide the UHD 4.10.0.0 Python module. HostRF publishes the full USRP schema even when UHD is unavailable, but opening a real Dynamic v2 session requires that exact supported UHD API.

Add a serial-bound inventory entry:

hostrf --device --add --usrp 7:usrp2901_lab:31A2B3C
hostrf --device --show

Equivalent devices.yml:

devices:
  - device_id: 7
    device_type: usrp
    name: usrp2901_lab
    init:
      serial: 31A2B3C

Run hostrf --serve after the RemoteRF server has been upgraded with tunneled Dynamic v2 support. Control calls, opaque handles, and SampleDataV1 binary IQ frames then use the existing authenticated host tunnel. HostRF closes native USRP sessions automatically when a reservation ends or the tunnel disconnects.

Custom usrp schemas under ~/.config/remoterf/drivers/ take precedence over the packaged default. No usrp_policy.yml file is required.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

remoterf_host-1.1.1.tar.gz (95.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

remoterf_host-1.1.1-py3-none-any.whl (97.1 kB view details)

Uploaded Python 3

File details

Details for the file remoterf_host-1.1.1.tar.gz.

File metadata

  • Download URL: remoterf_host-1.1.1.tar.gz
  • Upload date:
  • Size: 95.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.10

File hashes

Hashes for remoterf_host-1.1.1.tar.gz
Algorithm Hash digest
SHA256 a0572f296c5f99297bf788dab16a2f43bf9a89c93dcc910f98ddbdf1088ef93a
MD5 6755d30a65e487d96d918bcf658eed2e
BLAKE2b-256 004b8ed248d7f3c1852fb4590d2bdfef94137eb5f3c1b47f996c71d098ec3b38

See more details on using hashes here.

File details

Details for the file remoterf_host-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: remoterf_host-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 97.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.10

File hashes

Hashes for remoterf_host-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 032b6b2841de8c51387479f378916c64a496038e4cd60a96b7e2eb549e13e3f6
MD5 f90375ed09adb91658dd52a928acba64
BLAKE2b-256 4d52f99808f557532fc29a1271eab59a9b40d94c37c982950c09de15f4f8b352

See more details on using hashes here.

Release history Release notifications | RSS feed

1.1.4

2 files

1.1.3

2 files

This release

1.1.1 This release

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.1.36

2 files

0.1.35

2 files

0.1.31

2 files

0.1.30

2 files

0.1.29

1 file

0.1.28

2 files

0.1.27

2 files

0.1.26

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page