Extension du protocole ELM327 assurant la prise en charge de BMW HSFZ (High Speed Fahrzeug Zugang — accès véhicule à haute vitesse). Le protocole E permet de réaliser un diagnostic UDS via Ethernet/TCP en utilisant l'interface AT standard de ELM327.
Tester (ScanDoc) Véhicule (BMW) ┌──────────┐ TCP/IP ┌─────────────┐ CAN/LIN ┌─────┐ │ SA=F4 │───────────────│ BMW ZGW │───────────────│ ECU │ │ (tester) │ Ethernet │ (gateway) │ bus interne │(TA) │ └──────────┘ port 6801 └─────────────┘ └─────┘
HSFZ — protocole propriétaire de BMW pour le diagnostic par Ethernet. Contrairement au DoIP standard (ISO 13400), il utilise son propre format de trames avec un en-tête de 6 octets (4 octets de longueur + 2 octets de code de contrôle) et un adressage sur 1 octet (au lieu de 2 octets pour DoIP).
Pour fonctionner, il faut configurer trois paramètres :
| Paramètre | Commande | Ce qu'il définit | Comment le connaître |
|---|---|---|---|
| IP ECU/Gateway | AT HI |
Destination de la connexion TCP | AT HD (discovery) ou définition manuelle |
| Source Address | AT HS |
Adresse du tester (1 octet) | Par défaut F4, en général inutile de la changer |
| Target Address | AT HT |
Adresse de l'ECU cible (1 octet) | D'après la documentation du véhicule |
Si HI n'est pas défini (IP = 00000000), AT SP E exécute automatiquement le discovery (UDP broadcast vers le port 6811), trouve le premier ECU et renseigne les paramètres à partir de sa réponse :
HI ← adresse IP de l'ECU/gateway (par ex. A9FE0114 = 169.254.1.20)HT ← adresse logique de l'ECU (par ex. 10 — en règle générale, le ZGW)HS ← reste F4 (valeur par défaut)La connexion TCP est ensuite établie vers le port 6801 → prêt pour UDS (Routing Activation non requis, contrairement à DoIP).
| HSFZ (protocole 'E') | DoIP (protocole 'D') | |
|---|---|---|
| Standard | Propriétaire BMW | ISO 13400 |
| Adressage | 1 octet (00–FF) | 2 octets (0000–FFFF) |
| Port TCP | 6801 | 13400 |
| Port UDP (discovery) | 6811 | 13400 |
| Routing Activation | Non requis | Obligatoire |
| En-tête de trame | 6 octets (len[4] + ctrl[2]) | 8 octets (ver[1] + inv[1] + type[2] + len[4]) |
| Adresse du tester | F4 (1 octet) |
0E80 (2 octets) |
AT SP E trouve l'ECU et se connecte de lui-même :
>ATZ ELM327 v2.3 >ATE0 OK >AT SP E # discovery → HI=A9FE0114, HT=10, HS=F4 OK # connexion TCP établie >22 F1 90 # UDS Read VIN — la requête ira vers le gateway (HT=10) 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36
Par exemple, le calculateur moteur :
>ATZ ELM327 v2.3 >ATE0 OK >AT SP E # discovery + connexion au gateway OK >22 F1 90 # requête VIN vers le 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 # basculer Target Address vers le calculateur moteur OK >22 F1 90 # la même requête — elle ira maintenant vers l'ECU 12 via le gateway 62 F1 90 ...
Définit l'adresse IPv4 de l'ECU (gateway) au format hex (4 octets, big-endian).
>AT HI A9FE0114 OK
Exemple : A9FE0114 = 169.254.1.20
Valeur par défaut : 00000000 (non définie). Si l'IP n'est pas définie lors de AT SP E, un Vehicle Discovery automatique est effectué (UDP broadcast vers le port 6811).
Définit l'adresse du tester (Source Address, SA) au format hex (1 octet).
>AT HS F4 OK
Valeur par défaut : F4. En général, inutile de la changer.
Définit l'adresse de l'ECU (Target Address, TA) au format hex (1 octet).
>AT HT 10 OK
Valeur par défaut : 00.
Définit le port TCP de l'ECU au format hex. Se définit avant AT SP E. Par défaut 1A91 (6801 décimal) — port standard de BMW HSFZ. Il n'est nécessaire de le changer que si l'ECU utilise un port non standard.
>AT HC 1A91 OK
Exécute un UDP broadcast Vehicle Discovery vers le port 6811. Affiche la liste des ECU trouvés avec leur VIN, leur adresse logique, leur IP et leur adresse MAC.
Renseigne automatiquement HI (IP) et HT (Target Address) à partir du premier ECU trouvé.
AT SP E avec HI=0 réalise le discovery de lui-même — un AT HD séparé n'est pas obligatoire. AT HD est utile lorsqu'il faut voir quels ECU sont présents sur le réseau avant la connexion.
>AT HD VIN:WBAPH5C55BA123456 ADDR:10 IP:A9FE0114 MAC:001A37B44210 OK
Plusieurs ECU sur le réseau :
>AT HD VIN:WBAPH5C55BA123456 ADDR:10 IP:A9FE0114 MAC:001A37B44210 VIN:WBAKF0C58CE123456 ADDR:20 IP:A9FE0115 MAC:001A37B44211 OK
Si aucun ECU n'est trouvé :
>AT HD NO DATA
| Scénario | Séquence |
|---|---|
| Automatique (gateway) | ATZ → AT SP E |
| ECU derrière le gateway (IP via discovery) | ATZ → AT HD → AT HT xx → AT SP E |
| ECU derrière le gateway (IP connue) | ATZ → AT HI hhhhhhhh → AT HT xx → AT SP E |
Routing Activation non requis (contrairement à DoIP).
En cas d'erreur à l'une des étapes, UNABLE TO CONNECT est renvoyé.
Les données hex sont envoyées comme UDS payload. ELM327 les encapsule automatiquement dans un HSFZ Diagnostic Message avec un en-tête SA+TA (adressage sur 1 octet).
>22F190 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36
Uniquement UDS payload, sans en-tête SA/TA :
62 F1 90 57 42 41 ...
SA + TA (4 octets au format J2534) + UDS payload :
10 00 F4 00 62 F1 90 57 42 41 ...
Format de l'en-tête : [TA_hi=0] [TA_lo] [SA_hi=0] [SA_lo] — adresse de l'émetteur de la réponse (ECU → Tester). Les octets de poids fort sont toujours 00, car HSFZ utilise un adressage sur 1 octet.
HSFZ est inclus dans l'ordre de recherche automatique des protocoles (AT SP 0). Lors de la tentative HSFZ :
Les commandes AT D (defaults) et AT Z (reset) réinitialisent tous les paramètres HSFZ :
HI → 00000000HS → F4HT → 00HC → 1A91 (6801)