OMD: The Open Source Optical Modem That Turns Your Screen into a Transmitter

The Open Source Optical Modem That Turns Your Screen into a Transmitter

In the world of amateur radio and emergency communications, we are obsessed with pushing data over RF. We use TNCs, audio interfaces, and digital modes to send files over the air. But what if you need to transfer a file across an “air gap” without radio frequencies, without cables, and without installing any software on the receiving device?

Enter OMD (Optical Modem), a fascinating open source project by Muggy86 that turns any screen into a data transmitter and any smartphone camera into a receiver. It delivers a real-time optical data link capable of up to 33.20 KB/s wall-clock file delivery, complete with SHA-256 verification.

Not Just Another Animated QR Code

When you first hear “screen-to-camera data transfer”, your mind probably goes to animated QR codes. We have all seen tools that chop a file into hundreds of QR codes and play them like a video. But OMD is fundamentally different.

OMD is a true modem. Instead of displaying matrix barcodes, it uses adaptive OFDM (Orthogonal Frequency-Division Multiplexing).

Just as a modern RF modem measures the channel conditions and adjusts its modulation, OMD measures the screen-camera channel per spatial frequency. It then loads each OFDM carrier with the densest constellation that the specific optical channel can carry. Even better, it continuously adapts based on live feedback from the receiver.

The Magic of the Zero-Install Receiver

One of the biggest hurdles in ad-hoc data transfer is software compatibility. If I want to send you a file, you usually need to install an app to receive it.

OMD solves this brilliantly with a zero-install receiver. The receiving device only needs a standard web browser. An unmodified phone can scan a starting QR code, open a URL, and instantly begin decoding the incoming light signals using its camera.

Performance Numbers

The project provides two receiving paths, both using the exact same protocol and bit-exact maths:

  • The Native Receiver (C/Python): This is the fast path. Running locally, it achieves an impressive 33.20 KB/s wall-clock speed. In testing, it transferred a 206 KB file in just 6.1 seconds, SHA-256 verified.
  • The Browser Receiver (TypeScript): This is the portable, zero-install path. Running purely inside a stock phone browser, it achieves roughly 2 KB/s. While slower, the convenience of requiring zero app installations makes it incredibly practical for quick, small transfers.

How OMD Works Under the Hood

The name OMD comes from the format’s own magic bytes. Every data stream starts with OMD1 (Optical Modem, version 1).

Here is a quick look at the technical architecture:

  • Adaptive OFDM: By treating the screen as a 2D spatial channel, OMD uses OFDM to distribute data across multiple subcarriers.
  • Per-Carrier Bit Loading: Not all pixels or colors transmit equally well through different lenses or under different lighting conditions. OMD dynamically assigns more bits to “clean” carriers and fewer bits to noisy ones.
  • Robust Verification: Every transfer is hashed and verified using SHA-256, ensuring data integrity across the optical gap.

Why This Matters for Off-Grid and EmComm

While OMD is not an RF protocol, it shares the hacker ethos of amateur radio. In an emergency scenario or an off-grid deployment, moving data between mismatched devices (like an operations center display to a volunteer’s personal phone) can be a nightmare of missing cables or incompatible Bluetooth versions.

With OMD, any screen can become an impromptu broadcast station. A dashboard can literally “flash” a configuration file, a set of coordinates, or a cryptographic key directly to anyone holding a smartphone camera, with mathematical certainty that the file arrived intact.

Get Started with OMD

The entire project is open source and thoroughly documented. The repository includes a deep-dive technical report detailing the design, the measurement campaign, and the pitfalls encountered during development. It also includes a full wire-format specification for anyone looking to build interoperable implementations.

Check out the source code, technical reports on GitHub:
GitHub – Muggy86/omd: Screen-to-camera optical modem

Have you experimented with optical data transfer? Let us know how you might use a tool like OMD in your own off-grid or radio setups!

Post Comment