Skip to the content
PCBKitNew board
2 layers41.8 × 30.2 mmZero, the printed circuit board in 3D

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

2

README

README.md
Swindle Debug Probe

🔧 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

CategoryDetails
🧠 EngineBuilt on top of the proven Black Magic Probe firmware engine
🦀 GDB InterfaceWritten in Rust — modern, safe, and maintainable
🔌 ProtocolsSWD (ARM) + RVSWD (RISC-V) — no JTAG
🎯 BreakpointsInfinite breakpoints in RAM (ARM/RV32) + soft flash breakpoints for targets without HW breakpoints (some WCH chips)
📡 RTOS SupportFreeRTOS awareness and SEGGER RTT out of the box — no configuration needed
💾 DFU UpdateFirmware updates over USB DFU — no programmer required
📺 RTT ChannelDedicated USB Tx only RTT channel (RP2xxx & CH32V3xx)
🌐 NetworkingExperimental networked version based on CH32V307 or RP2040+W5500 (DHCP + port 2000/20001)
🔋 Low CostRP2040-Zero boards are dirt cheap!
🔧 Voltage TranslationOptional custom PCB with voltage level translators

🧩 Supported Hardware

Probe Hosts (runs Swindle)

You need ≥256 KB flash and ≥48 KB RAM.

PlatformStatusNotes
RP2040 (e.g. RP2040-Zero)✅ StableThe most affordable option
RP2350 (e.g. RP2350-Zero)🧪 Experimental
GD32F303CCT6 (48/64-pin)✅ Stable
CH32V30xxx✅ StableRISC-V based host
Custom PCB🧩 OptionalWith voltage translators, mosfet on reset, ws2812

Debug Targets

ArchitectureProtocolDevice Families
ARM Cortex-MSWDRP2040, RP2350, STM32, GD32, and many ARM Cortex-M with SWD
RISC-VRVSWDWCH 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 .uf2 file.

2. Connect to your target

text
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

bash
# Connect with GDB
gdb-multiarch -ex "target extended-remote /dev/ttyACM0" -ex "mon swdp_scan" -ex "attach 1" your_firmware.elf

Or 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

bash
# 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 rp2040

Note: Some presets have variants with inverted NRST (*_inv), with WS2812 RGB led. See CMakePresets.json for the full list.

PresetDescription
rp2040RP2040-Zero (USB)
rp2040_invRP2040-Zero with inverted NRST
rp2350RP2350-Zero (USB, experimental)
gd32f303_48GD32F303 48-pin (USB)
gd32f303_64GD32F303 64-pin (USB)
gd32f303_48_inv_ws2812GD32F303 48-pin (USB) +WS2812 +inv RST
gd32f303_64_inv_ws2812GD32F303 64-pin (USB) +WS2812 +inv RST
ch32v307CH32V30x (USB)
ch32v307_inv_ws2812CH32V30x (USB) +ws2812 + inv RST
ch32v307_netCH32V307 (Ethernet, experimental)
rp2040_zero_w5500rp2040+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

text
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 targetRP2040 + CH32V
RP2040-Zero debugging RP2040RP2040 debugging 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
QtyValueFootprintReferences
4100nResistor_SMD:R_0603_1608MetricC1, C3, C10, C11
13V->VTREFPackage_SO:TSSOP-8_3x3mm_P0.65mmU3
147uResistor_SMD:R_1210_3225MetricC2
1Conn_01x03_SocketConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1Debug portConnector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_VerticalJ5
1G***kibuzzard-6714FCCAkibuzzard-6714FCCA
1G***kibuzzard-6719D703kibuzzard-6719D703
1G***kibuzzard-67310D89kibuzzard-67310D89
1G***kibuzzard-6713DC2Ekibuzzard-6713DC2E
1G***kibuzzard-67310DA4kibuzzard-67310DA4
1G***kibuzzard-6719D5E3kibuzzard-6719D5E3
1G***kibuzzard-6713DC16kibuzzard-6713DC16
1RP2040-ZeroRP2040 Carrier:RP2040 ZeroU1
1RT9013-33GBPCM_Package_TO_SOT_SMD_AKL:TSOT-23-5U6
1VTREF->3VPackage_SO:TSSOP-8_3x3mm_P0.65mmU4
1VTREF<->3VPackage_SO:TSSOP-8_3x3mm_P0.65mmU5
1jtagConnector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMDJ1

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 mmSwindle ch32 revJ, the printed circuit board in 3D

    Swindle ch32 revJ

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    65 parts22
  • 2 layers49.2 × 31.7 mmGd32f303 revG, the printed circuit board in 3D

    Gd32f303 revG

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    61 parts22
  • 2 layers38.3 × 34 mmSwindle ch32 revJ mini, the printed circuit board in 3D

    Swindle ch32 revJ mini

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    57 parts22
  • 2 layers39.3 × 30.1 mmGd32f303 revG mini, the printed circuit board in 3D

    Gd32f303 revG mini

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    56 parts22
  • 2 layers39.6 × 35.3 mmSwindle ch32 revJshort, the printed circuit board in 3D

    Swindle ch32 revJshort

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    54 parts22
  • 2 layers51 × 33.3 mmLnBMP ch32 revF 5pins, the printed circuit board in 3D

    LnBMP ch32 revF 5pins

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    53 parts22
  • 2 layers37.3 × 63.9 mmZero r2 mini w5500, the printed circuit board in 3D

    Zero r2 mini w5500

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    53 parts22
  • 2 layers51 × 33.3 mmLnBMP ch32revE, the printed circuit board in 3D

    LnBMP ch32revE

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    52 parts22
  • 2 layers52.6 × 33 mmLnBMP stm32, the printed circuit board in 3D

    LnBMP stm32

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    50 parts22
  • 2 layers51 × 33.3 mmLnBMP ch32revC, the printed circuit board in 3D

    LnBMP ch32revC

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    42 parts22
  • 2 layers52.6 × 33 mmLnBMP stm32, the printed circuit board in 3D

    LnBMP stm32

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    33 parts22
  • 2 layers41.8 × 30.2 mmZero r1, the printed circuit board in 3D

    Zero r1

    mean00/swindle

    A custom version of the blackMagic probe with rust in it

    31 parts22

Similar boards

  • 2 layers115.6 × 106.7 mmErgoSNM v3 left, the printed circuit board in 3D

    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 mmMAC GBD Flashcart, the printed circuit board in 3D

    MAC GBD Flashcart

    HDR/Gameboy-Camera-Flashcart

    Available on PCBWay!

    26 parts136
  • 8 layers34 × 34 mmOpenDrone AIO FC F405 HW, the printed circuit board in 3D

    OpenDrone AIO FC F405 HW

    phonght32/OpenDrone_HW_AIO_FC_F405

    OpenDrone Project - AIO Brushless FC F405.

    211 parts53MIT
  • 4 layers121.9 × 44.4 mmBurnedHead, the printed circuit board in 3D

    BurnedHead

    justinbalexander/BurnedHead

    A handheld game console

    92 parts45Unlicense
  • 4 layers63.1 × 63.5 mmAIO, the printed circuit board in 3D

    AIO

    ErBWs/CH32-Bike-Overland

    十八届智能车单车越野

    157 parts36GPL-3.0
  • 4 layers26 × 98 mmDongle pro, the printed circuit board in 3D

    Dongle pro

    fcjr/restorekit

    Reformat an Apple Silicon mac from any platform.

    111 parts34Apache-2.0
  • 4 layers70.2 × 71 mmC3-27-epaper touch, the printed circuit board in 3D

    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 layersMoco od501, the printed circuit board in 3D

    Moco od501

    ziteh/moco

    PMSM/BLDC motor controller/driver PCBs

    102 parts24CERN-OHL-P-2.0