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.
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:
Each camera is a stack of three boards.
The copper layers of the three boards.
A render of the stack, with a US quarter for scale.
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)
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.
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.
| Capture | Frame pairs | Standard deviation | Worst pair |
|---|---|---|---|
| Raw frames, 30 Hz | 72 | 0.9 to 1.2 µs | 2.9 µs |
| Raw frames, 60 Hz | 96 | 1.2 to 1.3 µs | 3.1 µs |
| Raw frames, 120 Hz | 96 | 1.1 µs | 2.5 µs |
| H.265 video, 1080p at 60 Hz | 241 | median error 0.5 µs | 4.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)
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.
One capture with the 8 LED rig. Left and middle: what each camera saw. Right: the difference in each frame.
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.
| Encoded size | Sensor rate | H.265 frames each second |
|---|---|---|
| 1280 x 720 | 120 | 119.0 |
| 1920 x 720 | 120 | 114.9 |
| 1920 x 1080 | 120 | 77.8 |