← Back

Wireless Synced Cameras, Built From the Ground Up

Last updated October 11, 2026

I am treating this as a living page for my wireless syncing cameras. I'll continue to add things to the bottom of the page as I build and test more.

Two assembled camera stacks with lenses

This is a hobby project of mine to build a set of small global shutter cameras that are synced together wirelessly.

The goal was ~10 µs of sync error between any two cameras. But as I soon discovered I was able to reduce this by over an order of magnitude.

Scope:

The Boards

Each camera is a stack of three boards.

Animation of the copper layers of the three boards

The copper layers of the three boards.

3D render of the three board stack next to a coin

A render of the stack, with a US quarter for scale.

The Boards Arrive

The assembled panel with the three boards

Assembly and Bring-Up

Bring-up took ~four hours, and I found no hardware fault on the first spin. All problems I hit were software ones (the best kind)

Colour bar test pattern from the sensor
The first data from the sensor: a test pattern, bit-exact.
The first real picture from the camera
The first real picture, ignore my dumb face

The Sync Experiment

To measure the sync capabilities between both cameras I had them look at a 7x7 LED matrix. One LED is on at a time, and the lit position moves every 11 µs in a snake pattern. The bottom row of the panel also is a binary counter, so I know which pass of the pattern a picture is from.

Two cameras in printed stands in front of the LED panel

With a very short exposure, a picture shows only the LEDs that were lit while the shutter was open. That turns each picture into a timestamp. If the two cameras show the same LEDs, they took the picture at the same time. The brightness of the first and last LED gives a result finer than one step.

The same frames from the two cameras as the LED step time goes from 100 ms to 11 µs.

Method

Results

CaptureFrame pairsStandard deviationWorst pair
Raw frames, 30 Hz720.9 to 1.2 µs2.9 µs
Raw frames, 60 Hz961.2 to 1.3 µs3.1 µs
Raw frames, 120 Hz961.1 µs2.5 µs
H.265 video, 1080p at 60 Hz241median error 0.5 µs4.4 µs

The mean difference was below 1 µs in every capture. A large part of the spread is noise in the measurement itself. (I had a variety of LED colors so this did throw off the measurements a little)

The first version of the test

Before the panel, I used a row of 8 LEDs on a breadboard as a running light. It was the same idea with fewer LEDs.

The 8 LED rig at a slow step of 100 ms. Camera 1 is on the left and camera 2 is on the right, and each frame pair shows the same LED.

Brightness of each LED in each frame for both cameras, and the time difference for each frame

One capture with the 8 LED rig. Left and middle: what each camera saw. Right: the difference in each frame.

Live Stream

Please ignore the shitty lenses.

The cameras can stream video and IMU data over WiFi. Every picture and every IMU sample carries the time of the shared radio clock, so data from the two cameras lines up with no work on the laptop.

Other Experiments

120 frames each second to H.265

Encoded sizeSensor rateH.265 frames each second
1280 x 720120119.0
1920 x 720120114.9
1920 x 108012077.8

What's Next