Skip to the content
PCBKitNew board
2 layers55 × 54 mmUSB CDC, the printed circuit board in 3D

A bare-metal thermal printer controller that receives data over USB-CDC, processes it using a custom serial protocol (TSIP), and prints text and images on an RP203 thermal printer.

Size
55 × 54 mm
Copper layers
2
Thickness
1.6 mm
Parts
35
Nets
55
Pads
149
Tracks, vias
272, 17
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
17 Jun 2026
Updated
21 Aug 2026

Overview

USB CDC is an open-source printed circuit board by addy123d, from the addy123d/USB-CDC repository on GitHub. It is a 2-layer board of 55 × 54 mm with 35 parts on 55 nets, routed with 272 tracks and 17 vias.

It is built around the LM1117DT-3.3. Its parts include 12 capacitors, 7 resistors, 6 connectors, 2 ICs and 2 diodes. It belongs with the STM32 boards of this library.

Main components

1

README

Readme.md

USB-PRINTER — Bare-Metal Thermal Printer Controller

Author: Aditya Chaudhary
Date: July 2026
Status: ✅ Complete


Overview

A bare-metal thermal printer controller that receives data over USB-CDC, processes it using a custom serial protocol (TSIP), and prints text and images on an RP203 thermal printer. Built from scratch on an STM32F103C8T6, with no HAL, no middleware.


Features

  • ✅ USB-CDC communication with PC (bare-metal)
  • ✅ Custom TSIP protocol (Thermal Serial Interface Protocol)
  • ✅ Text and image printing on RP203 thermal printer
  • ✅ UART bridge between USB and printer
  • ✅ Custom PCB design (KiCad)
  • ✅ Bare-metal firmware (no HAL, no libraries)

Hardware

ComponentRole
STM32F103C8T6 (Blue Pill)Main MCU
RP203 Thermal PrinterPhysical output
USB PortPC communication (CDC)
UARTPrinter communication

Firmware Highlights

  • USB enumeration from scratch (bare-metal)
  • CDC (Communication Device Class) implementation
  • TSIP protocol design and implementation
  • Image processing for thermal printing
  • Ring buffer for UART RX (reusable standard)

Gallery

[Add your project images here]


Acknowledgments

To the datasheets, the logic analyzer, and the late-night debugging sessions. And to the friends who kept asking, "What does this printer even do?"


License

This project is open for learning and reference. Use it, break it, improve it.

Parts

35
QtyValueFootprintReferences
6104,0603Capacitor_SMD:C_0603_1608MetricC1, C9, C10, C13, C14, C15
310kResistor_SMD:R_0603_1608MetricR4, R5, R7
210u,0603Capacitor_SMD:C_0603_1608MetricC2, C11
220p,0603Capacitor_SMD:C_0603_1608MetricC5, C6
2510R,THTResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_VerticalR2, R3
2LEDLED_SMD:LED_0805_2012MetricD1, D2
11k5Resistor_SMD:R_0603_1608MetricR6
11uCapacitor_SMD:C_0603_1608MetricC7
122kResistor_SMD:R_0603_1608MetricR8
122uf,THTCapacitor_THT:C_Radial_D6.3mm_H5.0mm_P2.50mmC12
1Crystal_GND24Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSolderingY1
1DEBUG UARTConnector:FanPinHeader_1x04_P2.54mm_VerticalJ3
1GPIOConnector:FanPinHeader_1x04_P2.54mm_VerticalJ6
1LM1117DT-3.3Package_TO_SOT_SMD:TO-252-3_TabPin2U2
1LOGOLOGOG***
1MountingHoleMountingHole:MountingHole_3.2mm_M3H2
1PRINTER UARTConnector:FanPinHeader_1x04_P2.54mm_VerticalJ4
1PR_TXMountingHole:MountingHole_2.2mm_M2_DIN965_PadH1
1STM32F103C8TxPackage_QFP:LQFP-48_7x7mm_P0.5mmU1
1SWDConnector:FanPinHeader_1x04_P2.54mm_VerticalJ2
1SW_PushButton_Switch_THT:SW_PUSH-12mmSW1
1Screw_Terminal_01x02TerminalBlock:TerminalBlock_Xinya_XY308-2.54-2P_1x02_P2.54mm_HorizontalJ5
1SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP1
1USB_B_MicroConnector_USB:USB_Micro-B_Amphenol_10118194_HorizontalJ1

Questions

How big is the USB CDC PCB?

It measures 55 × 54 mm and has 2 copper layers, 1.6 mm thick.

What parts does the USB CDC use?

35 parts, built around the LM1117DT-3.3. 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 USB CDC KiCad files?

From the addy123d/USB-CDC repository on GitHub, at the commit this page was made from: the board is pcb/main/main.kicad_pcb and its schematic pcb/main/main.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the USB CDC design in my own project?

Its repository states no licence, so its author keeps all rights: ask addy123d before reusing the design.

Similar boards

  • 2 layers78 × 84 mmLC meter, the printed circuit board in 3D

    LC meter

    schuyler4/LCR_Meter

    An LCR meter design.

    93 parts6MIT
  • 2 layers55 × 55 mmControlBoard, the printed circuit board in 3D

    ControlBoard

    Deni90/singleDigitNixieClock

    A small project that combines ESP32 with a vintage Soviet Nixie tube from the 70’ to create an artistic clock. Originally developed on ESP8266/Arduino, now evolved to ESP32 with ESP-IDF for greater performance and…

    39 parts5MIT
  • 2 layers139.7 × 114.3 mmSelf balancing robot, the printed circuit board in 3D

    Self balancing robot

    K0nradG/self-balancing-robot

    Self-balancing robot powered by nRF52840 and Zephyr RTOS, with BLE control, OTA updates, and a Raspberry Pi camera interface designed for future autonomous navigation.

    36 parts4Apache-2.0
  • 2 layers99.8 × 60.2 mmIrrigation IoT, the printed circuit board in 3D

    Irrigation IoT

    VictorRavani/Irrigation_IoT

    This project covers the complete development of Hardware and Firmware for IoT-based supervisory control. It offers all the necessary information and resources so that anyone can set up the system independently.

    79 parts4MIT
  • 4 layers70 × 70 mmInverter KiCAD, the printed circuit board in 3D

    Inverter KiCAD

    AresEnsea/2425_Projet2A_AresCFR

    Ce repository GitHub regroupe l'ensemble des projets & documents réalisés par l'association Ares pour la Coupe de France de Robotique 2025

    104 parts3
  • 2 layers87.6 × 63.2 mmTip Etcher, the printed circuit board in 3D

    Tip Etcher

    KN-NaMi/Tip-Etcher

    Tip Etcher

    89 parts3
  • 4 layers100 × 40 mmVESX, the printed circuit board in 3D

    VESX

    NormalHuman-Anything/VESX

    V(ESC)ESX

    183 parts3CERN-OHL-W-2.0
  • 4 layers60 × 60 mmPojet 1A, the printed circuit board in 3D

    Pojet 1A

    Kennystflr/Lightning-speaker

    Design of the electronic board for a speaker.

    178 parts2