Skip to the content
2 layers50 × 50 mmFonek, the printed circuit board in 3D

Track your own things through Apple's Find My network and see them on your own map, with hardware you can build yourself.

Size
50 × 50 mm
Copper layers
2
Thickness
1 mm
Parts
36
Nets
19
Pads
129
Tracks, vias
276, 18
Pours
3
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
6 Oct 2026
Updated
21 Oct 2026

Overview

Fonek is an open-source printed circuit board by lodjim, from the lodjim/fonek repository on GitHub. It is a 2-layer board of 50 × 50 mm with 36 parts on 19 nets, routed with 276 tracks and 18 vias.

Its parts include 11 resistors, 6 capacitors, 3 ICs, 3 diodes and 1 transistor. It belongs with the ESP32 boards of this library.

README

README.md

fonek

Track your own things through Apple's Find My network and see them on your own map, with hardware you can build yourself.

fonek is three parts that work together:

  • A tag (fonek/): an open KiCad design for a rechargeable ESP32 BLE tag with USB-C charging, plus the firmware instructions to turn any ESP32 dev board into a beacon.
  • A backend (backend/): a FastAPI service that fetches the encrypted location reports from Apple with FindMy.py, decrypts them with the tag's private key and stores them in SQLite. No Mac required.
  • A web app (web/): a Next.js + Leaflet dashboard showing each tag's latest position and history.

Render of the fonek rev A board

Status: prototype. The software runs today with an ESP32 dev board. The rev A PCB passes KiCad ERC/DRC but has not been built and tested yet; see its release checks. fonek is not an Apple-certified Find My accessory and relies on an unofficial Apple API.

How it works

mermaid
flowchart LR
  TAG["Tag<br>ESP32 + OpenHaystack firmware"] -- "BLE advertisement<br>(public key)" --> PHONE[Nearby iPhones]
  PHONE -- "encrypted location report" --> APPLE[(Apple Find My)]
  APPLE -- "reports for our keys" --> BACKEND["backend<br>FastAPI + FindMy.py"]
  BACKEND --> DB[(data/fonek.db)]
  WEB["web<br>Next.js + Leaflet"] -- "/api" --> BACKEND

Each tag has a key pair. The tag broadcasts the public key over Bluetooth. Any iPhone that passes by encrypts its own location with that key and uploads it to Apple. Only the holder of the private key can decrypt the report, and that key never leaves your backend. docs/architecture.md goes into the details.

Quick start

You need Docker, an ESP32 with Bluetooth LE, and an Apple ID with two-factor authentication. Use a dedicated Apple ID, not your personal one (see Things to know).

bash
git clone https://github.com/lodjim/fonek.git && cd fonek
docker compose up -d --build
docker compose run --rm backend python -m app.cli login   # Apple ID + 2FA, once

Then:

  1. Open http://localhost:3000 and click Add device. fonek generates a key pair and shows the advertisement key.
  2. Flash that key onto the ESP32, following firmware/README.md.
  3. Carry the tag near iPhones. Reports are fetched every 15 minutes, or on demand with Refresh.

docs/setup.md covers configuration, backups, updating and troubleshooting.

Things to know

  • Use a dedicated Apple ID with 2FA enabled. fonek talks to a private Apple API; an account could be rate-limited or locked. Keep the poll interval conservative.
  • Locations are not live. They arrive only when an iPhone passes near the tag, and typically lag by minutes to hours.
  • data/ holds secrets. It contains every tag's private key and the Apple session, unencrypted. Back it up and keep it private.
  • There is no login on the web app. Keep it on your LAN and do not expose ports 3000 or 8000 to the internet.
  • The tag's key is static. Anyone nearby can recognise the same tag over time.
  • Only track things you own. Tracking people without their consent is illegal in many places and is not what this project is for.

Repository layout

PathWhat it is
backend/FastAPI service, poller and CLI (Python 3.11+)
web/Next.js dashboard
firmware/How to build and flash the OpenHaystack ESP32 firmware
fonek/Rev A tag hardware: KiCad project, Gerbers, BOM, design docs
docs/Architecture, setup guide and API reference
docker-compose.ymlRuns backend and web together
data/Created at runtime: database, Apple session (git-ignored)

Documentation

Development

bash
# backend
cd backend && python3 -m venv .venv && .venv/bin/pip install -e '.[dev]'
FONEK_DATA_DIR=../data .venv/bin/uvicorn app.main:app --reload
FONEK_DATA_DIR=../data .venv/bin/python -m app.cli seed   # demo device with a fake track
.venv/bin/pytest

# web (proxies /api to http://localhost:8000)
cd web && npm install && npm run dev

More in CONTRIBUTING.md.

Acknowledgements

fonek stands on other people's work:

  • OpenHaystack by the Secure Mobile Networking Lab at TU Darmstadt, which reverse-engineered the Find My protocol and provides the ESP32 firmware the tag runs.
  • FindMy.py, which handles the Apple login and report decryption.
  • Map tiles and data from OpenStreetMap contributors.

fonek is an independent project. It is not affiliated with or endorsed by Apple. Find My and AirTag are trademarks of Apple Inc.

Parts

36
QtyValueFootprintReferences
1100kFonekRevA:R7R7
1100kFonekRevA:R5R5
1100nF X7R 6.3VFonekRevA:C5C5
110kFonekRevA:R8R8
110kFonekRevA:R9R9
110uF X5R 6.3VFonekRevA:C4C4
11MFonekRevA:R6R6
11S 400mAh LiPoFonekRevA:BAT1BAT1
11S LiPo charger with TSFonekRevA:U2U2
11uF X7R 10VFonekRevA:C1C1
11uF X7R 10VFonekRevA:C3C3
11uF X7R 6.3VFonekRevA:C6C6
12.2kFonekRevA:R4R4
1237k 1%FonekRevA:R11R11
13.3 V 500 mA LDOFonekRevA:U3U3
13V3FonekRevA:TP1TP1
14.7uF X5R 10VFonekRevA:C2C2
15 V bidirectional ESD diodeFonekRevA:D3D3
15.1k 1%FonekRevA:R1R1
15.1k 1%FonekRevA:R2R2
1500 mA hold PTCFonekRevA:F1F1
16.8kFonekRevA:R10R10
16.8k 1%FonekRevA:R3R3
1BOOTFonekRevA:TP6TP6
1ESP32 BLE module, 4 MB flashFonekRevA:U1U1
1ESP_ENFonekRevA:TP5TP5
1GNDFonekRevA:TP2TP2
1N-MOSFETFonekRevA:Q1Q1
1SPDT slide, one throw unusedFonekRevA:SW1SW1
1UART_RXFonekRevA:TP4TP4
1UART_TXFonekRevA:TP3TP3
1USB-C power-onlyFonekRevA:J1J1
1VBATFonekRevA:TP7TP7
1VBUSFonekRevA:TP8TP8
1green LEDFonekRevA:D1D1
1red LEDFonekRevA:D2D2

Similar boards

  • 2 layers65 × 30 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    36 parts1kGPL-3.0
  • 2 layers55 × 70 mmArduino v1, the printed circuit board in 3D

    Arduino v1

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    36 parts915
  • 2 layers50.4 × 24.8 mmLEDboardRev3, the printed circuit board in 3D

    LEDboardRev3

    Architeuthis-Flux/Jumperless

    A jumperless breadboard

    36 parts914
  • 2 layers45.7 × 31.8 mmLEDx16 board, the printed circuit board in 3D

    LEDx16 board

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    36 parts803MIT
  • 2 layers32 × 24 mmEsp onelayer3, the printed circuit board in 3D

    Esp onelayer3

    cnlohr/colorchord

    Chromatic Sound to Light Conversion System

    36 parts712
  • 2 layers69 × 53.8 mmTUSS4470 shield, the printed circuit board in 3D

    TUSS4470 shield

    Neumi/open_echo

    Open Source echo sounder / depth sounder / SONAR for bathymetry and research. Arduino based and compatible.

    36 parts530
  • 2 layers99.1 × 53.3 mmABSIS Mega, the printed circuit board in 3D

    ABSIS Mega

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    36 parts431
  • 2 layers16.1 × 119 mmConnectorL, the printed circuit board in 3D

    ConnectorL

    thpoll83/PolyKybd

    PolyKybd

    36 parts411CERN-OHL-W-2.0

Questions

How big is the Fonek PCB?

It measures 50 × 50 mm and has 2 copper layers, 1 mm thick.

What parts does the Fonek use?

36 parts. 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 Fonek KiCad files?

From the lodjim/fonek repository on GitHub, at the commit this page was made from: the board is fonek/kicad/fonek.kicad_pcb and its schematic fonek/kicad/fonek.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Fonek design in my own project?

Its repository states no licence, so its author keeps all rights: ask lodjim before reusing the design.