Reference Notes
These notes summarize what was learned from the reference projects.
devourer
devourer is the native Realtek USB WiFi implementation. It owns the hardware
bring-up that matters for OpenIPC receive:
- firmware download,
- EFUSE/EEPROM and power sequencing,
- BB/RF tables,
- monitor mode,
- channel and bandwidth selection,
- TX descriptors,
- RX descriptor parsing.
The USB model is vendor-control register access plus bulk endpoints:
- request
0x05for register reads and writes, - interface 0 claim,
- descriptor-driven bulk IN and bulk OUT endpoint discovery,
- 32 KiB RX transfer buffers to avoid splitting full chip-side aggregates.
The Realtek RX aggregate format is shared Rust logic in openipc-core.
aviateur
aviateur is the native OpenIPC ground station. It uses devourer for adapter
access, then handles WFB, RTP, adaptive-link feedback, and video playback.
Packet flow:
- devourer emits parsed 802.11 frames.
- OpenIPC/WFB frame checks validate
57:42:<channel_id>MAC fields. - WFB session packets decrypt a session key.
- WFB data packets decrypt into FEC fragments.
- Primary fragments emit RTP packets.
- RTP packets go to playback or optional UDP output.
openipc-rs mirrors the protocol behavior in shared Rust, while keeping UI,
USB permissions, and rendering at platform edges.
openipc-zig
openipc-zig proves that browser/WebUSB OpenIPC receive is possible, even if
its implementation is not the desired long-term shape. It is useful for:
- browser permission flow,
- WebUSB constraints,
- WebCodecs playback reference,
- understanding how much hardware setup must still happen in browser builds.
openipc-rs keeps WebUSB as a transport adapter and puts the actual receiver
pipeline in Rust/WASM.
PixelPilot
PixelPilot is useful as an Android reference for packaging a full ground-station experience around an H.264/H.265 WFB feed. It helps validate expectations for codec handling, latency, and UI-level receiver metrics, but it is not the source of the Realtek USB driver path used here.