Skip to content

Instantly share code, notes, and snippets.

@MorGuux
Last active April 2, 2025 01:21
Show Gist options
  • Save MorGuux/3243a399138ff829aa4c03be4e4af136 to your computer and use it in GitHub Desktop.
Save MorGuux/3243a399138ff829aa4c03be4e4af136 to your computer and use it in GitHub Desktop.
BMW E90 KCAN Notes

CAN structure

[Message ID] [Module ID] [Length] [Data1] [Data2] ... [Data n] [Checksum]

Message ID

0x6F1: Send request from diag scanner

0x612: Response from JBE (OBD2 firewall)

Module IDs

0x12: DME (ECU)

0x60: KOMBI (instrument cluster)

complete list available here

Data Length (data bytes + checksum)

Data bytes

0x0547: Coolant temperature

0x0458: Oil temperature (may match coolant temp due to lack of sensor on N47)

0x01F4: Boost pressure (target)

0x076D: Boost pressure (actual)

complete list available here

XOR Checksum

XOR checksum of all bytes in message (module ID + length + data bytes)

DS2 Packet structure

[Address] [Length] [Data1] [Data2] ... [Data n] [Checksum]

[Address]: Address of the computer being queried.

[Length]: Total number of bytes in the message (in hex).

[Data]: One or more bytes which comprise either the command (from you) or the response (from the computer).

[Checksum]: XOR checksum, based on all of the preceding bytes. This serves as basic error correction.

Credits

http://markgardnergibson.com/BMW/protocol.html

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