Skip to the content
4 layers60 × 120 mmTheoros, the printed circuit board in 3D

Theoros is a USB-C GPS logger and LoRa tracker built on the ESP32-S3. It logs 1 Hz u-blox M10 fixes to microSD, shows status on an OLED and sends AES-128-CCM encrypted position over 868 MHz LoRa. It's a 4-layer KiCad 10 board with fab outputs and tracker/receiver firmware

Size
60 × 120 mm
Copper layers
4
Thickness
1.6 mm
Parts
88
Nets
78
Pads
451
Tracks, vias
649, 241
Pours
7
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
5 Oct 2026
Updated
10 Oct 2026

Overview

Theoros is an open-source printed circuit board by Majorwhiskey, from the Majorwhiskey/gps-lora repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 4-layer board of 60 × 120 mm with 88 parts on 78 nets, routed with 649 tracks and 241 vias.

It is built around the ESP32-S3-WROOM-1-N8, SAM-M10Q-00B and DM3AT-SF-PEJM5, with the AP7361C-33E, RFM95W-868S2 and TLV75801PDBVR-MS among its other parts. Its parts include 29 capacitors, 25 resistors, 7 ICs, 5 connectors and 4 diodes. It belongs with the radio and wireless boards and the ESP32 boards of this library.

Main components

12

README

README.md

Theoros

Theoros (Greek θεωρός): an official observer and envoy, sent to watch and report back.

USB-powered GPS logger with LoRa telemetry, built around the ESP32-S3.

Logs GPS fixes to a microSD card at 1 Hz, shows status on an OLED, and sends position over 866 MHz LoRa. WiFi provides NTP time, log download and OTA updates. Designed in KiCad as a 4-layer, fully machine-assembled board (Lion Circuits PCBA, Bangalore, single-sided).

Status: V1.0 design complete (schematic, routed PCB, fab outputs and firmware). Not yet fabricated or tested. Do not order boards from this repository until a tagged release exists.

Theoros V1.0, top side Theoros V1.0, bottom side with the owl

Features

  • ESP32-S3-WROOM-1-N8 with native USB (no USB-UART bridge)
  • USB-C power and data, 5 V 1 A
  • u-blox SAM-M10Q GNSS module with integrated antenna, UART and PPS
  • microSD logging on a dedicated SPI bus
  • RFM95W (SX1276) 868 MHz-band LoRa radio on a second SPI bus, u.FL antenna
  • Telemetry and SD logs encrypted and authenticated (AES-128-CCM, per-tracker keys); separate tracker and receiver firmware
  • Bare SSD1306 128x64 OLED panel on I2C, FPC connector
  • Low-dropout 3.3 V linear regulator (AP7361C)
  • Tag-Connect footprint for UART0 console, EN and GPIO0
  • 4-layer stackup with solid ground plane; RF and USB traces checked at about 48 and 90 ohm on Lion's standard stackup

Block diagram

mermaid
flowchart LR
    USB[USB-C] -->|VBUS| FUSE[Polyfuse 750 mA] --> LDO[AP7361C 3.3 V]
    USB <-->|D+ / D-| ESD[USBLC6-2] <--> MCU
    LDO -->|3V3| MCU[ESP32-S3-WROOM-1]
    MCU <-->|UART1| GPS[SAM-M10Q GNSS]
    MCU <-->|SPI2| SD[microSD]
    MCU <-->|SPI3| LORA[RFM95W 868] --> ANT[u.FL to SMA]
    MCU <-->|I2C| OLED[SSD1306 panel]

Repository layout

PathContents
hardware/KiCad 10 project (schematic, PCB)
hardware/lib/Project-local symbols, footprints and 3D models
docs/Design and security specifications (Markdown and PDF), images
firmware/ESP32-S3 firmware (Arduino, untested on hardware)
production/Fabrication outputs (Gerbers, drill, BOM, CPL) per release

Documentation

  • PCB design specification: pin assignment, power budget, layout rules and design decisions.
  • Firmware (PDF): tracker and receiver firmware, build, console, WiFi service mode, OTA, bring-up.
  • Security specification (PDF): threat model, AES-128-CCM design, key management, LoRa packet and log formats, provisioning, test vectors.

PDFs are generated from the Markdown with python3 docs/build_pdf.py.

Opening the design

Requires KiCad 10.0 or later. Open hardware/theoros.kicad_pro. All non-standard symbols, footprints and 3D models are in hardware/lib/, so no external libraries are needed.

Regulatory note

The LoRa radio is configured for 865–867 MHz, India's delicensed band. Users elsewhere must set the frequency, power and duty cycle allowed in their region.

License

Hardware design files are licensed under the CERN Open Hardware Licence Version 2 – Permissive (CERN-OHL-P-2.0). Firmware (firmware/) is licensed under the Apache License 2.0.

Parts

88
QtyValueFootprintReferences
71uFCapacitor_SMD:C_0402_1005MetricC304, C504, C505, C506, C507, C510, C511
6100nFCapacitor_SMD:C_0402_1005MetricC204, C206, C303, C402, C406, C503
510kResistor_SMD:R_0402_1005MetricR205, R301, R302, R505, R510
410uFCapacitor_SMD:C_0805_2012MetricC302, C401, C405, C502
447kResistor_SMD:R_0402_1005MetricR501, R502, R503, R504
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_Pad_ViaH1, H2, H3, H4
4TestPointTestPoint:TestPoint_Pad_D1.0mmTP201, TP202, TP203, TP204
3100uFCapacitor_SMD:C_1210_3225MetricC301, C404, C501
3FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3
20RResistor_SMD:R_0402_1005MetricR304, R305
2100RResistor_SMD:R_0402_1005MetricR307, R308
21kResistor_SMD:R_0402_1005MetricR303, R401
222uFCapacitor_SMD:C_0805_2012MetricC203, C205
24.7kResistor_SMD:R_0402_1005MetricR506, R507
25.1kResistor_SMD:R_0402_1005MetricR201, R202
2DNPCapacitor_SMD:C_0402_1005MetricC305, C306
10.75A PTCFuse:Fuse_1206_3216MetricF201
10RResistor_SMD:R_0805_2012MetricR204
111mF 3.3Vtheoros:Seiko_CPH3225AC403
115kResistor_SMD:R_0402_1005MetricR206
11MResistor_SMD:R_0402_1005MetricR203
12.2uFCapacitor_SMD:C_0603_1608MetricC508
12200uFCapacitor_SMD:CP_Elec_10x10.5C202
1390kResistor_SMD:R_0402_1005MetricR508
14.7nFCapacitor_SMD:C_0402_1005MetricC201
14.7uFCapacitor_SMD:C_0603_1608MetricC509
1499RResistor_SMD:R_0402_1005MetricR306
159kResistor_SMD:R_0402_1005MetricR509
1AP7361C-33EPackage_TO_SOT_SMD:SOT-223-3_TabPin2U202
1BAT54Diode_SMD:D_SOD-323D401
1BOOTButton_Switch_SMD:SW_SPST_PTS810SW302
1DM3AT-SF-PEJM5Connector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5J501
1EJECTButton_Switch_SMD:SW_SPST_PTS810SW303
1ER-OLED0.96-1.1WOLED_ER-OLED0.96-1.1WDS501
1ESP32-S3-WROOM-1-N8theoros:ESP32-S3-WROOM-1U301
1FH12-30S-0.5SH(55)Connector_FFC-FPC:Hirose_FH12-30S-0.5SH_1x30-1MP_P0.50mm_HorizontalJ502
1GreenLED_SMD:LED_0603_1608MetricD301
1MCP120T-300I/TTPackage_TO_SOT_SMD:SOT-23U302
1RESETButton_Switch_SMD:SW_SPST_PTS810SW301
1RFM95W-868S2RF_Module:HOPERF_RFM9XW_SMDU402
1SAFEBOOTTestPoint:TestPoint_Pad_D1.0mmTP401
1SAM-M10QRF_GPS:ublox_SAM-M8QU401
1SMF5.0ADiode_SMD:D_SOD-123FD201
1SchottkyDiode_SMD:D_SMAD202
1TC2030-NLConnector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ301
1TLV75801PDBVPackage_TO_SOT_SMD:SOT-23-5U501
1TYPE-C-31-M-12Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J201
1U.FLConnector_Coaxial:U.FL_Hirose_U.FL-R-SMT-1_VerticalJ401
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U201
1VBATTestPoint:TestPoint_Pad_D1.0mmTP501

Similar boards

  • 4 layers96 × 70 mmTradewind, the printed circuit board in 3D

    Tradewind

    binaryBeachLLC/tradewind

    Tradewind TW-1: solar LoRaWAN field sensor. KiCad 9 board, CadQuery enclosure, RUI3 firmware, simulations, test data, report and datasheet.

    85 parts
  • 4 layers107 × 17 mmE0001 fader driver, the printed circuit board in 3D

    E0001 fader driver

    Karpuls/E0001-fader-driver-board

    Motorized fader driver board (ALPS RSA0N11M9A0J clone): STM32C051, DRV8210P, touch sense, I2C

    53 parts
  • 4 layers46 × 86.4 mmOpenCycle, the printed circuit board in 3D

    OpenCycle

    Vishvak365/OpenCycle

    Everything is generated from design.py — do not hand-edit the board and then regenerate, you will lose the edit. If you do route by hand in KiCad, stop using the pipeline for that board and say so in docs/DECISIONS.md.

    79 parts
  • 12 layers86.4 × 54.6 mmBeaglebone ai rev a2, the printed circuit board in 3D

    Beaglebone ai rev a2

    embeddedos-org/eCAD-Hardware-Products

    Hardware designs + EE docs + Board datasheets of Multiple products

    766 parts8MIT
  • 4 layers220 × 120 mmCandidate filled profile, the printed circuit board in 3D

    Candidate filled profile

    misko/prompt2device

    The separate vNext PCB skill and orchestrator package is available alongside the reference workflow below; existing projects keep their accepted toolchain until an explicit migration.

    569 parts3MIT
  • 2 layers30 × 30 mmReCamera Gimbal, the printed circuit board in 3D

    ReCamera Gimbal

    Seeed-Studio/OSHW-reCamera-Series

    reCamera is a series of open-source AI cameras.

    123 parts495Apache-2.0
  • 2 layers48.2 × 20.3 mmPmod 100base tx, the printed circuit board in 3D

    Pmod 100base tx

    ciniml/fpga_samples

    FPGA samples

    48 parts31BSL-1.0

Questions

How big is the Theoros PCB?

It measures 60 × 120 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Theoros use?

88 parts, built around the ESP32-S3-WROOM-1-N8, SAM-M10Q-00B, DM3AT-SF-PEJM5 and AP7361C-33E. 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 Theoros KiCad files?

From the Majorwhiskey/gps-lora repository on GitHub, at the commit this page was made from: the board is hardware/theoros.kicad_pcb and its schematic hardware/mcu.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Theoros design in my own project?

Its repository publishes it under the CERN-OHL-P-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).