

HIDMorph
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
4RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)ESP32-S3-WROOM-1-N8R8
SMD,25.5x18mm-104.5dBm -40℃~+65℃ 2.4GHz 20.5dBm 330mA 3V~3.6V 97mA Bluetooth5.0 ESP32-S3R8 On-board PCB Antenna UART、SPI、I2C、GPIO、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesW25Q128JVEIQ
WSON-8-EP(6x8)-40℃~+85℃ 100,000 cycles 10uA 128Mbit 133MHz 2.7V~3.6V 20 Years Power-on reset、Hardware write protection、Software write protection、Write enable latch、Absolute write protection、Power lock protection SPI WSON-8-EP(6x8) NOR FLASH ROHSWinbondNAND FLASHSPX1117M3-L-3-3/TR
SOT-223-3-40℃~+125℃ 0.003%Vout 1 1.3V@(800mA) 10mA 20V 3.3V 70dB@(120Hz) 800mA Fixed Over Current Protection、Over Temperature Protection Positive SOT-223-3 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMaxLinearVoltage Regulators - Linear, Low Drop Out (LDO) Regulators
README
README.mdHIDMorph
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| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | , , , , , , , | ||
| 4 | ESD | Diode_SMD:D_SOD-523 | D1, D2, D3, D4 |
| 3 | 2.2uf | Capacitor_SMD:C_0603_1608Metric | C5, C10, C13 |
| 3 | 47uF | Capacitor_SMD:C_0603_1608Metric | C1, C3, C7 |
| 3 | 500 | Resistor_SMD:R_0603_1608Metric | R3, R6, R8 |
| 2 | 0.1uf | Capacitor_SMD:C_0603_1608Metric | C4, C9 |
| 2 | 100nf | Capacitor_SMD:C_0603_1608Metric | C6, C14 |
| 2 | 15 pF | Capacitor_SMD:C_0603_1608Metric | C11, C12 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R2, R5 |
| 2 | LED RP5 | LED_SMD:LED_0603_1608Metric | LED3, LED5 |
| 2 | W25Q128JVE | Package_SON:WSON-8-1EP_8x6mm_P1.27mm_EP3.4x4.3mm | U2, U5 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 12MHZ | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1uf | Capacitor_SMD:C_0603_1608Metric | C2 |
| 1 | 22uf | Capacitor_SMD:C_0603_1608Metric | C8 |
| 1 | ESP32-S3-WROOM-1-N8R8 | RF_Module:ESP32-S3-WROOM-1 | U3 |
| 1 | ESP_B1 | generated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8 | S3 |
| 1 | ESP_B2 | generated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8 | S4 |
| 1 | ESP_B3 | generated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8 | S5 |
| 1 | ESP_B4_prog | generated_lscs:SW-SMD_4P-L4.5-W4.5-P3.00-LS6.8 | S6 |
| 1 | I2C Display | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | LED 33V | LED_SMD:LED_0603_1608Metric | LED1 |
| 1 | PogoPIN | cedarhacks:pogo_pin_2.54mm | J5 |
| 1 | Programming Pins | footprints:SW_DIP_219-4 | SW1 |
| 1 | RP2040 | footprints:rp2040 | U4 |
| 1 | SPX1117M3-L-3-3/TR | Package_TO_SOT_SMD:SOT-223 | U1 |
| 1 | USB_IN | footprints:USBA_Female | J3 |
| 1 | USB_OUT | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J4 |
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 mm

- 2 layers20 × 20 mm

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 mm

- 2 layers133.1 × 77.2 mm

- 4 layers50.8 × 25.4 mm

- 4 layers17.8 × 41.9 mm

- 2 layers323.9 × 115.5 mm

- 2 layers33.3 × 36.5 mm

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