Skip to the content
2 layers112 × 102 mmOdytsseySwitch, the printed circuit board in 3D

Five-key wireless macropad: ESP32-S3, SSD1306 OLED, thumbstick, MX hotswap

Size
112 × 102 mm
Copper layers
2
Thickness
1.6 mm
Parts
35
Nets
49
Pads
202
Tracks, vias
346, 206
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
27 Aug 2026
Updated
27 Aug 2026

Overview

OdytsseySwitch is an open-source printed circuit board by KaztoRay, from the KaztoRay/OdytsseySwitch repository on GitHub. It is a 2-layer board of 112 × 102 mm with 35 parts on 49 nets, routed with 346 tracks and 206 vias.

It is built around the ESP32-S3-WROOM-1-N8, AP2112K-3.3 and USBLC6-2SC6. Its parts include 9 capacitors, 9 resistors, 7 switches, 6 connectors and 3 ICs. It belongs with the keyboards and input and lEDs and displays boards and the ESP32 boards of this library.

Main components

3

README

README.md

Odytssey Switch

Five-key wireless macropad built around an ESP32-S3, with a 0.96" OLED and a thumbstick. Reaches a host over USB HID, BLE HID, or Wi-Fi, and can drive other gear through its I2C, UART and addressable-LED outputs.

Hardware

BlockPart
MCUESP32-S3-WROOM-1 — BLE 5, Wi-Fi 4, native USB, pre-certified module
Keys5 x Kailh MX hotswap sockets on GPIO 4, 5, 6, 7, 15
Stick2-axis thumbstick, X on IO1 and Y on IO2 (ADC1 only), press on IO16
DisplaySSD1306 0.96" 128x64 over I2C0 (SDA IO8, SCL IO9)
OutputsQwiic I2C port, WS2812 strip header, UART0 + 4 spare GPIO
PowerUSB-C bus powered, AP2112K-3.3 LDO, USBLC6-2SC6 ESD array

Both analogue axes sit on ADC1 because ADC2 stops working once the radio is transmitting. The thumbstick is fed 3V3 rather than 5V so its wiper range matches the ADC full scale.

Board

  • 112 x 102 mm, 2 layer FR-4, 1.6 mm, 3 mm corner radius
  • Front carries the keys and the two module sockets; every other part is on the back, so the panel reflows from one side only
  • No through-hole parts — the module connectors are SMD sockets, so assembly needs no soldering at all
  • Routed on both layers, 345 tracks and 207 vias, ground pours stitched together and bonded solid to pads rather than through thermal spokes
  • The ESP32 module's antenna overhangs the left edge; keep metal away from it
  • Ground pours on both layers, stitched with vias

Assembly

Order with SMT assembly. Nothing needs soldering afterwards:

  1. Plug the OLED module into J2
  2. Plug the thumbstick module into J7
  3. Drop five MX switches into the hotswap sockets
  4. Fit keycaps

Buy modules that already have their pin headers soldered on.

Fabrication

fab/ holds Gerbers, Excellon drill files, the drill map, the .gbrjob, pick-and-place data and the BOM.

SettingValue
Base materialFR-4, TG130-140
Layers2
Thickness1.6 mm
Panelsingle PCB
Surface finishENIG
Min hole0.2 mm

The 1.6 mm thickness is not optional: MX hotswap sockets are cut for it.

Layout

Third-party footprints come from kiswitch; only Switch_Keyboard_Hotswap_Kailh.pretty is vendored here, under libs/. fp-lib-table points at it with ${KIPRJMOD}.

Status

Complete and ready to order.

CheckResult
ERC0 errors
DRC0 errors
Unconnected0
Schematic parity0 issues
Netlist vs. design intentchecked pin by pin, no mismatch

Two DRC warnings remain and are both expected: the ESP32 module's silkscreen crosses the left board edge by 0.15 mm, which is the deliberate antenna overhang, and sixteen footprints differ from their library copies, which has no bearing on fabrication.

The autorouter did not length-match the USB differential pair. At USB 2.0 Full Speed that is not a problem in practice, but tidy those two traces by hand if you want it right.

Parts

35
QtyValueFootprintReferences
5MX_HOTSWAPSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW1, SW2, SW3, SW4, SW5
3100nFCapacitor_SMD:C_0603_1608MetricC6, C8, C9
310kResistor_SMD:R_0603_1608MetricR1, R4, R9
31uFCapacitor_SMD:C_0603_1608MetricC2, C4, C7
222uFCapacitor_SMD:C_1206_3216MetricC3, C5
24.7kResistor_SMD:R_0603_1608MetricR5, R6
25.1kResistor_SMD:R_0603_1608MetricR2, R3
110uFCapacitor_SMD:C_1206_3216MetricC1
11kResistor_SMD:R_0603_1608MetricR8
1330Resistor_SMD:R_0603_1608MetricR7
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U3
1BOOTButton_Switch_SMD:SW_SPST_TL3342SW6
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1U1
1EXPANSIONConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical_SMD_Pin1LeftJ6
1JOYSTICKConnector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical_SMD_Pin1LeftJ7
1LEDLED_SMD:LED_0603_1608MetricD1
1OLED_I2CConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical_SMD_Pin1LeftJ2
1QWIIC_I2CConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ4
1RESETButton_Switch_SMD:SW_SPST_TL3342SW7
1RGB_OUTConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical_SMD_Pin1LeftJ5
1USB-CConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U4

Similar boards

  • 4 layers62.5 × 44.5 mmEsp32s3-plant monitor, the printed circuit board in 3D

    Esp32s3-plant monitor

    MuffinByteLabs/esp32s3-plant-monitor

    Portfolio PCB: ESP32-S3 Wi-Fi plant monitor. 4-layer KiCad 10 design, fabricated and assembled at JLCPCB — schematic, reviews and the frozen manufacturing package all readable in-browser.

    70 parts3CERN-OHL-P-2.0
  • 4 layers89.5 × 96.8 mmMicroPad, the printed circuit board in 3D

    MicroPad

    JonasLindinger/MicroPad

    Battery-efficient ESP32-S3 macro pad with a 2.9" e-paper display for controlling Home Assistant. Pages and per-key actions are configured in a web tool and pushed over MQTT — no reflashing for menu or key changes.

    72 parts2MIT
  • 2 layers91.5 × 100 mmTrailmap, the printed circuit board in 3D

    Trailmap

    katetriestocode/trailmap

    this is the working version! (disclaimer: no antenna as it has not delivered yet, so manual gps coords insertion for now!)

    57 parts2
  • 4 layers63 × 80 mmCopperpilot retro handheld, the printed circuit board in 3D

    Copperpilot retro handheld

    CopperPilot/retro-handheld-copperpilot

    An ESP32-S3 game console on one 63 × 80 mm board. 2.4" TFT, 14 buttons, USB-C charging that keeps you playing, and a snap-fit case to print.

    74 parts1
  • 4 layers74 × 56 mmAtmos, the printed circuit board in 3D

    Atmos

    HearnChristian/atmos-sense

    ESP32-based atmospheric sensing node: BME280 environmental sensing and AS3935 lightning detection over I2C, designed for drone integration. KiCad hardware plus firmware.

    73 parts1MIT
  • 4 layers70.9 × 75 mmFlagshep Audio Player V1, the printed circuit board in 3D

    Flagshep Audio Player V1

    HYLDAIC/Flagshep-V1_Audio-Player

    A high fidelity semi-portable audio player student project with provided PCB files, 3D files and Code

    77 parts1CERN-OHL-P-2.0
  • 2 layers27.5 × 69 mmFlashCore, the printed circuit board in 3D

    FlashCore

    Omarbelh/FlashCore

    Hybrid USB-C SPI Flash & EEPROM programmer based on CH341A and ESP32-S3.

    54 parts1MIT
  • 4 layers65 × 50 mmBrains, the printed circuit board in 3D

    Brains

    Agent-Bid/IgniteIndia-Payload-PCB-Files

    PCB Files for the Cubesat used for the Payload in the Ignite India 2025 Competition

    53 partsMIT

Questions

How big is the OdytsseySwitch PCB?

It measures 112 × 102 mm and has 2 copper layers, 1.6 mm thick.

What parts does the OdytsseySwitch use?

35 parts, built around the ESP32-S3-WROOM-1-N8, AP2112K-3.3 and USBLC6-2SC6. 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 OdytsseySwitch KiCad files?

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

Can I use the OdytsseySwitch design in my own project?

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