Skip to content
This repository was archived by the owner on Mar 1, 2026. It is now read-only.

coloboxp/driverkit-sdr-hackrf-rtlsdr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

driverkit-sdr-hackrf-rtlsdr

This repo gives you two separate DriverKit SDR paths:

  • HackRF driver stack (RX + TX)
  • RTL-SDR driver stack (RX)

They are not mixed together. Each one has its own dext source, contracts, and tests.

Upstream credit first

This project is not only original work. It reuses and adapts important parts from upstream projects.

Exact pinned commits are listed in THIRD_PARTY_SOURCES.md.

What this project is

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

Who can use this

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

Current status

Both dext paths are wired to real transport calls in source:

  • IOUSBHostInterface::Open/Close
  • CopyPipe(...)
  • DeviceRequest(...)
  • IOUSBHostPipe::AsyncIO(...)
  • shared memory mapping via CopyClientMemoryForType(...)

Project tests are green (8/8).

Repo layout

  • 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 layers
  • include: public headers and contracts
  • tests: local unit tests
  • docs: roadmap and extra notes

Build and test

cmake -S . -B build
cmake --build build
ctest --test-dir build --output-on-failure

Hardware use: quick guide

  1. Create an Xcode app project.
  2. Add a USB Driver Extension target for each dext you want.
  3. Import the files from dext/HackRFUSBDriver and/or dext/RTLSDRUSBDriver.
  4. Generate interfaces from each .iig.
  5. Add entitlements for the dext and the app.
  6. Sign with a DriverKit development provisioning profile.
  7. Deploy, enable the driver, and plug hardware.

For full steps, see docs/HARDWARE_TESTING.md.

Third-party apps connecting to your driver

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-access with your dext bundle ID

USB ID coverage in this repo

HackRF:

  • dext/HackRFUSBDriver/Info.plist matches HackRF family IDs (0x604B, 0x6089, 0xCC15)

RTL-SDR:

  • dext/RTLSDRUSBDriver/Info.plist includes the full upstream librtlsdr known VID/PID list
  • tuner support is currently focused on R820T/R828D

Public release checklist

  1. Create a public GitHub repo.
  2. Push this code.
  3. Keep LICENSE and NOTICE files.
  4. Keep attribution in derivative repos/releases.
  5. Tell users they still need Apple entitlement approval.

If needed, use docs/PUBLISHING.md for copy/paste publish commands.

License

GPL-2.0-or-later for this combined distribution. See LICENSE, NOTICE, and THIRD_PARTY_SOURCES.md.

About

USBDriverKit SDR drivers/libraries for HackRF and RTL-SDR (separate stacks)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors