This repo gives you two separate DriverKit SDR paths:
HackRFdriver stack (RX + TX)RTL-SDRdriver stack (RX)
They are not mixed together. Each one has its own dext source, contracts, and tests.
This project is not only original work. It reuses and adapts important parts from upstream projects.
- HackRF upstream: https://github.com/GreatScottGadgets/hackrf
- RTL-SDR upstream: https://github.com/osmocom/rtl-sdr
- DriverKitUserClientSample reference: https://github.com/DanBurkhardt/DriverKitUserClientSample
Exact pinned commits are listed in THIRD_PARTY_SOURCES.md.
This is a host-side DriverKit project for Apple platforms. You keep firmware on the USB device, and run a DriverKit dext on the host.
Inside this repo you get:
- C driver cores and compatibility layers
- Driver contracts and protocol helpers
- DriverKit dext source files for both devices
- unit tests for protocol, ring buffers, and driver behavior
Anyone can clone, build, and run the local unit tests.
To run real hardware with DriverKit, you need Apple runtime access:
- Apple Developer Program membership (paid, unless Apple grants a waiver)
- approved DriverKit entitlements/capabilities
- correct signing/provisioning for app + dext
Both dext paths are wired to real transport calls in source:
IOUSBHostInterface::Open/CloseCopyPipe(...)DeviceRequest(...)IOUSBHostPipe::AsyncIO(...)- shared memory mapping via
CopyClientMemoryForType(...)
Project tests are green (8/8).
dext/HackRFUSBDriver: HackRF dext source (.iig,.skeleton.cpp,Info.plist)dext/RTLSDRUSBDriver: RTL-SDR dext source (.iig,.skeleton.cpp,Info.plist)src: C cores and compatibility layersinclude: public headers and contractstests: local unit testsdocs: roadmap and extra notes
cmake -S . -B build
cmake --build build
ctest --test-dir build --output-on-failure- Create an Xcode app project.
- Add a USB Driver Extension target for each dext you want.
- Import the files from
dext/HackRFUSBDriverand/ordext/RTLSDRUSBDriver. - Generate interfaces from each
.iig. - Add entitlements for the dext and the app.
- Sign with a DriverKit development provisioning profile.
- Deploy, enable the driver, and plug hardware.
For full steps, see docs/HARDWARE_TESTING.md.
If you want apps from other developers to connect:
- your dext must have
com.apple.developer.driverkit.allow-third-party-userclients - iPad apps need
com.apple.developer.driverkit.communicates-with-drivers - macOS apps need
com.apple.developer.driverkit.userclient-accesswith your dext bundle ID
HackRF:
dext/HackRFUSBDriver/Info.plistmatches HackRF family IDs (0x604B,0x6089,0xCC15)
RTL-SDR:
dext/RTLSDRUSBDriver/Info.plistincludes the full upstreamlibrtlsdrknown VID/PID list- tuner support is currently focused on
R820T/R828D
- Create a public GitHub repo.
- Push this code.
- Keep
LICENSEandNOTICEfiles. - Keep attribution in derivative repos/releases.
- Tell users they still need Apple entitlement approval.
If needed, use docs/PUBLISHING.md for copy/paste publish commands.
GPL-2.0-or-later for this combined distribution.
See LICENSE, NOTICE, and THIRD_PARTY_SOURCES.md.