

Evil ducky
A easy to use usb-c device that preteneds to be a keyboard when plugged into a computer
- Size
- 15 × 37 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 28
- Nets
- 66
- Pads
- 188
- Tracks, vias
- 346, 47
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 26 Aug 2026
- Updated
- 26 Aug 2026
Overview
Evil ducky is an open-source printed circuit board by CoryPearl, from the CoryPearl/evil_ducky repository on GitHub. It is a 2-layer board of 15 × 37 mm with 28 parts on 66 nets, routed with 346 tracks and 47 vias.
It is built around the RP2040, W25Q32JVSSIQ and TLV75533PDBVR-MS, with the TPD2EUSB30DRTR, ABM8-272-T3 and JS102011SAQN among its other parts. Its parts include 13 capacitors, 7 resistors, 4 ICs, 1 diode and 1 connector. It belongs with the keyboards and input boards and the RP2040 boards of this library.
Main components
7RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)W25Q32JVSSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 133MHz 1uA 2.7V~3.6V 20 Years 32Mbit 3ms SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHTLV75533PDBVR-MS
SOT-23-5SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMSKSEMIUncategorisedTPD2EUSB30DRTR
SOT(9x3)0.4pF 100nA 18V 5.5V 7V IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 TVS Unidirectional SOT(9x3) ESD and Surge Protection (TVS/ESD) ROHSTECH PUBLICESD And Surge Protection (TVS/ESD)ABM8-272-T3
SMD3225-4P-40℃~+85℃ 10pF 12MHz 50Ω SMD crystal oscillator ±30ppm ±30ppm SMD3225-4P Crystals ROHSAbraconCrystalsJS102011SAQN
SMD-40℃~+85℃ 3.5mm 300mA 5,000 cycles 6V 9mm Black Rectangular Columnar SMD(SMT) Tab SPDT Surface Mount, Right Angle SMD Slide Switches ROHSC&KSlide SwitchesUP31-CV-G-CM
-USB ConnectorsCUI
README
README.mdEvil Ducky
Evil Ducky is a compact USB-C HID automation board based on the RP2040. It appears to the host as a USB HID device and can send keyboard and mouse actions from a small text script embedded into the firmware.
Repository layout
hardware/evil_ducky_pcb/- KiCad project for the custom RP2040 PCB.firmware/dev_hid_composite/- Raspberry Pi Pico SDK firmware using TinyUSB.firmware/dev_hid_composite/main.evil_ducky- the automation script that gets embedded at build time.
Hardware
The board design includes:
- RP2040 microcontroller
- W25Q32JV 4 MB QSPI flash
- USB-C plug
- TLV75533 3.3 V regulator
- TPD2EUSB30 USB data-line ESD protection
- ABM8 crystal
- Upload/run slide switch
- Status LED on GPIO16
The KiCad project and custom footprints live in hardware/evil_ducky_pcb/.
Firmware
The firmware is a Pico SDK C project that uses TinyUSB to expose HID reports for keyboard and mouse support. During the CMake build, tools/embed_script.py converts main.evil_ducky into a generated C header, so changing the script currently requires rebuilding and reflashing the board.
At runtime, the board waits for USB HID to become ready, delays briefly for host setup, runs the embedded script once, and then leaves the status LED on if the script completed successfully. A fast blink indicates script failure.
Script format
Edit firmware/dev_hid_composite/main.evil_ducky:
# Lines starting with # are comments
WAIT 1000
PRESS SPACE
HOLD TAB
WAIT 500
RELEASE TAB
MOVE 50 50Supported commands:
WAIT <milliseconds>PRESS <key>HOLD <key>RELEASE <key>MOVE <x> <y>
Keys can be letters, digits, common names like SPACE, TAB, ENTER, arrow keys, F1 through F12, modifiers like CTRL, SHIFT, ALT, GUI, or raw HID usages such as 0x2C.
Build and flash
- Open
firmware/dev_hid_composite/in VS Code with the Raspberry Pi Pico extension, or build it with the Pico SDK CMake toolchain. - Build the project. The script is embedded automatically.
- Set the board switch to
UPLOADand connect it over USB-C. - Copy the generated
.uf2file to theRPI-RP2drive. - Unplug the board, set the switch to
RUN, and reconnect it.
Notes
- The configured flash size is 4 MB (
PICO_FLASH_SIZE_BYTES=4194304). - The USB descriptors are based on TinyUSB examples and currently identify as
TinyUSB Device. - Script lines are limited to 160 characters.
Parts
28| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 100 nF | Capacitor_SMD:C_0201_0603Metric | C1, C2, C5, C6, C9, C10, C11 |
| 2 | 1 kΩ | Resistor_SMD:R_0201_0603Metric | R1, R6 |
| 2 | 1 uF | Capacitor_SMD:C_0201_0603Metric | C7, C8 |
| 2 | 15 pF | Capacitor_SMD:C_0201_0603Metric | C3, C4 |
| 2 | 27 Ω | Resistor_SMD:R_0201_0603Metric | R4, R5 |
| 2 | 4.7 uF | Capacitor_SMD:C_0201_0603Metric | C12, C13 |
| 1 | 10 kΩ | Resistor_SMD:R_0201_0603Metric | R3 |
| 1 | 5.1 kΩ | Resistor_SMD:R_0201_0603Metric | R7 |
| 1 | 680 Ω | Resistor_SMD:R_0201_0603Metric | R2 |
| 1 | ABM8-272-T3 | evil_ducky:Crystal_SMD_ABM8-272-T3 | X1 |
| 1 | JS102011SAQN | evil_ducky:SW_SPDT_CK_JS102011SAQN | S1 |
| 1 | LED_R | LED_SMD:LED_0201_0603Metric | D1 |
| 1 | RP2040 | evil_ducky:QFN-56-1EP_7x7mm_P0.4mm_RP2040 | U1 |
| 1 | TLV75533PDBVR | evil_ducky:SOT-23-5_TLV75533 | U4 |
| 1 | TPD2EUSB30DRTR | evil_ducky:DRT-3_TPD2EUSB30 | U3 |
| 1 | UP31-CV-G-CM | evil_ducky:USB_C_Plug_SameSky_UP31-CV-G-CM | J1 |
| 1 | W25Q32JVSSIQ | evil_ducky:SOIC-8_5.3x5.3mm_P1.27mm_W25Q32JVSSIQ | U2 |
Similar boards
- 2 layers225 × 63.5 mm

- 4 layers81 × 37 mm

Maidenhead pocket locator
EdmundLimBoEn/gps-maidenhead-device
Open-source portable GNSS Maidenhead grid locator with a 16x2 LCD
117 parts - 4 layers144 × 112 mm

Quadcuber
gonewx/quadcuber
本目录是 A1 电子源目录。打开 quadcuber.kicadpro,包含原生可编辑原理图和四层 PCB、本地符号/封装库。本设计为单块PCB,RP2040、QSPI Flash、晶振、USB-C、驱动和电源均直接焊接在板上;A0的Pico H插装已移除。马达使用EV3裸插座。接线定义仍从 ../wiring/spec.py 导入,固件未改动,也没有把 R/L 固件描述成已支持四臂控制。
200 parts - 4 layers85.9 × 85.9 mm

Pd1180-epr r0.3
techmannih/pd1180-epr
PD1180-EPR — NEMA 34 Smart Motor-Mounted Stepper Controller with USB-C PD 3.1 EPR
277 parts - 8 layers100 × 65 mm

MatrixDrive RevB
Matrixite/MatrixDrive
MatrixDrive is a USB-loadable Mega Drive/Genesis cartridge
143 parts - 4 layers119 × 63.2 mm

OpenChordM1
FugLong/OpenChord
An open-source music device for portable, expressive, and extensible audio creation.
75 parts3MIT - 4 layers44 × 44 mm

- 4 layers210.9 × 127 mm

Questions
How big is the Evil ducky PCB?
It measures 15 × 37 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Evil ducky use?
28 parts, built around the RP2040, W25Q32JVSSIQ, TLV75533PDBVR-MS and TPD2EUSB30DRTR. 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 Evil ducky KiCad files?
From the CoryPearl/evil_ducky repository on GitHub, at the commit this page was made from: the board is hardware/evil_ducky_pcb/evil_ducky.kicad_pcb and its schematic hardware/evil_ducky_pcb/evil_ducky.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Evil ducky design in my own project?
Its repository states no licence, so its author keeps all rights: ask CoryPearl before reusing the design.