Rozszerzenie protokołu ELM327 zapewniające obsługę BMW HSFZ (High Speed Fahrzeug Zugang — szybki dostęp do pojazdu). Protokół E umożliwia wykonywanie diagnostyki UDS przez Ethernet/TCP przy użyciu standardowego interfejsu AT ELM327.
Tester (ScanDoc) Pojazd (BMW) ┌──────────┐ TCP/IP ┌─────────────┐ CAN/LIN ┌─────┐ │ SA=F4 │───────────────│ BMW ZGW │───────────────│ ECU │ │ (tester) │ Ethernet │ (gateway) │ magistr. wewn.│(TA) │ └──────────┘ port 6801 └─────────────┘ └─────┘
HSFZ — własnościowy protokół BMW do diagnostyki przez Ethernet. W odróżnieniu od standardowego DoIP (ISO 13400) używa własnego formatu ramek z 6-bajtowym nagłówkiem (4 bajty długość + 2 bajty kod sterujący) oraz adresowania 1-bajtowego (zamiast 2-bajtowego w DoIP).
Do pracy należy skonfigurować trzy parametry:
| Parametr | Polecenie | Co ustawia | Jak ustalić |
|---|---|---|---|
| IP ECU/Gateway | AT HI |
Adres docelowy połączenia TCP | AT HD (discovery) lub ustawić ręcznie |
| Source Address | AT HS |
Adres testera (1 bajt) | Domyślnie F4, zwykle nie trzeba zmieniać |
| Target Address | AT HT |
Adres docelowego ECU (1 bajt) | Z dokumentacji pojazdu |
Jeśli HI nie jest ustawiony (IP = 00000000), AT SP E automatycznie wykonuje discovery (UDP broadcast na port 6811), znajduje pierwszy ECU i wypełnia parametry z jego odpowiedzi:
HI ← adres IP ECU/gateway (np. A9FE0114 = 169.254.1.20)HT ← adres logiczny ECU (np. 10 — z reguły ZGW)HS ← pozostaje F4 (wartość domyślna)Następnie zestawiane jest połączenie TCP na port 6801 → gotowe do UDS (Routing Activation nie jest wymagane, w odróżnieniu od DoIP).
| HSFZ (protokół 'E') | DoIP (protokół 'D') | |
|---|---|---|
| Standard | Własnościowy BMW | ISO 13400 |
| Adresowanie | 1 bajt (00–FF) | 2 bajty (0000–FFFF) |
| Port TCP | 6801 | 13400 |
| Port UDP (discovery) | 6811 | 13400 |
| Routing Activation | Niepotrzebne | Wymagane |
| Nagłówek ramki | 6 bajtów (len[4] + ctrl[2]) | 8 bajtów (ver[1] + inv[1] + type[2] + len[4]) |
| Adres testera | F4 (1 bajt) |
0E80 (2 bajty) |
AT SP E sam znajduje ECU i łączy się:
>ATZ ELM327 v2.3 >ATE0 OK >AT SP E # discovery → HI=A9FE0114, HT=10, HS=F4 OK # połączenie TCP zestawione >22 F1 90 # UDS Read VIN — zapytanie trafi do gateway (HT=10) 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36
Na przykład sterownik silnika:
>ATZ ELM327 v2.3 >ATE0 OK >AT SP E # discovery + połączenie z gateway OK >22 F1 90 # zapytanie VIN do 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 # przełączenie Target Address na sterownik silnika OK >22 F1 90 # to samo zapytanie — teraz trafi do ECU 12 przez gateway 62 F1 90 ...
Ustawia adres IPv4 ECU (gateway) w formacie hex (4 bajty, big-endian).
>AT HI A9FE0114 OK
Przykład: A9FE0114 = 169.254.1.20
Wartość domyślna: 00000000 (nieustawiona). Jeśli IP nie jest ustawiony przy AT SP E, wykonywane jest automatyczne Vehicle Discovery (UDP broadcast na port 6811).
Ustawia adres testera (Source Address, SA) w formacie hex (1 bajt).
>AT HS F4 OK
Wartość domyślna: F4. Zwykle nie trzeba zmieniać.
Ustawia adres ECU (Target Address, TA) w formacie hex (1 bajt).
>AT HT 10 OK
Wartość domyślna: 00.
Ustawia port TCP ECU w formacie hex. Zadawany przed AT SP E. Domyślnie 1A91 (6801 decimal) — standardowy port BMW HSFZ. Zmieniać należy tylko wtedy, gdy ECU używa niestandardowego portu.
>AT HC 1A91 OK
Wykonuje UDP broadcast Vehicle Discovery na port 6811. Wyświetla listę znalezionych ECU wraz z ich VIN, adresem logicznym, IP i adresem MAC.
Automatycznie wypełnia HI (IP) i HT (Target Address) z pierwszego znalezionego ECU.
AT SP E przy HI=0 sam wykonuje discovery — osobne AT HD nie jest konieczne. AT HD jest przydatne, gdy trzeba zobaczyć, jakie ECU są w sieci przed połączeniem.
>AT HD VIN:WBAPH5C55BA123456 ADDR:10 IP:A9FE0114 MAC:001A37B44210 OK
Kilka ECU w sieci:
>AT HD VIN:WBAPH5C55BA123456 ADDR:10 IP:A9FE0114 MAC:001A37B44210 VIN:WBAKF0C58CE123456 ADDR:20 IP:A9FE0115 MAC:001A37B44211 OK
Jeśli nie znaleziono ECU:
>AT HD NO DATA
| Scenariusz | Sekwencja |
|---|---|
| Automatyczny (gateway) | ATZ → AT SP E |
| ECU za gateway (IP przez discovery) | ATZ → AT HD → AT HT xx → AT SP E |
| ECU za gateway (IP znany) | ATZ → AT HI hhhhhhhh → AT HT xx → AT SP E |
Routing Activation nie jest wymagane (w odróżnieniu od DoIP).
W razie błędu na dowolnym kroku zwracane jest UNABLE TO CONNECT.
Dane hex wysyłane są jako UDS payload. ELM327 automatycznie opakowuje je w HSFZ Diagnostic Message z nagłówkiem SA+TA (adresowanie 1-bajtowe).
>22F190 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36
Tylko UDS payload, bez nagłówka SA/TA:
62 F1 90 57 42 41 ...
SA + TA (4 bajty w formacie J2534) + UDS payload:
10 00 F4 00 62 F1 90 57 42 41 ...
Format nagłówka: [TA_hi=0] [TA_lo] [SA_hi=0] [SA_lo] — adres nadawcy odpowiedzi (ECU → Tester). Starsze bajty zawsze 00, ponieważ HSFZ używa adresowania 1-bajtowego.
HSFZ jest włączony do kolejności automatycznego wyszukiwania protokołów (AT SP 0). Przy próbie HSFZ:
Polecenia AT D (defaults) i AT Z (reset) resetują wszystkie parametry HSFZ:
HI → 00000000HS → F4HT → 00HC → 1A91 (6801)