airgap

File transfer over near-ultrasound (18–20 kHz), built on a data fountain: the sender loops forever, you can start receiving at any moment, and missed frames do not matter. Everything runs in this page: no file is uploaded anywhere. Transfer from a screen to a camera instead, or by the color of the light. Experiment: bouncing balls.

What is a data fountain?

The file is cut into K blocks. After a first pass over the blocks themselves, every packet sent is the XOR of a pseudo-random choice of blocks, a new one each time, like drops from a fountain. Any K packets, or very slightly more, rebuild the file, whichever ones they are: the progress bar counts the useful ones. So the receiver never asks for anything back, can start late and can miss frames; it only takes a little longer.

airgap is a teaching project built to show this idea at work. Try it: start the receiver in the middle of a transfer, or interrupt it for a few seconds, and watch the progress resume. Details in docs/fountain-code.md in the repository.

Not listening.

Band level
-
Packets ok / bad
-
Quality
-

The recording is the raw microphone input, kept only in this page. It helps troubleshooting: decode it with airgap recv --wav or airgap monitor --wav, or attach it to a bug report.

Frame log