

Swindle ch32 revJ
A custom version of the blackMagic probe with rust in it
- Size
- 49.8 × 33.3 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 65
- Nets
- 78
- Pads
- 213
- Tracks, vias
- 430, 58
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 4 Mar 2022
- Updated
- 25 Oct 2026
Overview
Swindle ch32 revJ is an open-source printed circuit board by mean00, from the mean00/swindle repository on GitHub. It is a 2-layer board of 49.8 × 33.3 mm with 65 parts on 78 nets, routed with 430 tracks and 58 vias.
It is built around the CH32V303RCT6, LM1117-3.3 and RT9013-33GB. Its parts include 12 capacitors, 11 connectors, 7 resistors, 6 ICs and 2 diodes. It belongs with the sensors and measurement and interfaces and adapters boards and the RISC-V boards of this library.
Main components
3CH32V303RCT6
LQFP-64(10x10)LQFP-64(10x10) Microcontrollers (MCU/MPU/SOC) ROHSWCH (Nanjing Qinheng Microelectronics)Microcontrollers (MCU/MPU/SOC)LM1117-3.3
SOT-2231 1.3V@(1000mA) 15V 1A 2mA 3.3V Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHShongjiachengUncategorisedRT9013-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
65| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100n | Resistor_SMD:R_0603_1608Metric | C1, C5, C6, C7, C8, C9, C10, C11 |
| 3 | Debug port | Connector_PinSocket_1.27mm:PinSocket_1x05_P1.27mm_Vertical | J6, J8, J10 |
| 2 | 100u | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C4, C12 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R1, R5 |
| 2 | 22pf | Resistor_SMD:R_0603_1608Metric | C2, C3 |
| 2 | 330 | Resistor_SMD:R_0603_1608Metric | R3, R7 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R4, R6 |
| 2 | Conn_01x03_Pin | Connector_PinSocket_1.27mm:PinSocket_1x03_P1.27mm_Vertical | J7, J9 |
| 2 | LED | Diode_SMD:D_0805_2012Metric | D1, D2 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 3V->VTREF | Package_SO:TSSOP-8_3x3mm_P0.65mm | U3 |
| 1 | 8Mhz | footprints:Crystal_SMD_TXC_7M-4Pin_3.2x2.5mm_45deg | Y1 |
| 1 | CH32V303RCT6 | Package_QFP:LQFP-64_10x10mm_P0.5mm | U1 |
| 1 | Conn_01x03_Socket | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | Dbg | Connector_PinSocket_1.27mm:PinSocket_1x05_P1.27mm_Vertical | J3 |
| 1 | Debug port | Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical | J5 |
| 1 | G*** | kibuzzard-67310708 | kibuzzard-67310708 |
| 1 | G*** | kibuzzard-68694355 | kibuzzard-68694355 |
| 1 | G*** | kibuzzard-67135D50 | kibuzzard-67135D50 |
| 1 | G*** | kibuzzard-65C1C92F | kibuzzard-65C1C92F |
| 1 | G*** | kibuzzard-67137B47 | kibuzzard-67137B47 |
| 1 | G*** | kibuzzard-67ECD9AB | kibuzzard-67ECD9AB |
| 1 | G*** | kibuzzard-67137B7B | kibuzzard-67137B7B |
| 1 | G*** | kibuzzard-6731071F | kibuzzard-6731071F |
| 1 | G*** | kibuzzard-6A65D8DC | kibuzzard-6A65D8DC |
| 1 | G*** | kibuzzard-6713DC2E | kibuzzard-6713DC2E |
| 1 | G*** | kibuzzard-65C1C789 | kibuzzard-65C1C789 |
| 1 | G*** | kibuzzard-66C04372 | kibuzzard-66C04372 |
| 1 | G*** | kibuzzard-6714FD4B | kibuzzard-6714FD4B |
| 1 | G*** | kibuzzard-6714FD27 | kibuzzard-6714FD27 |
| 1 | G*** | kibuzzard-67135D9A | kibuzzard-67135D9A |
| 1 | G*** | kibuzzard-67135DB6 | kibuzzard-67135DB6 |
| 1 | G*** | kibuzzard-6731069B | kibuzzard-6731069B |
| 1 | G*** | kibuzzard-65C1C8EE | kibuzzard-65C1C8EE |
| 1 | G*** | kibuzzard-65C1C972 | kibuzzard-65C1C972 |
| 1 | G*** | kibuzzard-671361D3 | kibuzzard-671361D3 |
| 1 | G*** | kibuzzard-6713DC16 | kibuzzard-6713DC16 |
| 1 | G*** | kibuzzard-65C1C9D7 | kibuzzard-65C1C9D7 |
| 1 | G*** | kibuzzard-6714FCCA | kibuzzard-6714FCCA |
| 1 | G*** | kibuzzard-66C0437E | kibuzzard-66C0437E |
| 1 | G*** | kibuzzard-65C1C918 | kibuzzard-65C1C918 |
| 1 | LM1117-3.3 | Package_TO_SOT_SMD:SOT-223 | U2 |
| 1 | RT9013-33GB | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U6 |
| 1 | SW_DIP_x01 | Button_Switch_SMD:SW_SPST_CK_RS282G05A3 | RST1 |
| 1 | USB | Connector_USB:USB_C_Receptacle_Palconn_UTC16-G | J4 |
| 1 | VTREF->3V | Package_SO:TSSOP-8_3x3mm_P0.65mm | U4 |
| 1 | VTREF<->3V | Package_SO:TSSOP-8_3x3mm_P0.65mm | U5 |
| 1 | con2 | Connector_PinHeader_1.27mm:PinHeader_1x02_P1.27mm_Vertical | J2_DFU1 |
| 1 | jtag | Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMD | J1 |
More from mean00/swindle
12- 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

- 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

Questions
How big is the Swindle ch32 revJ PCB?
It measures 49.8 × 33.3 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Swindle ch32 revJ use?
65 parts, built around the CH32V303RCT6, LM1117-3.3 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 Swindle ch32 revJ KiCad files?
From the mean00/swindle repository on GitHub, at the commit this page was made from: the board is kicad/ch32v3x/swindle_revJ/swindle_ch32_revJ.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Swindle ch32 revJ design in my own project?
Its repository states no licence, so its author keeps all rights: ask mean00 before reusing the design.

