Hinweis zur Aktualisierung:
Dieser Beitrag wurde von Grund auf neu erstellt, technisch überprüft und umfassend erweitert. Aufgrund der vollständigen Neufassung wurde auch das Veröffentlichungsdatum aktualisiert. Die bisherige URL bleibt unverändert, sodass vorhandene Verlinkungen und Lesezeichen weiterhin funktionieren.
BimmerGuide.de Werkzeug
Tool32 Service-History-Generator
Erzeugt die Argumentzeile für STEUERN_SERVICEHISTORY_ADD. CIC, NBT, NBT EVO und MGU verwenden dabei denselben Argumentaufbau.
Lokaler Verlauf
Bleibt ausschließlich in diesem Browser gespeichert
Bei Status „Wartung durchgeführt“ werden Restdistanz und Restzeit automatisch mit 0 ausgegeben.
Es gibt auch Generatoren, die das automatisch eintragen, allerdings sind diese mit Vorsicht zu genießen, sie können den ganzen Verlauf löschen: https://www.bimmerguide.de/category/service-historie/
Mit Tool32 lässt sich ein Servicehistorien-Datensatz direkt in der Headunit ergänzen. Damit die lange Argumentzeile nicht mehr mühsam von Hand aufgebaut werden muss, steht auf dieser Seite ein Generator für CIC, NBT, NBT EVO und MGU zur Verfügung.
Wichtiger Hinweis
Trage ausschließlich Wartungsarbeiten ein, die am Fahrzeug tatsächlich durchgeführt wurden. Der Tool32-Job schreibt einen Datensatz in die lokal gespeicherte Servicehistorie der Headunit. Er ersetzt keinen offiziellen Wartungsnachweis und keinen Eintrag in einem BMW-Backend. Falsche Angaben können Käufer, Werkstätten oder andere Personen täuschen. Das vollständige Löschen der Historie ist ebenfalls möglich und darf nicht testweise ausgeführt werden.
Was wird mit dieser Anleitung geändert?
Der Job STEUERN_SERVICEHISTORY_ADD fügt der Servicehistorie der Headunit einen neuen Datensatz hinzu. Ein Datensatz enthält das Wartungsdatum, den Kilometerstand, eine Händlerkennung, den Gesamtstatus und bis zu 13 einzelne Wartungspositionen.
Händlerkennung: Kurze ASCII-Zeichenfolge zur Kennzeichnung des Betriebs. In der Headunit sind maximal 7 Zeichen sinnvoll lesbar; längere Einträge werden nicht vollständig beziehungsweise nicht sauber dargestellt. Leerzeichen zählen als Zeichen mit. Umlaute und Sonderzeichen sollten vermieden werden.
Beispiel:
Die Begrenzung auf 13 Positionen gilt pro Serviceeintrag. Die gesamte Historie kann selbstverständlich aus mehreren Datensätzen bestehen.
Unterstützte Headunits
| Headunit | Zu ladende PRG-Datei | Job |
|---|---|---|
| CIC | CIC.PRG | STEUERN_SERVICEHISTORY_ADD |
| NBT | NBT.PRG | STEUERN_SERVICEHISTORY_ADD |
| NBT EVO | NBTEVO.PRG | STEUERN_SERVICEHISTORY_ADD |
| MGU | HU_MGU.PRG | STEUERN_SERVICEHISTORY_ADD |
Der Aufbau der Argumentzeile ist bei den hier geprüften CIC-, NBT-, NBT-EVO- und MGU-Jobs gleich. Die Rückgabewerte unterscheiden sich beim CIC allerdings geringfügig.
Tool32-Servicehistorien-Generator
Der Generator erstellt die vollständige Argumentzeile, rechnet Meilen automatisch in Kilometer um und begrenzt einen Datensatz auf maximal 13 Wartungspositionen. Die Wartungscodes können bequem aus einer Liste ausgewählt werden.
Voraussetzungen
- EDIABAS und Tool32 beziehungsweise ToolSet32
- passende und zum Fahrzeugstand gehörende PRG-Dateien
- funktionierende Diagnoseverbindung zum Fahrzeug
- stabile Bordnetzspannung
- grundlegende Erfahrung im Umgang mit BMW-Diagnosesoftware
- vorherige Dokumentation der bereits vorhandenen Servicehistorie
Keine Experimente am Fahrzeug: Die vorhandenen Einträge sollten vor der Arbeit vollständig fotografiert oder anderweitig dokumentiert werden. Insbesondere der Löschjob entfernt die komplette lokal gespeicherte Servicehistorie.
Aufbau der Argumentzeile
Die Argumente werden mit Semikolons getrennt. Auch hinter dem letzten Wert muss ein Semikolon stehen.
Tag;Monat;Jahr;Korrekturzähler;Kilometerstand;Händlerflag;Händlerkennung;Gesamtstatus;Anzahl;
Danach folgen für jede Wartungsposition vier Werte:
Wartungscode;Positionsstatus;Restdistanz;Restzeit;
Bei drei Wartungspositionen besteht der Datensatz somit aus neun Grundwerten und anschließend drei Blöcken mit jeweils vier Werten.
Die Grundwerte erklärt
| Position | Feld | Bedeutung |
|---|---|---|
| 1 | Wartungstag | Tag der Wartung |
| 2 | Wartungsmonat | Monat der Wartung |
| 3 | Wartungsjahr | Vierstelliges Jahr, beispielsweise 2026 |
| 4 | Korrekturzähler | Bei einem neuen Datensatz normalerweise 0; laut PRG bei einem Korrekturwunsch inkrementieren |
| 5 | Kilometerstand | Immer in Kilometern, unabhängig von der Anzeige im Fahrzeug |
| 6 | Händlerflag | 1 = BMW-Händler, 0 = unabhängiger Marktteilnehmer |
| 7 | Händlerkennung | ASCII-Zeichenfolge; der Generator begrenzt sie entsprechend der bisherigen Vorlage auf sieben Zeichen |
| 8 | Gesamtstatus | Status des gesamten Serviceeintrags |
| 9 | Anzahl | Anzahl der folgenden Wartungspositionen, maximal 13 |
Statuswerte richtig verwenden
Beim Gesamtstatus und beim Status der einzelnen Wartungsposition ist die Bedeutung von 0x3 nicht identisch.
Gesamtstatus des Datensatzes
| Wert | Bedeutung |
|---|---|
0x1 | Wartung durchgeführt |
0x2 | Wartung verspätet durchgeführt |
0x3 | Wartung unvollständig |
Status einer einzelnen Wartungsposition
| Wert | Bedeutung |
|---|---|
0x1 | Wartung durchgeführt |
0x2 | Wartung verspätet durchgeführt |
0x3 | Wartung überfällig |
Restdistanz und Restzeit
Die Restdistanz ist in der PRG als vorzeichenbehafteter Wert definiert, die Restzeit dagegen als nicht negativer Ganzzahlwert. Für eine normal abgeschlossene Wartungsposition werden üblicherweise 0;0 verwendet.
Bei einer rechtzeitig ausgeführten Position sieht der Block beispielsweise so aus:
1;0x1;0;0;
Das bedeutet: Wartungscode 1, durchgeführt, Restdistanz 0, Restzeit 0. Abweichende Werte sollten nur eingetragen werden, wenn ihre Bedeutung und Darstellung am jeweiligen Fahrzeug sicher bekannt sind. Der Generator setzt Restdistanz und Restzeit bei Status 0x1 automatisch auf null.
Beispiel für eine vollständige Argumentzeile
Im folgenden Beispiel wurden bei 125.000 km Motoröl, Bremsflüssigkeit und Mikrofilter rechtzeitig erneuert. Die Arbeiten wurden von einem unabhängigen Betrieb mit der Kennung WERKST durchgeführt.
01;08;2026;0;125000;0;WERKST;0x1;3;1;0x1;0;0;3;0x1;0;0;4;0x1;0;0;
Schritt-für-Schritt-Anleitung in Tool32
- Diagnoseverbindung zum Fahrzeug herstellen.
- Tool32 beziehungsweise ToolSet32 starten.
- Über Datei → SGBD/Gruppendatei laden die passende PRG-Datei öffnen.
- Den Job
STEUERN_SERVICEHISTORY_ADDauswählen. - Die vom Generator erstellte Argumentzeile vollständig in das Argumentfeld kopieren.
- Datum, Kilometerstand, Händlerkennung, Status, Anzahl und Wartungspositionen nochmals kontrollieren.
- Den Job einmal ausführen.
- Rückgabewerte prüfen.
- Servicehistorie in der Headunit kontrollieren. Falls der Eintrag nicht sofort erscheint, das Menü verlassen oder die Headunit beziehungsweise Zündung sauber neu starten.
Die neun Grundwerte der Argumentzeile
Bevor die einzelnen Wartungspositionen folgen, beginnt jeder Servicehistorien-Datensatz mit neun Grundwerten:
Wartungstag: Tag, an dem die Wartung durchgeführt wurde
Beispiel: 13
Wartungsmonat: Monat der Wartung
Beispiel: 06
Wartungsjahr: vollständige vierstellige Jahreszahl
Beispiel: 2020
Korrekturzähler: Bei einem neuen Eintrag normalerweise 0. Laut PRG soll der Wert bei einem Korrekturwunsch erhöht werden. Die genaue interne Auswertung durch die Headunit ist nicht näher dokumentiert.
Kilometerstand: Kilometerstand zum Zeitpunkt der Serviceannahme. Der Wert muss immer in Kilometern angegeben werden – auch wenn das Fahrzeug Meilen anzeigt.
Beispiel: 104414
Händlerflag:1 = BMW-Händler0 = unabhängiger Marktteilnehmer
Beispiel: 1
Händlerkennung: ASCII-Zeichenfolge zur Kennzeichnung des Betriebs. Die bisher verwendete Excel-Vorlage begrenzt das Feld auf sieben Zeichen; Leerzeichen werden mitgezählt.
Beispiel: WERKE
Gesamtstatus:0x1 = Wartung durchgeführt0x2 = Wartung verspätet durchgeführt0x3 = Wartung unvollständig
Beispiel: 0x1
Anzahl der Wartungspositionen: Gibt an, wie viele Wartungspositionen anschließend folgen. Pro Servicehistorien-Datensatz sind maximal 13 Positionen möglich.
Beispiel: 3
13;06;2020;0;104414;1;WERKE;0x1;3;
Erfolgreiche Rückgabe erkennen
| Headunit | Erfolgswert | Zusätzlich |
|---|---|---|
| CIC | STAT_SH_ADD_WERT = 0x01 | JOB_STATUS = OKAY |
| NBT | STAT_SH_ADD_WERT = 0x00 | JOB_STATUS = OKAY |
| NBT EVO | STAT_SH_ADD_WERT = 0x00 | JOB_STATUS = OKAY |
| MGU | STAT_SH_ADD_WERT = 0x00 | JOB_STATUS = OKAY |
Bei NBT, NBT EVO und MGU gelten außerdem folgende Rückgabewerte:
| Wert | Bedeutung |
|---|---|
0x00 | Erfolgreich |
0x01 | Speicherfehler beziehungsweise kein freier Speicher |
0x02 | Dateninkonsistenz |
0x04 | Keine Schreibberechtigung |
0x05 | Unbekannter Fehler |
Beim CIC sind die Werte für Erfolg, Speicherfehler und Dateninkonsistenz um eins verschoben: Erfolg 0x01, Speicherfehler 0x02, Dateninkonsistenz 0x03.
Wartungscodes
Die PRG-Tabellen stellen die Nummern häufig in Hexadezimalform dar. Im Generator und in der erzeugten Argumentzeile werden die Codes dezimal ausgegeben. Beispiel: 0x23 entspricht dezimal 35.
Das Argument ARG_WARTUNGSTEXT ist bei CIC, NBT, NBT EVO und MGU als unsigned char definiert. Der technisch mögliche Wertebereich reicht deshalb von 0 bis 255. Codes 256, 257 oder 258 können mit diesem Job nicht als eigene Wartungscode-Nummern übertragen werden.
| Dezimal | Hex | Bezeichnung |
|---|---|---|
| 1 | 0x01 | Motoröl |
| 2 | 0x02 | Bremsbeläge vorne |
| 3 | 0x03 | Bremsflüssigkeit |
| 4 | 0x04 | Mikrofilter |
| 5 | 0x05 | Service Inclusive |
| 6 | 0x06 | Bremsbeläge hinten |
| 7 | 0x07 | Partikelfilter |
| 8 | 0x08 | State of Health / Batterie, softwareabhängig |
| 9 | 0x09 | QMV-H-Öl |
| 10 | 0x0A | Zündkerzen/Glühkerzen beziehungsweise Zündkerzen adaptiv, softwareabhängig |
| 13 | 0x0D | NOx-Additiv |
| 16 | 0x10 | Zündkerzen |
| 17 | 0x11 | Sichtprüfung/Fahrzeugcheck |
| 18 | 0x12 | Kühlflüssigkeit |
| 19 | 0x13 | H2-Check |
| 20 | 0x14 | Übergabedurchsicht |
| 21 | 0x15 | Einfahrkontrolle |
| 22 | 0x16 | Additiv für Partikelfilter |
| 23 | 0x17 | Wasserfilter |
| 24 | 0x18 | Gasdruckfeder |
| 32 | 0x20 | Fahrzeuguntersuchung / HU-Termin |
| 33 | 0x21 | Abgasuntersuchung / AU-Termin |
| 35 | 0x23 | Getriebeöl, je nach System auch Automatik- oder Doppelkupplungsgetriebeöl |
| 49 | 0x31 | Reifenalter |
| 50 | 0x32 | Kupplung |
| 51 | 0x33 | Gasdruckdämpfer Frontklappe bei aktivem Fußgängerschutz |
| 52 | 0x34 | Verbandskasten |
| 53 | 0x35 | Tire Fit |
| 54 | 0x36 | Katalysator |
| 55 | 0x37 | Stoßdämpfer |
| 97 | 0x61 | Service Sicherheitsfahrzeug |
| 100 | 0x64 | Sichtprüfung/Fahrzeugcheck verknüpft |
| 224 | 0xE0 | CBS Evalboard – interner Testwert |
| 225 | 0xE1 | CBR Evalboard – interner Testwert |
| 255 | 0xFF | Anlieferzustand – Sonderzustand |
Einige Bezeichnungen unterscheiden sich zwischen Fahrzeug- und Softwareständen. Deshalb verwendet der Generator bei variablen Codes möglichst neutrale Sammelbezeichnungen. Nicht jeder Code muss auf jeder Headunit-Version sichtbar oder sinnvoll nutzbar sein.
Gesamte Servicehistorie löschen
Achtung – vollständiger Datenverlust:
Je nach PRG ist ein Job wie STEUERN_SERVICEHISTORY_ERASE oder STEUERN_SERVICEHISTORY_DEL vorhanden. Dieser Job benötigt normalerweise kein Argument und löscht die gesamte lokal gespeicherte Servicehistorie der Headunit. Nicht testweise ausführen. Vorher jeden vorhandenen Eintrag vollständig dokumentieren.
Die Sortierung und Darstellung neuer Einträge kann je nach Headunit und Softwarestand unterschiedlich sein. Die komplette Historie sollte nicht nur zur Änderung der Reihenfolge gelöscht und neu aufgebaut werden.
Häufige Fehler
| Problem | Mögliche Ursache |
|---|---|
Data inconsistency | Falsche Anzahl der Positionen, ungültiger Code, fehlendes Semikolon oder unpassender Wert |
No writing permission | Schreibzugriff wird vom Steuergerät oder aktuellen Zustand nicht erlaubt |
| Eintrag erscheint nicht | Falsche PRG-Datei, Job nicht erfolgreich, Headunit noch nicht aktualisiert oder Code im Softwarestand nicht vorhanden |
| Falscher Wartungstext | Codebelegung unterscheidet sich zwischen Softwareständen |
| Tool32 akzeptiert die Zeile nicht | Argument fehlt, ASCII-Zeichen ungeeignet, Zahl außerhalb des Wertebereichs oder abschließendes Semikolon fehlt |
Abschließender Hinweis
Tool32 ist ein Entwicklungs- und Diagnosewerkzeug. Die Verwendung erfolgt auf eigene Verantwortung. Prüfe jeden Wert vor dem Ausführen sorgfältig und dokumentiere ausschließlich tatsächlich ausgeführte Wartungsarbeiten. Bei Unsicherheit sollte die Arbeit von einer fachkundigen Person durchgeführt werden
Beispiel NBT Navigation F – Reihe
Links:
Codierer Ausstattung beachten
Passende PRG File finden
