# RID (Routine Identifier)

> Ein Routine Identifier (RID) ist ein 16-Bit-Wert, der eine Funktion benennt, die ein Steuergerät auf Anfrage über RoutineControl (Service 0x31) ausführt: Flash löschen, Programmierabhängigkeiten prüfen, einen Aktortest fahren, einen Selbsttest starten. ISO 14229-1 Anhang F reserviert einige RIDs wie FF00 eraseMemory und FF01 checkProgrammingDependencies; der größte Teil des Raums ist hersteller- oder lieferantenspezifisch und steht in der ODX- oder CDD-Datei des Steuergeräts.

Eine RID ist der Zwei-Byte-Identifier, mit dem RoutineControl (0x31) eine Routine im Steuergerät startet, stoppt und abfragt, von Erase Memory (FF00) bis Herstellertests.

Source: https://auto-st.com/de/glossar/rid · Updated: 2026-10-07

## Was ist eine RID?

Ein Routine Identifier ist eine Zwei-Byte-Zahl, die eine Routine auswählt, also eine Funktion, die das Steuergerät auf Anfrage ausführt. Routinen sind der Sammelbegriff von UDS: alles, was weder Lesen oder Schreiben eines Datensatzes noch Speichertransfer ist, wird als Routine modelliert. Der Tester startet sie mit `31 01 <RID> [routineControlOptionRecord]`, stoppt sie mit `31 02 <RID>` und fragt das Ergebnis mit `31 03 <RID>` ab. Das Steuergerät antwortet `71 01 <RID> [routineInfo] [routineStatusRecord]`.

Typische Routinen sind das Löschen eines Flash-Blocks vor der Programmierung (`31 01 FF 00` mit dem Speicherbereich als Option Record), die Prüfung der Programmierabhängigkeiten nach dem Flashen (`31 01 FF 01`), ein Aktor- oder Selbsttest, das Zurücksetzen gelernter Werte oder das Löschen eines Schutz-Flags.

## Wo ist es definiert?

ISO 14229-1:2020 Kapitel 15.2 definiert RoutineControl, Anhang F die Routine-Identifier-Bereiche. `0x0000` bis `0x00FF` sind ISO/SAE-reserviert, `0x0100` bis `0x01FF` gehören zu Tachographen-Test-IDs, `0x0200` bis `0xDFFF` sind herstellerspezifisch, `0xE000` bis `0xE1FF` bilden die OBD-Test-IDs ab, `0xE200` ist die DeployLoopRoutineID für Airbag-Systeme und `0xE201` bis `0xE2FF` sind Safety-System-Routinen. `0xF000` bis `0xFEFF` sind lieferantenspezifisch. Den Block `0xFF00` bis `0xFF02` kennen die meisten Tester: `FF00` eraseMemory, `FF01` checkProgrammingDependencies, `FF02` eraseMirrorMemoryDTCs. Bedeutung, Option Record und Ergebnis jeder Hersteller-RID kommen aus der ODX- oder CDD-Datei des Steuergeräts.

## Was es in der Praxis bedeutet

RIDs sind der Service, bei dem ein Diagnose-Request eine physische Wirkung hat. Erase Memory macht die Anwendung unbrauchbar, bis neu programmiert wird, ein Aktortest bewegt etwas, ein Kalibrierungs-Reset verändert das Verhalten auf der Straße. Am Prüfstand lautet die Frage nie nur, welche RIDs existieren, sondern in welcher Session sie starten und ob SecurityAccess davor steht.

Wir sehen regelmäßig Routinen, die in der Extended Session ohne SecurityAccess starten, obwohl sie persistenten Zustand ändern, Routinen, die Option Records beliebiger Länge annehmen, und `FF00` eraseMemory, das in der Programming Session hinter einem schwachen Seed/Key erreichbar ist. Wir sehen auch Steuergeräte, die bei einer langen Routine `0x78` responsePending schicken und die endgültige Antwort dann nie liefern.

## Wie AutoST es testet

AutoST probiert Routine Identifier nicht per Brute Force durch. Es importiert die ODX-, PDX- oder CDD-Datei des Steuergeräts, extrahiert die definierten Routinen und ruft genau diese mit RoutineControl (`0x31`) auf, mit dem Payload aus der Datei oder einem, den du pro Routine überschreibst, und speichert Request und Antwort. Die Enumeration markiert `0x31` überall dort als riskanten Service, wo er antwortet, und der Risiko-Score gewichtet ihn.

## Häufige Missverständnisse

Eine RID ist keine DID. Beide haben zwei Bytes und beide kommen aus ODX oder CDD, aber eine DID benennt einen Datensatz und eine RID eine Aktion, und die beiden Identifier-Räume sind unabhängig. Und eine Routine, die `7F 31 22` conditionsNotCorrect antwortet, existiert; das Steuergerät weigert sich nur, sie jetzt auszuführen, etwa weil der Motor läuft oder die Spannung außerhalb des Bereichs liegt.

## FAQ

**Kann man RIDs wie DIDs per Brute Force durchprobieren?**

Nicht sinnvoll. Eine unbekannte Routine zu starten kann Speicher löschen, einen Aktor bewegen oder das Steuergerät in einen Zustand bringen, den es nicht mehr verlässt. Ein RID-Sweep ist deshalb ein destruktiver Test, und ein verantwortungsvoller Scan ruft nur die Routinen auf, die die ODX- oder CDD-Datei definiert, mit dem Payload, den die Datei erwartet.

**Was antwortet das Steuergerät beim Start einer Routine?**

Eine positive Antwort 71 01, gefolgt von der RID und optional einem routineInfo-Byte und einem routineStatusRecord. Auf 31 01 FF 01 kommt 71 01 FF 01 plus das Ergebnis der Abhängigkeitsprüfung. Unbekannte RIDs bekommen 7F 31 31, geschützte 7F 31 33.

**Welche RIDs sollten hinter SecurityAccess liegen?**

Jede Routine, die das Steuergerät oder das Fahrzeug verändert: Speicher löschen, Schreibschutz ändern, Aktortests, Kalibrierungs-Resets, Bandende-Funktionen. Ein rein lesender Selbsttest kann in der Extended Session vertretbar sein, aber die Herstellerspezifikation entscheidet.

## Sources

- [ISO 14229-1:2020 Straßenfahrzeuge, Unified diagnostic services (UDS), Teil 1: Anwendungsschicht, Kapitel 15.2 (RoutineControl) und Anhang F (Routine-Identifier-Definitionen)](https://www.iso.org/standard/72439.html)
- [ISO 22901-1:2008 Straßenfahrzeuge, Open diagnostic data exchange (ODX), Teil 1: Datenmodell](https://www.iso.org/standard/41207.html)

## Related

- [RoutineControl (0x31)](https://auto-st.com/de/glossar/routine-control-0x31)
- [DID (Data Identifier)](https://auto-st.com/de/glossar/did)
- [ODX (Open Diagnostic Data Exchange)](https://auto-st.com/de/glossar/odx)
- [CDD (CANdela Diagnostic Description)](https://auto-st.com/de/glossar/cdd)
- [Dein ODX und CDD, zu Tests gemacht.](https://auto-st.com/de/did-und-routinen-scan)
- [Kenne jede Tür ins ECU.](https://auto-st.com/de/uds-enumeration)

---
AutoST by Zyberum. Canonical page: https://auto-st.com/de/glossar/rid
