Small useful tools

Volt

Transfer exact file bytes through a screen and a camera.

Recorded result

Explore the example
From the example below.

Why I’m interested

Two devices don't need a shared network to exchange data if one has a screen and the other has a camera. Volt uses that visual channel for file transfer. The challenge is reconstructing the original bytes from the frames the receiver gets, so the checksum matters as much as the image.

Progress

The native Rust encoder and decoder recovered all 32 bytes of a text sample with the same SHA-256 digest. The example shows the input, an encoded QR frame, and the recovered file. The next device test captures a frame through a camera instead of reading the generated PNG.

Follow the bytes through a frame

Follow the file from text to a QR frame and back to the original bytes.

Choose an example

32 bytes to preserve

The file starts as 32 bytes of text. Volt's native Rust encoder turns it into three QR frames.

File size
32 bytes
Frames
3
Mode
Volt QR

Input

Small experiments, exact bytes.

The encoded QR frame

The native Rust encoder produced this PNG. The decoder reads the generated image to recover the file.

The encoded QR frame

The original bytes returned

One accepted frame was enough for the native Rust decoder to recover the file. Every byte matches the original input.

Accepted frames
1
Byte comparison
Equal

Input

SHA-256
1f616d44328815fcf2cabb78bf3ebf33803c1337ab963bd983f76bf9b77ec85d

Result

Small experiments, exact bytes.

Volt's native Rust commands encode and decode this recorded example. The input to the decoder is the generated PNG. The next device test uses a camera capture.

What comes next

Display an encoded frame, capture it with a camera, and compare the recovered file with the original.

Implementation and credits

How do bytes survive a trip through an encoded visual frame?

A native Volt QR encode/decode run recovers a 32-byte text file from a generated image.

Follow the text into a QR frame, then compare the recovered bytes and checksum.

The shared native Rust core encodes and decodes the file. Rust publishes the recorded frame and result.

A personal visual file-transfer experiment.

Back to the collection