Erweiterung des ELM327-Protokolls zur Unterstützung von BMW HSFZ (High Speed Fahrzeug Zugang). Das Protokoll E ermöglicht die UDS-Diagnose über Ethernet/TCP unter Verwendung des Standard-ELM327-AT-Interfaces.
Tester (ScanDoc) Fahrzeug (BMW) ┌──────────┐ TCP/IP ┌─────────────┐ CAN/LIN ┌─────┐ │ SA=F4 │───────────────│ BMW ZGW │───────────────│ ECU │ │ (Tester) │ Ethernet │ (Gateway) │ interner Bus │(TA) │ └──────────┘ Port 6801 └─────────────┘ └─────┘
HSFZ — proprietäres BMW-Protokoll für die Diagnose über Ethernet. Im Gegensatz zum Standard-DoIP (ISO 13400) verwendet es ein eigenes Frame-Format mit 6-Byte-Header (4 Bytes Länge + 2 Bytes Control-Code) und 1-Byte-Adressierung (statt 2 Bytes bei DoIP).
Für den Betrieb müssen drei Parameter konfiguriert werden:
| Parameter | Befehl | Legt fest | Wie ermitteln |
|---|---|---|---|
| IP ECU/Gateway | AT HI | Wohin per TCP verbinden | AT HD (Discovery) oder manuell setzen |
| Source Address | AT HS | Testeradresse (1 Byte) | Standardmäßig F4, in der Regel nicht zu ändern |
| Target Address | AT HT | Adresse des Ziel-Steuergeräts (1 Byte) | Aus der Fahrzeugdokumentation |
Wenn HI nicht gesetzt ist (IP = 00000000), führt AT SP E automatisch Discovery (UDP-Broadcast auf Port 6811) aus, findet das erste Steuergerät und füllt die Parameter aus dessen Antwort:
HI ← IP-Adresse des ECU/Gateways (z. B. A9FE0114 = 169.254.1.20)HT ← logische Adresse des Steuergeräts (z. B. 10 — in der Regel das ZGW)HS ← bleibt F4 (Standard)Danach erfolgt eine TCP-Verbindung auf Port 6801 → bereit für UDS (Routing Activation ist nicht erforderlich, im Gegensatz zu DoIP).
| HSFZ (Protokoll 'E') | DoIP (Protokoll 'D') | |
|---|---|---|
| Standard | Proprietär BMW | ISO 13400 |
| Adressierung | 1 Byte (00–FF) | 2 Bytes (0000–FFFF) |
| TCP-Port | 6801 | 13400 |
| UDP-Port (Discovery) | 6811 | 13400 |
| Routing Activation | Nicht erforderlich | Erforderlich |
| Frame-Header | 6 Bytes (len[4] + ctrl[2]) | 8 Bytes (ver[1] + inv[1] + type[2] + len[4]) |
| Testeradresse | F4 (1 Byte) | 0E80 (2 Bytes) |
AT SP E findet das Steuergerät selbst und stellt die Verbindung her:
>ATZ ELM327 v2.3 >ATE0 OK >AT SP E # Discovery → HI=A9FE0114, HT=10, HS=F4 OK # TCP-Verbindung hergestellt >22 F1 90 # UDS Read VIN — Anfrage geht an das Gateway (HT=10) 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36
Zum Beispiel das Motorsteuergerät:
>ATZ ELM327 v2.3 >ATE0 OK >AT SP E # Discovery + Verbindung zum Gateway OK >22 F1 90 # VIN-Anfrage an das Gateway (HT=10) 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36 >AT HT 12 # Target Address auf das Motorsteuergerät umschalten OK >22 F1 90 # dieselbe Anfrage — geht nun an ECU 12 über das Gateway 62 F1 90 ...
Setzt die IPv4-Adresse des Steuergeräts (Gateway) im Hex-Format (4 Bytes, Big-Endian).
>AT HI A9FE0114 OK
Beispiel: A9FE0114 = 169.254.1.20
Standardwert: 00000000 (nicht gesetzt). Wenn beim Aufruf von AT SP E keine IP gesetzt ist, wird automatisch ein Vehicle Discovery (UDP-Broadcast auf Port 6811) ausgeführt.
Setzt die Testeradresse (Source Address, SA) im Hex-Format (1 Byte).
>AT HS F4 OK
Standardwert: F4. In der Regel nicht zu ändern.
Setzt die ECU-Adresse (Target Address, TA) im Hex-Format (1 Byte).
>AT HT 10 OK
Standardwert: 00.
Setzt den TCP-Port des Steuergeräts im Hex-Format. Muss vor AT SP E gesetzt werden. Standard: 1A91 (6801 dezimal) — der Standardport für BMW HSFZ. Nur zu ändern, wenn das Steuergerät einen abweichenden Port verwendet.
>AT HC 1A91 OK
Führt ein UDP-Broadcast Vehicle Discovery auf Port 6811 aus. Gibt die Liste der gefundenen Steuergeräte mit VIN, logischer Adresse, IP und MAC-Adresse aus.
Füllt HI (IP) und HT (Target Address) automatisch aus dem ersten gefundenen Steuergerät.
Bei HI=0 führt AT SP E das Discovery selbst aus — ein separates AT HD ist nicht erforderlich. AT HD ist nützlich, wenn man vor dem Verbindungsaufbau sehen möchte, welche Steuergeräte im Netz vorhanden sind.
>AT HD VIN:WBAPH5C55BA123456 ADDR:10 IP:A9FE0114 MAC:001A37B44210 OK
Mehrere Steuergeräte im Netzwerk:
>AT HD VIN:WBAPH5C55BA123456 ADDR:10 IP:A9FE0114 MAC:001A37B44210 VIN:WBAKF0C58CE123456 ADDR:20 IP:A9FE0115 MAC:001A37B44211 OK
Wenn keine Steuergeräte gefunden wurden:
>AT HD NO DATA
| Szenario | Sequenz |
|---|---|
| Automatisch (Gateway) | ATZ → AT SP E |
| ECU hinter Gateway (IP via Discovery) | ATZ → AT HD → AT HT xx → AT SP E |
| ECU hinter Gateway (IP bekannt) | ATZ → AT HI hhhhhhhh → AT HT xx → AT SP E |
Routing Activation ist nicht erforderlich (im Gegensatz zu DoIP).
Bei einem Fehler in einem beliebigen Schritt wird UNABLE TO CONNECT zurückgegeben.
Hex-Daten werden als UDS-Payload gesendet. Der ELM327 verpackt sie automatisch in eine HSFZ Diagnostic Message mit SA+TA-Header (1-Byte-Adressierung).
>22F190 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36
Nur UDS-Payload, ohne SA/TA-Header:
62 F1 90 57 42 41 ...
SA + TA (4 Bytes im J2534-Format) + UDS-Payload:
10 00 F4 00 62 F1 90 57 42 41 ...
Header-Format: [TA_hi=0] [TA_lo] [SA_hi=0] [SA_lo] — Absenderadresse der Antwort (ECU → Tester). Die höherwertigen Bytes sind immer 00, da HSFZ eine 1-Byte-Adressierung verwendet.
HSFZ ist in die automatische Protokollsuche (AT SP 0) eingebunden. Beim HSFZ-Versuch:
Die Befehle AT D (Defaults) und AT Z (Reset) setzen alle HSFZ-Parameter zurück:
HI → 00000000HS → F4HT → 00HC → 1A91 (6801)