

Panel
A bare-metal RISC-V board that fits inside your USB connector
- Size
- 99.2 × 100 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 1,073
- Nets
- 1,176
- Pads
- 3,257
- Tracks, vias
- 3,864, 784
- Pours
- 606
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 31 Mar 2026
- Updated
- 28 Oct 2026
Overview
Panel is an open-source printed circuit board by cheyao, from the cheyao/comu repository on GitHub. It is a 2-layer board of 99.2 × 100 mm with 1,073 parts on 1,176 nets, routed with 3,864 tracks and 784 vias.
It is built around the CH32V203F8U6. Its parts include 168 capacitors, 112 resistors, 112 ICs, 112 diodes and 56 connectors. It belongs with the RISC-V boards of this library.
Main components
1README
README.mdComu
A bite-sized CH32V203 board that fits inside your USB port.
Intrested? Get one on Crowd Supply!

Comu is a tiny CH32V203 RISC-V computer that fits inside a USB port. It is user programmable, fitted with a custom bootloader, has four captive touch buttons and two LEDs. The board is supported by ch32fun, allowing easy and lightweight RISC-V bare-metal development.
The CH32V203 is equipped with 248KB of Flash and 20KB of SRAM, more than enough for most embedded applications. The chip also has a wide array of peripherals, including DMA and a 12bit ADC, allowing for a wide variety of uses. The board also exposes 6 GPIO pins via testpoints, allowing it to be embedded on custom boards for further use.
It can also easily act as a USB HID device, allowing portable key injections to avoid repetitive typing. With it 4 captive buttons, you can make it into a sliding volume adjuster, computer sleep trigger, screen capture device and more!

No bloat, no weight
Using bare-metal programming in C/C++, the RISC-V program created for this chip contains 0 bloat. The minimal size of a blinky is only 40 bytes, compared to 324KB on Arduino Pico or 12KB with Pico SDK. The CH32V203 RM contains all information needed to use the MCU, from register descriptions to memory layout.
The board is also very lightweight, weighing merely 0.4g (0.2g without case). Measuring a mere 13x9.4mm, it occupies nearly no space.
Even in such constrained space, the board still boasts rich peripherals. You can directly access 2 white LEDs and 4 captive buttons. The captive buttons are double-sided edge-plated, ensuring accurate touch sensing. It is also easy to use thanks to the CH32V203's touchkey peripheral, directly handling all the troublesome parts of touch sensing. (Example in examples/touch folder).
USB explorer
The CH32V203 is perfect for USB packet exploring. Its bare and well-documented USBD peripheral allows you to manipulate raw packets, while taking care of troublesome parts such as transaction handling. You can directly pair this with usbmon on Wireshark to explore how USB transactions work.

Custom bootloader
The board comes pre-programmed with a sleek custom USB bootloader to compensate for the lack of a BOOT0 button and the large size of the official bootloader. The custom bootloader is only 2KiB in size, freeing up the 28KiB of boot flash for user use.
The bootloader is also completely open source; check out its source code in the bootloader folder. The only quirk is that the programs must be linked to 0x800 and flashed to 0x800, but that is taken care by the provided Makefile in the examples folder.
Bare metal isn't your thing?
No worries! The CH32V203 is also supported by a wide array of tools: Rust via ch32-hal, Arduino via arduino_core_ch32, or normal WCH-HAL via Mounriver Studio II.
USB communication can be completely handled by libraries such as tinyusb or ch32fun's usbd lib. All raw peripherals can also be hidden by Mounriver's HAL.
Tons of examples
There are tons of examples in the examples folder on this repo, and also compatible with the examples in ch32fun.

Features
- CH32V203 32bit RISC-V MCU
- 224KB Flash, 24KB Boot Flash, 20KB SRAM (64KB 0-wait Flash and 160KB Normal Flash)
- 144MHz with internal oscillator
- 12bit ADC
- 49.3 μA/MHz @ run and 19.4 μA/MHz @ sleep
- USB full speed peripheral
- 4x Captive touch buttons w/ castellated edges
- 2x LEDs
- 6x GPIOs broken out via testpads
- Fits in a USB-A connector
Pins
- LED1: PB11
- LED2: PA4
- Captive touch:
- A5 (PA5)
- A7 (PA7)
- A8 (PB0)
- A9 (PB1)
- GPIOs: PB14, PB15, PA1, PA2, PA3, PA8
Usage
Dependencies: Make, riscv64-gcc, libusb (Checkout dependency list here)
Clone this respository and pull the submodules:
$ git clone https://github.com/cheyao/comu
$ cd comu
$ git submodule update --init --recursiveGo into the examples folder and build an example:
$ cd examples/blink
$ makeNow, the example should be built. When you insert your Comu into your USB port, it should stay in the bootloader for the first 5 seconds. You can then re-run make flash to flash the binary onto the chip!
Now you can make your applications! I recommend starting off by copying an example, as you need to flash to address flash+0x800 to avoid overwriting the custom bootloader.
If the flashing isn't working, please read through this wiki for operating system setup, and try re-building minichnlink. (I've submitted a few new patches for the ch32v203 flashing a week ago)
Can I get one?
They will be shortly availiable on Crowd Supply!
Attributions
Form factor credit goes to tomu.
Parts
1,073| Qty | Value | Footprint | References |
|---|---|---|---|
| 448 | TestPoint | ch32:TestPoint_Pad_D0.6mm | TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1 +432 |
| 112 | 1k | Resistor_SMD:R_0402_1005Metric | R1, R1, R1, R1, R1, R1, R1, R1, R1, R1, R1, R1, R1, R1, R1, R1 +96 |
| 112 | 1uF | Capacitor_SMD:C_0402_1005Metric | C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1 +96 |
| 112 | LED | Diode_SMD:D_0402_1005Metric | D1, D1, D1, D1, D1, D1, D1, D1, D1, D1, D1, D1, D1, D1, D1, D1 +96 |
| 56 | 100nF | Capacitor_SMD:C_0402_1005Metric | C3, C3, C3, C3, C3, C3, C3, C3, C3, C3, C3, C3, C3, C3, C3, C3 +40 |
| 56 | Button solder mask removal | usb-pcb:soldermask-removal | XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1, XX1 +40 |
| 56 | CH32V203F8U6 | Package_DFN_QFN:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm | U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, U1 +40 |
| 56 | USB_A_Embedded | ch32:USB_A_Connector_PCB | J1, J1, J1, J1, J1, J1, J1, J1, J1, J1, J1, J1, J1, J1, J1, J1 +40 |
| 56 | XC6206PxxxMR | Package_TO_SOT_SMD:SOT-23-3 | U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, U2 +40 |
| 6 | Fiducial | Fiducial | KiKit_FID_B_1, KiKit_FID_B_2, KiKit_FID_B_3, KiKit_FID_T_1, KiKit_FID_T_2, KiKit_FID_T_3 |
| 3 | NPTH | NPTH | KiKit_TO_1, KiKit_TO_2, KiKit_TO_3 |
Questions
How big is the Panel PCB?
It measures 99.2 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Panel use?
1,073 parts, built around the CH32V203F8U6. 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 Panel KiCad files?
From the cheyao/comu repository on GitHub, at the commit this page was made from: the board is hardware/panel.kicad_pcb and its schematic hardware/comu.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Panel design in my own project?
Its repository states no licence, so its author keeps all rights: ask cheyao before reusing the design.
More from cheyao/comu
1- 2 layers9.4 × 13 mm

Similar boards
- 2 layers36 × 70 mm

NoodleDriver
mcqn/bike-head
Making your bike more fun (if that's possible) by giving it a head
46 partsCERN-OHL-S-2.0 - 2 layers35.6 × 31.8 mm

Ch32v203f8u6funboard
cnlohr/cnhardware
My dumping grounds for all my kicad projects and random hardware bringup.
13 parts114 - 2 layers83.1 × 77.3 mm

ManhattanPanels SOT23-6
pris-digital/ManhattanBreakoutBoards-Panelized
A collection of breakout boards for manhattan style prototyping
1,071 partsGPL-3.0 - 2 layers251.6 × 177.8 mm

MelbourneTrainTracker
itsmevjnk/MelbourneTrainTracker
Melbourne Train Tracker project repository (SIT210, T1/2025)
1,071 parts40 - 2 layers300 × 105 mm

- 2 layers126.2 × 201.7 mm

Montir panel
simonyiszk/sem-tanfolyam-stc
STC8G1K08 mikrovezérlős fejlesztőpanel a 2023-as alapozó tanfolyamhoz.
1,080 parts1MIT - 2 layers149.9 × 197.5 mm

Engine
schilkp/Fets_and_Crosses
An implementation of the classic Tic-Tac-Toe / Knots and Crosses game built with 2458 transistors.
1,083 parts5MIT - 2 layers

PerfboardESP
kvoit/WemosD1MiniPerfboard
PCB for a Wemos D1 Mini, with a MP1584 and a SOT-223 regulator UNDER the module, with perfboard around
1,084 parts1GPL-3.0