The simplest optical link: one screen becomes a lamp that slowly changes color, and a
camera only measures the mean color of what it sees. It can film the
screen, or a wall lit by it. It is very slow, about a third of a byte per second, so it
is for short messages. That is where the data fountain shines: packets
are long and often lost, and the receiver still finishes, whenever it starts. Everything
runs in this page: nothing is uploaded anywhere.
Sound · Screen to camera ·
Pong (experiment).
What is a data fountain?
The file is cut into K blocks (16 bytes each here). 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 packets; it
only takes a little longer. Details in docs/fountain-code.md in the
repository.
Does it flash?
No. The four colors (amber, green, blue, mauve) have exactly the same brightness, and
each fades into the next: only the hue changes, 2 to 8 times per second, never the
amount of light, so it cannot trigger photosensitive seizures the way blinking can.
A test checks every pace. Still, if colored light bothers you, look away: the camera
does not need anyone to watch.
Dim the room. Point the camera at the other screen, or at a pale wall it lights up,
and hold it still (rest the phone on something). The picture does not need to be
sharp.
The mean color the camera sees, last 8 seconds (brightened)
Camera off.
-
Pictures per second
-
Signal
Packets ok / bad
-
The colors the camera measured, one line per picture, kept only in this page (no
picture). They help troubleshooting: replay them with
airgap light decode FILE -v, or attach them to a bug report.
Frame log
The receiver detects the pace by itself. Start at 5 colors per second; go slower if
the receiver finds packets but decodes few of them.
Choose a file or type a message.
airgap: transfer in progress
The full view turns the whole screen into the lamp; leave it to stop. Turn the
brightness up and keep the room dim. Anyone who can see the light can receive the
message: encrypt it beforehand if it is private.