Repository navigation
ECU Studio AI 1.16.0
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 Evidenzklasseheader: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.pybedient 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.pysammelt 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 ohneeval,
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_KEYexistiert; 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 Evidenzklassecurve: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=1erzwingt 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.pyerzeugt Matrix und docs/ECU_SUPPORT.md aus Benchmark-Ergebnissen;benchmark_suitemisst
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.mdheißt jetztdocs/OPEN_SOURCE_VERGLEICH.mdund ist auf dem aktuellen Stand (veraltete Lücken und die.ols-Entscheidung korrigiert). -
Repository aufgeräumt und neu gegliedert:
examples/indemo/,checksum/,memory/,holdout/,templates/mit Übersicht;docs/README.mdals Doku-Index; Paketdateien (launcher.py, gesperrte Abhängigkeiten) nachpackaging/; Testdateien mit sprechenden Namen statt Versionsendungen; 59 alte Berichte ausdocs/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 vonexamples/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.