CAN engineering, explained simply

Learn CAN without the usual confusion.

Clear how-to guides and working examples for CAN bus, J1939, DBC files, Python, C++, XCP, diagnostics, and UDS.

36 guides 24 topics Working code
Back to Product Site
Simple CAN bus diagram with several electronic control units on one network
CAN Basics July 14, 2026

What Is CAN Bus? A Simple Guide for Engineers

Learn what CAN bus is, how CAN messages work, why vehicles use it, and what you need to start reading CAN data.

Simple J1939 network showing CAN IDs, PGNs, SPNs, and source addresses
J1939 July 14, 2026

What Is J1939? A Simple CAN Bus Guide

Learn what SAE J1939 is, where it is used, and how PGNs, SPNs, source addresses, and 29-bit CAN IDs fit together.

J1939 29-bit CAN ID split into priority, PGN, and source address
J1939 July 14, 2026

What Is a PGN in J1939? PGNs and SPNs Explained

Learn what a J1939 PGN is, how to extract it from a 29-bit CAN ID, and how PGNs and SPNs are used to decode heavy-vehicle data.

DBC Utility viewer showing CAN messages and signal definitions
CAN Tools July 14, 2026

What Is a DBC Viewer? How to Read CAN Database Files

Learn what a DBC viewer does, what information a DBC file contains, and how to inspect CAN messages and signals step by step.

Infographic comparing CANalyzer live bus analysis with DBC file inspection in a DBC viewer
CAN Tools July 14, 2026

What Is CANalyzer? CANalyzer vs DBC Viewer

Learn what Vector CANalyzer is used for and how a CAN bus analyzer differs from a focused DBC viewer.

Infographic showing canmatrix converting and checking CAN database files before review in a DBC viewer
CAN Tools July 14, 2026

What Is Canmatrix? Canmatrix vs DBC Viewer

Learn what the Python canmatrix library does, how to convert CAN database files, and when to use canmatrix instead of a visual DBC viewer.

Six-step infographic for wiring, terminating, configuring, listening to, decoding, and safely transmitting on a CAN bus
CAN How-To July 14, 2026

How to Use CAN Bus: A Simple Step-by-Step Guide

Learn how to connect to a CAN bus, set the bitrate, record frames, send a test frame, and decode data with a DBC file.

Infographic showing MCU CAN setup steps and the required transceiver between the controller and CAN_H and CAN_L
CAN Code July 14, 2026

How to Enable CAN Bus in Embedded C Code

Learn the steps to initialize a CAN peripheral, configure bit timing and filters, start CAN, and send a frame from embedded C code.

Infographic showing a Python script using python-can through SocketCAN with physical can0 or virtual vcan0
CAN Code July 14, 2026

CAN Bus Python Example: Send and Receive Messages

Use python-can with SocketCAN to send, receive, filter, and test CAN messages in a small working Python example.

Infographic showing a C++ application sending and receiving CAN frames through a SocketCAN interface
CAN Code July 14, 2026

CAN Bus C++ Example: Send and Receive with SocketCAN

Build a small C++ SocketCAN program that opens can0, sends a CAN frame, waits for a frame, and prints the ID and data.

Infographic showing an XCP master using an A2L file to measure and calibrate an ECU over CAN or Ethernet
XCP July 14, 2026

What Is XCP? ECU Measurement and Calibration Explained

Learn what the XCP protocol is, how it connects calibration tools to ECUs, and how XCP, A2L files, CAN, Ethernet, and UDS differ.

Infographic showing pyXCP requests and responses passing through SocketCAN between Python and an ECU
XCP July 14, 2026

XCP Python Example: Connect to an ECU with pyXCP

Use pyXCP in a simple Python example to connect to an XCP slave over CAN, read the ECU identifier, and inspect connection properties.

Infographic showing a C++ SocketCAN client sending an XCP CONNECT command and receiving a response from an ECU
XCP July 14, 2026

XCP C++ Example: Connect to an ECU over CAN

Build a small Linux C++ SocketCAN example that sends an XCP CONNECT command, waits for the ECU response, and checks the response packet.

Infographic showing an OBD-II engine RPM request, CAN response bytes, and RPM calculation
Diagnostics July 14, 2026

CAN Bus Diagnostics Example: Read Engine RPM with OBD-II

Send a simple read-only OBD-II request over CAN with Python and decode the engine RPM response step by step.

Infographic showing a diagnostic tester exchanging UDS requests and responses with an ECU over ISO-TP and CAN
Diagnostics July 14, 2026

What Is UDS? Unified Diagnostic Services Explained

Learn what UDS diagnostics is, how UDS requests and responses work, and what sessions, DIDs, DTCs, security access, and ISO-TP mean.

Infographic showing UDS requests and responses through a Python client, ISO-TP, SocketCAN, CAN, and an ECU server
Diagnostics July 14, 2026

How to Implement UDS over CAN: Python Client Example

Build a simple UDS client over ISO-TP and SocketCAN, read a VIN DID, handle errors, and understand what the ECU server must implement.

DBC validation workflow with signal checks, mux review, log replay, and release gate
DBC Quality May 22, 2026

How to validate a DBC file before release

A practical DBC validation checklist for CAN and CAN FD teams covering message IDs, signal layouts, scaling, multiplexing, comments, log replay, and release review.

Multiplexed DBC signal layout with mux selector and conditional signal groups
DBC Engineering May 22, 2026

Multiplexed DBC signals explained without the usual confusion

A practical guide to multiplexed DBC messages, mux selector signals, conditional signals, payload reuse, common mistakes, and how to decode mux-heavy CAN data.

CAN error frame and bus-off debugging workflow with SocketCAN diagnostics
CAN Debugging May 22, 2026

CAN error frames and bus-off debugging with SocketCAN

A practical CAN bus troubleshooting guide covering error frames, error counters, error-active, error-passive, bus-off, bitrate mistakes, termination, SocketCAN diagnostics, and recovery.

Python CAN log decoding workflow using python-can, cantools, DBC files, and CSV output
CAN Data Analysis May 22, 2026

Decode CAN logs with python-can and cantools

A practical Python workflow for decoding CAN and CAN FD logs with python-can, cantools, DBC files, unknown-ID handling, timestamps, CSV export, and signal validation.

CAN log format comparison matrix for candump, ASC, BLF, MF4, CSV, and DBC decoding
CAN Logging May 22, 2026

CAN log file formats: candump, ASC, BLF, MF4, and CSV

A practical comparison of CAN log formats including candump logs, Vector ASC, Vector BLF, MF4/MDF, and CSV for replay, storage, DBC decoding, and engineering analysis.

Reverse engineering workflow from raw CAN logs to candidate signals, DBC draft, and validation
CAN Reverse Engineering May 22, 2026

How to create a DBC file from reverse-engineered CAN logs

A careful workflow for reverse engineering CAN signals from raw logs, using stimulus notes, bit-change analysis, candidate signals, scale and offset checks, DBC drafting, and validation.

CAN bus debugging workflow with SocketCAN and command-line tools
CAN Tooling May 22, 2026

How to use candump and can-utils for practical CAN bus debugging

A hands-on SocketCAN and can-utils guide for engineers who need to bring up CAN interfaces, capture traffic with candump, send test frames, filter IDs, and prepare logs for DBC decoding.

CAN bus data logging workflow from raw capture to DBC review
CAN Logging May 22, 2026

How to record CAN bus data without creating useless logs

A field-tested workflow for recording CAN and CAN FD traffic with SocketCAN, candump, timestamps, filters, replay, and DBC decode checks.

DBC signal encoding and decoding from raw CAN bytes to engineering values
DBC Engineering May 22, 2026

How DBC signal encoding and decoding works

A practical explanation of CAN DBC signal start bits, byte order, signedness, scale, offset, multiplexing, and how to encode or decode messages with Python and cantools.

Vehicle network architecture showing LIN sub-buses connected through CAN gateways
Vehicle Networks May 22, 2026

LIN bus for CAN engineers: where it fits and how to think about it

A practical LIN bus guide for engineers who already know CAN, covering master-slave scheduling, LDF files, signals, gateways, diagnostics, and why LIN still appears beside CAN and Ethernet.

Automotive Ethernet backbone connected to CAN, CAN FD, and LIN network branches
Automotive Ethernet May 22, 2026

Automotive Ethernet for CAN engineers

A practical guide to Automotive Ethernet for engineers coming from CAN and CAN FD, covering 100BASE-T1, 1000BASE-T1, gateways, tcpdump, SOME/IP-style thinking, and why Ethernet does not replace every CAN bus.

Automotive DBC tool comparison concept with checklist and workflow icons
Tooling Guide March 14, 2026

Automotive DBC tool alternatives in 2026: how to choose without wasting integration time

A practical decision guide for choosing DBC tooling across desktop, browser, and commercial options based on workflow, validation depth, and ecosystem constraints.

CAN bus and ECU illustration with a highlighted DBC file schema
DBC Fundamentals March 14, 2026

What are DBC files, where are they used, and how teams actually work with them

A practical guide to DBC files in automotive engineering: structure, usage across ECUs, diagnostics and validation workflows, and common mistakes to avoid.

Automotive architecture illustration connecting ARXML, DBC, and XCD or XDD format concepts
Data Formats March 14, 2026

ARXML, XCD/XDD, and DBC: when to use which format in automotive development

A practical format guide for automotive teams working across AUTOSAR configuration, CAN databases, and OEM or toolchain-specific data exchange files.

Illustration of a DBC editor with compare, multiplexer, and CAN FD layout concepts
Release Deep Dive March 14, 2026

DBC Utility v1.0.3 deep dive: what changed and why it matters for real CAN/DBC workflows

A factual breakdown of DBC Utility v1.0.3, including compare modes, multiplexer support, layout visualization, and practical upgrade impact for engineering teams.

Side-by-side DBC comparison workflow illustration with highlighted changes
Workflow Guide March 14, 2026

How to review DBC changes safely with dbcUtility Compare: a practical workflow for engineering teams

A step-by-step guide for using dbcUtility Compare modes to review CAN/DBC changes, reduce regressions, and keep database updates traceable.

Comparison graphic showing CAN, LIN, and Ethernet trade-offs
Why CAN March 14, 2026

Why CAN still matters and where it is better than other vehicle buses

CAN is not newer than Automotive Ethernet, but newer does not always mean better. This guide compares CAN with LIN, FlexRay, and Ethernet in the contexts where engineers actually make architecture decisions.

Illustration comparing the shorter classic CAN frame with the expanded CAN FD frame
CAN FD March 15, 2026

CAN FD explained: why classical CAN had to evolve

CAN FD extends classical CAN without abandoning the familiar ecosystem. Learn what changed in the frame, why payload and bitrate mattered, and when CAN FD is the better choice.

Illustration of a vehicle architecture using central compute with CAN, LIN, and Ethernet branches
Vehicle Networks March 14, 2026

Automotive Ethernet, ECUs, gateways, and the rest of the vehicle network stack

CAN does not live alone. This guide explains how ECUs, gateways, LIN, FlexRay, and Automotive Ethernet coexist inside modern vehicles and why zonal architectures are reshaping the map.

Illustration comparing DBC Utility, commercial suites, and open tooling options
Tool Comparison March 14, 2026

DBC Utility versus other CAN database tools: competitor review and tool-fit guide

A balanced comparison of DBC Utility with CANdb++, BUSMASTER, Kvaser tools, CSS Electronics' DBC editor, and SavvyCAN, with advantages and disadvantages for both sides.