Skip to content

ECU Studio AI 1.16.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:32
· 114 commits to main since this release

Hinweis (04.11.2026): Diese Version enthält gelernte Daten (candidate_model.json,
ms43_430069_structure_model.json, confidence_calibration.json), deren Trainings- bzw. Messdaten teilweise
keine dokumentierte Herkunft oder Freigabe haben. Ab 1.19.0
sind diese Dateien entfernt, und die App zeigt statt gemessener Prozentwerte die Art des Belegs. Wir empfehlen,
auf die aktuelle Version zu aktualisieren. Details:
Modellkarte, Abschnitt 2e.

Notice (4 Nov 2026): This version contains learned data (candidate_model.json,
ms43_430069_structure_model.json, confidence_calibration.json) whose training or measurement data partly has
no documented provenance or clearance. From 1.19.0
on, these files are removed, and the app shows the kind of evidence instead of measured percentages. We recommend
updating to the current version. Details:
model card, section 2e
(German).

Kennfelderkennung (alt → neu, gleiche Referenzen und gleiche Messmethode; Test = nie zum Einstellen verwendet)

  • Siemens MSD85 · Test: exakt 148 → 279 von 1026, Präzision 74 → 81 %.
  • Siemens MSD80 · Test (6 Stände, davon 4 neu als Testpaare): exakt 133–143 → 217–224 von 864, Präzision 77–78 → 81–82 %.
  • Bosch EDC16C35 / EDC16C31: exakt 111 → 283 / 123 → 272, Präzision 66 → 81 % / 71 → 82 %, Abdeckung 80 / 84 %.
  • Bosch EDC17CP09: exakt 157 → 463 von 703, Präzision 71 → 85 %; BMW ME9.2.1 109 → 170, ME9 41 → 98; BMW MSS54 69 → 97.
  • Bosch MED17.1.62 (6 Stände, Teil-XDF): exakt 49–64 → 121–145.
  • Kopf-Datensätze (Anzahl, Achsen, Werte) werden auch mit flachen oder groben Werten erkannt; Größe und Achsen belegt
    der Kopf (eigene Evidenzklasse header:nxny:shape, gemessen 98 % Treffer). Verrauschte Datensätze nur innerhalb einer
    Kette direkt aneinanderliegender Datensätze. Gelockerte Achsenregel nur bei 16-Bit-Zählern: auf Zufallsdaten,
    komprimierten und gelöschten Daten 0 Kandidaten (Negativkontrolle, 13 Dateien).
  • Belegte Funde (Kopf-Datensatz, Code-Verweis, Deskriptor) gewinnen Überlappungen gegen reine Glattheits-Kandidaten –
    außer ihr Kopf liegt im Inneren einer früher beginnenden Tabelle – und werden nicht mehr vom Ergebnislimit abgeschnitten.
  • Vorzeichen: bei gleich guter Lesart wird s16 nur gewählt, wenn die Bytes negative Werte enthalten.
  • Konfidenz neu kalibriert, nur auf Entwicklungs- und Trainingspaaren (Testdaten nicht mehr in der Kalibrierung).

Roadmap mit Clips

  • Jede neue Funktion in der Roadmap mit kurzem GIF-Clip und Version (wie bei Feature-Listen kommerzieller Editoren).
    Die Clips sind echte Aufnahmen der App: tools/feature_clips.py bedient das Hauptfenster offscreen, zeichnet
    Mauszeiger und Klicks ein und schreibt GIFs mit einem eigenen Encoder (tools/gif_writer.py, nur NumPy).
  • Vorführdatei core/showcase.py: synthetische Kopf-Datensätze, keine Herstellerdaten.

Englische Oberfläche

  • Komplette Oberfläche auf Englisch: Menüs, Werkzeugleiste, Dialoge, Meldungen, Statuszeile, Kennfeldliste, Prüfberichte.
    Auswahl unter Einstellungen → Sprache / Language (Standard: Systemsprache, deutsche Systeme bleiben deutsch).
  • Auch gezeichnete Ansichten (Heatmap, 3D, Kurven, Speicheratlas) und zusammengesetzte Statuszeilen
    („16 × 16 · u16 · Unbekannt“) werden übersetzt.
  • Übersetzungskatalog recognition/data/i18n/en.json (1792 Texte); tools/i18n_extract.py sammelt neue Texte aus dem
    Quellcode, ein Test verhindert unübersetzte Texte. Auswahlfelder zeigen Englisch, Projekte und Programmlogik bleiben
    sprachunabhängig.

Rechtlich saubere Referenzdaten

  • Recherche nach rechtmäßig verfügbaren Original/Definition-Paaren für MD1, MG1, Simos, SID, MED17.5/17.7: keine gefunden
    (öffentliche Uploads Dritter ohne Lizenz wurden nicht heruntergeladen; Begründung in docs/ECU_SUPPORT.md).
  • Neu: tools/tunerstudio_image.py – Kalibrierabbild + vollständige Referenz aus TunerStudio-Definition (.ini) und
    Abstimmung (.msq) für offene Steuergeräte (Speeduino, rusEFI, MegaSquirt); sichere Ausdrucksauswertung ohne eval,
    versionsgenaue Definition wird erzwungen.
  • Speeduino gemessen (14 offizielle Abstimmungen, GPL-2.0/CC BY-NC 4.0): ohne Definition nur 0–2 von 18–20 Tabellen
    exakt – Tabellen liegen vor ihren Achsen ohne Anzahl-Kopf. Ein Scanner dafür wurde gebaut, gemessen und verworfen
    (auf anderen Familien hunderte Fehlfunde). Status „teilweise“.
  • Unterstützungsmatrix: „validiert“ verlangt jetzt zusätzlich ≥ 20 % exakt gefundene Referenztabellen; Siemens MS45
    und MS42 stehen damit ehrlich auf „teilweise“.

Neue Steuergeräte-Familien validierbar machen

  • Identifikation erkennt zusätzlich Klartext-Kennungen von Continental/Siemens (Simos, SID, MSV, MSD) und MD1/MG1;
    auf den 27 Referenzdateien keine falsche Familie. Matrix-Zuordnung fällt auf die übergeordnete Familie zurück
    (SIMOS18.1 → Simos 18).
  • Neu: tools/validate_pair.py – ein Befehl misst für ein Original + passende A2L Kennung, exakte Kennfelder, Typ,
    Achsen, Präzision und Fehlfunde und schreibt eine Ergebniszeile; support_matrix übernimmt sie (auch für Familien
    ohne bisherige Messung). MD1, MG1, Simos, SID, MED17.5/17.7 bleiben nicht validiert, bis echte Paare gemessen sind.

Vertrauen: signierte Updates

  • Ed25519-Signaturen nach RFC 8032 (reines Python, gegen die RFC-Testvektoren geprüft, keine neue Abhängigkeit).
  • Release-Workflow signiert ZIP und Installer, sobald das Secret UPDATE_SIGNING_KEY existiert; ist ein öffentlicher
    Schlüssel im Repository, fehlt aber das Secret oder passt es nicht, bricht der Release ab.
  • Die App verlangt eine gültige Signatur, sobald ein öffentlicher Schlüssel eingebaut ist – geprüft wird vor dem
    Download, gebunden an Dateiname und SHA-256. Einrichtung: docs/RELEASE.md → „Signierte Updates einrichten“.

Prüfsummen (neu: Werkzeuge → Prüfsummen-Tabellen der Datei prüfen / korrigieren …)

  • Selbstbeschreibende Prüfsummen-Tabellen (Start, Ende, Wert, ~Wert) werden gefunden; ein Block gilt nur als bewiesen,
    wenn ein Verfahren den gespeicherten Wert am unveränderten Original exakt reproduziert (Basisadresse, Byte-Reihenfolge
    und Verfahren kommen aus der Datei, nicht aus einer Familienliste).
  • Gemessen an Originaldateien: ME7.5 (2 Stände) 68/68 und 70/70 Blöcke, ME7 Volvo 51/52 und 67/68, MED9 66/68, ME9 63/63
    (32-Bit-Wortsumme). EDC16C31/C35 und EDC17CP09: Die gefundenen Einträge sind offenbar keine Prüfsummen
    (Füllmuster, unplausible Bereiche); kein Verfahren reproduziert sie – keine Korrektur.
  • Korrektur mit Byte-Vorschau, verketteter Blöcke in mehreren Durchgängen, Endprüfung aller Blöcke, sonst Rücknahme;
    rückgängig machbar. Prüfbericht vor dem Export warnt bei falschen Tabellen-Prüfsummen. Signaturen (z. B. RSA) und
    weitere ECU-Prüfungen sind nicht abgedeckt – keine Flashfreigabe.

Arbeitsoberfläche

  • Hinweisbalken nach dem Öffnen: erkanntes Steuergerät mit Fundstelle und gemessener Unterstützungsstatus
    (z. B. „Bosch EDC17CP09 … validiert – 463 von 703 Kennfeldern exakt, Präzision 85 %“), Knopf zur Matrix.
  • Kennfeldkatalog: Filter nach gemessener Konfidenz (gesichert / wahrscheinlich / Vermutung / geprüft bzw. aus Definition).
  • Tastenkürzel: Strg+G war doppelt belegt; Funktionsgraph jetzt Strg+Umschalt+U (ein Test verhindert Doppelbelegungen).

ORI/MOD-Vergleich

  • Neuer Reiter „Außerhalb bekannter Kennfelder“: geänderte Bereiche, die zu keinem Katalog-Kennfeld gehören
    (zusammengefasst bei Lücken bis 16 Byte, größte zuerst), Doppelklick springt zur Stelle – dort stecken oft
    unbekannte, aber angepasste Tabellen.
  • Neuer Reiter „Differenz-Heatmap“: Änderung je Zelle (MOD − ORI, roh) für das gewählte Kennfeld, rot höher, blau niedriger.

Kennfeldnamen aus Schwesterständen (neu: Werkzeuge → Softwarestände: Namen aus Schwesterstand übernehmen …)

  • Namen und Layouts einer Definition (XDF/A2L/RomRaider/CSV) werden auf einen verwandten Softwarestand ohne Definition
    übertragen: Ausrichtung über Anker, die in beiden Dateien genau einmal vorkommen; Vorschlag nur mit Beleg am Zielort
    (identisch · gleicher Kopf · ähnliche Werte · gleiche Umgebung), immer ungeprüft.
  • Gemessen gegen die eigene XDF des Zielstands (tools/name_transfer_benchmark.py): MED17.1.62 404A/H/L, 5 Richtungen,
    60–80 % der gemeinsamen Namen übertragen, davon 92–96 % richtig (über gleiche Adresse allein: 6 %); MSD80-Schwesterstände
    99 % übertragen, 100 % richtig; nicht verwandte ME7.5-Stände: 14 von 110 übertragen (Zurückhaltung statt Raten).
  • Kein Funktionsklassifikator: Namen kommen nur aus einer Definition, nicht aus einem Modell.

Kennlinien (neu: Kennlinien-Datensätze n, X[n], W[n], z. B. Bosch Cur_Xs16Ws16; 1D exakt, alt → neu)

  • Test: MSD85 642 → 1128, MSD80 439 → 839, EDC16C35 562 → 942, EDC16C31 544 → 943 (Präzision 1D 89–96 %).
  • Entwicklung: EDC17CP09 946 → 1668 (93 %), ME9.2.1 385 → 597, ME9 205 → 271, MS45 176 → 200; 2D-Werte unverändert.
  • Nur in Datensatz-Ketten, an geraden Adressen und in der Byte-Reihenfolge, die die Kennfeld-Datensätze der Datei
    dominiert; Achsenketten (Siemens MS4x) werden nicht als Kennlinie gelesen. Eigene Evidenzklasse curve:record
    (gemessen 92 % Treffer). Negativkontrollen weiterhin 0 Kandidaten.

Geschwindigkeit (gleicher Rechner, 16 Kerne; Ergebnisse bitgenau gleich, per Vergleich geprüft)

  • Kennfeldsuche nutzt mehrere CPU-Kerne: Zeilenabstands-Suche je Datenbereich und Lesart in eigenen Prozessen,
    Datensatz- und Raster-Suche laufen gleichzeitig dazu. EDC17CP09 (2 MB) 33 → 10 s, MED17.1.62 25 → 7 s,
    EDC16C31 (4,6 MB) 22 → 11 s, MSD85 12 → 7 s. Kleine Dateien (< 256 KB Daten) bleiben einkernig.
  • Mehrere Prozesse nur, wenn ein geschützter Einstiegspunkt sie einschaltet (App, Benchmark);
    ECU_STUDIO_WORKERS=1 erzwingt einen Kern. Abbrechen verwirft noch nicht gestartete Teilaufgaben.
  • Datensatz-Suche: vektorisierter Vorfilter und Achsenprüfung ohne NumPy-Overhead (2 MB: 1,7 s statt mehrere Sekunden).

Steuergeräte-Identifikation und Unterstützungsmatrix

  • Neu: Kennungen aus der Datei mit Fundstelle – Bosch-EPK, Hardware-/Softwarenummer, VAG-Teilenummer, Siemens-Hardware;
    widersprüchliche Angaben werden als „mehrdeutig“ gemeldet.

  • Neu: Hilfe → Unterstützte Steuergeräte … mit Status (validiert / teilweise / experimentell / nicht validiert),
    gemessenen Softwareständen, Kennzahlen und benötigten Dateien; Datei-Info zeigt Kennung und Status der geladenen Datei.

  • tools/support_matrix.py erzeugt Matrix und docs/ECU_SUPPORT.md aus Benchmark-Ergebnissen; benchmark_suite misst
    zusätzlich den exakten Datentyp (Breite, Byte-Reihenfolge, Vorzeichen).

  • Neu: ROADMAP.md – in Entwicklung, geplant, wartet auf Referenzdaten, bewusst nicht geplant; Kurzfassung in der README.

  • docs/KONKURRENZANALYSE.md heißt jetzt docs/OPEN_SOURCE_VERGLEICH.md und ist auf dem aktuellen Stand (veraltete Lücken und die .ols-Entscheidung korrigiert).

  • Repository aufgeräumt und neu gegliedert: examples/ in demo/, checksum/, memory/, holdout/, templates/ mit Übersicht; docs/README.md als Doku-Index; Paketdateien (launcher.py, gesperrte Abhängigkeiten) nach packaging/; Testdateien mit sprechenden Namen statt Versionsendungen; 59 alte Berichte aus docs/history/ entfernt (in der Git-Historie bis v1.15.0).

  • Versehentlich committeter Test-Zwischenordner (mit Kopien von cmd.exe) aus der gesamten Historie entfernt; neue Repository-Tests verhindern Programmdateien, Archive, Firmware außerhalb von examples/ und lokale Pfade im Repository.

  • Hinweise beim Öffnen von ZIP-, HEX- und S19-Dateien nennen jetzt die tatsächlichen Menüpunkte.

  • README neu gestaltet: Banner, Inhaltsübersicht, Installation in drei Schritten, Funktionsübersicht, Erkennungsgüte, Steuergeräte-Tabelle mit Status, Ablaufdiagramm, Sicherheitshinweis.

  • Neu: docs/PROGRESS.md – Fortschritt der Kennfelderkennung je Meilenstein und Steuergerät; jeder Stand wurde aus der Git-Historie neu gemessen, mit denselben Referenzen und derselben Messmethode.

  • Vorherige Version wiederherstellen (Einstellungen): tauscht die vom Updater angelegte Sicherung mit der aktuellen Version, Selbsttest, bei Fehlschlag zurück; die ersetzte Version bleibt als Sicherung (Updater-Modus -Restore, getestet: hin, zurück, defekte Sicherung, keine Sicherung).

  • Update-Praxistest vor jeder Veröffentlichung: Der Release-Workflow aktualisiert auf Windows Server 2022 und 2025 das zuletzt veröffentlichte Release mit dessen eigenem Updater, prüft Oberfläche, Wiederherstellen und Installer; nur bei Erfolg wird veröffentlicht.

  • Hinweis zur Windows-SmartScreen-Warnung (nicht code-signiert) in README und automatisch in jedem Release-Text; im Update-Fenster wird dieser allgemeine Teil ausgeblendet.


Installation: ECU-Studio-AI-<version>-windows-x64.zip entpacken und ECU-Studio-AI.exe starten, oder den
Installer ECU-Studio-AI-<version>-setup.exe ausführen. Bestehende Installationen bieten das Update automatisch an.

Windows-Warnung beim ersten Start: Die EXE ist noch nicht code-signiert. Bei „Der Computer wurde durch Windows
geschützt“ auf „Weitere Informationen“ → „Trotzdem ausführen“ klicken. Echtheit prüfen: SHA-256 gegen die
.sha256-Datei, Build-Herkunft mit gh attestation verify <datei> --repo PCTestAdmin/ECU-Studio-AI.