Coming Soon
One Runtime. Three Surfaces.

How CANsole fits together.

A portable C++ core, platform adapters, and control surfaces. Same runtime on the desktop, on the touchscreen, and in the wire.

Architecture Overview

A shared core, three platform shapes.

Studio, Touch and ECUconnect are not three separate codebases. They are the same runtime running on different hosts, with different platform adapters and different control surfaces on top.

Control Surfaces Studio GUI · Touch UI · CLI · Remote clients
Portable C++ Core ECU model · bus model · diagnostic protocols · transport · presets · service state machines
Desktop Adapter SocketCAN · gs_usb · TouCAN · native UI
ESP-IDF Adapter TWAI · MCP251XFD · LVGL · Wi-Fi services
ECUconnect Adapter Adapter HW · TCP/UDP services · identity · storage
Design Principles

Six rules that hold the platform together.

Portable core

The ECU model, bus model, diagnostic protocols, transport stack and service state machines live in a portable C++ core with no platform dependencies.

Platform code in adapters

Desktop, ESP-IDF, ECUconnect, CAN backends, logging, storage, timers, networking — everything platform-specific lives in clearly bounded adapter layers.

UIs are control surfaces

The GUI is not the runtime. Studio, the Touch UI and any remote client are coequal control surfaces over the same headless runtime.

Remote control by default

Remote control is a foundational concept, not a late addition. Every node can be driven by another node.

Standalone matters

Touch and ECUconnect can run without a host. Standalone operation is a real first-class mode — but it doesn’t replace the remote architecture.

Visible, loggable TX

Anything that can transmit on a real bus must be explicit, visible and loggable. No silent or hidden transmissions, anywhere in the stack.

Origins

Built on years of CAN and ECU work.

CANsole isn’t a from-scratch effort. It pulls together threads from several existing projects, each contributing a different slice of competence.

ESPenlaub

The C++/ESP32 base library — hardware abstractions, FreeRTOS helpers, TCP console, diagnostic commands, TWAI and MCP251XFD bindings.

CAN Cockpit

Touch and display-oriented CAN monitoring, patterns, status overlays and quick bench workflows.

ECUconnect / ECOS

Adapter firmware and remote-control concept for CAN/diagnostic interfaces, TCP-based control and headless nodes.

ECUmulator

ECU simulation, OBD/UDS/KWP logic, virtual CAN buses, TCP/UDP services and the preset/bundle runtime model.

The architecture is the product.

Three product forms work because of the architecture, not in spite of it. The shared runtime is what makes Studio, Touch and ECUconnect feel like one platform instead of three.