
Pcb a power
meshsat/meshsat-fieldkit
MeshSat field kit hardware: the V1 kits as built, the V2 carrier PCB set for the Peli 1450 and the compact pocket-sized node (KiCad and OpenSCAD sources, generators, release files, build guides).

Disciplined reference oscillator + NTP for ham radio station with uBlox LEA-M8S
Hamref proto v0 1 is an open-source printed circuit board by OH2LAK, from the OH2LAK/HamRef repository on GitHub. It is a 4-layer board of 100 × 80 mm with 109 parts on 60 nets, routed with 952 tracks and 326 vias.
It is built around the 74AHCT1G125SE, 74LVC1G17Z and 74LVC1G125, with the LEA-M8S-0, AD5693RBRM and SI5351C-B-GM among its other parts. Its parts include 40 capacitors, 22 resistors, 11 connectors, 10 ICs and 2 diodes. It belongs with the radio and wireless boards and the RP2350 boards of this library.
A small GNSS-disciplined 10 MHz frequency reference and precision time server for the amateur radio shack — built around the u-blox LEA-M8S GNSS module.
Status: early architecture / pre-prototype. Proto-1 schematic and PCB (v0.1) are generated and routed, not yet built or tested; a firmware proof of concept (PIO counter + disciplining loop, host-simulated, not yet run on hardware) is in
firmware/. This README documents the design as currently planned so the repo has a real starting point; sections below are markedTODOwhere work hasn't started.

Proto-1 bring-up board (v0.1): 4-layer, 100 × 80 mm (fits the Fischer AKG 105.26 case grooves), 3D view from KiCad. Design files in hardware/proto-v0.1/.
The proto-1 board has four coaxial connectors along the rear edge: SMA (GNSS antenna input), BNC REF OUT (10 MHz from the OCXO), BNC 1PPS OUT and BNC AUX OUT. AUX OUT outputs a programmable frequency (3.3 V CMOS) generated by the Si5351C synthesizer, which is clocked from the OCXO, so it is locked to the same reference as the 10 MHz output.
HamREF provides two things a well-equipped station needs and usually has to buy separately:
Status (GNSS lock, satellite count, PPS accuracy, OCXO discipline state) is shown on a small monochrome OLED plus two multicolor status LEDs (GPSDO / NTP) on the front panel — color and blink/steady pattern indicate different states. A front-panel rotary encoder drives the menu; full parameter configuration is also available over USB (see Enclosure below).
The LEA-M8S can output a configurable timepulse from 0.25 Hz to 10 MHz directly, but that signal is a digitally synthesized pulse train (derived from the module's internal TCXO + fractional-N synthesizer), not a clean analog oscillator. At 10 MHz its jitter (the module's spec is 30 ns RMS / 60 ns 99% at 1 Hz) is significant relative to the 100 ns period, it can show small phase steps at each second boundary, and it provides no holdover if GNSS lock is lost.
HamREF instead uses the classic GPSDO approach: the LEA-M8S's single TIMEPULSE output is configured as 1PPS, and that one pulse-per-second reference is used by the MCU to discipline a separate free-running OCXO via a DAC-driven EFC loop with a long time constant. The 10 MHz output comes from the OCXO itself — far lower phase noise, plus holdover if satellite lock drops. The same 1PPS/NMEA data feeds the time service to the host computer.
Full rationale and the architecture decision log: docs/architecture-and-plan.md (in Finnish).
Fischer Elektronik AKG 105.26 (part AKG1052680ME) — an extruded aluminum mini case for 100 mm eurocards, 105 × 100.3 × 26 mm, natural anodized, with integrated cooling-fin channels. Front and rear panels are separate 2 mm cover plates.
The 26 mm case height (≈22 mm usable panel height) ruled out the originally planned 240x240 color TFT. An EC11-class rotary encoder does fit, though (body ≈11.7×12–13×4.5–8.5 mm, ø7 mm panel bushing — verified against the Farnell EC11 datasheet), so the front panel keeps a physical control after all:
| Panel | Contents |
|---|---|
| Front | 0.91" 128x32 OLED (status), 2 multicolor LEDs (GPSDO, NTP), rotary encoder (menu/control) |
| Rear | SMA (GNSS antenna), BNC (1PPS OUT), BNC (REF OUT 10 MHz), BNC (AUX OUT, programmable), USB-C (host + 5V power) |
The 22 mm limit also constrains component height on the PCB (OCXO included) — still an open item, see the architecture doc.

Block diagram (editable source: HamREF-architecture.svg).
The GNSS module's 1PPS (TIMEPULSE) disciplines the OCXO through the MCU: the RP2350 measures the 10 MHz against the PPS with PIO and steers the EFC through the DAC. REF OUT (10 MHz) comes from the OCXO itself, 1PPS OUT from the GNSS TIMEPULSE, and AUX OUT is a programmable output (Si5351C clocked from the OCXO).
What is the USB-C port, in plain words? It is a normal USB-C connector (USB 2.0 only, no Power Delivery, so always 5 V) wired straight to the RP2350's own USB controller. One cable does two jobs: it powers the whole device and it carries data. The data side is a virtual serial port over USB (class CDC-ACM): the computer sees an ordinary serial port (COMx on Windows, /dev/ttyACM0 on Linux, /dev/cu.usbmodem… on macOS) and needs no special driver. Over that port the device sends the GNSS text sentences and PPS timing data to a small helper program on the computer, which feeds chrony; the computer can also send configuration commands back.
| Acronym | Meaning |
|---|---|
| GNSS | Global Navigation Satellite System: GPS, Galileo, GLONASS, BeiDou |
| 1PPS / PPS | One Pulse Per Second: a pulse aligned to the start of each UTC second |
| TIMEPULSE | u-blox name for the LEA-M8S's programmable timing-pulse output (here set to 1PPS) |
| UART | Universal Asynchronous Receiver/Transmitter: the simple serial link between LEA-M8S and RP2350 |
| NMEA | Text sentences ($GPGGA, $GPRMC …) in which GNSS receivers report time, position and satellites |
| UBX | u-blox's own binary protocol, used to configure the LEA-M8S |
| USB VBUS | The 5 V power line of a USB cable |
| CDC-ACM | USB Communications Device Class, Abstract Control Model: the standard way to make a USB device look like a serial port |
| PD | USB Power Delivery: negotiation of voltages above 5 V (not used here) |
| I2C | Two-wire bus used for the OLED, the DAC and the Si5351C |
| GPIO | General-purpose input/output pin (drives the status LEDs, reads the encoder) |
| PIO | Programmable I/O: the RP2350's small hardware state machines that count the 10 MHz and timestamp the PPS without CPU jitter |
| Si5351C | Silicon Labs programmable clock generator (I2C); makes the AUX OUT frequency from the OCXO reference |
| OCXO | Oven-Controlled Crystal Oscillator: a crystal kept at constant temperature, the source of the 10 MHz |
| EFC | Electronic Frequency Control: the analog voltage input that fine-tunes the OCXO's frequency |
| DAC | Digital-to-Analog Converter: turns the MCU's number into the EFC voltage |
| SHM | Shared Memory: one of chrony's reference-clock interfaces, where the host helper hands over the timestamps |
| chrony | The time-sync daemon on Linux/macOS that disciplines the computer's clock (an NTP implementation) |
| NTP | Network Time Protocol |
Key hardware decisions so far:
| Item | Decision | Notes |
|---|---|---|
| GNSS module | u-blox LEA-M8S | Fixed — parts already on hand. Footprint and pinout are shared with LEA-M8T. |
| Antenna | Active, external | Antenna supervisor + R_BIAS per u-blox HIM. |
| MCU | RP2350A on a ready-made Raspberry Pi Pico 2 board | Ready-made board keeps HamREF easy to build as a kit. PIO blocks give deterministic 10 MHz counting and 1PPS timestamping without WiFi interrupt jitter; native USB (TinyUSB); UF2 firmware updates. No WiFi in v1. Raspberry Pi Pico 2 (micro-USB) remains a fallback. |
| Oscillator | 5 V OCXO, analog EFC (CTI OSC5A2B02 selected for the prototype) | e.g. Trimble 65256 / IsoTemp 143-141 / CTI OC5SVC25 / Bliley NV47M1008 class part — physical height inside the 22 mm case is still open, see architecture doc. |
| Enclosure | Fischer Elektronik AKG 105.26 (AKG1052680ME) | 105 × 100.3 × 26 mm extruded aluminum, 100 mm eurocard. |
| Display | 0.91" 128x32 mono OLED, I2C | SSD1306-class, 38 × 12 mm PCB (active area 22.4 × 5.6 mm) — fits the 22 mm panel height with margin; 0.96" 128x64 modules do not. |
| Front panel | OLED + 2 multicolor LEDs (GPSDO, NTP) + rotary encoder | EC11-class encoder confirmed to fit the 22 mm panel height. LED color/blink pattern encodes state (firmware TBD). |
| Rear panel | SMA (GNSS antenna), BNC (1PPS OUT), BNC (REF OUT 10 MHz), BNC (AUX OUT, programmable), USB-C (host + 5V power) | All connectors on the back; layout across the 105 mm width still to be confirmed at PCB stage. |
| Power + host link | USB-C | Powers the device (5V); CDC-ACM carries PPS/NMEA to a host-side helper feeding chrony (SHM/PPS refclock), and doubles as the configuration interface alongside the encoder/OLED menu. |
See the architecture doc for the full reasoning, open questions, and the phased project plan.
firmware/hardware/proto-v0.1/ KiCad project (schematic, PCB) for the proto-1 board
hardware/tools/ Python scripts that generate the schematic/PCB
firmware/ RP2350 firmware (Pico SDK) and host simulation
docs/ Architecture notes, hardware plans, imagesFirmware: see firmware/README.md (Pico SDK, CMake, UF2). The disciplining loop can be tried without hardware with the host simulation described there. Hardware: open hardware/proto-v0.1/ in KiCad; the pre-order checklist is in docs/hardware/board-finishing-checklist.md. A bill of materials and bring-up guide will follow once the board is built.
Design decisions are based on:
docs/datasheets/)Not chosen yet (candidates: CERN-OHL-S for hardware, MIT or GPL for firmware, CC BY-SA for docs). Until a license is added, all rights are reserved.
Erik, OH2LAK Others will be too, when I find them and convince them this is a good project :)
| Qty | Value | Footprint | References |
|---|---|---|---|
| 25 | 100nF | C_0402_1005Metric | C10, C11, C13, C15, C16, C17, C19, C20, C24, C25, C26, C27, C28, C30, C31, C32 +9 |
| 8 | 10uF 10V | C_0805_2012Metric | C2, C3, C9, C21, C22, C23, C29, C35 |
| 6 | 4.7k | R_0402_1005Metric | R7, R8, R9, R10, R20, R21 |
| 5 | 100k | R_0402_1005Metric | R1, R2, R3, R4, R6 |
| 3 | 10k | R_0402_1005Metric | R13, R17, R18 |
| 3 | 47 | R_0402_1005Metric | R15, R16, R19 |
| 2 | 100uF 10V | CP_Radial_D6.3mm_P2.50mm | C1, C5 |
| 2 | 10nF | C_0402_1005Metric | C12, C18 |
| 2 | 1uF | C_0603_1608Metric | C6, C7 |
| 2 | 470k | R_0402_1005Metric | R11, R12 |
| 2 | 74AHCT1G125 | SOT-23-5 | U7, U10 |
| 2 | 74LVC1G17 | SOT-23-5 | U4, U6 |
| 2 | BLM18PG221SN1D | L_0603_1608Metric | FB1, FB2 |
| 1 | 1.1A hold | Fuse_1812_4532Metric | F1 |
| 1 | 10 | R_0402_1005Metric | R5 |
| 1 | 25MHz | Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 33 | R_0402_1005Metric | R14 |
| 1 | 330 | R_0402_1005Metric | R22 |
| 1 | 3V3 | TestPoint_Pad_D1.5mm | TP4 |
| 1 | 3V3_GNSS | TestPoint_Pad_D1.5mm | TP3 |
| 1 | 4.7uF | C_0603_1608Metric | C14 |
| 1 | 5V_DAC | TestPoint_Pad_D1.5mm | TP5 |
| 1 | 5V_EXT | PinHeader_1x02_P2.54mm_Vertical | J1 |
| 1 | 5V_MAIN | TestPoint_Pad_D1.5mm | TP1 |
| 1 | 5V_OCXO | TestPoint_Pad_D1.5mm | TP2 |
| 1 | 74LVC1G125 | SOT-23-5 | U8 |
| 1 | AD5693R | MSOP-10_3x3mm_P0.5mm | U5 |
| 1 | AUX_OUT | TestPoint_Pad_D1.5mm | TP12 |
| 1 | BNC 1PPS OUT | BNC_TEConnectivity_1478035_Horizontal | J4 |
| 1 | BNC AUX OUT | BNC_TEConnectivity_1478035_Horizontal | J5 |
| 1 | BNC REF OUT | BNC_TEConnectivity_1478035_Horizontal | J3 |
| 1 | EFC | TestPoint_Pad_D1.5mm | TP10 |
| 1 | GND | TestPoint_Pad_D1.5mm | TP6 |
| 1 | GNSS_RXD | TestPoint_Pad_D1.5mm | TP8 |
| 1 | GNSS_TXD | TestPoint_Pad_D1.5mm | TP7 |
| 1 | GP16_OCXO_FLT | TestPoint_Pad_D1.5mm | TP14 |
| 1 | J ENCODER | PinHeader_1x04_P2.54mm_Vertical | J7 |
| 1 | J LEDS (2x WS2812B) | PinHeader_1x03_P2.54mm_Vertical | J8 |
| 1 | J OLED 0.91in I2C | PinHeader_1x04_P2.54mm_Vertical | J6 |
| 1 | J RESET GNSS (short=reset) | PinHeader_1x02_P2.54mm_Vertical | J9 |
| 1 | J RUN (short=MCU reset) | PinHeader_1x02_P2.54mm_Vertical | J10 |
| 1 | J SPARE GPIO | PinHeader_1x07_P2.54mm_Vertical | J11 |
| 1 | JP1 PWR SEL | PinHeader_1x03_P2.54mm_Vertical | JP1 |
| 1 | JP2 OCXO FORCE-ON | PinHeader_1x02_P2.54mm_Vertical | JP2 |
| 1 | JP3 1PPS SRC (1-2 GNSS, 2-3 MCU) | PinHeader_1x03_P2.54mm_Vertical | JP3 |
| 1 | LEA-M8S-0 | ublox_LEA | U3 |
| 1 | LP5907-3.3 | SOT-23-5 | U2 |
| 1 | NTC 10k | R_0603_1608Metric | RT1 |
| 1 | OCXO_OUT_RAW | TestPoint_Pad_D1.5mm | TP11 |
| 1 | OSC5A2B02 | OCXO_OSC5A2B02_EST | X1 |
| 1 | PPS_GNSS | TestPoint_Pad_D1.5mm | TP9 |
| 1 | PPS_OUT | TestPoint_Pad_D1.5mm | TP13 |
| 1 | RP2350-Plus | RP2350-Plus_Castellated | A1 |
| 1 | SMA ANT | SMA_Amphenol_901-143_Horizontal | J2 |
| 1 | SMBJ5.0A | D_SMB | D1 |
| 1 | SS14 | D_SMA | D2 |
| 1 | Si5351C-B-GM | QFN-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm | U9 |
| 1 | TPS2065C | SOT-23-5 | U1 |
It measures 100 × 80 mm and has 4 copper layers, 1.6 mm thick.
109 parts, built around the 74AHCT1G125SE, 74LVC1G17Z, 74LVC1G125 and LEA-M8S-0. 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.
From the OH2LAK/HamRef repository on GitHub, at the commit this page was made from: the board is hardware/proto-v0.1/hamref_proto_v0_1.kicad_pcb and its schematic hardware/proto-v0.1/clock.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask OH2LAK before reusing the design.

meshsat/meshsat-fieldkit
MeshSat field kit hardware: the V1 kits as built, the V2 carrier PCB set for the Peli 1450 and the compact pocket-sized node (KiCad and OpenSCAD sources, generators, release files, build guides).

XyrusB2010/XYmatics-E64
A 5-axis Klipper mainboard, powered by a Raspberry Pi Compute Module and STM32F407


MarkWestbroek/MusicBrain
A central brain running on teensy or a lighter MCU to process any control signals (MIDI, CV, our own) into the same but adding logic, ADSRs, DCOs, CV matrices etc. to it

xtech/hw-openmower-yardforce
This repository contains the design files for a custom mainboard specifically designed for converting YardForce mowers to OpenMower

ldab/dude-dirty-usb-disconnect
DUDE, Dirty USB Disconnect. ESP32-S3 host powered, managed 2x USB Hub

beattie/stm32f723-USB-demo
A hardware and firmware demonstration platform based on the STM32F723VET6, a Cortex-M7 with an embedded USB HS PHY.

picorubykaigi/adventure-board-pcb
PicoRubyKaigi 2026 の オリジナルRP2350 基板「Adventure Board」の設計データ(KiCad 9)