A u-blox MAX-M10S under a 25 mm ceramic patch, with an LIS3MDL compass, on a 28 x 28 mm board that plugs 1:1 into the Kestrel H7.
The Kestrel GPS is the navigation module of Kestrel. Its top face is unbroken ground for the patch antenna, whose feed pin passes through a plated hole to one 2.5 mm track to the receiver; every part is on the bottom face. Betaflight, INAV and ArduPilot all have drivers for both chips.
| Layers | Size | Footprints (LCSC parts) | Nets | Connections routed | Routed vias | ERC errors / warnings | DRC errors / warnings / unconnected / parity | Parts per board, 10-board build |
|---|---|---|---|---|---|---|---|---|
| 4 | 28 x 28 mm | 14 (12) | 10 | 38 -> 0 open | 6 | 0 / 1 | 0 / 0 / 0 / 0 | $15.31 |
Not fabricated, assembled, powered or flown yet. Every number on this page is measured by KiCad
10.0.6 on the files in this repository (report.json, fab/erc.json,
fab/drc.json) or read from the live JLC/LCSC catalogue (bom_cost.md:
parts only, at a 10-board build's price tier with JLC's Extended-part fee; the bare PCB and assembly are
quoted at order time).
The 1 ERC warning is KiCad's pin-type check on a pin the design ties to a rail on purpose: the LIS3MDL's SA1 tied to Vdd_IO selects I2C address 0x1E.
| The whole drone: spec, build guide, BOM, measured results | HeyPCB/kestrel |
| KiCad 10 project | kicad/ |
| Gerbers, drill, BOM, CPL, STEP, schematic PDF | fab/ |
| Firmware | none to build: the flight controller's firmware drives the MAX-M10S and the LIS3MDL |
| Renders | front, back, hero, Circuit World thumbnail |
| Brief and generator | design/ |
- Receiver: u-blox MAX-M10S: GPS, Galileo, BeiDou and GLONASS at once, with an integrated LNA and SAW filter.
- Antenna: a 25 x 25 mm passive ceramic patch (bought separately) on the top face's ground, its feed pin in a 1.0 mm plated hole.
- Compass: ST LIS3MDL on I2C at 0x1E, in the corner farthest from the receiver.
- Power: XC6206 3.3 V LDO from the port's 5 V.
- Connector: JST-SH 6, 1:1 with the Kestrel H7's GPS port.
- Cold start at every power-up (23-28 s by the data sheet): V_BCKP is left open because JLC stocks no backup cell with a KiCad footprint.
4 layers, 1.6 mm, 1 oz copper; parts on the bottom face only (the top is the antenna's ground). Upload fab/kestrel_gps_gerbers.zip, fab/kestrel_gps_bom.csv
and fab/kestrel_gps_cpl_jlc.csv to JLCPCB: every part has an LCSC number.
Bring-up, one board at a time, is in the hub's BUILD.md.
Designed with the HeyPCB method on KiCad 10.0.6, headless, by the heypcb-kicad pipeline: a written brief composed from reusable circuit blocks, every pin from KiCad's own symbol library, every part bound to an LCSC number from a dated catalogue read, then ERC, a netlist round trip, locked placement, Freerouting 2.4.1, pours and stitching, silkscreen, DRC with schematic parity, DFM and a fab gate, each stage gated by a measurement. design/make_brief.py regenerates the brief (outline, part locks, net
classes) from code.
Part of Kestrel, a 5-inch 6S FPV quad's electronics.
Hardware: CERN-OHL-S v2. KiCad's symbol, footprint and 3D libraries used in the design are CC-BY-SA 4.0 with the KiCad library exception.


