USRP Driver for RemoteRF
USRP device schema and UHD-compatible wrapper implementation for RemoteRF
RemoteRF is a Python-based platform that enables SDR devices connected to a remote server or host PC to be controlled as if they were locally attached to a client machine. The platform was developed by Ethan Ge and Prof. Ian Roberts at UCLA, affiliated with the UCLA Wireless Lab led by Prof. Ian Roberts.
During my visit to UCLA, I implemented a custom device schema for RemoteRF to add support for USRP devices. At the time, RemoteRF primarily supported the ADI PlutoSDR, so this work extended the platform toward more general SDR hardware support.
The main implementation challenge was to make existing UHD-based USRP code work through RemoteRF’s Python object-based call/response interface. To address this, I wrote a UHD-compatible wrapper that mimics the relevant classes and methods from the original USRP Hardware Driver.
I also collaborated with Ethan for dictionary-based arguments in RemoteRF. This enabled custom wrapper behavior on the server side by allowing the device schema to parse argument dictionaries and reconstruct the appropriate method or constructor calls.
Based on our previous USRP soft modem implementation, I built a basic RemoteRF USRP driver that can run our existing transmission code with minimal modification. In practice, most of the original code can be reused by replacing the UHD import path from import uhd to a RemoteRF-compatible wrapper import such as import remoteRF.uhd.
To further reduce code changes on the client side, I suggested additional client- and server-side modifications for dictionary-based class mockup responses. These changes allow the client to automatically instantiate the appropriate wrapper class based on the server response, preserving a programming model close to the original UHD API.
I also validated and revised RemoteRF’s custom driver documentation during this implementation process, particularly the parts related to custom device schema development.
This USRP support is planned to be integrated into the official RemoteRF deployment. I am also planning to extend RemoteRF support to the ADI Phaser phased array platform, building on my previous phased-array implementation.