

Sutterspeed
USB light oscilloscope (STM32C071, 400 kS/s photodiode front end) with a Windows viewer and camera shutter speed measurement
- Size
- 36 × 12.8 mm
- Copper layers
- 4
- Thickness
- 0.8 mm
- Parts
- 35
- Nets
- 42
- Pads
- 134
- Tracks, vias
- 325, 52
- Pours
- 4
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 13 Jul 2026
- Updated
- 1 Nov 2026
Overview
Sutterspeed is an open-source printed circuit board by StaRadian, from the StaRadian/sutterspeed repository on GitHub. It is a 4-layer board of 36 × 12.8 mm with 35 parts on 42 nets, routed with 325 tracks and 52 vias.
It is built around the TEMD5510FX01, ME6211C33M5G-N and STM32C071G8U6, with the USBLC6-2SC6 among its other parts. Its parts include 14 capacitors, 13 resistors, 4 ICs, 2 connectors and 1 diode. It belongs with the sensors and measurement boards and the STM32 boards of this library.
Main components
4TEMD5510FX01
SMD,5x4.2mm-40℃~+100℃ 1.12mm 4.24mm 5mm Light Intensity SMD,5x4.2mm Ambient Light Sensors ROHSVishay IntertechnologyAmbient Light SensorsME6211C33M5G-N
SOT-23-5-40℃~+150℃ 1 120mV@(100mA) 3.3V 500mA 50uVrms 60uA 6V 70dB@(1kHz) Fixed Over Current Protection、Enable、Short Circuit Protection Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMICRONEVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsSTM32C071G8U6
UFQFPN-28(4x4)UncategorisedSTMicroelectronicsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)
README
README.mdsutterspeed
A light oscilloscope on a small USB board: a photodiode front end sampled at 400 kS/s, a Windows viewer that works like a bench scope (time base, vertical scale, trigger, filters, measurements, cursors), and a shutter measurement mode that times a single light pulse — the original purpose of the board was testing camera shutter speeds.

Hardware
- STM32C071G8 (Cortex-M0+, 48 MHz), USB full speed
- TEMD5510 photodiode, transimpedance stage (10 kΩ) followed by gains ×1 / ×11 / ×121
- the three stages are sampled together every 2.5 µs and merged into one wide-range value (the most sensitive stage that is not clipped; gain ratios are learned while running)
KiCad 10 project in kicad/, fabrication files (BOM, positions, Gerbers) in kicad/production/.
Repository
| path | contents |
|---|---|
firmware/src | firmware: ADC/DMA acquisition, scope engine (trigger, decimation, roll, pulse capture), USB CDC command line |
firmware/tools/viewer-rs | Windows viewer (Rust, egui), also updates the firmware over USB |
firmware/test | host test of the scope engine with synthetic light pulses |
firmware/lib | CMSIS, STM32C0 HAL, TinyUSB (git submodules) |
code/ | STM32CubeMX pin configuration |
kicad/ | schematic and PCB |
Clone with the libraries:
git clone --recursive https://github.com/StaRadian/sutterspeed.gitViewer
Download sutterspeed-viewer.exe from the releases, plug in the
board and pick its COM port.
- Horizontal: 10 µs/div .. 5 s/div, position, sample rate (400 kS/s and divisions of it). Long time bases roll live.
- Vertical: lx/div and position, AUTO follows the signal smoothly; drag the trace to move it.
- Trigger (10 ms/div and faster; slower time bases roll live): AUTO / NORMAL / SINGLE, rising or falling edge, level knob or drag the ◀ marker. While SINGLE waits, the previous trace stays on screen, dimmed.
- Filter: moving average or low-pass on screen; the board triggers on the same filtered signal.
- Min width (next to the filter): light has to stay past the level at least this long to trigger, so short flashes and flicker are passed over. 0 = off (shown as HOLDOFF).
- Measurements: max, min, mean, peak-peak, flicker, frequency, period, width, duty, rise time; cursors A/B.
- Shutter measurement (pulse icon under the trigger, works like SINGLE): waits for one light pulse and shows it from start to end. The open time runs from the light rising through the trigger level to it falling back through it (on the filtered trace when a filter is set), with the nearest nominal speed and the error in EV. The trigger looks at a 40 µs average (or the filter), the timing at the 2.5 µs samples. Pulses from about 100 µs to tens of seconds. ▶ goes back to the running scope.
- Update (chip icon): Update from GitHub downloads the newest release, writes its firmware to the board when it
is newer and replaces the viewer when it is newer (restart to use it). Firmware goes over USB through the board's
own bootloader, which needs no driver; no STM32CubeProgrammer needed. Older boards (before 0.4.0) and blank chips
are written through the ST bootloader; if the PC has no driver for it, the viewer installs Windows' own WinUSB
(one Windows permission prompt). Write built-in firmware writes the firmware that comes inside the viewer
(no internet needed, blank boards too); a
.hex/.binfile can be written as well. From a script:sutterspeed-viewer --flash [sutterspeed.hex](no file: the built-in one),sutterspeed-viewer --update(viewer only).
Build: the firmware first (firmware/build/sutterspeed.hex goes into the viewer), then
cd firmware/tools/viewer-rs && cargo build --release.
Firmware
Build with STM32CubeCLT (arm-none-eabi-gcc, CMake, Ninja):
cd firmware
cmake -S . -B build -G Ninja
cmake --build buildSee firmware/README.md for flashing and the serial protocol.
Status and limits
- The lux scale comes from the datasheet (≈10 nA/lx for illuminant A, ≈15 counts per lx) and is not calibrated;
other light sources (LED, daylight) can read tens of percent off.
zeroremoves the dark offset only — cover the sensor when using it. - The 2.5 µs samples are noisy (tens of lx at room light, and LED room light may flicker at tens of kHz); slower sample rates and the filters average it out. Set the shutter trigger level clearly above the room light.
- Measured on one board: stage ratios ×10.9 (×11 / ×1) and ×13.0 (×121 / ×11, nominal 11); the firmware learns
them while running (
adcandgainshow them).
Copyright © 2026 StaRadian. All rights reserved. The libraries under firmware/lib keep their own licenses.
Parts
35| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 10k | Resistor_SMD:R_0402_1005Metric | R3, R5, R6, R9, R12 |
| 4 | 100nF | Capacitor_SMD:C_0402_1005Metric | C4, C6, C9, C10 |
| 3 | 100 | Resistor_SMD:R_0402_1005Metric | R10, R11, R14 |
| 3 | 1nF | Capacitor_SMD:C_0402_1005Metric | C11, C12, C14 |
| 3 | 1uF | Capacitor_SMD:C_0402_1005Metric | C2, C3, C5 |
| 2 | 10pF | Capacitor_SMD:C_0402_1005Metric | C8, C13 |
| 2 | 1k | Resistor_SMD:R_0402_1005Metric | R7, R13 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R1, R2 |
| 1 | 100k | Resistor_SMD:R_0402_1005Metric | R8 |
| 1 | 10uF | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 47pF | Capacitor_SMD:C_0402_1005Metric | C7 |
| 1 | BLM18PG221SN1D | Inductor_SMD:L_0603_1608Metric | FB1 |
| 1 | ME6211C33M5G-N | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | PCB USB-C 14P | PCB_USBC:PCBTypeC_14P | J1 |
| 1 | STM32C071G8U6 | Package_DFN_QFN:QFN-28_4x4mm_P0.5mm | U1 |
| 1 | SWD | Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical | J2 |
| 1 | TEMD5510FX01 | personal:Vishay_TEMD5510FX01 | D1 |
| 1 | TLV9064IPWR | Package_SO:TSSOP-14_4.4x5mm_P0.65mm | U4 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U3 |
Questions
How big is the Sutterspeed PCB?
It measures 36 × 12.8 mm and has 4 copper layers, 0.8 mm thick.
What parts does the Sutterspeed use?
35 parts, built around the TEMD5510FX01, ME6211C33M5G-N, STM32C071G8U6 and USBLC6-2SC6. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Sutterspeed KiCad files?
From the StaRadian/sutterspeed repository on GitHub, at the commit this page was made from: the board is kicad/sutterspeed.kicad_pcb and its schematic kicad/sutterspeed.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Sutterspeed design in my own project?
Its repository states no licence, so its author keeps all rights: ask StaRadian before reusing the design.
Similar boards
- 4 layers45 × 45 mm

- 4 layers15.4 × 25.5 mm

- 4 layers33.2 × 33.2 mm

Pendant
picafe/pendant
A pendant built from two PCBs: a 8×8 bicolor LED matrix module (red, orange, green) and controller board with battery charging, USB-C power, 5 V boost, and motion sensing.
46 parts - 4 layers70 × 60 mm

- 6 layers90 × 90 mm

Codex micro wired revA route nognd
slopus/codex-keybored
A 100% vibe-coded hardware build: Fusion 360, six-layer KiCad PCB, STM32 firmware, and live JLC factory handoff.
97 parts10 - 2 layers35 × 100 mm

WalkieTalkie
GuzziFlipFlops/ESP32-Walkie-Talkie
An open source ESPNOW based walkie talkie with a 600 meter tested distance, with an OLED and multiple buttons to interact with
66 parts7MIT - 2 layers86.5 × 27.5 mm

Comfospot50 full
cornim/comfospot50
The schematic and PCB in this directory are the project-authored controller board design. The board is intended to interface an ESP32-C3 with the existing ComfoSpot panel.
29 parts4GPL-3.0 - 4 layers41 × 33 mm

Darknet smao
dcbokonon/darknet-smao
Darknet SMAO: Meshtastic LoRa+BLE mesh node SAO for DEF CON 34
36 parts4