Version 1.0
OpenECU Specification
YAML-based specifications for ECU adapters and CAN protocols.
Content Types
Common Structure
All content types share these root-level fields:
| Field | Description | Required |
|---|---|---|
openecualliance | Spec version (currently "1.0") | |
type | Content type: adapter or protocol | |
id | Unique identifier (lowercase, hyphens) | |
name | Human-readable display name | |
version | Semantic version (e.g., 1.0.0) | |
vendor | ECU vendor or manufacturer | |
description | Detailed description | |
website | URL for more information | |
branding | Logo, icon, colors | |
metadata | Author, 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 RPMtpsThrottle PositionmapManifold Absolute Pressurecoolant_tempCoolant TemperatureiatIntake Air TemperatureafrAir-Fuel RatiolambdaLambdaboostBoost Pressurebattery_voltageBattery Voltagevehicle_speedVehicle Speedignition_advanceIgnition Timingduty_cycleInjector Duty CycleUnits 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