ELM327
Das ELM327 (Wiki-Link) ist ein populäres Spezial-IC für
OBD-Interfaces der Firma ELM Electronics. Es vereinfacht die Kommunikation indem es die komplexen Protokolle
in simple Befehle abstrahiert. ELM327 hat sich als Quasi-Standard für praktisch alle aktuell verfügbaren
(Low-Cost-)Dongle etabliert.
Die Firma
ELM Electronics
hat den Geschäftsbetrieb im Jahr 2022 eingestellt.
Den Erzählungen nach wurde bei einer frühen Versionen vergessen die Copy-Protection für die Firmware zu aktivieren.
Als Folge gab es kurz darauf jede Menge Klone die alle auf dieser Variante basierten. Etwas später wurden die Klone
gepatched um den (PC-)Programmen eine höhere Variantennummer vorzugaukeln, was häufig zu Fehlverhalten führte.
Über die Zeit gab es diverse Varianten (v1.0 .. v2.3) mit jeweils erweitertem und fehlerbereinigtem Funktionsumfang.
Auch die Klone entwickelten sich eigenständig weiter und wurden besser.
Mittlerweile gibt es auf dem Markt einen ganzen Zoo von Varianten mit unbekannter Basis. Findige Zeitgenossen
haben deshalb diverse "ELM-Identifier" Apps geschrieben. Diese Apps überprüfen welche Befehle der Chip akzeptiert und
schätzen daraus ab um welche Variante es sich handeln könnte.
ELM327 v2.3 Datasheet
Liste der AT-Kommandos
Programmierbare Parameter
Schaltplan
Nach meiner Einschätzung sind "aktuelle Klone" (v2.3 oder so) durchaus brauchbar und funktionsfähig. Die immer
wieder zu lesenden "Warnungen" vor China-Klonen sind für die üblichen Apps nicht relevant. Profis die ernsthaft
Steuergeräte modifizieren werden sowieso ganz andere Hardware verwenden.
Software
Man könnte fast sagen das für einen ELM327 garkeine spezielle Software benötigt wird. Alle Befehle werden als
ASCII über einen UART zum IC geschickt, die Daten kommen ebenso zurück. Die korrekten Reihenfolgen und Parameter
der Befehlssequenzen zu kennen ist natürlich essentiell. Es braucht sonst aber "nur" eine Shell um alles hübsch
darzustellen.
Software SW zum experimentieren ist z.B.
hier im GitHub zu finden.
Hier eine weitere Quelle
(DDT4ALL) im GitHub.
STN1110
Ein sehr ähnlicher Chipsatz ist der STN1110 von
"OBD Solutions".
Er soll vollständig rückwärtskompatibel zum ELM327 sein, fehlerbereinigt, schneller und in allen Belangen besser.
Für neue Designs wird empfohlen seinen Nachfolger STN2100 einzusetzen.
Von
SparkFun, z.B.,
gibt es ein fertiges STN1110-Board mit allen für die OBD2-Analyse notwendigen Schnittstellen. Die zugehörige
Dokumentation ist im GitHub abgelegt.
Identifikation
Der ELM327 kann über seine serielle Schnittstelle über simple ASCII-Befehle angesprochen werden.
Ein einfaches Terminalprogramm ist dafür ausreichend. Durch senden sog. "AT"-Befehle erhält man als Antwort die
Versionsnummer der implementierten Software.
Beispiel Parameter "Z" = Reset All and start up by sending Identification String
>AT Z
ELM327 v1.5
Beispiel Parameter "I" = Send Identification String
>AT I
ELM327 v2.1
Dieser Beispiel-Klon meldet sich als v2.1 bzw v1.5, er scheint sich selbst nicht ganz so sicher zu sein ..
Eine weitere Methode zur Identifikation ist die Prüfung ob der Chip auf die in jeder Variante neu implementierten Funktionen korrekt antwortet. Die letzte korrekte Antwort zeigt die vorhandene Variante an:
## ELM327 Variants Check
AT AL ## v1.0
AT PPS ## v1.1
AT AR ## v1.2
AT D0 ## v1.3
AT FE ## v1.3a
AT CEA ## v1.4
AT CRA ## v1.4b
AT AMC ## v2.0
AT CTM1 ## v2.1
AT IB12 ## v2.2
AT C0 ## v2.3
ST DI ## STN1110