RID (Routine Identifier)
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.
Aktualisiert Diese Seite als Markdown
Kurz gesagt
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.
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
Häufig gestellte Fragen
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.
Quellen
Passende Seiten
- GlossarRoutineControl (0x31)UDS RoutineControl (0x31) startet, stoppt und liest Routinen eines Steuergeräts über den Routine Identifier (RID). Die Request- und Response-Bytes und was zu prüfen ist.
- GlossarDID (Data Identifier)Eine DID ist der 16-Bit-Identifier, mit dem UDS Datensätze adressiert, gelesen mit 0x22, geschrieben mit 0x2E. Bereiche nach ISO 14229-1 Anhang C und schreibbare DIDs.
- GlossarODX (Open Diagnostic Data Exchange)ODX (ISO 22901-1, ASAM MCD-2 D) ist das XML-Format, das beschreibt, wie ein Steuergerät UDS spricht: Services, DIDs, Routinen und Daten. Aufbau und Nutzen für Tester.
- GlossarCDD (CANdela Diagnostic Description)Eine CDD-Datei ist die Vector-CANdela-Beschreibung der Diagnoseschnittstelle eines Steuergeräts: Sessions, Services, DIDs, Routinen, Security Level. Inhalt und Nutzung.
- PlattformDein ODX und CDD, zu Tests gemacht.AutoST importiert ODX-, PDX- und Vector-CDD-Dateien, um gefundene DIDs zu benennen und die richtigen Routinen (0x31) aufzurufen. Write-Probing ist optional.
- PlattformKenne jede Tür ins ECU.AutoST enumeriert ein ECU über UDS: Diagnose-Endpunkte, Sessions, alle 255 Services und lesbare DIDs, plus XCP/CCP. Riskante Services werden markiert.
