Skip to the content
PCBKitNew board
4 layers75 × 55 mmHIDMorph, the printed circuit board in 3D

Hardware/Firmware of HIDMorph, a lua configurable HID translation/generation device

Size
75 × 55 mm
Copper layers
4
Thickness
1.6 mm
Parts
50
Nets
91
Pads
260
Tracks, vias
432, 83
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
15 Jul 2025
Updated
15 Jan 2026

Overview

HIDMorph is an open-source printed circuit board by cedarhacks, from the cedarhacks/HIDMorph repository on GitHub. It is a 4-layer board of 75 × 55 mm with 50 parts on 91 nets, routed with 432 tracks and 83 vias.

It is built around the RP2040, ESP32-S3-WROOM-1-N8R8 and W25Q128JVEIQ, with the SPX1117M3-L-3-3/TR among its other parts. Its parts include 14 capacitors, 7 diodes, 6 resistors, 5 ICs and 5 switches. It belongs with the ESP32 and RP2040 boards of this library.

Main components

4

README

README.md

HIDMorph

HIDMorph is a programmable USB HID host/device translator built on a dual-MCU architecture (ESP32-S3 + RP2040).
It enables real-time translation, remapping, and transformation of USB HID inputs (keyboards, mice, controllers) without requiring firmware recompilation.

The system is designed as an embedded product, combining real-time firmware, USB protocol handling, and custom hardware.


What HIDMorph Does

  • Acts as a USB HID host and USB HID device simultaneously
  • Translates HID inputs (e.g. keyboard → joystick, macros, custom mappings) in real time
  • Supports runtime-configurable behavior via a Lua scripting layer
  • Designed for low-latency, deterministic input handling
  • Runs entirely on-device (no PC software required after setup)

Architecture Overview

HIDMorph uses a dual-MCU design to cleanly separate USB responsibilities:

  • RP2040

    • USB Host stack
    • Enumerates and reads input HID devices
    • Handles timing-sensitive USB host transactions
  • ESP32-S3

    • USB Device stack (HID output)
    • Runs FreeRTOS-based application logic
    • Executes Lua scripts for dynamic input translation
    • Manages on-device filesystem and configuration

Communication between MCUs is handled over a dedicated internal interface designed for low latency and robustness.

(Architecture diagram coming soon)


Firmware

  • RTOS: FreeRTOS
  • USB Stack: TinyUSB
  • Languages: C/C++, Lua
  • Features:
    • USB HID descriptor management
    • Class handling for common HID devices
    • Scriptable runtime for input translation
    • Fault handling and recovery paths for USB disconnects

Hardware

  • Custom PCB designed in KiCad
  • Dual-MCU architecture (ESP32-S3 + RP2040)
  • USB host and device interfaces
  • Designed for iterative hardware bring-up and revision

(Schematics, PCB renders, and photos will be added as the design stabilizes)


Project Status

HIDMorph is under active development.

Completed:

  • Core dual-MCU architecture
  • USB host/device communication path
  • Base firmware framework
  • Lua runtime integration
  • Initial PCB revisions and bring-up

In progress:

  • Expanded HID device support
  • Improved scripting APIs
  • Documentation and examples
  • Enclosure refinement

Parts

50
QtyValueFootprintReferences
8, , , , , , ,
4ESDDiode_SMD:D_SOD-523D1, D2, D3, D4
32.2ufCapacitor_SMD:C_0603_1608MetricC5, C10, C13
347uFCapacitor_SMD:C_0603_1608MetricC1, C3, C7
3500Resistor_SMD:R_0603_1608MetricR3, R6, R8
20.1ufCapacitor_SMD:C_0603_1608MetricC4, C9
2100nfCapacitor_SMD:C_0603_1608MetricC6, C14
215 pFCapacitor_SMD:C_0603_1608MetricC11, C12
21kResistor_SMD:R_0603_1608MetricR2, R5
2LED RP5LED_SMD:LED_0603_1608MetricLED3, LED5
2W25Q128JVEPackage_SON:WSON-8-1EP_8x6mm_P1.27mm_EP3.4x4.3mmU2, U5
110kResistor_SMD:R_0603_1608MetricR1
112MHZCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
11ufCapacitor_SMD:C_0603_1608MetricC2
122ufCapacitor_SMD:C_0603_1608MetricC8
1ESP32-S3-WROOM-1-N8R8RF_Module:ESP32-S3-WROOM-1U3
1ESP_B1generated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8S3
1ESP_B2generated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8S4
1ESP_B3generated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8S5
1ESP_B4_proggenerated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8S6
1I2C DisplayConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1LED 33VLED_SMD:LED_0603_1608MetricLED1
1PogoPINcedarhacks:pogo_pin_2.54mmJ5
1Programming Pinsfootprints:SW_DIP_219-4SW1
1RP2040footprints:rp2040U4
1SPX1117M3-L-3-3/TRPackage_TO_SOT_SMD:SOT-223U1
1USB_INfootprints:USBA_FemaleJ3
1USB_OUTConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ4

Questions

How big is the HIDMorph PCB?

It measures 75 × 55 mm and has 4 copper layers, 1.6 mm thick.

What parts does the HIDMorph use?

50 parts, built around the RP2040, ESP32-S3-WROOM-1-N8R8, W25Q128JVEIQ and SPX1117M3-L-3-3/TR. 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 HIDMorph KiCad files?

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

Can I use the HIDMorph design in my own project?

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

Similar boards

  • 4 layers76.7 × 45.3 mmReMapper, the printed circuit board in 3D

    ReMapper

    sulicat/hardware

    46 parts
  • 2 layers20 × 20 mmB SPX1117-3V3-BRK R1.0, the printed circuit board in 3D

    B SPX1117-3V3-BRK R1.0

    Boardoza/Boardoza_SPX1117-3V3_LDO_Regulator_Breakout_Board

    Boardoza SPX1117-3V3 Breakout Board provides a stable and low-noise 3.3V regulated power supply with up to 800mA output current.

    11 partsCC-BY-SA-4.0
  • 2 layers43 × 43 mmIncipit11, the printed circuit board in 3D

    Incipit11

    DepartmentOfAlchemy/Incipit11

    Low power light dimmer

    39 partsMIT
  • 2 layers133.1 × 77.2 mmIndicator panel, the printed circuit board in 3D

    Indicator panel

    dabridgham/QSIC-verilog

    QBUS Storage and I/O Card

    84 parts11
  • 4 layers50.8 × 25.4 mmRP2040-DebugProbe, the printed circuit board in 3D

    RP2040-DebugProbe

    red-scorp/RP2040-DebugProbe

    RP2040-based debug probe board

    66 parts8
  • 4 layers17.8 × 41.9 mmRP2040-ProMini, the printed circuit board in 3D

    RP2040-ProMini

    red-scorp/RP2040-ProMini

    RP2040-based board with footprint of Arduino ProMini

    44 parts8
  • 2 layers323.9 × 115.5 mmNes keyboard, the printed circuit board in 3D

    Nes keyboard

    AryA-65/NES-Style-Keyboard

    Custom NES inspire keyboard for a friend

    255 partsGPL-2.0
  • 2 layers33.3 × 36.5 mmMic, the printed circuit board in 3D

    Mic

    joshitha-c/microphone

    A compact USB digital microphone development board built around the Raspberry Pi RP2040 microcontroller and the STMicroelectronics MP34DT05TR-A digital MEMS microphone.

    28 parts