Remote RF
A python API to remotely access signal centric hardware.
Courtesy of Wireless Lab @ UCLA. - Ethan Ge
Prerequisites
- Python 3.10: This package works in Python 3.10+. If you don’t have Python installed, you can download it from the official Python website.
To check your current Python version, open a terminal and run:
python --version
- UCLA VPN: Please ensure that you are connected to the UCLA VPN. You can download and configure the VPN client from the following link: UCLA VPN Client Download. If you’re not connected to the VPN, you will not have access to the lab servers.
Installation
Use the package manager pip to install remoteRF. It is recommended that you install this package within a virtual environment.
python3 -m venv venv # Create virtual environment
source venv/bin/activate # Activate virtual environment
pip install remoterf # Install remoteRF
NI USRP-2901 / B200-family
After reserving a server-local or HostRF-owned usrp inventory entry, fetch or refresh its
Dynamic v2 package with the reservation token:
from remoteRF.drivers import ensure_driver
ensure_driver(token="reservation-token")
Both supported initialization forms then use the same generated runtime:
from remoteRF.drivers.usrp import uhd
with uhd.usrp.MultiUSRP(token="reservation-token") as usrp:
print(usrp.remoterf_capabilities)
usrp.set_rx_rate(1e6)
from remoteRF.drivers.usrp import MultiUSRP
usrp = MultiUSRP("reservation-token")
try:
print(usrp.get_pp_string())
finally:
usrp.close()
Streaming uses NumPy buffers and native-like UHD value objects. Only the leading region reported by native UHD is changed on a partial receive:
import numpy as np
from remoteRF.drivers.usrp import uhd
with uhd.usrp.MultiUSRP(token="reservation-token") as usrp:
stream_args = uhd.usrp.StreamArgs("fc32", "sc16")
stream_args.channels = [0]
with usrp.get_rx_stream(stream_args) as rx:
samples = np.empty(4096, dtype=np.complex64)
metadata = uhd.types.RXMetadata()
count = rx.recv(samples, metadata, 0.25)
valid_samples = samples[:count]
The generated package includes native-like namespaces, aliases, overload
stubs, deterministic close(), context managers, opaque session-bound
handles, and typed errors in remoteRF.core.v2_errors. Streamers are never
silently recreated after a disconnect; reopen a new device session and
configure a new stream explicitly.
Methods marked deferred in the fetched schema remain available through
generic native dispatch, but are not release-qualified as exact UHD overload
parity until the server's UHD 4.10 target-introspection and hardware
differential gates pass.
If pip install doesn't work, you can clone the source directly from github.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file remoterf-2.0.7.tar.gz.
File metadata
- Download URL: remoterf-2.0.7.tar.gz
- Upload date:
- Size: 87.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/5.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71efe31494550b8f1c019e5485ee1ef5641a1ede1a75c2060d91c32d9c45b1e3
|
|
| MD5 |
d28160690015402b3b4992e7cc456f41
|
|
| BLAKE2b-256 |
ab4c5d2240ad59f63181b5c9168118454dc7c6e223d8fc626c5b99cb377d67af
|
File details
Details for the file remoterf-2.0.7-py3-none-any.whl.
File metadata
- Download URL: remoterf-2.0.7-py3-none-any.whl
- Upload date:
- Size: 83.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/5.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88d9833e39f0e9c525ba76681b789ea8e2a54aa1cdcac0109dd8a5179dbc50c7
|
|
| MD5 |
eac89311e66a1bb5a6a76c8507e9fe53
|
|
| BLAKE2b-256 |
13118c4e4907a8833e2658e7359018af7e13f95bb2fadaebee36f5c4df80b733
|