Skip to content

Instantly share code, notes, and snippets.

@MorGuux
Last active November 20, 2024 18:54
Show Gist options
  • Save MorGuux/78ac24deb4b7c2931f410df49d34c935 to your computer and use it in GitHub Desktop.
Save MorGuux/78ac24deb4b7c2931f410df49d34c935 to your computer and use it in GitHub Desktop.
BMW E90 KCAN Notes

CAN structure

Message ID Module ID Data Length Data Bytes Checksum Description
0x6F1 0x60 0x05 0x30 0x20 0x06 0x12 0x3B 0x5A Speedo Gauge 100%
0x6F1 0x60 0x05 0x30 0x20 0x06 0x09 0x1D 0x67 Speedo Gauge 50%
0x6F1 0x60 0x03 0x30 0x20 0x00 0x73 Speedo Gauge Reset
0x6F1 0x60 0x05 0x30 0x21 0x06 0x12 0x3B 0x5B Tacho Gauge 100%
0x6F1 0x60 0x05 0x30 0x21 0x06 0x09 0x1D 0x66 Tacho Gauge 50%
0x6F1 0x60 0x03 0x30 0x21 0x00 0x72 Tacho Gauge Reset
0x6F1 0x60 0x05 0x30 0x22 0x06 0x07 0x08 0x7E Fuel Gauge 100%
0x6F1 0x60 0x05 0x30 0x22 0x06 0x03 0x84 0xF6 Fuel Gauge 50%
0x6F1 0x60 0x03 0x30 0x22 0x00 0x71 Fuel Gauge Reset
0x6F1 0x60 0x05 0x30 0x23 0x06 0x07 0x08 0x7F Oil/Eco Gauge 100%
0x6F1 0x60 0x05 0x30 0x23 0x06 0x03 0x84 0xF7 Oil/Eco Gauge 50%
0x6F1 0x60 0x03 0x30 0x23 0x00 0x70 Oil/Eco Gauge Reset

Illuminate indicator LED(s) (turn signals)

led_mask:

0b00000001: Left

0b00000010: Right

0b00000011: Both (Left | Right)

can_send(0x6F1, 0x60, 0x05, 0x30, 0x2B, 0x06, led_mask, 0x04, 0x00);

Reset indicator LEDs (turn signals)

can_send(0x6F1, 0x60, 0x03, 0x30, 0x2B, 0x00, 0x00, 0x00, 0x00);

Control cluster gauge (overriding existing KCAN control from DME)

gauge_id:

0x20: Speedo

0x21: Tacho (RPM)

0x22: Fuel

0x23: Oil / Econometer

msb/lsb:

value: gauge steps

msb: highByte(value)

lsb: lowByte(value)

Gauge steps:

Fuel/Oil: 1800

Tacho/Speedo: 4667

can_send(0x6F1, 0x60, 0x05, 0x30, gauge_id, 0x06, msb, lsb, 0xFF);

Reset cluster gauge (return control back to DME)

can_send(0x6F1, 0x60, 0x03, 0x30, gauge_id, 0x00, 0xFF, 0xFF, 0xFF);

Credits

kmalinich/dieslg8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment