ELM327

Last updated

The ELM327 is a programmed microcontroller produced for translating the on-board diagnostics (OBD) interface found in most modern cars. The ELM327 command protocol is one of the most popular PC-to-OBD interface standards and is also implemented by other vendors.

Contents

The original ELM327 was implemented on the PIC18F2480 microcontroller from Microchip Technology.

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.

In June 2020, ELM Electronics announced it was closing the business in June 2022. [1]

Uses

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. [2] New applications include smartphones. [3]

There are a large number of programs available that connect to the ELM327. [4] [5]

The function of such software may include supplementary vehicle instrumentation, reporting and clearing of error codes.

ELM327 Functions:

Protocols supported

The protocols supported by ELM327 are: [6]

Command set

The ELM327 command set [7] [8] is similar to the Hayes AT commands.

Other versions

Typical cheap ELM327 copy without label on the controller Elm327 clone.jpg
Typical cheap ELM327 copy without label on the controller

The ELM327 is a PIC microcontroller that has been customized with ELM Electronics' proprietary code that implements the testing protocols. When ELM Electronics sold version 1.0 of its ELM327, it did not enable the copy protection feature of the PIC microcontroller. Consequently, anyone who had bought a genuine ELM327-v1.0 could use a device programmer to read ELM's proprietary microcontroller firmware as a binary blob. Pirates could trivially produce an ELM327 clone by purchasing the same microcontroller chip and programming it with the copied blob. [9] [10] ELM327 copies were widely sold in devices claiming to contain an ELM327 device, and problems have been reported with the copies. [11] The problems reflect bugs that were present in ELM's version 1.0 microcode; those making the clones may continue to sell the old version.

Although these copies may contain the ELM327 v1.0 code, they may falsely report the version number as the current version provided by the genuine ELM327, and in some cases report an as-yet non-existent version. [12] Released software versions for the ELM327 are 1.0, 1.0a, 1.1, 1.2, 1.2a, 1.3, 1.3a, 1.4, 1.4b, 2.0, 2.1, 2.2 and 2.3 only. [13] The actual functions of these copies are nonetheless limited to the functions of the original ELM327 v1.0, with their inherent deficiencies.

Version outline

v1.0 Initial public release, the ELM327 v1.0 supported: – SAEJ1850 PWM and VPW,- – ISO 9141-2 (10.4 and 9.6 kbit/s), – ISO 14230-4 (10.4 and 9.6 kbit/s), – ISO 15765-4 CAN (250 and 500 kbit/s)- The RS232 baud rates were only 9.6 kbit/s or 38.4 kbit/s

v1.0a – J1850 VPW timing adjustment for some ’99 – ’00 GM trucks.

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. 94-95). [14]

See also

Related Research Articles

<span class="mw-page-title-main">AVR microcontrollers</span> Family of microcontrollers

AVR is a family of microcontrollers developed since 1996 by Atmel, acquired by Microchip Technology in 2016. These are modified Harvard architecture 8-bit RISC single-chip microcontrollers. AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other microcontrollers at the time.

<span class="mw-page-title-main">I²C</span> Serial communication bus

I2C (Inter-Integrated Circuit; pronounced as “eye-squared-see” or “eye-two-see”), alternatively known as I2C or IIC, is a synchronous, multi-controller/multi-target (historically-termed as master/slave), single-ended, serial communication bus invented in 1982 by Philips Semiconductors. It is widely used for attaching lower-speed peripheral ICs to processors and microcontrollers in short-distance, intra-board communication.

A controller area network is a vehicle bus standard designed to allow microcontrollers and devices to communicate with each other. It is a message-based protocol, designed originally for multiplex electrical wiring within automobiles to save on copper, but it can also be used in many other contexts. For each device, the data in a frame is transmitted serially but in such a way that if more than one device transmits at the same time, the highest priority device can continue while the others back off. Frames are received by all devices, including by the transmitting device.

A vehicle bus is a specialized internal communications network that interconnects components inside a vehicle. In electronics, a bus is simply a device that connects multiple electrical or electronic devices together. Special requirements for vehicle control such as assurance of message delivery, of non-conflicting messages, of minimum time of delivery, of low cost, and of EMF noise resilience, as well as redundant routing and other characteristics mandate the use of less common networking protocols. Protocols include Controller Area Network (CAN), Local Interconnect Network (LIN) and others. Conventional computer networking technologies are rarely used, except in aircraft, where implementations of the ARINC 664 such as the Avionics Full-Duplex Switched Ethernet are used. Aircraft that use AFDX include the B787, the A400M and the A380. Trains commonly use Ethernet Consist Network (ECN). All cars sold in the United States since 1996 are required to have an On-Board Diagnostics connector, for access to the car's electronic controllers.

Society of Automotive Engineers standard SAE J1939 is the vehicle bus recommended practice used for communication and diagnostics among vehicle components. Originating in the car and heavy-duty truck industry in the United States, it is now widely used in other parts of the world.

LIN is a network protocol used for communication between components in modern vehicles. It is a low-cost single-wire serial protocol that supports communications up to 19.2 Kbit/s with a maximum bus length of 40 metres (131.2 ft).

RV-C is a communications protocol based on the Controller Area Network bus. The protocol is used in recreation vehicles to allow house and chassis components to communicate. RV-C is used for control, coordination, and diagnostics, in a multi-vendor environment.

<span class="mw-page-title-main">On-board diagnostics</span> Automotive engineering terminology

On-board diagnostics (OBD) is a term referring to a vehicle's self-diagnostic and reporting capability. In the United States, this self-diagnostic is a requirement to comply with Federal Emissions standards to detect failures that may increase the vehicle tailpipe emissions to more than 150% of the standard to which it was originally certified.

<span class="mw-page-title-main">ISO 11783</span> Computer network protocol

ISO 11783, known as Tractors and machinery for agriculture and forestry—Serial control and communications data network is a communication protocol for the agriculture industry based on, and harmonized with, the SAE J1939 protocol.

CANopen is a communication protocol and device profile specification for embedded systems used in automation. In terms of the OSI model, CANopen implements the layers above and including the network layer. The CANopen standard consists of an addressing scheme, several small communication protocols and an application layer defined by a device profile. The communication protocols have support for network management, device monitoring and communication between nodes, including a simple transport layer for message segmentation/desegmentation. The lower level protocol implementing the data link and physical layers is usually Controller Area Network (CAN), although devices using some other means of communication can also implement the CANopen device profile.

OBD-II PIDs are codes used to request data from a vehicle, used as a diagnostic tool.

ccTalk is a serial protocol in widespread use throughout the money transaction and point-of-sale industry. Peripherals such as the currency detectors for coins and banknotes found in a diverse range of automatic payment equipment such as transportation, ticketing, payphones, amusement machines, and retail cash management use ccTalk to talk to the host controller. The ccTalk protocol is an open standard.

OBDuino is an open source trip computer design based on the Arduino platform. An OBDuino may be assembled and customised by an electronics hobbyist; it displays information such as instantaneous fuel economy, engine tuning parameters etc. on an LCD.

Keyword Protocol 2000, abbreviated KWP2000, is a communications protocol used for on-board vehicle diagnostics systems (OBD). This protocol covers the application layer in the OSI model of computer networking. The protocol is standardized by International Organization for Standardization as ISO 14230.

<span class="mw-page-title-main">CANape</span> Software tool by Vector Informatik

CANape is a software tool from Vector Informatik. This development software, widely used by OEMs and ECU suppliers of automotive industries is used to calibrate algorithms in ECUs at runtime.

ISO 15765-2, or ISO-TP (Transport Layer), is an international standard for sending data packets over a CAN-Bus. The protocol allows for the transport of messages that exceed the eight byte maximum payload of CAN frames. ISO-TP segments longer messages into multiple frames, adding metadata (CAN-TP Header) that allows the interpretation of individual frames and reassembly into a complete message packet by the recipient. It can carry up to 232-1 (4294967295) bytes of payload per message packet starting from the 2016 version. Prior version were limited to a maximum payload size of 4095 bytes.

debugWIRE is a serial communications protocol, designed by Atmel. It is used for on-chip debugging of AVR microcontrollers.

<span class="mw-page-title-main">PowWow</span>

PowWow is a wireless sensor network (WSN) mote developed by the Cairn team of IRISA/INRIA. The platform is currently based on IEEE 802.15.4 standard radio transceiver and on an MSP430 microprocessor. Unlike other available mote systems, PowWow offers specific features for a very-high energy efficiency:

Unified Diagnostic Services (UDS) is a diagnostic communication protocol used in electronic control units (ECUs) within automotive electronics, which is specified in the ISO 14229-1. It is derived from ISO 14230-3 (KWP2000) and the now obsolete ISO 15765-3. 'Unified' in this context means that it is an international and not a company-specific standard. By now this communication protocol is used in all new ECUs made by Tier 1 suppliers of Original Equipment Manufacturer (OEM), and is incorporated into other standards, such as AUTOSAR. The ECUs in modern vehicles control nearly all functions, including electronic fuel injection (EFI), engine control, the transmission, anti-lock braking system, door locks, braking, window operation, and more.

CAN FD is a data-communication protocol used for broadcasting sensor data and control information on 2 wire interconnections between different parts of electronic instrumentation and control system. This protocol is used in modern high performance vehicles.

References

  1. "ELM Electronics Homepage". Archived from the original on 11 June 2020. Retrieved 12 July 2021. ...we have decided to wind down our business, and close it effective June 2022.
  2. Miller, Tim (8 August 2021). "Bluetooth WIFI USB ELM327 Adapters". OBD Advisor. Retrieved 22 November 2021.
  3. Miller, Tim (15 September 2021). "ELM327 Apps for Android/iOS". OBD Advisor. Retrieved 22 November 2021.
  4. Miller, Tim (31 October 2021). "ELM327 Software for PC". OBD Advisor.
  5. "ELM327 Compatible Software" . Retrieved 15 December 2020.
  6. "ELM Electronics". ELM Electronics.
  7. "ELM327 AT Commands" (PDF). ELM Electronics. Archived from the original (PDF) on 27 February 2012. Retrieved 6 May 2012.
  8. "ELM327 v2.2 OBD to RS232 Interpreter" (PDF). ELM Electronics. Retrieved 15 January 2018.
  9. "83427-elm327-usb-vehicle-obd-2-scanner-tool". Priuschat forum. Retrieved 6 May 2012.[ dubious ]
  10. "ebay ELM327 mini guide". User review. eBay. Retrieved 6 May 2012.[ dubious ]
  11. "Why you shouldn't buy an Elm327 Clone". Scantool. Retrieved 6 May 2012.
  12. "ELM327 Product Information". ELM Electronics.
  13. "ELM327 SW versions". ELM Electronics. Retrieved 28 May 2020.
  14. "The ELM327 v2.3 data sheet" (PDF). ELM Electronics. Retrieved 28 May 2020.