ELM327

The ELM327 is a programmed microcontroller produced for translating the on-board diagnostics (OBD) interface found in most modern cars.

While in business, ELM Electronics also sold other variants of the product, with slightly different part numbers, which implemented only a subset of the OBD protocols.

[1] The ELM327 abstracts the low-level protocol and presents a simple interface that can be called via a UART, typically by a hand-held diagnostic tool or a computer program connected by USB, RS-232, Bluetooth or Wi-Fi.

Consequently, anyone who had bought a genuine ELM327-v1.4 could use a device programmer to read ELM's proprietary microcontroller firmware as a binary blob.

v1.1 – Introduced Programmable Parameters – Added Flow Control commands v1.2 – RS232 baud rates are adjustable to 500 kbit/s – Programmable Parameters can be reset with a jumper – Introduced Adaptive Timing – Added SAE J1939 support (protocol A) – Added user defined CAN protocols B and C – Modified KWP protocols to allow four byte headers v1.2a – Changed error detection to catch KWP 4 byte headers if no data or checksum – Added check to prevent CAN mask corruption on certain Flow Control sends v1.3 – Adaptive Timing tuned a little differently – Several J1939 improvements – New CAN CRA commands to help setting masks and filters – New CAN D0/D1 commands for printing of message dlc – New CAN RTR command for sending same – Added space character control in responses – New STOPPED message for user interrupts during searches – Introduced LV RESET message for resets from low voltage – New @2 and @3 commands for storing of unique identifier – Added ability to state the number of responses desired v1.3a (still available) – Added wiring checks for when the J1962 CAN pins are used for other functions v1.4 – Added Low Power mode (‘sleep’ function) – Added extended addressing mode for CAN protocols – Added 4800 baud ISO 9141 and ISO 14230 support – Allow manual control over ISO 9141 and ISO 14230 initiation – Provided a single EEPROM byte for user data storage – All interrupts now say STOPPED (not just when searching) – Many new Programmable Parameters and additions v1.4a Elm Electronics never made a v1.4a v1.4b (no longer available) – New CSM command to have active or passive CAN monitoring – New CRA command to quickly reset changed masks and filters – Several SAE J1939 updates v1.5 Elm Electronics never made a v1.5 v2.0 – New Activity Monitor watches OBD pins – Wake from Low Power now retains settings – AT CRAs accept ‘don’t care’s (X’s) – New PP’s provide extensive ISO/KWP control – Increased the RS232 Tx buffer to 512 bytes – Brownout reset voltage reduced to 2.8V v2.1 – Speed increases – Processes ‘Response Pending’ (7F xx 78) replies – CAN searches now measure frequency and require a match v2.2 – AT CS command now shows CAN frequency – Added 12500 and 15625 bit/s ISO/KWP baud rates – New AT CER hh command allows defining the CEA Rx address – New IFR modes 4,5,6 control J1850 IFR sending while monitoring – Added PP 1F to allow KWP length to include the checksum byte – Increased PP19 from 31 to 4F v2.3 (latest release) – New AT FT command adds another layer of filtering – Added three CAN Flow Control modes for experimenters – Response Pending now works with CAN Extended Addressing – New AT IA, and C0/C1 commands – Better noise tolerance on RS232 Rx Slightly more detailed changes may be viewed in their latest datasheet in the Version History chapter (pag.

Typical cheap ELM327 copy without label on the controller