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.