Version 1.0

OpenECU Specification

YAML-based specifications for ECU adapters and CAN protocols.

Content Types

Adapters

.adapter.yaml

Log file format definitions that map vendor-specific channels to canonical identifiers.

Protocols

.protocol.yaml

CAN Bus message and signal definitions with DBC export support.

Common Structure

All content types share these root-level fields:

FieldDescriptionRequired
openecuallianceSpec version (currently "1.0")
typeContent type: adapter or protocol
idUnique identifier (lowercase, hyphens)
nameHuman-readable display name
versionSemantic version (e.g., 1.0.0)
vendorECU vendor or manufacturer
descriptionDetailed description
websiteURL for more information
brandingLogo, icon, colors
metadataAuthor, license, changelog

Example Adapter

yaml
openecualliance: "1.0"
type: adapter
id: haltech-nsp
name: "Haltech NSP"
version: "1.0.0"
vendor: haltech
description: "Haltech NSP CSV log format"
website: "https://haltech.com"

branding:
  logo: haltech-logo.svg
  color_primary: "#FFBE1A"

file_format:
  type: csv
  delimiter: ","
  header_row: 0
  data_start_row: 1

channels:
  - id: rpm
    name: "Engine RPM"
    category: engine
    data_type: float
    unit: rpm
    source_names:
      - "Engine RPM"
      - "RPM"

Canonical Channel IDs

Standardized identifiers for common ECU channels. Use these in adapters for cross-format compatibility.

rpmEngine RPM
tpsThrottle Position
mapManifold Absolute Pressure
coolant_tempCoolant Temperature
iatIntake Air Temperature
afrAir-Fuel Ratio
lambdaLambda
boostBoost Pressure
battery_voltageBattery Voltage
vehicle_speedVehicle Speed
ignition_advanceIgnition Timing
duty_cycleInjector Duty Cycle

View full list

Units Reference

Temperature

celsiusfahrenheitkelvin

Pressure

kpapsibarmbar

Speed

rpmkphmph

Ratio

afrlambdapercent

Time

secondsmilliseconds

Electrical

voltsamps

Validation

Validate your YAML files against the JSON Schema:

bash
# Using ajv-cli (Node.js)
npx ajv-cli validate -s schema/adapter.schema.json -d your-adapter.yaml

# Using check-jsonschema (Python)
check-jsonschema --schemafile schema/adapter.schema.json your-adapter.yaml