ISO 9141 (non-OBD) protocol over ELM 327

1k views Asked by At

I am looking for a way to program various ECUs in a 2005 Audi A4. (Engine is the least interesting ones for me – I am more interested in e.g. infotainment, Bluetooth etc.). As far as I know, most of the ECUs in question use the KW1281 protocol, a K-line protocol standardized as ISO 9141. Some might use KW2000, also over the K-line; CAN was not yet widely used in this particular model.

I have a Bluetooth ELM 327 adapter, which I am currently using with an Android OBD-II app. These devices are marketed as dedicated OBD-II adapters, not necessarily for vendor-specific protocols, as the adapter incorporates some of the protocol logic specifically for OBD-II.

One of the OBD-II protocols supported is ISO 9141-2, which according to the ISO abstract is a subset of ISO 9141:1989. As far as I can tell from the ELM 327 datasheet, the ELM supports arbitrary ECU addresses, sending a 5-baud initialization sequence (as required by ISO 9141/KW1281) and even bypassing initialization. The only thing I am not sure is if there is a way to exchange raw data with the ECU, or at least something low-level enough to be able to exchange KW1281-compliant data.

I have come across Addressing ECUs directly using ELM 327 dongle and ISO 9141 – while it turned out that the OP needed a different protocol, the answer indirectly links to VAG Blocks by Jared Wiltshire, which implements custom CAN-based protocols (KW2000 and TP 2.0, also genetically related to their OBD counterparts) on top of an ELM 327. So I was wondering if something similar is possible for K-line protocols.

I am also aware that there are a few solutions out there building on a “dumb” KKL adapter – basically just a USB-to-K-line converter with no protocol logic in its circuitry. However, the baud change (5 bps to send the initialization sequence, then 9600 or 10400 bps for the communication with the actual module) is somewhat challenging to implement – the ELM 327 has this capability built in natively.

So, is there any way to exchange an arbitrary ISO 9141-based protocol using an ELM 327?

1

There are 1 answers

0
potatoplant On

From my own testing, it seems the ELM327 can't communicate with the proprietary protocol that VAG vehicles use over the K-line. That adapter is really made for "universal" stuff, like connecting to the engine for general faults and emissions testing, what OBD is meant for, not finer things like connecting to different modules and programming them.

I am also aware that there are a few solutions out there building on a “dumb” KKL adapter

However, the baud change [...] is somewhat challenging to implement

If you are interested in playing with microcontrollers, this is the perfect job for one. A very capable library for this purpose is KLineKWP1281Lib, which seems to run on Arduino and ESP boards. You only need to get a cheap "VCDS" adapter (the cheaper the better), modify it like described in that repo's wiki and you can connect to any module you want. Unfortunately it looks like "programming ECUs" like you want isn't possible with that library, but you may be able to implement it by reverse engineering the protocol further.