Skip to content

Releases: phprell/obd-diag

obd-diag 0.2.2

Choose a tag to compare

@github-actions github-actions released this 12 Oct 11:50
716dce1

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 readiness und 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 ecus liest je Steuergerät Name,
    Kalibrierungs-ID, CVN und Überwachungszähler (Mode 09: 0900, 0904, 0906, 0908,
    090A, 090B), obd-diag tests die Testergebnisse der Eigendiagnosen mit Grenzwerten,
    Einheit und Urteil (Mode 06, nur CAN). Beides ist Teil von diagnose, 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.json bzw. 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 (--json fü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: in scan/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-alarms ohne 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 battery bzw. 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 diagnose und „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) und 85 (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

Choose a tag to compare

@github-actions github-actions released this 11 Oct 13:07
b4fbb73

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-check und 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 (uucp auf Arch, dialout auf
    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 oder obd-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 Adapterkennung ELM327 v1.5 (Demo) zeigen, dass die Daten nicht vom eigenen
    Auto stammen.
  • Adapter-Check: obd-diag adapter bzw. „Optionen → Adapter prüfen …“ zeigt Kennung,
    Spannung und welche Befehle aus der Versionsliste des Datenblatts der Adapter
    wirklich beantwortet (ATPPS v1.1, ATIGN/ATRD v1.4, ATAMC v2.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-Paket obd-diag und
    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-desktop ihn an (--remove-desktop entfernt ihn).
  • udev-Regel heißt jetzt 70-obd-diag.rules und liegt in src/obd_diag/share/. Unter
    der alten Nummer 99 kam das Tag uaccess zu spät und wirkte nicht; Gruppe und
    Dateirechte ändert sie nicht mehr (die Gruppe uucp gibt es auf Debian nicht).
  • Das sdist enthält keine Release-Notizen und Arbeitsdateien mehr.

obd-diag 0.2.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 16:11
945a0b0

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, diagnose und live
    lesen richtig.
  • Vier Befunde aus dem Test behoben (#7): Freeze Frame vom Steuergerät mit dem Code
    (vorher „unbekannter Code“), erstes ATZ mit ? 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/12 heißt „Mode nicht unterstützt“. Auf 7F <Mode> 78 wird 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-diag mit info, scan, diagnose, vin, clear, live,
    ports, export; Adapter-Mitschnitt mit --trace.
  • Oberfläche obd-diag-gui (PySide6/QML, Extra gui) 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.