Repository navigation
Releases: phprell/obd-diag
Releases · phprell/obd-diag
Release list
obd-diag 0.2.2
Neu sind Auswertungen aus den Daten, die das Tool schon liest: Gebrauchtwagen-Check,
Readiness-Assistent, Steuergeräte und Testergebnisse (Mode 09/06), Dringlichkeit je
Fehlercode, Warnschwellen, Batterie- und Anlasstest, Sitzungsvergleich und 24 weitere
Live-Werte. Alles bleibt nur lesend; Löschen ist weiter gesperrt.
Neu
- Readiness-Assistent:
obd-diag readinessund in der Oberfläche eine Karte im Reiter
Readiness. Liest neben dem Stand seit dem Löschen (PID 01) auch den Stand dieser
Fahrt (PID 41: abgeschlossen, noch offen, ausgesetzt) und nennt zu jedem offenen Test,
welche Fahrt ihn typischerweise abschließt, getrennt für Otto und Diesel. Nur lesende
Anfragen (0101,0141); die Demo kennt sie mit einem erfundenen Beispielwert für PID 41. - Steuergeräte und Testergebnisse:
obd-diag ecusliest je Steuergerät Name,
Kalibrierungs-ID, CVN und Überwachungszähler (Mode 09:0900,0904,0906,0908,
090A,090B),obd-diag testsdie Testergebnisse der Eigendiagnosen mit Grenzwerten,
Einheit und Urteil (Mode 06, nur CAN). Beides ist Teil vondiagnose, der Sitzung und
des PDF-Berichts; in der Oberfläche stehen die Steuergeräte im Reiter Fahrzeug, die
Testergebnisse im neuen Reiter Testergebnisse. Gelesen wird mit Headern (ATH1), damit
jeder Wert dem richtigen Steuergerät zugeordnet ist. Die Demo zeigt erfundene Beispielwerte. - Sitzungsvergleich:
obd-diag compare ALT.json NEU.jsonbzw. in der Oberfläche Datei →
Mit Sitzung vergleichen … zeigt, was sich zwischen zwei gespeicherten Diagnosen
geändert hat: neue, entfallene und weiterhin vorhandene Fehlercodes, Readiness-Monitore,
Kontrollleuchte, Freeze Frame, Zähler seit dem Löschen, FIN, Protokoll und
Bordspannung (--jsonfür Skripte).
Arbeitet nur mit den Dateien, das Fahrzeug wird nicht angesprochen. - Dringlichkeit je Fehlercode in vier Stufen (möglichst nicht weiterfahren, bald in die
Werkstatt, bei Gelegenheit prüfen, beobachten) mit Begründung: inscan/diagnose,
in der Oberfläche (Etikett in der Liste, Begründung im Detail), im PDF-Bericht und als
letzte CSV-Spalte. Grundlage sind Art des Codes, Kontrollleuchte und wenige genormte
Codes (Übertemperatur, Öldruck, Aussetzer, Airbag); keine Ferndiagnose. - Warnschwellen für Live-Daten:
obd-diag live --alarm SCHLÜSSEL=UNTEN:OBEN
(--no-alarmsohne Vorgaben), in der Oberfläche „Warnschwellen …“. Vorgaben:
Kühlmittel über 115 °C, Motoröl über 130 °C, Bord- und Steuergerätespannung unter
11,8 V oder über 15,5 V. Überschrittene Werte sind markiert (!, rote Kachel), die CSV
hat dafür die neue letzte Spalte „Warnungen“. Gesendet wird dafür nichts zusätzlich. - Batterie- und Anlasstest:
obd-diag batterybzw. Optionen → Batterie- und
Anlasstest … misst die Ruhespannung, den Einbruch beim Anlassen (Motor startet man
selbst auf Aufforderung) und die Ladespannung im Leerlauf und bewertet sie mit
dokumentierten Richtwerten (Grenze beim Anlassen nach Temperatur). Die Spannung kommt
beim Anlassen in schneller Folge vom Adapter (ATRV), um die Abweichung zum
Steuergerät (PID 42) korrigiert. Nur lesend, keine neuen Befehle; auch im Demo-Modus. - Gebrauchtwagen-Check:
obd-diag used-car, Reiter „Gebrauchtwagen“ in der Oberfläche
und ein Abschnitt im PDF-Bericht zeigen, ob die Fehlercodes vor kurzem gelöscht wurden.
Gelesen werden die Zähler, die das Löschen auf null setzt (Mode 01 PID 30 Warmläufe,
31 Strecke, 4E Zeit seit dem Löschen, 21/4D Strecke/Zeit mit Warnleuchte), dazu
Warnleuchte, offene Readiness-Tests und permanente Codes (Mode 0A). Urteil
„auffällig“, „unauffällig“ oder „nicht beurteilbar“ nach einer Faustregel (unter
10 Warmläufen, 200 km oder 300 Minuten).obd-diag diagnoseund „Verbinden & Scannen“
lesen die Zähler mit (fünf Anfragen mehr) und speichern sie in der Sitzung; ältere
Sitzungen öffnen weiter. Nur lesend, keine neuen Befehle in der Freigabeliste. - Live-Daten: 24 weitere Werte aus den PIDs
68(Ansauglufttemperatur je Sensor),
6C(Drosselklappensteller A/B),6D(Raildruck Soll/Ist und Temperatur),70
(Ladedruck Soll/Ist) und85(AdBlue: Verbrauch, Bedarf, Tankfüllstand, Laufzeit mit
NOx-Warnung), jetzt 140 Werte aus 87 PIDs. Der Mercedes A 180 d meldet sie als
unterstützt; am Auto geprüft sind die Antworten noch nicht. Auch der Demo-Modus zeigt
sie. Vermischen sich mehrteilige Antworten mehrerer Steuergeräte, wird die Anfrage mit
Headern wiederholt statt den Wert leer zu lassen.
obd-diag 0.2.1
Neu sind Einrichtungs- und Adapter-Check, ein Demo-Modus ohne Auto, die englische
Oberfläche und fertige Pakete (PyPI, AUR, Flatpak). Am Lesen vom Fahrzeug ändert sich nichts.
Neu
- Einrichtung prüfen:
obd-diag setup-checkund in der Oberfläche Optionen →
Einrichtung prüfen … (beim ersten Start von selbst). Findet die Adapter, prüft die
Zugriffsrechte und nennt die nötige Gruppe (uucpauf Arch,dialoutauf
Debian/Ubuntu) samt Befehl, probiert 38400 und 115200 Baud (nur Adapter-Befehle) und
erinnert an Zündung und HS-CAN-Schalter. Die Oberfläche übernimmt Port und Baudrate. - Demo-Modus:
obd-diag-gui --demo, Port „demo“ in der Liste oderobd-diag … --demo
zeigt ein eingebautes Beispielfahrzeug ohne Adapter und ohne Auto. Ein simulierter
ELM327 antwortet mit den Mitschnitten des Mercedes A 180 d aus den Tests am Auto
(Fehlercode U1218, Readiness, Freeze Frame, FIN, Live-Daten im Leerlauf); ein Hinweis
und die AdapterkennungELM327 v1.5 (Demo)zeigen, dass die Daten nicht vom eigenen
Auto stammen. - Adapter-Check:
obd-diag adapterbzw. „Optionen → Adapter prüfen …“ zeigt Kennung,
Spannung und welche Befehle aus der Versionsliste des Datenblatts der Adapter
wirklich beantwortet (ATPPSv1.1,ATIGN/ATRDv1.4,ATAMCv2.0), erkennt daran
Nachbauten (eine echte v1.5 gab es nie), nennt geänderte Programmable Parameters und
ob der Adapter voraussichtlich für die UDS-Steuergerätesuche (v0.3) taugt. Neu
freigegeben sind dafür nur diese lesenden Adapter-Befehle (mit Quelle in
command_spec.yaml); das Fahrzeug wird nicht angesprochen.
Englisch
- Englische Oberfläche: Sprache unter „Optionen → Sprache / Language“ wählbar, Wechsel
sofort ohne Neustart. Beim ersten Start gilt die Systemsprache (Deutsch nur bei
deutschem System, sonst Englisch). - Kommandozeile, PDF-Bericht und CSV mit
--lang de|en(Standard: Systemsprache;
die Oberfläche exportiert in ihrer Sprache); englische CSV mit Komma und Dezimalpunkt. - Dokumentation zusätzlich auf Englisch unter https://phprell.github.io/obd-diag/en/ mit
Sprachumschalter; die deutschen Adressen bleiben gleich. - README auf Englisch, deutsche Fassung in README.de.md.
- Tests verhindern Texte, die nur in einer Sprache vorliegen.
Installation
- Fertige Pakete:
pipx install 'obd-diag[gui]'aus PyPI, AUR-Paketobd-diagund
Flatpak-Bundle am GitHub-Release. Der Release-Workflow baut und prüft alle drei
(auch bei jedem PR) und lädt auf PyPI hoch. - Startmenü-Eintrag mit Symbol und AppStream-Daten; bei pipx-Installationen legt
obd-diag-gui --install-desktopihn an (--remove-desktopentfernt ihn). - udev-Regel heißt jetzt
70-obd-diag.rulesund liegt insrc/obd_diag/share/. Unter
der alten Nummer 99 kam das Taguaccesszu spät und wirkte nicht; Gruppe und
Dateirechte ändert sie nicht mehr (die Gruppeuucpgibt es auf Debian nicht). - Das sdist enthält keine Release-Notizen und Arbeitsdateien mehr.
obd-diag 0.2.0
Erstes veröffentlichtes Release. Es umfasst den Funktionsumfang v0.1 (nie einzeln
veröffentlicht) und die Live-Daten aus v0.2.
Am echten Auto geprüft
- Erster Test am 2026-10-09 an einem Mercedes A 180 d (W177) mit FORScan ELMconfig
(USB, CH340), CAN 29 Bit/500 kBit/s, vier Steuergeräte:info,diagnoseundlive
lesen richtig. - Vier Befunde aus dem Test behoben (#7): Freeze Frame vom Steuergerät mit dem Code
(vorher „unbekannter Code“), erstesATZmit?wird einmal wiederholt, Bordspannung
per PID 42 gegengeprüft, wenn der Adapter unter 11,8 V misst, bei Mercedes kein
Modelljahr aus FIN-Stelle 10. UNABLE TO CONNECT(Zündung aus) ergibt eine klare Meldung mit Hinweis (#8).- Zweiter Test am 2026-10-10 mit Motorstart während Live: Werte stimmen Byte für Byte.
Bei Drosselung wegen niedriger Spannung wird die Spannung jetzt jede Runde gemessen,
damit die Drosselung nach dem Anlassen gleich endet statt erst nach zehn Runden. - Zweiter Test am 2026-10-10 bestätigt diese Korrekturen; Diagnose- und Live-Mitschnitte
stimmen Byte für Byte mit J1979. - Readiness hängt nicht mehr von der Reihenfolge ab, in der die Steuergeräte antworten.
Vorher konnte ein Steuergerät ohne Abgasmonitore den Diesel als Ottomotor ausgeben und
„Alle Tests abgeschlossen“ melden, obwohl der Abgassensor-Test offen war (#14).
Widersprüchliche Freeze-Frame-Werte mehrerer Steuergeräte werden verworfen. - Live-Daten: Nach dem Anlassen endet die Drosselung bei niedriger Spannung sofort,
statt bis zu 50 s weiterzulaufen (#15). - Die Mitschnitte beider Tests laufen als Regressionstest
(tests/verification/test_real_car.py, FIN-Seriennummer geschwärzt). - Zweiter Test am 2026-10-10 (Motor aus und im Stand laufend) bestätigt diese Korrekturen
und deckt einen Fehler auf: Ohne Header kommen die Antworten der Steuergeräte bei jeder
Anfrage anders sortiert, und die Motorart der Readiness kam vom zuerst antwortenden.
Stand ein Steuergerät ohne Abgasmonitore vorn, wurde der Diesel als Ottomotor gelesen,
der offene Test „Abgassensor“ fehlte und es hieß „Alle Tests abgeschlossen“. Jetzt
entscheiden die Steuergeräte mit Abgasmonitoren, unabhängig von der Reihenfolge.
Freeze-Frame-Werte, die mehrere Steuergeräte verschieden melden, werden verworfen statt
zufällig gewählt.
Lesen
- Fehlercodes: gespeichert, ausstehend und permanent (Mode 03, 07, 0A) mit deutschem
Klartext, Ursachen und Symptomen aus einem Offline-Katalog (OBDex, CC0, 9533 Codes). - Ablehnungen der Steuergeräte werden nicht mehr als „keine Codes“ gelesen; nur
7F <Mode> 11/12heißt „Mode nicht unterstützt“. Auf7F <Mode> 78wird bis 5 s
gewartet (#4). - Readiness (Mode 01 PID 01, Otto und Diesel) mit Motorkontrollleuchte; Urteil „Alle
Tests abgeschlossen“. - Freeze Frame zum auslösenden Code (Mode 02).
- FIN (Mode 09 PID 02) mit Offline-Dekodierung (Hersteller, Land, Modelljahr ohne
Gewähr), optional NHTSA vPIC (Opt-in). - Fehlercodes ohne Katalogtext auf Wunsch online erklären (
--online-codes, Option in
der Oberfläche, standardmäßig aus; Quelle Wal33D/dtc-database, MIT). Es werden ganze
Dateien geladen, Fehlercode und FIN gehen nie ins Netz (#11, ADR 0004).
Live-Daten (v0.2)
- 116 Werte aus 82 Mode-01-PIDs nach SAE J1979, darunter die Lambdasonden 1–8,
Nachkat-Trimm und Drehmomentstufen; jede Formel ist gegen python-OBD verglichen. obd-diag live(--list,--pids,--interval,--duration,--record) und Reiter
„Live-Daten“ mit Kacheln und Verlaufskurve; Aufzeichnung als CSV.- Unter 11,8 V Bordspannung wird nur alle 5 s abgefragt.
Sicherheit
- Nur lesend: Freigabeliste in
Elm327.command, jeder andere Befehl wird abgewiesen,
bevor etwas gesendet wird. Jeder erlaubte Befehl ist mit Seite und Zitat aus dem
ELM327-Datenblatt bzw. dem J1979-Service belegt und wird in allen Tests geprüft (#3). - Mindestens 50 ms zwischen zwei Anfragen ans Fahrzeug, auch nach Fehlern (#6).
- Löschen (Mode 04) ist gesperrt (
CLEAR_ENABLED = False). Der Ablauf mit
Vorbedingungen (Motor aus bei allen Steuergeräten, Spannung), Sicherung und
Kontroll-Scan ist fertig und getestet, wird aber erst nach einer bewussten Freigabe
eingeschaltet. - Abgezogener Adapter (auch zwischen zwei Befehlen) bricht mit Meldung ab, ohne halbe
Sitzungen zu speichern.
Bedienung und Ausgabe
- Kommandozeile
obd-diagmitinfo,scan,diagnose,vin,clear,live,
ports,export; Adapter-Mitschnitt mit--trace. - Oberfläche
obd-diag-gui(PySide6/QML, Extragui) mit Reitern Fehlercodes,
Readiness, Freeze Frame, Fahrzeug, Live-Daten; helles und dunkles Design. - Diagnosesitzungen als JSON, PDF-Bericht und CSV.
Dokumentation
- Website unter https://phprell.github.io/obd-diag/ (#5, #9, #12): Benutzen, wie das
Tool mit dem ELM327 spricht (Befehlsreferenz mit Datenblatt-Seiten, PID-Formeln,
Sicherheitskonzept, der Mitschnitt vom W177 Zeile für Zeile), Entwickeln.
Bekannte Einschränkungen
- Bisher an einem Fahrzeug geprüft (zwei Tests am Mercedes W177).
- Live-Daten nehmen ohne Header die erste gültige Antwort; antworten mehrere
Steuergeräte auf dieselbe PID, kann der Wert zwischen ihnen wechseln (am W177
höchstens 11 1/min). - Nur über USB-Seriell bzw.
/dev/rfcomm*; Bluetooth LE folgt später. - Nur die genormte Abgasdiagnose (OBD-II), keine Steuergeräte wie Airbag oder ABS.
- PIDs mit Statusbyte (u. a. 70 Ladedruck, 7A–7C Partikelfilter) fehlen noch.