Quantex GmbH
Votre région : Europe

ELM327 BMW HSFZ

Présentation

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.

Fonctionnement de HSFZ

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 :

La connexion TCP est ensuite établie vers le port 6801 → prêt pour UDS (Routing Activation non requis, contrairement à DoIP).

Différences par rapport à DoIP (protocole 'D')

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)

Exemples

Requête vers le gateway

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

Requête vers un ECU spécifique derrière le gateway

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 ...

Commandes AT HSFZ

HI hhhhhhhh — adresse IP de l'ECU

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).

HS hh — adresse source (Source Address)

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.

HT hh — adresse de destination (Target Address)

Définit l'adresse de l'ECU (Target Address, TA) au format hex (1 octet).

>AT HT 10
OK

Valeur par défaut : 00.

HC hhhh — port TCP HSFZ

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

HD — détection d'ECU (Vehicle Discovery)

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

Séquence d'initialisation

Scénario Séquence
Automatique (gateway) ATZAT SP E
ECU derrière le gateway (IP via discovery) ATZAT HDAT HT xxAT SP E
ECU derrière le gateway (IP connue) ATZAT HI hhhhhhhhAT HT xxAT SP E

Ce qui se passe lors de AT SP E

  1. Disconnect — déconnexion du protocole en cours
  2. Connect — création du canal HSFZ J2534 (HSFZ_PS = 0x8FFC)
  3. Discovery (si l'IP n'est pas définie) — UDP broadcast vers le port 6811 pour rechercher l'ECU
  4. Set Config — configuration de l'IP, SA, TA, port TCP
  5. TCP Connect — établissement de la connexion TCP avec l'ECU sur le port 6801

Routing Activation non requis (contrairement à DoIP).

En cas d'erreur à l'une des étapes, UNABLE TO CONNECT est renvoyé.


Format des données OBD

Envoi

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

Réponse (H0 — headers off, par défaut)

Uniquement UDS payload, sans en-tête SA/TA :

62 F1 90 57 42 41 ...

Réponse (H1 — headers on)

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.


Recherche automatique de protocole

HSFZ est inclus dans l'ordre de recherche automatique des protocoles (AT SP 0). Lors de la tentative HSFZ :

  1. Un canal HSFZ temporaire est créé
  2. Un Vehicle Discovery est exécuté (UDP broadcast vers le port 6811, timeout 2 s)
  3. Si un ECU est trouvé — connexion par TCP
  4. Si la connexion réussit — une requête OBD de test est envoyée
  5. Si aucun ECU n'est trouvé ou s'il n'y a pas de réponse — passage au protocole suivant

Réinitialisation des paramètres

Les commandes AT D (defaults) et AT Z (reset) réinitialisent tous les paramètres HSFZ :


Limitations