This page guides users (e.g., students and researchers) on installing and configuring the RemoteRF client software on their personal computers. Then, basic usage of the RemoteRF client is covered, so that users can make an account and access SDRs connected to the RemoteRF server deployed on their university campus or in their research lab.

Network Connection

Anytime you use RemoteRF, you will need to be connected to the same network as the RemoteRF server in order to access it. Consult with the administrator of your RemoteRF server—such as your instructor or research advisor—regarding the specifics of this network connection, as it will vary across deployments. For most universities, your usual Wi-Fi or LAN connection should suffice when physically present on campus. When not physically on campus, most universities offer a virtual private network (VPN), allowing you to connect to its network from an off-campus internet connection, in which case you can access the RemoteRF server from virtually anywhere in the world.

Python

To use RemoteRF, you will need Python 3.10+ installed on your personal computer. Only Python is currently supported—no other programming languages or software tools are supported.

You will likely want to install the Python library matplotlib for its plotting functionality, if not already installed. This package can be installed using the following.

pip install matplotlib

For those using conda, you can create a new remoterf environment with the following.

conda create -n remoterf python=3.14 matplotlib

If you used conda to create a new remoterf environment, you will need to activate it with the following anytime you want to use RemoteRF.

conda activate remoterf

Those not using conda may ignore the above instructions. Those using another environment manager may create a custom environment similarly.

Package Installation

To begin using RemoteRF, you will need to install our custom package remoterf from pip using the following.

pip install remoterf

Should any updates be pushed to this package, you can upgrade your installation with the following.

pip install remoterf -U

If you run into errors when using RemoteRF down the road, it is recommended that you run the above command to ensure your package is the most up-to-date.

Package Configuration

After installing the remoterf package from pip, it needs to be configured by running the following command in the terminal, with <address:port> replaced by an appropriate IP address and port provided by your RemoteRF administrator, e.g., instructor.

remoterf -c -a <address:port>

For example, if the IP address is 123.45.123.456 and the port is 61005, then running the above command would look like:

remoterf -c -a 123.45.123.456:61005

Running this command simply configures the remoterf package to point to the IP address and port of the RemoteRF server deployed on your campus.

Making an Account and Reserving an SDR

Making an Account

To begin using the RemoteRF platform on your campus and accessing its SDRs, you must first make an account. With the remoterf package installed, simply run the following in your terminal.

remoterf --login

It will ask you to either enter l to log in or r to register. When accessing the platform for the first time, enter r to register an account. When registering an account, you will be prompted to enter the following information:

  • An enrollment code provided by your RemoteRF administrator, e.g., instructor.
  • A username containing at least three characters.
  • A password.
  • Your email address.

If you forget your password, you will need to create a new account, as there is no way for your RemoteRF administrator to retrieve or reset it at this time. To do so, you may need to obtain a new enrollment code.

Terminal
(remoterf) user@computer:~$ remoterf --login Welcome to the RemoteRF Platform Current version: 1.1.2 (latest) Please login or register to continue. (l/r): r Registering new account ... Enrollment Code: JFZU Username: user Password (Hidden): Confirm Password: Email: email@ucla.edu

Notice that, below the greeting message in the above output, the current version of your RemoteRF package is listed, along with if it is the latest version or if it is outdated. If it is outdated, we recommend updating the package by running pip install remoterf -U.

Logging In

Any time you access the RemoteRF platform after making your account, run the command remote --login and then enter l to log in with your username and password. Upon successfully logging in, you should be greeted with a landing screen similar to what is shown below.

Terminal
Welcome to the RemoteRF Platform Current version: 1.1.2 (latest) Input 'help' for a list of available commands. user@remoterf:

Typing help will list all available commands, similar to that shown below.

Terminal
Welcome to the RemoteRF Platform Current version: 1.1.2 (latest) Input 'help' for a list of available commands. user@remoterf: help Commands: 'clear'          : Clear terminal 'getdev'         : View devices 'help' or 'h'    : Show this help message 'perms'          : View permissions 'enroll'         : Enroll with an enrollment code 'exit' or 'quit' : Exit 'getres'         : View all reservations 'myres'          : View my reservations 'cancelres'      : Cancel a reservation 'resdev'         : Reserve a device

Seeing Which Devices Are Online

To see which devices (SDRs) are currently connected to the RemoteRF platform deployed on your campus, simply type getdev. This will produce an output similar to what is shown below, with “online” denoting that the device is functional and accessible. Note that all devices are listed regardless of their reservation status, but devices that are currently reserved (and thus unavailable) will be denoted with “reserved” next to their name.

Terminal
user@remoterf: getdev Devices: Device ID: 0 Device Name: Pluto SDR A (online) Device ID: 1 Device Name: Pluto SDR B (online, reserved) Device ID: 2 Device Name: Pluto SDR C (online) Device ID: 3 Device Name: Pluto SDR D (online)

In this particular case, four Pluto SDRs are connected to the RemoteRF platform, with one reserved by someone during the current time slot. Each device is identified by its unique ID and name.

User Permissions

A user’s account permissions are determined based on their enrollment code(s) and can be viewed by typing perms, as shown below. In this particular case, the below user is part of the ece101_s26 user group and can access devices with IDs 0–3. At any given time, the user can hold up to 3 reservations, regardless of when they are, and each reservation is 30 minutes long.

Terminal
user@remoterf: perms Permission Level: Normal User User Groups:   - ece101_s26 Accessible Devices: [0, 1, 2] Permissions:   Max Reservations: 3   Reservation Duration (min): 30

Reserving an SDR

RemoteRF was created to be an automated solution that allows many students in a class—or many researchers in a lab—to systematically share access to a limited number of SDRs. This is accomplished through RemoteRF’s reservation system, which allows each SDR to only be reserved by a single person at any given time.

To initiate the process of reserving an SDR, type resdev, which will list all available devices similar to the output produced by getdev. You will first be asked which device you wish to reserve, which can be indicated by entering the listed device index. Enter 0 for device 0, for example. Then, you will be asked to enter the number of days into the future to show when listing open reservations. Enter 1 to display open reservations for today, for instance.

Terminal
user@remoterf: resdev Devices: 0. Name: Pluto A (online) Duration: 30 min 1. Name: Pluto B (online, reserved) Duration: 30 min 2. Name: Pluto C (online) Duration: 30 min 3. Name: Pluto D (online) Duration: 30 min Enter which device you want to reserve (enter the 0-based index): 0 Enter the number of days to check for available reservations (starting today): 1

Afterwards, a list of time slots will be shown to you, each of which corresponds to an available time slot that you may reserve the particular device you are inquiring about. For example, as shown in the output below, upon inputting resdev at around 6:05 PM on January 29, 2026, the following five 60-minute options were listed in chronological order, with start and stop times shown. Device 0 is available during each of those time slots, i.e., it has not yet been reserved by anyone else during those time slots. Based on your particular permissions, reservation durations may differ from what is shown below.

Terminal
user@remoterf: resdev Devices: 0. Name: Pluto A (online) Duration: 30 min 1. Name: Pluto B (online, reserved) Duration: 30 min 2. Name: Pluto C (online) Duration: 30 min 3. Name: Pluto D (online) Duration: 30 min Which device do you want? (enter the 0-based index): 0 Enter the number of days to check for available reservations (starting today): 1   Available time slots for device 0 (30 min blocks) over the next 1 days:   2026-04-16 (Thu)   0. 10:00 PM - 10:30 PM   1. 10:30 PM - 11:00 PM   2. 11:00 PM - 11:30 PM   3. 11:30 PM - 12:00 AM Select a slot by index: 0

You can make a reservation for a particular time slot by entering the time slot index, e.g., input 0 to reserve time slot 0. The system will then ask you to confirm the selection. To do so, enter y. To abort this reservation, enter n.

Terminal
user@remoterf: resdev Devices: 0. Name: Pluto A (online) Duration: 30 min 1. Name: Pluto B (online, reserved) Duration: 30 min 2. Name: Pluto C (online) Duration: 30 min 3. Name: Pluto D (online) Duration: 30 min Which device do you want? (enter the 0-based index): 0 Enter the number of days to check for available reservations (starting today): 1   Available time slots for device 0 (30 min blocks) over the next 1 days:   2026-04-16 (Thu)   0. 10:00 PM - 10:30 PM   1. 10:30 PM - 11:00 PM   2. 11:00 PM - 11:30 PM   3. 11:30 PM - 12:00 AM Select a slot by index: 0 You have selected a reservation on 2026-04-16 from 10:00 PM to 10:30 PM for Pluto A. Confirm reservation? (y/n): y Reservation successful on device 0 for 2026-04-16 10:00 PM-10:30 PM. Thy Token -> dUx6lG3I9lA Please keep this token safe, as it is not saved on the server and cannot be retrieved again. If you lose it, cancel your reservation and make a new one.

After confirming the reservation, a unique token will be issued to you. For instance, in the above output, the token was dUx6lG3I9lA. This token will be needed to access the reserved SDR through Python. This token will be what allows you (and only you) to access the SDR you reserved during the desired time slot. Be sure to copy the token (do not use Ctrl+C) and keep it safe, as it is not saved on the server’s side and cannot be regenerated or retrieved if lost.

Canceling a Reservation

To cancel a reservation that was made (which is useful if an issued token is lost), you can use the command cancelres. As illustrated below using the myres command to view active reservations, canceling a reservation amounts to simply indicating which of the listed reservations you wish to cancel. Here, initially one reservation was held and then none after canceling the lone reservation.

Terminal
user@remoterf: myres Current Reservations Held By user: Device ID: 0, Start Time: 2026-01-29 18:00:00, End Time: 2026-01-29 19:00:00 user@remoterf: cancelres Current Reservations Held By user: Reservation ID: 0 Device ID: 0 Start Time: 2026-01-29 18:00:00 End Time: 2026-01-29 19:00:00 Enter the ID of the reservation you would like to cancel (abort with non-number input): 0 Cancel reservation ID 0 Device ID: 0 Start Time: 2026-01-29 18:00:00 End Time: 2026-01-29 19:00:00? (y/n): y Reservation ID 0 successfully canceled. user@remoterf: myres No reservations found.

Next Steps

Once you have installed RemoteRF, logged in, and reserved an SDR, the next step is to use the reservation token inside a Python script. Follow one of the examples below to see how this works; we recommend starting with the Pluto SDR example.