← Back to Server Documentation

This guide walks through basic steps an instructor may follow in order to integrate RemoteRF into their course. The instructions below assume that the RemoteRF server (and any relevant hosts) have been set up already. To complete these instructions, the instructor would need to physically access the RemoteRF server and execute the commands listed below.


Introduction

With the RemoteRF server set up and users are provided access to it, little to no intervention is required from instructors throughout their course, as the RemoteRF platform is completely autonomous. Previous documentation has outlined how to set up the RemoteRF server (and hosts). This guide will outline how to systematically provide students with access to the RemoteRF server.


About User Groups and Enrollment Codes

User groups are mechanisms used by RemoteRF to scope access without manually configuring each student account one-by-one.

  • User Groups: A user group defines which the permissions and privileges of its members. It determines which SDRs are accessible to members of the group, the number of reservations each member may hold, and the duration of each reservation.
  • Enrollment Codes: An enrollment code is a token that allows a student to self-enroll into a user group without you manually editing their account on the RemoteRF server. They are most often used by students when first creating their RemoteRF accounts, and can be made to expire after a certain number of uses or after a certain amount of time. ETHAN CONFIRM WORDING.

Note: The server runs a background cleanup loop (every 60 seconds by default) which is intended to prune/expire user groups and enrollment codes according to whatever expiration rules are stored in the user-group store. ETHAN CONFIRM.

(start_usergroup_cleanup_loop(interval_sec=60))


Creating a User Group

The first step is to create a user group that students will be members of upon registering their RemoteRF accounts. Each user group has a name and unique ID, the latter of which is assigned upon creating the user group. It is best practice to use the user group name as something sensible, such as EE123_F26 if the course number is EE123 and is being offered in Fall 2026. It is recommended you create a unique user group for each course offering. Note that students will see the user group name on their end.

Creating a User Group

To initiate the process of creating a new user group, run groups create in the terminal of the RemoteRF server. This will produce an output similar to what is shown below.

Terminal (RemoteRF Server)
server@remoterf: groups create Welcome to the RemoteRF Platform Current 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: JFZU Username: ian Password (Hidden): Confirm Password: Email: email@ucla.edu

As shown above, you will be prompted for the following:

  • group name (confirm required)
  • devices whitelist (device IDs, comma separated)
  • max reservation time (sec) (default: 1800)
  • max concurrent reservations (default: 3)
  • group lifetime (sec) (default: 0 = forever)
  • Confirm the final summary and proceed.

Example: In undergraduate courses at UCLA, which have 60–100 students, it has proven sufficient to set reservation time slots to be 30 minutes long (1800 seconds) and to allow students to hold at most 3 reservations concurrently. The user group lifetime can be made to be the duration of the course or can be set to 0 to make it such that the user group never expires.

Record User Group ID

To verify that the newly created group exists and to record its unique ID, run groups list in the terminal of the RemoteRF server. This will produce an output similar to what is shown below.

Terminal (RemoteRF Server)
server@remoterf: groups list Welcome to the RemoteRF Platform Current 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: JFZU Username: ian Password (Hidden): Confirm Password: Email: email@ucla.edu

In order to generate enrollment codes next, you will need the group_id of the user group you are creating the enrollment codes for, so note it down.

2) Verify the group exists and record its group_id

  • groups list
    This prints a compact table including (when available):
    • group_id
    • group_name
    • devices_whitelist
    • max_reservation_time_sec
    • max_reservations
    • lifetime_sec
    • created_at

Generating and Distributing Enrollment Codes

The next step is to generate enrollment codes for the entire class and then distribute them to students. Users cannot create their accounts without a valid enrollment code, so this is an important step.

Enrollment codes are generated for a specific user group, and many enrollment codes can (and often should) be generated at once for that user group. Enrollment codes can be made to be single-use or valid for multiple uses. In order to generate enrollment codes, you will need the group_id of the user group you are creating the enrollment codes for.

Generate Enrollment Codes

To begin the process of generating enrollment codes, run codes create in the terminal of the RemoteRF server. This will produce an output similar to what is shown below.

Terminal (RemoteRF Server)
server@remoterf: codes create Welcome to the RemoteRF Platform Current 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: JFZU Username: ian Password (Hidden): Confirm Password: Email: email@ucla.edu

As shown above, this will prompt you for the following:

  • how many codes to generate
  • group_id of the user group to attach them to
  • number of alphanumeric characters per code (default: 10; min: 4)
  • number of valid uses per code (default: 1)
  • duration (in seconds) of the enrollment code’s validity (default: 3600; 0=never expires)

Example: Suppose you teach a class of 30 students. Best practice would be to first create a user group for that class with the desired permissions per student. Then, it would be best to create around 45 enrollment codes (rather than only 30), so that the extra 15 codes can be given to students that need to create a new account upon forgetting their RemoteRF login credentials. The number of valid uses per code can be set to 1, so that it can only be used by one student to register an account. Each student would thus need to be assigned their own unique enrollment code. The number of characters per code can be set to 4 or 5 for simplicity. The enrollment code duration can be set to 0, so that it never expires.

Is duration tied to user losing permission after a certain point in time or no? ETHAN CONFIRM

Distribute Enrollment Codes to Students

Once enrollment codes have been generated, they need to be shared with students in the class. To simplify this process, the RemoteRF server can write the list of enrollment codes to a CSV file. The instructor can then extract the enrollment codes from this CSV file and issue them to students however they see fit.

  • Share the generated code_name values with students, they will use these codes to make accounts.
  • groups csv → writes all groups to a CSV in Downloads
  • codes csv → writes all codes to a CSV in Downloads
  • codes list to view:
    • code_name, group_id, uses, uses_left (if tracked), duration_sec, expires_at, created_at

Note: A enrollment code is needed to make an account, which automatically places said account into the respective group. Users can be in ANY number of User Groups, including NO groups.

Note: If you create a single code with many uses (more than there are students), then you only need to distribute one code per class, but there is the possibility that the code is abused by a single student to create more than one RemoteRF account (e.g., in order to hold more reservations than they should).

Example: One way to issue enrollment codes to all students at once is to create a spreadsheet that lists each student’s university ID next to their assigned enrollment code. To maintain more confidentiality, you could instead list the last 4 or 5 digits of their university ID. Note that enrollment codes are not actually student-specific, however.


Making Modifications Mid-Course

If changes need to be made to a user group or if enrollment codes need to be deleted, follow the instructions below.

Editing User Group Permissions

To edit the permissions and privileges of an existing user group, run groups edit. Afterwards, you will need to input the ID of the user group you wish to edit.

Upon doing so will produce an output similar to the following, asking you to input updated permissions/privileges.

Terminal (RemoteRF Server)
server@remoterf: codes create Welcome to the RemoteRF Platform Current 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: JFZU Username: ian Password (Hidden): Confirm Password: Email: email@ucla.edu
  • You will be prompted for a group_id, then optional edits:
    • new group_name (Enter = unchanged)
    • new devices_whitelist
      • list like 0,1,2
    • new max_reservation_time_sec (Enter unchanged)
    • new max_reservations (Enter unchanged)
    • new lifetime_sec (Enter unchanged; 0 = forever)

This will update the existing permissions and privileges of all existing members of the user group.

Deleting a Single Enrollment Code

  • Revoke a single leaked code (by name):
    • codes delete → choose (n)ame, enter code_name

NOTE: Deleting codes stops new enrollments via those codes. Existing members do NOT lose access.

Deleting All Enrollment Codes for a User Group

  • Revoke all codes for a group:
    • codes delete → choose (g)roup_id, enter group_id

Deleting an Entire User Group

  • Remove a group entirely:
    • groups delete (requires group_id + confirmation)

Notes

  • Students enrolled but still “permission denied”
    • The group may not include the target device ID.
  • Editing groups while students are actively reserving devices
    • Typically, group changes affect future reservations and access checks.
    • Existing reservations may continue until the lease ends (depends on how your reservation checks are enforced). If you need immediate revocation, you may need to revoke leases/sessions explicitly via the reservation pipeline.
  • Deleting a group
    • Users’ Accounts will not be deleted, but they will lose all permissions and access given by said User Group.

Client Installation

Clients (e.g. students) will need a few things from the administrators to begin using the platform. These are:

  • Static IP and Port of reachable RemoteRF instance.
  • Valid Enrollment Code (to create a account).

Refer to the Usage tab for the client side guide, and as the admin you will need to provide them with the below populated command:

remoterf --config --addr <staticIP:Port>

# Example
remoterf --config --addr 164.67.195.207:61005
remoterf -c -a 164.67.195.207:61005

Along with this, you need a Enrollment Code as well for them to make a account!


Software Updates

To ensure you have the most up-to-date versions of the RemoteRF software, be sure to regularly update the server and hosts by running the following on their respective devices:

pip install -U remoterf-server

and

pip install -U remoterf-host

Also, encourage students to regularly update their RemoteRF client with the following. When doing so, they will need to be within whatever environment they use when working with RemoteRF.

pip install -U remoterf