Skip to content

ilicmiljan/open-can-controller

Open CAN Controller

Build Firmware Build Configurator GitHub Release License: GPL v3 License: CERN OHL-S v2

Open-source CAN bus controller for BMW E9X vehicles. Controls instrument cluster gauges via the K-CAN bus using the KWP2000 diagnostic protocol.

Standard Module V2

Repository Structure

firmware/       PlatformIO firmware (Arduino/AVR + STM32)
hardware/
  avr/          KiCad PCB design — Standard Module V1 (ATmega328P)
  stm32/        KiCad PCB design — Standard Module V2 (STM32)
configurator/   Web-based configuration app (React + TypeScript)

Features

  • Needle sweep on ignition (speedo, tacho, fuel, oil temp, cruise control)
  • Coolant temperature display on cruise control or oil temp gauge
  • Runtime config menu — cluster variant, coolant gauge type, button assignment
  • Automatic DTC clear on ignition
  • CAN bus-off detection and recovery
  • Web configurator for device setup over USB

Hardware

Two PCB revisions are available under hardware/:

Module MCU Status
Standard Module V1 ATmega328P (Arduino Nano) Stable
Standard Module V2 STM32 Stable

Getting Started

See the README in each subdirectory:

License

Free for personal and open-source use. Commercial use in closed-source products requires a separate written agreement — contact hello@miljanilic.com.

Trademark Notice

BMW, E9X, and related model designations are registered trademarks of BMW AG. This project is not affiliated with, endorsed by, or sponsored by BMW AG or any of its subsidiaries. The use of these names is solely for the purpose of identifying the compatible vehicle hardware and is purely descriptive in nature.

About

Open-source CAN bus controller for BMW E9X instrument clusters (Firmware + PCB)

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors