Hardware & platforms
This page states plainly what has been tested and how. "Tested on real units" means a real receiver was attached and streamed through OpenRSP. "Experimental" means the code is complete and passes against a USB emulator of that model, but nobody has yet run it on the real hardware. Reports from owners of the experimental models are very welcome.
Receivers
| Model | Status | Notes |
|---|---|---|
| RSP1B | Supported | Reference device. Tested on real hardware on Linux, macOS, Android and iPadOS, and compared directly against the proprietary stack. |
| RSP1A | Supported | Tested on real units. |
| RSPduo | Supported | Tested on real units. |
| RSP1 | Experimental | Emulator-tested only. |
| RSP2 | Experimental | Emulator-tested only. |
| RSPdx | Experimental | Emulator-tested only. |
| RSPdx-R2 | Experimental | Emulator-tested only. |
OpenRSP performs the same device checks as the proprietary driver by default. Hardware that does not pass them is refused, exactly as before. An opt-in setting, off by default, lets the owner of such a device use it anyway; the service then logs a warning for each check it skips.
Operating systems
Installers and packages for each platform are on the Downloads page.
| Platform | Status | Notes |
|---|---|---|
| Linux x86-64 | Supported | The reference platform. .run installer and .deb package, tested on Ubuntu 24.04 including install, upgrade, uninstall and switching back to the proprietary stack. Streams from real hardware; tested side by side with the proprietary stack. |
| Linux arm64 / armhf (e.g. Raspberry Pi 4 and 5) | Supported | Packages for both. Built and tested natively on a Raspberry Pi 5; the library's exports match the vendor's arm64 build. Hardware testing on ARM is ongoing. |
| Android 8.0+ (arm64, armv7, x86-64) | Supported | Driver app and receiver demo, tested with an RSP1B on a Pixel 8a at up to 8 MS/s with no sample gaps. Sharing one receiver between apps needs Android 10 or later. See Android & iPad. |
| iPadOS (Apple-silicon iPads) | Working | Runs on an iPad Air (M4) with an RSP1B at 8 MS/s isochronous with no sample gaps, through a USB DriverKit extension. Public distribution depends on Apple granting the USB entitlement for the device. |
| macOS (Apple silicon and Intel, universal) | Working | Streams from an RSP1B on an Apple-silicon Mac: the service uploads OpenRSP's firmware and streams at 2, 8 and 10 MS/s with no gaps once running, using bulk or isochronous transfers, and settings can be changed while streaming. The installer package sets up the background service, and ordinary applications stream through it. All unit tests pass. Intel Macs have not yet been tested with a receiver. |
| Windows (x64 and x86) | In progress | Built with MinGW-w64. The DLL has the same exports, names and ordinals as the vendor's. All unit tests pass under Wine. An installer sets everything up and puts the previous files back on uninstall; it has been tested under Wine. Not yet tested on Windows with a receiver attached. |
How it is tested
The proprietary stack is the reference. OpenRSP is checked against it at every level:
- USB protocol: recorded sessions from the proprietary driver are replayed through OpenRSP, and every control transfer must be byte-identical (212 of 212 test vectors, 16,753 of 16,753 transfers).
- Signal processing and AGC: the sample output and the gain decisions are compared with the proprietary driver's output and must be bit-identical, on every CPU architecture.
- Mixed pairings: OpenRSP's library is run against the vendor's service, and the vendor's library against OpenRSP's service, and the results compared with recordings of the proprietary stack alone.
- Real applications: SoapySDRPlay3, SDR++ and SDRangel are run against OpenRSP unchanged.
- No network: a test traces every system call to prove that OpenRSP never opens a socket or looks up a host name.