Skip to the content
2 layers47.5 × 21 mmSeeed studio GNSS, the printed circuit board in 3D

Open Source RaceBox mini emulator

Size
47.5 × 21 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
31
Pads
58
Tracks, vias
88, 13
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
12 Jun 2025
Updated
13 Oct 2026

Overview

Seeed studio GNSS is an open-source printed circuit board by anchit92, from the anchit92/Open-Source-RaceBox-mini-Emulator repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 47.5 × 21 mm with 11 parts on 31 nets, routed with 88 tracks and 13 vias.

It is built around the SAM-M10Q-00B and AO3401A. Its parts include 5 resistors, 2 ICs and 1 transistor. It belongs with the radio and wireless boards and the nRF52 and nRF5x boards of this library.

Main components

2

README

README.md

Open Source RaceBox Mini Emulator

Disclaimer: This project is independent and open-source. It is not affiliated with, endorsed by, or officially connected to RaceBox. The name “RaceBox Mini” is used only to describe compatibility.

Overview

This project provides firmware for an ESP32-based device that acts as a high-performance GPS/IMU Bluetooth Low Energy (BLE) broadcaster. It integrates a U-blox GNSS module for precise position, velocity, and timing data at 25Hz, along with an MPU6050 accelerometer and gyroscope for motion sensing.

The device is designed to be housed in a custom 3D-printed enclosure, with design files included in this repository.


[!TIP] Other Hardware Options
Check Out The Mods Folder For Other Hardware Options. For new builds, check out the PCB version.


Features

  • High-Resolution GPS Data: Achieves 25Hz update rate using a U-blox GNSS module.
  • Multi-Constellation Support: Leverages GPS, Galileo, GLONASS, and BeiDou for enhanced accuracy and reliability.
  • Integrated IMU: Captures 3-axis accelerometer (±8g) and 3-axis gyroscope (±500 deg/s) data from the MPU6050.
  • Real-time BLE Streaming: Transmits a custom 88-byte data packet containing comprehensive GNSS and IMU information over BLE.
  • Automatic Configuration: Robust GPS initialization.
  • Custom RaceBox Protocol: Data is encapsulated in a UBX-like custom protocol for efficient transmission.
  • 3D Printable Enclosure: Includes design files for a compact and protective case.

Bill of Materials (BOM)

To build this project, you'll need the following components:

  • ESP32 Development Board: (https://a.co/d/fTThpTl)

  • U-blox GNSS Module:

    Any M10 based U-blox modules should work, the output rate may vary but you should be able to get 25hz with just GPS enabled. But YMMV.

  • MPU6050 Accelerometer/Gyroscope Module: (https://a.co/d/dCMwffg or similar)

  • 24AWG Hook-up Wire/Jumper Wires or just use the wiring that comes with GNSS module, its perfect for this application.

  • M3x6 Screws (2)

  • Soldering Iron & Solder

  • USB-C or Micro-USB Cable (Depending on your ESP32 board, But USB-C all the things)

  • 3D Printer & ABS Filament

The electronics should cost under 40$.


Assembly Instructions

Wire the Components, load the firmware and test them outdoors.

ESP32 <--> U-blox GNSS Module:

  • ESP32 GPIO 16 (RX2) <--> GNSS TX
  • ESP32 GPIO 17 (TX2) <--> GNSS RX
  • ESP32 5V or 3.3V <--> GNSS VCC (check voltage requirements)
  • ESP32 GND <--> GNSS GND

ESP32 <--> MPU6050:

  • ESP32 GPIO 21 (SDA) <--> MPU6050 SDA
  • ESP32 GPIO 22 (SCL) <--> MPU6050 SCL
  • ESP32 5V or 3.3V <--> MPU6050 VCC (check voltage requirements)
  • ESP32 GND <--> MPU6050 GND

Prepare the 3D Printed Case

  • You shouldn't need any post processing of the printed parts but make sure the buttons slide smoothly in the holes in the lid

image info

Enclose the Electronics

  • Mount the MPU6050 module using M3 screws image info
  • Place the ESP32 in the slot
  • Route cables neatly image info
  • Close the case carefully, it should click together. Make sure none of the wires are pinched or in the way of the buttons alt text alt text

Firmware Setup and Upload

1. Install Arduino IDE

Download from the official Arduino website.

2. Install ESP32 Board Support

3. Install Libraries:

  • Go to Sketch > Include Library > Manage Libraries... and install the following:
    • Adafruit MPU6050
    • Adafruit Unified Sensor
    • SparkFun u-blox GNSS Arduino Library (ensure it's version 2)

4. Open the Sketch:

  • Open the esp32_racebox_mini_emulator.ino in the Arduino IDE.
    • Configure Board Settings:
    • Go to Tools > Board and select your specific ESP32 board (e.g., "ESP32 Dev Module").
    • Ensure the correct Upload Speed and Port are selected.

5. Configure Firmware

  • Update the GNSS constellations to use(lines 26-31).

    • For the SAM-M10Q module, I recommend using GPS and one local one, Galilieo should work great in most places. Selecting too many constellations can cause the update frequency to drop from 25Hz.
    • For the MG-902 module, you can select up to 4 constellations but it doesnt really make it more accurate than the SAM-M10Q module, but it doesnt appear to drop its frequency either, so might as well.

    https://app.qzss.go.jp/GNSSView/gnssview.html This could help you pick which constellations to pick.

  • OPTIONAL – You may update the 10-digit number in the deviceName on line 33 to personalize your device.

    • ID Limit: If you intend to use this with the RaceBox App, The number must be less than 4000000000. The RaceBox app will not connect to devices with an ID of 4000000000 or higher.

    • Prefix Requirement: Make sure to keep the "RaceBox Mini " prefix unchanged—only change the numbers.

      ✅ Correct: String deviceName = "RaceBox Mini 3999999999";

      ❌ Incorrect (Prefix changed): String deviceName = "MY GPS 6942069420";

      ❌ Incorrect (Number too high): String deviceName = "RaceBox Mini 4000000000";

6. Upload the Firmware

  • Click the Upload button (the right arrow icon) in the Arduino IDE to compile and upload the code to your ESP32.

    • If upload fails, try this sequence while the output shows "Connecting....":

      1. Hold the BOOT button
      2. Press and release the EN button
      3. Then release the BOOT button
  • Open the Serial Monitor to verify startup. Initialization is complete when you see:

    BLE Packet Rate: 0.00 Hz | GNSS Update Rate: 25.00 Hz

    printed every 5 seconds.

3D Printed Enclosure

The repository includes *.3mf files for the custom 3D-printed enclosure designed specifically for the components in the BOM.

  • 1x Base file.(either the GoPro mount version or the basic one to use with velcro)
  • 1x Lid depending on the the type of GPS module you have.
  • 2x Buttons (If you print a lid that supports buttons)
  • 1x axdl_mount

Theres a Accelerometer blank included if you have a different accelerometer to create your own mount.

Recommended Print Settings:

  • Material: ABS (for durability and heat resistance, especially if used in a car)
  • Layer Height: 0.2mm
  • Infill: 15-20% (for sufficient strength)
  • Nozzle Temperature: (Refer to your filament manufacturer's recommendations)
  • Bed Temperature: (Refer to your filament manufacturer's recommendations)

Usage

Once the firmware is uploaded and the device is powered on:

  1. The ESP32 will start advertising a BLE service named "RaceBox Mini 0123456789"(the devicename you customized before uploading the firmware).
  2. Use a compatible BLE client application to connect to the device.
    • Tested compatible apps, theoretically anything that supports a racebox mini should work.
      • Solostorm (Android)
      • RaceChrono (Android)
      • RaceChrono Pro (Android/iOS)
      • NMEAconnect (iOS)
      • AutoX DL(iOS)
      • Racebox App (Android/iOS)

Contribution

Feel free to open issues or submit pull requests if you have suggestions, improvements, or bug fixes.

Parts

11
QtyValueFootprintReferences
3470Resistor_SMD:R_0603_1608MetricR3, R4, R5
1100Resistor_SMD:R_0603_1608MetricR1
1100kResistor_SMD:R_0603_1608MetricR2
1AO3401APackage_TO_SOT_SMD:SOT-23Q1
1LOGOLOGOG***
1MountingHole_PadMountingHole:MountingHole_3.2mm_M3_DIN965_PadH1
1SAM-M10Q-00BSAM-M10Q-00B:XCVR_SAM-M10Q-00BU1
1SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mmJP1
1XIAO-nRF52840-SMDseeed_studio:XIAO-nRF52840-SMDU2

Similar boards

  • 6 layers100 × 60 mmAether, the printed circuit board in 3D

    Aether

    nasheed-x/aether

    Aether is a versatile flight computer for testing flight hardware and software, focusing on sensor fusion to monitor rocket states and interface with on-board systems.

    180 parts10
  • 4 layers45 × 45 mmFalcon fc, the printed circuit board in 3D

    Falcon fc

    yedidiaSch/FalconDrone

    [IN PROGRESS] High-performance flight controller for quadcopters, providing real-time stabilization and attitude control using FreeRTOS and C++ on STM32

    60 partsMIT
  • 4 layers150 × 95 mmSkysweep32 rev c, the printed circuit board in 3D

    Skysweep32 rev c

    bobberdolle1/SkySweep32

    Open-source passive multi-band RF monitoring system | 855–925 MHz, 2.4 GHz, 5.8 GHz | Rev C first prototype

    103 parts33GPL-3.0
  • 2 layers79 × 30 mmLIA, the printed circuit board in 3D

    LIA

    JGAguado/LIA

    Low-power pet tracking platform built around Meshtastic and LoRa mesh networking

    81 parts29
  • 4 layers70.1 × 50.9 mmFlight computer, the printed circuit board in 3D

    Flight computer

    Terrapin-Rocket-Team/SRAD-Avionics

    Code and PCBs for the avionics subteam for the SRAD flight computer and side projects

    121 parts17
  • 2 layers30 × 60 mmUpLink, the printed circuit board in 3D

    UpLink

    radeeyate/UpLink

    HAB Payload

    37 parts4
  • 4 layers108 × 74 mmSTM32 Drone, the printed circuit board in 3D

    STM32 Drone

    bassammorsy/stm32-flight-controller

    Custom 4-layer STM32F405RGTx quadcopter flight controller PCB designed in KiCad. Betaflight compatible, 4S–6S LiPo input, SMT assembled by JLCPCB.

    104 parts3MIT
  • 2 layers86 × 143 mmMainBoard 2023, the printed circuit board in 3D

    MainBoard 2023

    takuhoTech/LagopusSystem-2023

    Avionics for Human-Powered Aircraft, Including Bike Power Meter project.

    128 parts3MIT

Questions

How big is the Seeed studio GNSS PCB?

It measures 47.5 × 21 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Seeed studio GNSS use?

11 parts, built around the SAM-M10Q-00B and AO3401A. 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 Seeed studio GNSS KiCad files?

From the anchit92/Open-Source-RaceBox-mini-Emulator repository on GitHub, at the commit this page was made from: the board is Mods/anchit92/PCB_version/PCB_files/seeed_studio_GNSS/seeed_studio_GNSS.kicad_pcb and its schematic Mods/anchit92/PCB_version/PCB_files/seeed_studio_GNSS/seeed_studio_GNSS.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Seeed studio GNSS design in my own project?

Its repository publishes it under the GPL-3.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).