Es gibt auch ein tool mit dem das einfacher geht, allerdings ohne Garantie und auf eigenes Risiko wie immer
PerfektToolbox: Die App für dein Tacho E6X / E7X / E8X / E9X
Mit dieser Anleitung will ich kurz erläutern, wie ihr mit Hilfe eines handelsüblichen OBD2 Kabel und den BMW Standard Tools 2.12,
Codierer Ausstattung beachten & Immer ein Ladegerät anschließen
die in meine Augen unnötige Kraftstoffmomentanverbrauchsanzeige, kurz KVA, bei den BMW E-Modellen (bei mir 525D E61),
so umprogrammieren könnt, das die Motoröltemperatur dargestellt wird.
Leider kann man bei vielen BMW Modellen keine defekten Kühlmittelthermostate feststellen, da die Temperaturanzeige fehlt.
Die Tachoscheibe bzw. Drehzahlmesserscheibe habe ich bisher noch nicht gewechselt. Es ist auch ohne Wechsel möglich die Öltemperatur über die Skala der Momentanverbrauchsanzeige abzulesen.
dabei entsprechen:
0 Liter = 50°C
5 Liter = 75°C
10 Liter = 100°C
15 Liter = 125°C
20 Liter = 150°C
1. Vorbedingung
ODB 2 Kabel ist einsatzbereit und mit dem Auto verbunden. Ich verwende das DO-IT DCAN – Diagnose Interface für BMW-Fahrzeuge
(Bj. 2006 – 2016 bzw. auch älter als 2006 mit den PIN Adapter der dabei ist).
Die BMW Standardtools sind installiert (NCSExpert 3.0.x und Tool32 aus dem Ediabas Paket 7.3.0)
2. Vorkenntnisse
Ihr solltet schon ein wenig Erfahrung mit Codierungen von Steuergeräten haben. Desweiteren ist es sinnvoll zu wissen was hexadezimale Zahlen sind.
3. Codierdaten lesen mit Tool32
Zuerst müsst ihr das Tool32 starten. Die Datei befindet sich standardmäßig unter
c:\Ediabas\Bin\Tool32.exe
Dann öffnet ihr über Datei – SGBD, Gruppendatei laden und wählt die Datei
c:\Ediabas\ECU\Komb60.prg
aus. Bei den E9x Modellen muss Komb87.prg ausgewählt werden.
Links unter Jobs findet ihr einen Eintrag
c_c_lesen
dort einfach als Argument den vorgefüllten Buffer
01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 03
in der rechten oberen Zeile eingeben und Data anhaken.
Job einmal ausführen (F5 drücken)
In Results sollten dann die Codierdaten erscheinen.
apiJobData(„KOMBI60″,“c_c_lesen“,{DATA}, 46,““)
{DATA}: 46 Bytes
0000 : 01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 …….. ……..
0010 : 00 00 05 31 00 FF FF FF FF FF FF FF FF FF FF FF …1.ÿÿÿ ÿÿÿÿÿÿÿÿ
0020 : FF FF FF FF FF FF FF FF FF FF FF FF FF 03 ÿÿÿÿÿÿÿÿ ÿÿÿÿÿ.
Satz : 0
OBJECT = kombi60
SAETZE = 1
JOBNAME = c_c_lesen
VARIANTE = KOMBI60
JOBSTATUS =
UBATTCURRENT = -1
UBATTHISTORY = -1
IGNITIONCURRENT = -1
IGNITIONHISTORY = -1
Satz : 1
CODIER_DATEN = 46 Bytes
0000 : 01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 …….. ……..
0010 : 00 00 05 31 00 73 12 0D 00 00 36 00 67 00 98 00 …1.s.. ..6.g.?.
0020 : CA 00 00 00 BC 01 78 03 35 05 F1 06 6E 03 Ê…Œ.x. 5.ñ.n.
JOB_STATUS = OKAY
_TEL_ANTWORT = 31 Bytes
0000 : 9B F1 60 62 31 05 73 12 0D 00 00 36 00 67 00 98 ?ñ`b1.s. …6.g.?
0010 : 00 CA 00 00 00 BC 01 78 03 35 05 F1 06 6E EC .Ê…Œ.x .5.ñ.nì
Die roten Bytes sind die Codierdaten. Den ganzen Buffer inklusive Codierdaten in die Zwischenablage kopieren und in einem Editor (notepad++) zur weiteren Bearbeitung einfügen.
0000 : 01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 …….. ……..
0010 : 00 00 05 31 00 73 12 0D 00 00 36 00 67 00 98 00 …1.s.. ..6.g.?.
0020 : CA 00 00 00 BC 01 78 03 35 05 F1 06 6E 03 Ê…Œ.x. 5.ñ.n.
Dann die Adresszeilen 0000 – 0020 am Beginn jeder Zeile und die Zeichen am Ende entfernen, so dass nur die Hexzahlen übrig bleiben.
01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D 00 00 36 00 67 00 98 00 CA 00 00 00 BC 01 78 03 35 05 F1 06 6E 03
Diesen Buffer wegsichern. Den brauchst ihr, wenn ihr wieder zurück auf KVA codieren möchtet.
3. Codierdaten im Buffer anpassen
Um nun Öltemperatur anstatt KVA zu codieren musst du die blauen Bytes ändern:
01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D00 00 36 00 67 00 98 00 CA 00 00 00 BC 01 78 03 35 05 F1 06 6E 03
Dabei stehen die Werte 00 36 67 98 CA für die Skaleneinteilung. Der Wert6E steht für die KVA.
Werte der KVA erklärt:
hexadezimal dezimal Skalawert der KVA
00 0 0,0 Liter
36 54 5,4 Liter
67 103 10,3 Liter
98 152 15,2 Liter
CA 202 20,2 Liter
Für die Öltemperaturanzeige müssen wir die Skaleneinteilung abändern.
Um nun den Temperaturbereich auf 50°C – 150°C zu programmieren, teilen wir die Skala wie folgt ein.
50°C = 0 Liter
75°C = 5 Liter
100°C = 10 Liter
125°C = 15 Liter
150°C = 20 Liter
Dafür müssen wir auf die gewünschte Temperaturanzeige einen Korrekturwert (46-48) addieren. Ich habe bei mir 48 als Korrekturwert verwendet, da der Zeiger dann besser zur Skaleneinteilung passte. Die nachfolgenden Codierwerte beziehen sich auf den Korrekturwert 46. Bitte entsprechend der 3 Tabellen selbständig anpassen.
Öltemp. in °C | Korrekturwert (dez.) | dezimal | Hexadezimal
50 46 96 60
75 46 121 79
100 46 146 92
125 46 171 AB
150 46 196 C4
mit Korrekturwert 47
Öltemp. in °C | Korrekturwert (dez.) | dezimal | Hexadezimal
50 47 97 61
75 47 122 7A
100 47 147 93
125 47 172 AC
150 47 197 C5
mit Korrekturwert 48
Öltemp. in °C | Korrekturwert (dez.) | dezimal | Hexadezimal
50 48 98 62
75 48 123 7B
100 48 148 94
125 48 173 AD
150 48 198 C6
Temperatur + Korrekturwert = dezimaler Wert = in Hexwert umrechnen
Der Wert 6F schaltet Öltemperaturanzeige ein. 6E steht für KVA
Die geänderten Codierdaten sollten nun so aussehen. Bitte die anderen Bytes unverändert lassen und aus dem eigenen Codierdaten übernehmen.
01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03
4. Checksumme berechnen
Die geänderten Codierdaten erfordern eine neue Checksumme. Die Checksumme ist das grüne Byte, in meinen Fall bei KVA die 73.
01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D 60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03
Den Buffer in die Zwischenablagen kopieren und mit Tool32 den Job
c_checksumme
auswählen. Dort als Argument den Buffer aus der Zwischenablage einfügen und Data anhaken. Dann den Job einmal mit F5 ausführen.
Als Ergebnis erhälst du du neue Checksumme. In meinen Fall 95.
apiJobData(„KOMB60″,“c_checksumme“,{DATA}, 46,““)
{DATA}: 46 Bytes
0000 : 01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 …….. ……..
0010 : 00 00 05 31 00 73 12 0D 60 00 79 00 92 00 AB 00 …1.s.. `.y.?.«.
0020 : C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03 Ä…¼.x. 5.ñ.o.
Satz : 0
OBJECT = komb60
SAETZE = 1
JOBNAME = c_checksumme
VARIANTE = KOMB60
JOBSTATUS =
UBATTCURRENT = -1
UBATTHISTORY = -1
IGNITIONCURRENT = -1
IGNITIONHISTORY = -1
Satz : 1
JOB_STATUS = OKAY
OUT_BUFFER = 46 Bytes
0000 : 01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 …….. ……..
0010 : 00 00 05 31 00 95 12 0D 60 00 79 00 92 00 AB 00 …1.?.. `.y.?.«.
0020 : C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03 Ä…¼.x. 5.ñ.o.
Nun die neue Checksumme kopieren und in den Buffer eintragen.
01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 95 12 0D 60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03
5. Steuergerät Kombi codieren
Den Job c_c_schreiben im Tool32 auswählen und den geänderten Buffer mit der neuen Checksumme als Argument eintragen.
01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 95 12 0D 60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03
Data anhaken und Job einmal ausführen (F5)
Als Ergebnis kommt OK.
6. Kombi Steuergerät neustarten
Den Job
steuergeraete_reset
im Tool32 auswählen und die vorhandenen Einträge bei Argument löschen. Data nicht anhaken und Job einmal ausführen F5.
Dadurch wird das Kombi neugestartet und die geänderten Codierwerte übernommen.
7. Datum Uhrzeit stellen
Durch den Steuergeräte Reset sind Datum und Zeiteinstellung gelöscht. Das kann sehr einfach durch den Job
uhrzeit_datum_stellen
im Tool32 erledigt werden. Job auswählen und Argument leer lassen. Data nicht anhaken und Job einmal ausführen, F5.
Dadurch wird die Zeit/Datum vom PC übernommen.
8. Testen des Korrekturwertes
Der verwendete Korrekturwert kann mittels des Job
steuern_oeltemp (ist nur bei Komb60.prg verfügbar)
kontrolliert werden. Dazu einfach den Job auswählen und als Argument z.B. 100 (100°C) eingeben. Data nicht anhaken. Job einmal ausführen, F5.
Der Zeiger sollte nun genau bei 10 Liter stehen bleiben. Falls nicht, muss der Korrekturwert in Punkt 3 – Codierdaten im Buffer anpassen, entsprechend geändert werden. Ich habe 48 anstatt 46 verwendet. Entsprechend verändern sich dann die Skaleneinteilung und auch die Checksumme muss neu berechnet werden.
Wenn alles OK, dann mit
steuer_oeltemp_aus
wird dieser Testmodus wieder beendet.
9. Bestätigte Modelle
- E61 525dA LCI Bj. 01/2010 M57 Motor
- E61 535d M57 Motor
- E90 330i VFL Bj.04/2006 mit Tacho Low
- E90 320i VFL Bj.07/2005 mit Kombi Low N46 Motor
- E90 320i VFL Bj. 2006 mit Kombi Low N46 Motor
- E91 325i VFL mit N52B25 Motor
10. weitere Informationen
Sind im BMW Syndikat Forum zu finden.
Quelle & Danksagung
Besonderen Dank möchte ich acolt und mrperfect (drive2) und Hates und myfirst1er alle aus dem www.bmw-syndikat.de Forum richten. Erst durch die Intensive Zusammenarbeit mit diesem beiden Forenmitgliedern, war es möglich das Geheimnis zu lüften.