

Zero
A custom version of the blackMagic probe with rust in it
- Size
- 41.8 × 30.2 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 20
- Nets
- 37
- Pads
- 103
- Tracks, vias
- 200, 28
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 4 Mar 2022
- Updated
- 25 Oct 2026
Overview
Zero is an open-source printed circuit board by mean00, from the mean00/swindle repository on GitHub. It is a 2-layer board of 41.8 × 30.2 mm with 20 parts on 37 nets, routed with 200 tracks and 28 vias.
It is built around the RP2040-ZERO and RT9013-33GB. Its parts include 5 capacitors, 5 ICs and 3 connectors. It belongs with the sensors and measurement and interfaces and adapters boards and the RP2040 boards of this library.
Main components
2RP2040-ZERO
-- Development Boards & Kits ROHSWaveshareDevelopment Boards & KitsRT9013-33GB
SOT-23-5-40℃~+125℃@(Tj) 1 25uA 3.3V 30uVrms 400mV@(500mA) 5.5V 500mA 50dB@(10kHz) Fixed Over Current Protection、Over Temperature Protection、Enable Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSRICHTEKVoltage Regulators - Linear, Low Drop Out (LDO) Regulators
README
README.md
🔧 SWINDLE — ARM / RISC-V Debug Probe
Turn any cheap dev board into a full-featured debug probe.
TL;DR — Got an RP2040 board lying around? You've got a debug probe.
Swindle is a multi-platform debug probe for embedded devices, supporting SWD (ARM Cortex-M) and RVSWD (RISC-V CH32V2xx/CH32V3xx). It's powered by the incredible Black Magic Probe engine with a custom Rust-based GDB interface.
✨ Features
| Category | Details |
|---|---|
| 🧠 Engine | Built on top of the proven Black Magic Probe firmware engine |
| 🦀 GDB Interface | Written in Rust — modern, safe, and maintainable |
| 🔌 Protocols | SWD (ARM) + RVSWD (RISC-V) — no JTAG |
| 🎯 Breakpoints | Infinite breakpoints in RAM (ARM/RV32) + soft flash breakpoints for targets without HW breakpoints (some WCH chips) |
| 📡 RTOS Support | FreeRTOS awareness and SEGGER RTT out of the box — no configuration needed |
| 💾 DFU Update | Firmware updates over USB DFU — no programmer required |
| 📺 RTT Channel | Dedicated USB Tx only RTT channel (RP2xxx & CH32V3xx) |
| 🌐 Networking | Experimental networked version based on CH32V307 or RP2040+W5500 (DHCP + port 2000/20001) |
| 🔋 Low Cost | RP2040-Zero boards are dirt cheap! |
| 🔧 Voltage Translation | Optional custom PCB with voltage level translators |
🧩 Supported Hardware
Probe Hosts (runs Swindle)
You need ≥256 KB flash and ≥48 KB RAM.
| Platform | Status | Notes |
|---|---|---|
| RP2040 (e.g. RP2040-Zero) | ✅ Stable | The most affordable option |
| RP2350 (e.g. RP2350-Zero) | 🧪 Experimental | |
| GD32F303CCT6 (48/64-pin) | ✅ Stable | |
| CH32V30xxx | ✅ Stable | RISC-V based host |
| Custom PCB | 🧩 Optional | With voltage translators, mosfet on reset, ws2812 |
Debug Targets
| Architecture | Protocol | Device Families |
|---|---|---|
| ARM Cortex-M | SWD | RP2040, RP2350, STM32, GD32, and many ARM Cortex-M with SWD |
| RISC-V | RVSWD | WCH CH32V2xx, CH32V3xx |
🚀 Getting Started
1. Flash the firmware
Pick the pre-built firmware for your board or build from source.
Flashing via DFU (RP2040): Hold
BOOTSEL, plug in USB, then copy the.uf2file.
2. Connect to your target
Probe SWDIO → Target SWDIO
Probe SWCLK → Target SWCLK
Probe GND → Target GND
Probe NRST → Target NRST (optional, recommended)
Probe TX → Target Uart TX (optional)'see wiki for exact pinout'
3. Start debugging
# Connect with GDB
gdb-multiarch -ex "target extended-remote /dev/ttyACM0" -ex "mon swdp_scan" -ex "attach 1" your_firmware.elfOr use any GDB frontend (VS Code, CLion, etc.) — just point it to the serial port.
🔨 Building
This project uses CMake with presets for each target platform.
There is a devpod/docker build environment included.
Prerequisites
- CMake ≥ 3.21
- ARM GCC toolchain (
arm-none-eabi-gcc) or LLVM/Clang - RISC-V toolchain (for CH32V targets)
- Rust toolchain (for the GDB interface)
Configure & Build
# Configure for your target
cmake --preset rp2040 # RP2040-Zero
cmake --preset rp2350 # RP2350-Zero
cmake --preset gd32f303_48 # GD32F303 48-pin
cmake --preset gd32f303_64 # GD32F303 64-pin
cmake --preset ch32v307 # CH32V307 (networked)
# Build
cmake --build --preset rp2040Note: Some presets have variants with inverted NRST (
*_inv), with WS2812 RGB led. SeeCMakePresets.jsonfor the full list.
| Preset | Description |
|---|---|
rp2040 | RP2040-Zero (USB) |
rp2040_inv | RP2040-Zero with inverted NRST |
rp2350 | RP2350-Zero (USB, experimental) |
gd32f303_48 | GD32F303 48-pin (USB) |
gd32f303_64 | GD32F303 64-pin (USB) |
gd32f303_48_inv_ws2812 | GD32F303 48-pin (USB) +WS2812 +inv RST |
gd32f303_64_inv_ws2812 | GD32F303 64-pin (USB) +WS2812 +inv RST |
ch32v307 | CH32V30x (USB) |
ch32v307_inv_ws2812 | CH32V30x (USB) +ws2812 + inv RST |
ch32v307_net | CH32V307 (Ethernet, experimental) |
rp2040_zero_w5500 | rp2040+w5500 (Ethernet, experimental) |
📘 Documentation
Full documentation is available on the Swindle Wiki — covering:
- 🔧 Hardware setup and wiring guides
- 🖥️ GDB integration and troubleshooting
- ⚙️ Advanced configuration
- 🧪 RTOS-aware debugging
- 🌐 Networked probe setup
🏗️ Project Architecture
swindle/ # Debug probe wrapper
├── rs/ # Rust GDB interface (rs_swindle / rsbmp)
│ ├── rs_swindle/ # Core GDB logic
│ └── rs_swindle_wrapper/ # C → Rust bridge
└── swindle/ # C++ Black Magic Probe engine + wrapper
esprit/ # C++ / Rust SDK framework (HAL + RTOS + MCU drivers)
assets/ # Images and media
cmake/ # Project-level CMake utilities🖼️ Gallery
| Small probe, big target | RP2040 + CH32V |
|---|---|
![]() | ![]() |
| :------------------------: | :--------------: |
🤝 Contributing
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
📄 License
This project is built on the Black Magic Probe engine, licensed under GPL-3.0.
Parts
20| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100n | Resistor_SMD:R_0603_1608Metric | C1, C3, C10, C11 |
| 1 | 3V->VTREF | Package_SO:TSSOP-8_3x3mm_P0.65mm | U3 |
| 1 | 47u | Resistor_SMD:R_1210_3225Metric | C2 |
| 1 | Conn_01x03_Socket | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | Debug port | Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical | J5 |
| 1 | G*** | kibuzzard-6714FCCA | kibuzzard-6714FCCA |
| 1 | G*** | kibuzzard-6719D703 | kibuzzard-6719D703 |
| 1 | G*** | kibuzzard-67310D89 | kibuzzard-67310D89 |
| 1 | G*** | kibuzzard-6713DC2E | kibuzzard-6713DC2E |
| 1 | G*** | kibuzzard-67310DA4 | kibuzzard-67310DA4 |
| 1 | G*** | kibuzzard-6719D5E3 | kibuzzard-6719D5E3 |
| 1 | G*** | kibuzzard-6713DC16 | kibuzzard-6713DC16 |
| 1 | RP2040-Zero | RP2040 Carrier:RP2040 Zero | U1 |
| 1 | RT9013-33GB | PCM_Package_TO_SOT_SMD_AKL:TSOT-23-5 | U6 |
| 1 | VTREF->3V | Package_SO:TSSOP-8_3x3mm_P0.65mm | U4 |
| 1 | VTREF<->3V | Package_SO:TSSOP-8_3x3mm_P0.65mm | U5 |
| 1 | jtag | Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMD | J1 |
Questions
How big is the Zero PCB?
It measures 41.8 × 30.2 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Zero use?
20 parts, built around the RP2040-ZERO and RT9013-33GB. 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 Zero KiCad files?
From the mean00/swindle repository on GitHub, at the commit this page was made from: the board is kicad/rp2040_zero/rev0/zero.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Zero design in my own project?
Its repository states no licence, so its author keeps all rights: ask mean00 before reusing the design.
More from mean00/swindle
12- 2 layers49.8 × 33.3 mm

- 2 layers49.2 × 31.7 mm

- 2 layers38.3 × 34 mm

Swindle ch32 revJ mini
mean00/swindle
A custom version of the blackMagic probe with rust in it
57 parts22 - 2 layers39.3 × 30.1 mm

- 2 layers39.6 × 35.3 mm

Swindle ch32 revJshort
mean00/swindle
A custom version of the blackMagic probe with rust in it
54 parts22 - 2 layers51 × 33.3 mm

LnBMP ch32 revF 5pins
mean00/swindle
A custom version of the blackMagic probe with rust in it
53 parts22 - 2 layers37.3 × 63.9 mm

- 2 layers51 × 33.3 mm

- 2 layers52.6 × 33 mm

- 2 layers51 × 33.3 mm

- 2 layers52.6 × 33 mm

- 2 layers41.8 × 30.2 mm

Similar boards
- 2 layers115.6 × 106.7 mm

ErgoSNM v3 left
siderakb/ergo-snm-keyboard
ErgoSNM is a split ergonomic keyboard integrated with trackball, wireless is in beta
90 parts172CERN-OHL-P-2.0 - 2 layers51 × 70 mm

- 8 layers34 × 34 mm

OpenDrone AIO FC F405 HW
phonght32/OpenDrone_HW_AIO_FC_F405
OpenDrone Project - AIO Brushless FC F405.
211 parts53MIT - 4 layers121.9 × 44.4 mm

- 4 layers63.1 × 63.5 mm

- 4 layers26 × 98 mm

- 4 layers70.2 × 71 mm

C3-27-epaper touch
martinberlin/bistable-smart-switch
An epaper switch project with 2 PCBs, controller+touch, and 220AC to 3DC with Relay (Latch or solid-state)
64 parts32Apache-2.0 - 4 layers


