Quantex GmbH
Tu región: Europa

ELM327 BMW HSFZ

Descripción general

Extensión del protocolo ELM327 que proporciona compatibilidad con BMW HSFZ (High Speed Fahrzeug Zugang — acceso de alta velocidad al vehículo). El protocolo E permite realizar diagnóstico UDS por Ethernet/TCP utilizando la interfaz AT estándar de ELM327.

Cómo funciona HSFZ

Tester (ScanDoc)                    Vehículo (BMW)
┌──────────┐    TCP/IP     ┌─────────────┐    CAN/LIN    ┌─────┐
│ SA=F4    │───────────────│  BMW ZGW    │───────────────│ ECU │
│ (tester) │   Ethernet    │  (gateway)  │  bus interno  │(TA) │
└──────────┘   port 6801   └─────────────┘               └─────┘

HSFZ — protocolo propietario de BMW para el diagnóstico por Ethernet. A diferencia del DoIP estándar (ISO 13400), utiliza su propio formato de tramas con una cabecera de 6 bytes (4 bytes de longitud + 2 bytes de código de control) y un direccionamiento de 1 byte (en lugar de 2 bytes en DoIP).

Para funcionar es necesario configurar tres parámetros:

Parámetro Comando Qué establece Cómo averiguarlo
IP ECU/Gateway AT HI Destino de la conexión TCP AT HD (discovery) o establecer manualmente
Source Address AT HS Dirección del tester (1 byte) Por defecto F4, normalmente no es necesario cambiarla
Target Address AT HT Dirección del ECU de destino (1 byte) De la documentación del vehículo

Si HI no está definido (IP = 00000000), AT SP E ejecuta automáticamente el discovery (UDP broadcast al puerto 6811), encuentra el primer ECU y rellena los parámetros a partir de su respuesta:

A continuación se establece la conexión TCP al puerto 6801 → listo para UDS (Routing Activation no es necesario, a diferencia de DoIP).

Diferencias respecto a DoIP (protocolo 'D')

HSFZ (protocolo 'E') DoIP (protocolo 'D')
Estándar Propietario de BMW ISO 13400
Direccionamiento 1 byte (00–FF) 2 bytes (0000–FFFF)
Puerto TCP 6801 13400
Puerto UDP (discovery) 6811 13400
Routing Activation No necesario Obligatorio
Cabecera de trama 6 bytes (len[4] + ctrl[2]) 8 bytes (ver[1] + inv[1] + type[2] + len[4])
Dirección del tester F4 (1 byte) 0E80 (2 bytes)

Ejemplos

Consulta al gateway

AT SP E encuentra el ECU y se conecta por sí mismo:

>ATZ
ELM327 v2.3

>ATE0
OK

>AT SP E                 # discovery → HI=A9FE0114, HT=10, HS=F4
OK                       # conexión TCP establecida

>22 F1 90                # UDS Read VIN — la consulta irá al gateway (HT=10)
62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36

Consulta a un ECU concreto detrás del gateway

Por ejemplo, la centralita del motor:

>ATZ
ELM327 v2.3

>ATE0
OK

>AT SP E                 # discovery + conexión con el gateway
OK

>22 F1 90                # consulta VIN al 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                # cambiar Target Address a la centralita del motor
OK

>22 F1 90                # la misma consulta — ahora irá al ECU 12 a través del gateway
62 F1 90 ...

Comandos AT HSFZ

HI hhhhhhhh — dirección IP del ECU

Establece la dirección IPv4 del ECU (gateway) en formato hex (4 bytes, big-endian).

>AT HI A9FE0114
OK

Ejemplo: A9FE0114 = 169.254.1.20

Valor por defecto: 00000000 (no definido). Si la IP no está definida al ejecutar AT SP E, se realiza un Vehicle Discovery automático (UDP broadcast al puerto 6811).

HS hh — dirección de origen (Source Address)

Establece la dirección del tester (Source Address, SA) en formato hex (1 byte).

>AT HS F4
OK

Valor por defecto: F4. Normalmente no es necesario cambiarla.

HT hh — dirección de destino (Target Address)

Establece la dirección del ECU (Target Address, TA) en formato hex (1 byte).

>AT HT 10
OK

Valor por defecto: 00.

HC hhhh — puerto TCP HSFZ

Establece el puerto TCP del ECU en formato hex. Se define antes de AT SP E. Por defecto 1A91 (6801 decimal) — puerto estándar de BMW HSFZ. Solo es necesario cambiarlo si el ECU usa un puerto no estándar.

>AT HC 1A91
OK

HD — detección de ECU (Vehicle Discovery)

Ejecuta un UDP broadcast Vehicle Discovery al puerto 6811. Muestra la lista de ECU encontrados junto con su VIN, dirección lógica, IP y dirección MAC.

Rellena automáticamente HI (IP) y HT (Target Address) a partir del primer ECU encontrado.

AT SP E con HI=0 realiza el discovery por sí mismo — un AT HD aparte no es necesario. AT HD es útil cuando se necesita ver qué ECU hay en la red antes de conectar.

>AT HD
VIN:WBAPH5C55BA123456
ADDR:10
IP:A9FE0114
MAC:001A37B44210
OK

Varios ECU en la red:

>AT HD
VIN:WBAPH5C55BA123456
ADDR:10
IP:A9FE0114
MAC:001A37B44210
VIN:WBAKF0C58CE123456
ADDR:20
IP:A9FE0115
MAC:001A37B44211
OK

Si no se encuentra ningún ECU:

>AT HD
NO DATA

Secuencia de inicialización

Escenario Secuencia
Automático (gateway) ATZAT SP E
ECU detrás del gateway (IP por discovery) ATZAT HDAT HT xxAT SP E
ECU detrás del gateway (IP conocida) ATZAT HI hhhhhhhhAT HT xxAT SP E

Qué ocurre al ejecutar AT SP E

  1. Disconnect — desconexión del protocolo actual
  2. Connect — creación del canal HSFZ J2534 (HSFZ_PS = 0x8FFC)
  3. Discovery (si la IP no está definida) — UDP broadcast al puerto 6811 para buscar el ECU
  4. Set Config — configuración de IP, SA, TA, puerto TCP
  5. TCP Connect — establecimiento de la conexión TCP con el ECU al puerto 6801

Routing Activation no es necesario (a diferencia de DoIP).

Si se produce un error en cualquiera de los pasos, se devuelve UNABLE TO CONNECT.


Formato de los datos OBD

Envío

Los datos hex se envían como UDS payload. ELM327 los encapsula automáticamente en un HSFZ Diagnostic Message con cabecera SA+TA (direccionamiento de 1 byte).

>22F190
62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36

Respuesta (H0 — headers off, por defecto)

Solo UDS payload, sin cabecera SA/TA:

62 F1 90 57 42 41 ...

Respuesta (H1 — headers on)

SA + TA (4 bytes en formato J2534) + UDS payload:

10 00 F4 00 62 F1 90 57 42 41 ...

Formato de la cabecera: [TA_hi=0] [TA_lo] [SA_hi=0] [SA_lo] — dirección del emisor de la respuesta (ECU → Tester). Los bytes superiores son siempre 00, ya que HSFZ usa direccionamiento de 1 byte.


Búsqueda automática de protocolo

HSFZ está incluido en el orden de búsqueda automática de protocolos (AT SP 0). Al intentar HSFZ:

  1. Se crea un canal HSFZ temporal
  2. Se ejecuta Vehicle Discovery (UDP broadcast al puerto 6811, timeout 2 s)
  3. Si se encuentra un ECU — conexión por TCP
  4. Si la conexión tiene éxito — se envía una consulta OBD de prueba
  5. Si no se encuentra ningún ECU o no hay respuesta — se pasa al siguiente protocolo

Restablecimiento de parámetros

Los comandos AT D (defaults) y AT Z (reset) restablecen todos los parámetros HSFZ:


Limitaciones