

CAN BUS sniffer
Built a four-layer STM32-based CAN bus sniffer PCB to detect and translate CAN codes from a vehicle
- Size
- 63 × 55 mm
- Copper layers
- 4
- Thickness
- 1.59 mm
- Parts
- 46
- Nets
- 56
- Pads
- 177
- Tracks, vias
- 348, 69
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 29 Jun 2026
- Updated
- 30 Jun 2026
Overview
CAN BUS sniffer is an open-source printed circuit board by dvallemo, from the dvallemo/CANBUS-Sniffer-PCB repository on GitHub. It is a 4-layer board of 63 × 55 mm with 46 parts on 56 nets, routed with 348 tracks and 69 vias.
It is built around the CH340E, SN65HVD230D and CH213K, with the USBLC6-2SC6 among its other parts. Its parts include 17 capacitors, 10 resistors, 6 ICs, 4 connectors and 2 diodes. It belongs with the interfaces and adapters boards and the STM32 boards of this library.
Main components
4CH340E
MSOP-10150uA 20mA 2Mbps 3.3V、5V Transceiver USB 2.0 MSOP-10 USB Converters ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersSN65HVD230D
SOIC-8-40℃~+85℃ 1 17mA 1Mbps 370uA 3V~3.6V CAN Transceiver Low-power mode、Wake-up function、ESD protection、Thermal shutdown protection、Bus fault protection、Hot-swap protection SOIC-8 CAN Transceivers ROHSTexas InstrumentsCAN TransceiversCH213K
SOT-23-32.2V~5.5V 240mV 240mΩ 3.6uA Integrated FET SOT-23-3 ORing Controllers ROHSWCH (Nanjing Qinheng Microelectronics)Power Distribution SwitchesUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)
README
README.mdCANBUS Sniffer PCB
A compact USB-to-CAN Bus interface designed around an STM32F0 microcontroller and a CAN transceiver. This project was built to practice professional PCB design techniques from schematic capture through PCB layout while following industry design practices.
Version: V1.0.0
Features
- USB Type-C Interface
- STM32F0 Microcontroller
- CAN Bus Transceiver
- USB 2.0 Full-Speed Differential Pair
- 3.3V Linear Regulator
- TVS Protection
- Reverse Polarity Protection
- Power LEDs
- CAN Activity LEDs
- SWD Programming Header
- RESET Button
- BOOT Button
- Four Mounting Holes
- Four-Layer PCB
Project Images
PCB Layout with Ground Pours
3D Render with Ground Pours
Schematic
Routed PCB
3D Render
Overview
The goal of this project was to design a complete CAN Bus Sniffer PCB using KiCad while applying professional hardware engineering methodologies.
The board receives power over USB Type-C, regulates the voltage to 3.3V, communicates over a CAN transceiver, and provides an SWD interface for programming and debugging.
Rather than only creating a working PCB, this project focused heavily on layout quality, manufacturability, and signal integrity.
Topics practiced include:
- PCB floorplanning
- Component placement
- USB differential pair routing
- Controlled impedance routing
- Four-layer PCB stackup
- Power distribution
- Ground plane implementation
- Decoupling capacitor placement
- EMI reduction techniques
- Design Rule Checks (DRC)
- Design for Manufacturability (DFM)
- Design for Assembly (DFA)
Hardware Specifications
| Item | Specification |
|---|---|
| Microcontroller | STM32F0 Series |
| CAN Transceiver | SN65HVD230 Compatible |
| USB | USB Type-C (USB 2.0 Full Speed) |
| Input Voltage | 5V USB |
| Output Voltage | 3.3V |
| PCB Layers | 4 |
| PCB Thickness | 1.6 mm |
| USB Routing | Controlled Impedance Differential Pair |
PCB Stackup
Layer 1
- Components
- Signal Routing
- USB Differential Pair
Layer 2
- Solid Ground Plane
Layer 3
- Solid Ground Plane
Layer 4
- Signal Routing
- Power Routing
Using two dedicated internal ground planes provides:
- Continuous return paths
- Reduced EMI
- Improved signal integrity
- Lower ground impedance
- Better high-frequency performance
- Improved power distribution
Engineering Design Decisions
USB Type-C
USB Type-C was selected for modern compatibility and ease of use.
USB CC pull-down resistors were implemented to correctly identify the board as a USB device.
The USB D+ and D− lines were routed as a differential pair using KiCad's differential pair router.
Special attention was given to:
- Matched trace lengths
- Constant spacing
- Controlled impedance
- Minimal discontinuities
- Smooth routing
- Short path between the connector and downstream circuitry
Differential Pair Routing
Although USB Full-Speed is more forgiving than USB High-Speed, the layout follows professional differential routing practices.
Design considerations included:
- Constant differential spacing
- Matched lengths
- 45° bends
- Minimal skew
- No unnecessary vias
- Short routing distance
- Continuous reference plane underneath the pair
Power Architecture
Power flow:
USB Type-C
↓
Protection Circuit
↓
Filtering
↓
3.3V LDO
↓
STM32 + CAN TransceiverWide power traces were used where appropriate to reduce voltage drop and improve current handling.
Power Integrity
Each power pin is locally decoupled with ceramic capacitors placed as close as possible to the corresponding IC supply pins.
This reduces:
- Supply noise
- Voltage ripple
- Transient voltage drops
- EMI
Grounding Strategy
The board utilizes:
- Layer 2 Solid Ground Plane
- Layer 3 Solid Ground Plane
- Top Ground Pour
- Bottom Ground Pour
- Ground stitching vias
This creates low-impedance return paths and improves signal integrity throughout the design.
The exposed thermal pad underneath the STM32 is connected directly into the internal ground planes through a thermal via.
CAN Interface
The CAN transceiver converts the MCU CAN peripheral into differential CANH and CANL signals suitable for automotive communication.
The layout emphasizes:
- Short routing
- Clean return paths
- Differential signaling
- Noise immunity
Crystal Oscillator
The crystal and its load capacitors were placed immediately adjacent to the MCU oscillator pins.
This minimizes:
- Loop area
- EMI susceptibility
- Clock jitter
Component Placement
Components were grouped by function:
USB Section
- USB Connector
- ESD Protection
- CC Resistors
Power Section
- Protection
- LDO
- Filtering
- LEDs
CAN Section
- CAN Connector
- CAN Transceiver
- Termination Components
MCU Section
- STM32
- Crystal
- Decoupling
- Programming Header
Keeping functional blocks together improves routing quality and simplifies debugging.
PCB Design Practices
The layout follows several common PCB design guidelines:
- Functional component grouping
- Short decoupling connections
- Short crystal routing
- Controlled impedance USB routing
- Wide power traces
- Ground stitching
- Clean routing
- Minimal unnecessary vias
- Four-layer stackup
- Continuous reference planes
- Full Design Rule Check verification
Software Used
- KiCad 9
- STM32CubeMX
- STM32CubeIDE
Current Status
- ✅ Schematic Complete
- ✅ PCB Layout Complete
- ✅ Four-Layer PCB
- ✅ USB Differential Pair Routed
- ✅ Ground Planes Implemented
- ✅ Design Rule Check Passed
- ✅ 3D Model Generated
- ✅ GitHub Documentation Complete
Future Improvements
- PCB Manufacturing
- Board Bring-up
- Firmware Development
- USB CDC Interface
- CAN Frame Decoder
- Desktop GUI
- Oscilloscope Validation
- Enclosure Design
Lessons Learned
This project provided hands-on experience with:
- USB Type-C hardware implementation
- Controlled impedance routing
- Differential pair routing
- Four-layer PCB stackups
- Ground plane design
- Decoupling strategies
- CAN Bus hardware
- STM32 hardware design
- PCB floorplanning
- PCB routing techniques
- Power integrity
- Signal integrity
- Design Rule Checks
- Design for Manufacturability
- Design for Assembly
- Professional hardware documentation using GitHub
Repository Structure
CANBUS-Sniffer-PCB/
│
├── README.md
├── LICENSE
│
├── Hardware/
│ ├── CAN_BUS_sniffer.kicad_pro
│ ├── CAN_BUS_sniffer.kicad_sch
│ ├── CAN_BUS_sniffer.kicad_pcb
│ └── ...
│
├── images/
│ ├── schematic.png
│ ├── pcb_layout.png
│ ├── pcb_layout_w_gndpours.png
│ ├── pcb_3d.png
│ └── pcb_3d_w_gndpours.png
│
├── Manufacturing/
│
└── Firmware/License
This project is released under the MIT License.
Designed by David Valle
Electrical Engineer | PCB Design | Embedded Systems
Parts
46| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 100n | Capacitor_SMD:C_0603_1608Metric | C3, C4, C5, C6, C10, C15 |
| 6 | 22u | Capacitor_SMD:C_0603_1608Metric | C11, C12, C13, C14, C16, C17 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_ISO7380 | H1, H2, H3, H4 |
| 2 | 18p | Capacitor_SMD:C_0603_1608Metric | C7, C8 |
| 2 | 2u2 | Capacitor_SMD:C_0603_1608Metric | C2, C9 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R3, R4 |
| 2 | 60.4 | Resistor_SMD:R_0603_1608Metric | R6, R7 |
| 2 | Conn_01x03_Pin | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J3, J4 |
| 2 | GREEN | LED_SMD:LED_0603_1608Metric | D1, D2 |
| 2 | R | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | SW_SPST | Button_Switch_SMD:SW_SPST_EVQP0 | SW1, SW2 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric | R8 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R10 |
| 1 | 2k | Resistor_SMD:R_0603_1608Metric | R9 |
| 1 | 4u7 | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 8MHz | Crystal:Crystal_SMD_1210-4Pin_1.2x1.0mm | Y1 |
| 1 | CH213k | Package_TO_SOT_SMD:TSOT-23 | U4 |
| 1 | CH340E | Package_SO:MSOP-10_3x3mm_P0.5mm | U5 |
| 1 | Conn_01x03_Socket | Connector_JST:JST_PH_S3B-PH-K_1x03_P2.00mm_Horizontal | J2 |
| 1 | HT75xx-1-SOT89 | Package_TO_SOT_SMD:SOT-89-3 | U6 |
| 1 | SN65HVD230 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U2 |
| 1 | STM32F042K6Ux | Package_DFN_QFN:QFN-32-1EP_5x5mm_P0.5mm_EP3.45x3.45mm | U1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U3 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |
Similar boards
- 2 layers28.5 × 12.3 mm

- 6 layers100 × 60 mm

- 2 layers100 × 86 mm

- 2 layers149.2 × 82.5 mm

- 4 layers80 × 80 mm

- 2 layers35 × 42 mm

AstroUniBoard
xlazam01/AstroUniBoard
STM32G0B1-based telescope focuser/rotator controller — OnStepX firmware port + KiCad PCB
146 parts1GPL-3.0 - 4 layers50 × 73 mm

- 2 layers31.8 × 74.2 mm

Questions
How big is the CAN BUS sniffer PCB?
It measures 63 × 55 mm and has 4 copper layers, 1.59 mm thick.
What parts does the CAN BUS sniffer use?
46 parts, built around the CH340E, SN65HVD230D, CH213K and USBLC6-2SC6. 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 CAN BUS sniffer KiCad files?
From the dvallemo/CANBUS-Sniffer-PCB repository on GitHub, at the commit this page was made from: the board is CAN_BUS_sniffer.kicad_pcb and its schematic CAN_BUS_sniffer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the CAN BUS sniffer design in my own project?
Its repository states no licence, so its author keeps all rights: ask dvallemo before reusing the design.