[{"data":1,"prerenderedAt":1273},["Reactive",2],{"kb-nav":3,"kb-doc":96},[4,10,15,20,25,30,35,40,45,50,55,60,65,70,75,81,86,91],{"_path":5,"title":6,"description":7,"part":8,"chapterNumber":9},"/knowledge-base/networks/introduction","Introduction","Overview of the communication networks used in modern vehicles, from LIN to Automotive Ethernet.","Vehicle Networks & Protocols",1,{"_path":11,"title":12,"description":13,"part":8,"chapterNumber":14},"/knowledge-base/networks/vehicle-documentation","Vehicle Documentation","Where to find manufacturer wiring diagrams, J2534 passthrough devices, and the different types of diagrams that are useful when researching a vehicle.",2,{"_path":16,"title":17,"description":18,"part":8,"chapterNumber":19},"/knowledge-base/networks/lin-bus","Local Interconnect Network (LIN)","Local Interconnect Network — a single-wire low-speed bus used as a low-cost alternative to CAN for non-critical body electronics.",3,{"_path":21,"title":22,"description":23,"part":8,"chapterNumber":24},"/knowledge-base/networks/controller-area-network","Controller Area Network (CAN)","ISO 11898 — the differential bus that became the backbone of automotive networking. Frames, bit timing, errors, CAN FD, message contents, and practical attacks.",4,{"_path":26,"title":27,"description":28,"part":8,"chapterNumber":29},"/knowledge-base/networks/flexray","FlexRay","Time-triggered, deterministic automotive bus standardized as ISO 17458, designed for higher speeds and drive-by-wire systems.",5,{"_path":31,"title":32,"description":33,"part":8,"chapterNumber":34},"/knowledge-base/networks/automotive-ethernet","Automotive Ethernet","Automotive variants of Ethernet — 100BASE-T1, 1000BASE-T1, and 10BASE-T1S — built around single twisted-pair cabling and strict EMC requirements.",6,{"_path":36,"title":37,"description":38,"part":8,"chapterNumber":39},"/knowledge-base/networks/secure-onboard-communication","Secure Onboard Communication (SecOC)","AUTOSAR's standard for cryptographic message authentication on in-vehicle networks — freshness values, MAC computation and key management.",7,{"_path":41,"title":6,"description":42,"part":43,"chapterNumber":44},"/knowledge-base/diagnostics/introduction","Overview of automotive diagnostic protocols — ISO-TP, OBD-II, UDS, CCP and XCP — and how they layer on top of CAN.","Diagnostic Protocols",8,{"_path":46,"title":47,"description":48,"part":43,"chapterNumber":49},"/knowledge-base/diagnostics/iso-tp","ISO 15765-2 (ISO-TP)","ISO 15765-2 transport layer for sending diagnostic payloads larger than 8 bytes over CAN — single, first, consecutive and flow-control frames.",9,{"_path":51,"title":52,"description":53,"part":43,"chapterNumber":54},"/knowledge-base/diagnostics/vw-tp20","VW Transport Protocol 2.0 (TP 2.0)","Volkswagen's pre-ISO-TP transport layer for KWP2000 over CAN — channel setup, parameter negotiation, and the data exchange counter scheme.",10,{"_path":56,"title":57,"description":58,"part":43,"chapterNumber":59},"/knowledge-base/diagnostics/obd-ii","On-board diagnostics (OBD-II)","On-Board Diagnostics II — the J1962 connector, signal protocols, service IDs, parameter IDs, and DTC encoding.",11,{"_path":61,"title":62,"description":63,"part":43,"chapterNumber":64},"/knowledge-base/diagnostics/uds","Unified Diagnostic Services (UDS)","ISO 14229-1 — the modern diagnostic protocol for sessions, Read/Write DID, Security Access, Routine Control and firmware Request Download / Upload.",12,{"_path":66,"title":67,"description":68,"part":43,"chapterNumber":69},"/knowledge-base/diagnostics/ccp","CAN Calibration Protocol (CCP)","A low-level debug/calibration protocol over CAN — Command Receive Object, Data Transfer Object, and the commands used to read and write ECU memory.",13,{"_path":71,"title":72,"description":73,"part":43,"chapterNumber":74},"/knowledge-base/diagnostics/xcp","Universal Measurement and Calibration Protocol (XCP)","ASAM XCP — successor to CCP supporting CAN, CAN FD, FlexRay, and Ethernet, with synchronous data acquisition, stimulation, and calibration.",14,{"_path":76,"title":77,"description":78,"part":79,"chapterNumber":80},"/knowledge-base/tools/can-adapters","CAN Adapters","USB-to-CAN adapters — comma.ai red panda and PEAK-System PCAN — and the standard DB-9 pinout for CAN.","Tools",15,{"_path":82,"title":83,"description":84,"part":79,"chapterNumber":85},"/knowledge-base/tools/can-analysis","CAN Analysis","Tools for analysing and reverse-engineering CAN traffic — comma.ai cabana, SavyCAN, VehicleSpy, and Wireshark.",16,{"_path":87,"title":88,"description":89,"part":79,"chapterNumber":90},"/knowledge-base/tools/scripting","Scripting","Python libraries and CLI tools for talking to a CAN bus — comma.ai panda, SocketCAN can-utils, python-can, and Scapy with ISO-TP and UDS examples.",17,{"_path":92,"title":93,"description":94,"part":79,"chapterNumber":95},"/knowledge-base/tools/dbc-files","DBC Files","The DBC file format used to describe the contents of CAN messages — nodes, messages, signals, comments, and value tables.",18,{"_path":56,"_dir":97,"_draft":98,"_partial":98,"_locale":99,"title":57,"description":58,"part":43,"chapterNumber":59,"body":100,"_type":1268,"_id":1269,"_source":1270,"_file":1271,"_extension":1272},"diagnostics",false,"",{"type":101,"children":102,"toc":1239},"root",[103,111,117,122,127,132,139,215,221,226,231,235,241,246,299,305,354,359,371,420,427,439,458,464,476,496,502,514,535,541,553,566,572,583,588,594,606,617,623,635,640,646,658,663,669,680,698,704,710,729,734,758,760,1083,1089,1101,1161,1167,1210],{"type":104,"tag":105,"props":106,"children":108},"element","h1",{"id":107},"on-board-diagnostics-obd-ii",[109],{"type":110,"value":57},"text",{"type":104,"tag":112,"props":113,"children":114},"p",{},[115],{"type":110,"value":116},"OBD (On-Board Diagnostics) is a standardized way of accessing vehicle data. It was first required in 1988 in California, and has since been revised several times. OBD-II was introduced in 1996 and became mandatory in the United States; Europe introduced similar EOBD requirements later.",{"type":104,"tag":112,"props":118,"children":119},{},[120],{"type":110,"value":121},"OBD-I was introduced as a means to ensure emission control systems would function during the whole life of the vehicle. The goal was to read out emissions-related data from the vehicle every year during an annual inspection. However, because the reporting of emissions-specific data was not standardized, it wasn't very successful. It also didn't help that every manufacturer used its own connector and own set of DTCs.",{"type":104,"tag":112,"props":123,"children":124},{},[125],{"type":110,"value":126},"To solve OBD-I's problems, OBD-II was introduced. In the new standard, the connector, electrical signaling, and DTCs were specified.",{"type":104,"tag":112,"props":128,"children":129},{},[130],{"type":110,"value":131},"Europe followed in 2001 when they introduced EOBD for petrol cars, and in 2004 for diesel cars. EOBD is essentially the European implementation of the same emissions-focused diagnostics concept.",{"type":104,"tag":133,"props":134,"children":136},"h2",{"id":135},"history",[137],{"type":110,"value":138},"History",{"type":104,"tag":140,"props":141,"children":142},"ul",{},[143,155,165,175,185,195,205],{"type":104,"tag":144,"props":145,"children":146},"li",{},[147,153],{"type":104,"tag":148,"props":149,"children":150},"strong",{},[151],{"type":110,"value":152},"1988",{"type":110,"value":154}," — OBD-I is required in California.",{"type":104,"tag":144,"props":156,"children":157},{},[158,163],{"type":104,"tag":148,"props":159,"children":160},{},[161],{"type":110,"value":162},"1996",{"type":110,"value":164}," — OBD-II is made mandatory in the United States for cars and light trucks.",{"type":104,"tag":144,"props":166,"children":167},{},[168,173],{"type":104,"tag":148,"props":169,"children":170},{},[171],{"type":110,"value":172},"2001",{"type":110,"value":174}," — EOBD is made mandatory in Europe for petrol cars.",{"type":104,"tag":144,"props":176,"children":177},{},[178,183],{"type":104,"tag":148,"props":179,"children":180},{},[181],{"type":110,"value":182},"2004",{"type":110,"value":184}," — EOBD is made mandatory in Europe for diesel cars.",{"type":104,"tag":144,"props":186,"children":187},{},[188,193],{"type":104,"tag":148,"props":189,"children":190},{},[191],{"type":110,"value":192},"2005",{"type":110,"value":194}," — OBD-II is made mandatory in the United States for medium duty vehicles.",{"type":104,"tag":144,"props":196,"children":197},{},[198,203],{"type":104,"tag":148,"props":199,"children":200},{},[201],{"type":110,"value":202},"2008",{"type":110,"value":204}," — OBD-II must use CAN in the United States.",{"type":104,"tag":144,"props":206,"children":207},{},[208,213],{"type":104,"tag":148,"props":209,"children":210},{},[211],{"type":110,"value":212},"2010",{"type":110,"value":214}," — OBD-II is made mandatory in the United States for heavy duty vehicles.",{"type":104,"tag":133,"props":216,"children":218},{"id":217},"sae-j1962-connector",[219],{"type":110,"value":220},"SAE J1962 Connector",{"type":104,"tag":112,"props":222,"children":223},{},[224],{"type":110,"value":225},"The connector used for OBD-II is the SAE J1962 diagnostic link connector. There is a Type A connector for 12 V vehicles, and a Type B for 24 V vehicles. The connector has 16 pins, some of which are part of the standard while others can be used at the manufacturer's discretion.",{"type":104,"tag":112,"props":227,"children":228},{},[229],{"type":110,"value":230},"On newer vehicles that expose DoIP on the OBD-II connector, some of the manufacturer-specific pins are used for Ethernet. There are two possible pinouts, Option 1 and Option 2 — by measuring the voltage on pin 8 (the DoIP Activation Line), the tester can determine which pinout is in use.",{"type":104,"tag":232,"props":233,"children":234},"obd-pinout",{},[],{"type":104,"tag":133,"props":236,"children":238},{"id":237},"signal-protocols",[239],{"type":110,"value":240},"Signal Protocols",{"type":104,"tag":112,"props":242,"children":243},{},[244],{"type":110,"value":245},"The OBD-II standard allows for implementing one or more of the following signaling protocols. Since 2008, CAN is mandatory in the United States.",{"type":104,"tag":140,"props":247,"children":248},{},[249,259,269,279,289],{"type":104,"tag":144,"props":250,"children":251},{},[252,257],{"type":104,"tag":148,"props":253,"children":254},{},[255],{"type":110,"value":256},"SAE J1850 PWM",{"type":110,"value":258}," — Two-wire PWM-based signal running at 41.6 kbit/s. Most commonly used in older Ford vehicles.",{"type":104,"tag":144,"props":260,"children":261},{},[262,267],{"type":104,"tag":148,"props":263,"children":264},{},[265],{"type":110,"value":266},"SAE J1850 VPW",{"type":110,"value":268}," — One-wire VPW-based signal. After every bit the level on the bus changes. The length of the high pulse determines the value of the bit: 64 µs for a logical 1, 128 µs for a logical 0. Due to the variable length of each bit there is no fixed data rate. Most commonly used in older General Motors vehicles.",{"type":104,"tag":144,"props":270,"children":271},{},[272,277],{"type":104,"tag":148,"props":273,"children":274},{},[275],{"type":110,"value":276},"ISO 9141 (K-Line)",{"type":110,"value":278}," — UART-based signal running at 10.4 kbit/s. Used in EU, Chrysler, and Asian cars from 2000 until 2004.",{"type":104,"tag":144,"props":280,"children":281},{},[282,287],{"type":104,"tag":148,"props":283,"children":284},{},[285],{"type":110,"value":286},"ISO 14230 (KWP2000)",{"type":110,"value":288}," — Same physical layer as ISO 9141. Common after 2003.",{"type":104,"tag":144,"props":290,"children":291},{},[292,297],{"type":104,"tag":148,"props":293,"children":294},{},[295],{"type":110,"value":296},"ISO 15765 (CAN)",{"type":110,"value":298}," — Mandatory in the United States since 2008. Uses ISO-TP as a transport layer.",{"type":104,"tag":133,"props":300,"children":302},{"id":301},"service-ids-sids",[303],{"type":110,"value":304},"Service IDs (SIDs)",{"type":104,"tag":112,"props":306,"children":307},{},[308,310,319,321,328,330,336,338,344,346,352],{"type":110,"value":309},"The protocol itself was standardized as SAE J1979 (also published as ",{"type":104,"tag":311,"props":312,"children":316},"a",{"href":313,"rel":314},"https://www.iso.org/standard/55005.html",[315],"nofollow",[317],{"type":110,"value":318},"ISO 15031-5",{"type":110,"value":320},") and defines a set of services that must be supported. These \"services\" used to be called \"modes\". A successful response starts with the SID ORed with ",{"type":104,"tag":322,"props":323,"children":325},"code",{"className":324},[],[326],{"type":110,"value":327},"0x40",{"type":110,"value":329}," (e.g. SID ",{"type":104,"tag":322,"props":331,"children":333},{"className":332},[],[334],{"type":110,"value":335},"0x01",{"type":110,"value":337}," becomes a response of ",{"type":104,"tag":322,"props":339,"children":341},{"className":340},[],[342],{"type":110,"value":343},"0x41",{"type":110,"value":345},"). On error, the reply starts with ",{"type":104,"tag":322,"props":347,"children":349},{"className":348},[],[350],{"type":110,"value":351},"0x7F",{"type":110,"value":353},", followed by the SID and a UDS-style negative response code.",{"type":104,"tag":112,"props":355,"children":356},{},[357],{"type":110,"value":358},"The PID, OBDMID, TID and INFOTYPE values referenced below are catalogued in the SAE J1979-DA digital annex.",{"type":104,"tag":360,"props":361,"children":363},"h3",{"id":362},"_0x01-show-current-data",[364,369],{"type":104,"tag":322,"props":365,"children":367},{"className":366},[],[368],{"type":110,"value":335},{"type":110,"value":370}," — Show current data",{"type":104,"tag":112,"props":372,"children":373},{},[374,376,382,384,389,391,397,399,404,406,411,412,418],{"type":110,"value":375},"Reads a live emissions-related parameter. The request carries a 1-byte PID; the response echoes the PID followed by 1 to 4 data bytes (named A, B, C, D). PID ",{"type":104,"tag":322,"props":377,"children":379},{"className":378},[],[380],{"type":110,"value":381},"0x00",{"type":110,"value":383}," is special: it reports a bitmap of which PIDs in the range ",{"type":104,"tag":322,"props":385,"children":387},{"className":386},[],[388],{"type":110,"value":335},{"type":110,"value":390},"–",{"type":104,"tag":322,"props":392,"children":394},{"className":393},[],[395],{"type":110,"value":396},"0x20",{"type":110,"value":398}," the ECU supports. The same trick (PID ",{"type":104,"tag":322,"props":400,"children":402},{"className":401},[],[403],{"type":110,"value":396},{"type":110,"value":405},", ",{"type":104,"tag":322,"props":407,"children":409},{"className":408},[],[410],{"type":110,"value":327},{"type":110,"value":405},{"type":104,"tag":322,"props":413,"children":415},{"className":414},[],[416],{"type":110,"value":417},"0x60",{"type":110,"value":419},", …) walks the rest of the table.",{"type":104,"tag":421,"props":422,"children":426},"uds-exchange",{":request":423,":response":424,"title":425},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"01\",\"description\":\"Request current powertrain diagnostic data SID.\"},{\"name\":\"parameterIdentifier\",\"mnemonic\":\"PID\",\"placeholder\":\"PID\",\"description\":\"1-byte PID (see SAE J1979-DA).\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"41\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"parameterIdentifier\",\"mnemonic\":\"PID\",\"placeholder\":\"PID\",\"description\":\"Echoed PID.\"},{\"name\":\"dataRecord\",\"mnemonic\":\"DREC\",\"placeholder\":\"1–4 bytes (Data A–D)\",\"description\":\"PID-specific value. Format and length depend on the PID.\"}]}","0x01 — Request current powertrain diagnostic data",[],{"type":104,"tag":360,"props":428,"children":430},{"id":429},"_0x02-show-freeze-frame-data",[431,437],{"type":104,"tag":322,"props":432,"children":434},{"className":433},[],[435],{"type":110,"value":436},"0x02",{"type":110,"value":438}," — Show freeze frame data",{"type":104,"tag":112,"props":440,"children":441},{},[442,444,449,451,456],{"type":110,"value":443},"Reads emissions data captured at the moment a DTC was stored. Same shape as Service ",{"type":104,"tag":322,"props":445,"children":447},{"className":446},[],[448],{"type":110,"value":335},{"type":110,"value":450},", but with an extra \"frame number\" byte. Frame ",{"type":104,"tag":322,"props":452,"children":454},{"className":453},[],[455],{"type":110,"value":381},{"type":110,"value":457}," is the freeze frame associated with the DTC that triggered storage.",{"type":104,"tag":421,"props":459,"children":463},{":request":460,":response":461,"title":462},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"02\",\"description\":\"Request powertrain freeze frame data SID.\"},{\"name\":\"parameterIdentifier\",\"mnemonic\":\"PID\",\"placeholder\":\"PID\",\"description\":\"1-byte PID.\"},{\"name\":\"frameNumber\",\"mnemonic\":\"FRNO\",\"placeholder\":\"frame\",\"description\":\"Freeze frame number. 0x00 = freeze frame stored when the DTC was set.\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"42\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"parameterIdentifier\",\"mnemonic\":\"PID\",\"placeholder\":\"PID\",\"description\":\"Echoed PID.\"},{\"name\":\"frameNumber\",\"mnemonic\":\"FRNO\",\"placeholder\":\"frame\",\"description\":\"Echoed frame number.\"},{\"name\":\"dataRecord\",\"mnemonic\":\"DREC\",\"placeholder\":\"1–4 bytes (Data A–D)\",\"description\":\"PID-specific value captured at freeze-frame time.\"}]}","0x02 — Request powertrain freeze frame data",[],{"type":104,"tag":360,"props":465,"children":467},{"id":466},"_0x03-show-stored-diagnostic-trouble-codes",[468,474],{"type":104,"tag":322,"props":469,"children":471},{"className":470},[],[472],{"type":110,"value":473},"0x03",{"type":110,"value":475}," — Show stored diagnostic trouble codes",{"type":104,"tag":112,"props":477,"children":478},{},[479,481,486,488,494],{"type":110,"value":480},"Reads \"confirmed\" emission-related DTCs. The request has no payload. On CAN (ISO 15765-4) the response starts with a count byte; on the older protocols the count comes from PID ",{"type":104,"tag":322,"props":482,"children":484},{"className":483},[],[485],{"type":110,"value":335},{"type":110,"value":487}," instead. Each DTC takes two bytes; see the ",{"type":104,"tag":311,"props":489,"children":491},{"href":490},"#diagnostic-trouble-codes-dtcs",[492],{"type":110,"value":493},"DTC encoding",{"type":110,"value":495}," section below.",{"type":104,"tag":421,"props":497,"children":501},{":request":498,":response":499,"title":500},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"03\",\"description\":\"Request stored DTCs SID. No payload.\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"43\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"numberOfDTCs\",\"mnemonic\":\"#OFDTC\",\"placeholder\":\"count\",\"description\":\"Number of DTCs that follow (CAN only). 0x00 = no DTCs stored.\"},{\"name\":\"dtcRecord\",\"mnemonic\":\"DTC\",\"placeholder\":\"2 bytes per DTC\",\"description\":\"Two bytes per DTC, repeated for each stored code.\"}]}","0x03 — Request stored emission-related DTCs",[],{"type":104,"tag":360,"props":503,"children":505},{"id":504},"_0x04-clear-diagnostic-trouble-codes-and-stored-values",[506,512],{"type":104,"tag":322,"props":507,"children":509},{"className":508},[],[510],{"type":110,"value":511},"0x04",{"type":110,"value":513}," — Clear diagnostic trouble codes and stored values",{"type":104,"tag":112,"props":515,"children":516},{},[517,519,525,527,533],{"type":110,"value":518},"Clears confirmed and pending DTCs, freeze frame data, on-board monitor results, MIL state, distance/time-with-MIL counters, etc. Permanent DTCs (Service ",{"type":104,"tag":322,"props":520,"children":522},{"className":521},[],[523],{"type":110,"value":524},"0x0A",{"type":110,"value":526},") are not affected. The request and response have no payload. Most ECUs require ignition ON with the engine off and otherwise return NRC ",{"type":104,"tag":322,"props":528,"children":530},{"className":529},[],[531],{"type":110,"value":532},"0x22",{"type":110,"value":534}," conditionsNotCorrect.",{"type":104,"tag":421,"props":536,"children":540},{":request":537,":response":538,"title":539},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"04\",\"description\":\"Clear/reset SID. No payload.\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"44\",\"description\":\"Request SID ORed with 0x40. The clear was accepted.\"}]}","0x04 — Clear/reset emission-related diagnostic information",[],{"type":104,"tag":360,"props":542,"children":544},{"id":543},"_0x05-oxygen-sensor-monitoring-test-results-non-can-only",[545,551],{"type":104,"tag":322,"props":546,"children":548},{"className":547},[],[549],{"type":110,"value":550},"0x05",{"type":110,"value":552}," — Oxygen sensor monitoring test results (non-CAN only)",{"type":104,"tag":112,"props":554,"children":555},{},[556,558,564],{"type":110,"value":557},"Reports oxygen sensor test results addressed by a Test ID. Defined for ISO 9141-2, ISO 14230-4 and SAE J1850 only — on CAN this functionality is folded into Service ",{"type":104,"tag":322,"props":559,"children":561},{"className":560},[],[562],{"type":110,"value":563},"0x06",{"type":110,"value":565},".",{"type":104,"tag":421,"props":567,"children":571},{":request":568,":response":569,"title":570},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"05\",\"description\":\"Request oxygen sensor monitoring test results SID.\"},{\"name\":\"testIdentifier\",\"mnemonic\":\"TID\",\"placeholder\":\"TID\",\"description\":\"Test ID identifying the oxygen sensor parameter.\"},{\"name\":\"o2SensorId\",\"mnemonic\":\"O2S\",\"placeholder\":\"O2 sensor\",\"description\":\"Oxygen sensor identifier (bank/sensor). Optional depending on Test ID.\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"45\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"testIdentifier\",\"mnemonic\":\"TID\",\"placeholder\":\"TID\",\"description\":\"Echoed Test ID.\"},{\"name\":\"o2SensorId\",\"mnemonic\":\"O2S\",\"placeholder\":\"O2 sensor\",\"description\":\"Echoed sensor identifier.\"},{\"name\":\"dataRecord\",\"mnemonic\":\"DREC\",\"placeholder\":\"test value bytes\",\"description\":\"Test result, format defined per Test ID.\"}]}","0x05 — Request oxygen sensor monitoring test results",[],{"type":104,"tag":360,"props":573,"children":575},{"id":574},"_0x06-on-board-monitoring-test-results",[576,581],{"type":104,"tag":322,"props":577,"children":579},{"className":578},[],[580],{"type":110,"value":563},{"type":110,"value":582}," — On-board monitoring test results",{"type":104,"tag":112,"props":584,"children":585},{},[586],{"type":110,"value":587},"Reports test values, minimum and maximum limits for on-board monitors (catalyst, EVAP, misfire, oxygen sensors on CAN, …). Each monitor is addressed by an OBDMID; each monitor can have multiple Test IDs. The Unit and Scaling ID tells the tester how to interpret the 16-bit value and limits.",{"type":104,"tag":421,"props":589,"children":593},{":request":590,":response":591,"title":592},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"06\",\"description\":\"Request on-board monitoring test results SID.\"},{\"name\":\"monitorIdentifier\",\"mnemonic\":\"OBDMID\",\"placeholder\":\"OBDMID\",\"description\":\"On-Board Diagnostic Monitor ID.\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"46\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"monitorIdentifier\",\"mnemonic\":\"OBDMID\",\"placeholder\":\"OBDMID\",\"description\":\"Echoed OBDMID.\"},{\"name\":\"testIdentifier\",\"mnemonic\":\"TID\",\"placeholder\":\"TID\",\"description\":\"Standardized or manufacturer-defined Test ID.\"},{\"name\":\"unitAndScalingId\",\"mnemonic\":\"UASID\",\"placeholder\":\"UAS ID\",\"description\":\"Encodes the unit and scaling for the test value and limits.\"},{\"name\":\"testValue\",\"mnemonic\":\"TV\",\"placeholder\":\"2 bytes\",\"description\":\"Test result, 16-bit big-endian.\"},{\"name\":\"minTestLimit\",\"mnemonic\":\"MINTL\",\"placeholder\":\"2 bytes\",\"description\":\"Minimum test limit, 16-bit big-endian.\"},{\"name\":\"maxTestLimit\",\"mnemonic\":\"MAXTL\",\"placeholder\":\"2 bytes\",\"description\":\"Maximum test limit, 16-bit big-endian.\"}]}","0x06 — Request on-board monitoring test results",[],{"type":104,"tag":360,"props":595,"children":597},{"id":596},"_0x07-pending-dtcs",[598,604],{"type":104,"tag":322,"props":599,"children":601},{"className":600},[],[602],{"type":110,"value":603},"0x07",{"type":110,"value":605}," — Pending DTCs",{"type":104,"tag":112,"props":607,"children":608},{},[609,611,616],{"type":110,"value":610},"Reads \"pending\" DTCs detected during the current or last completed driving cycle, before the MIL is illuminated. Useful to verify a repair after clearing DTCs without waiting for several driving cycles. Same wire format as Service ",{"type":104,"tag":322,"props":612,"children":614},{"className":613},[],[615],{"type":110,"value":473},{"type":110,"value":565},{"type":104,"tag":421,"props":618,"children":622},{":request":619,":response":620,"title":621},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"07\",\"description\":\"Request pending DTCs SID. No payload.\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"47\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"numberOfDTCs\",\"mnemonic\":\"#OFDTC\",\"placeholder\":\"count\",\"description\":\"Number of DTCs that follow (CAN only).\"},{\"name\":\"dtcRecord\",\"mnemonic\":\"DTC\",\"placeholder\":\"2 bytes per DTC\",\"description\":\"Two bytes per DTC, same format as Service 0x03.\"}]}","0x07 — Request pending DTCs from current/last driving cycle",[],{"type":104,"tag":360,"props":624,"children":626},{"id":625},"_0x08-control-on-board-component-system",[627,633],{"type":104,"tag":322,"props":628,"children":630},{"className":629},[],[631],{"type":110,"value":632},"0x08",{"type":110,"value":634}," — Control on-board component / system",{"type":104,"tag":112,"props":636,"children":637},{},[638],{"type":110,"value":639},"Drives an on-board component or test routine — for example, commanding an EVAP leak test. Each TID has its own request/response data layout, defined in SAE J1979-DA.",{"type":104,"tag":421,"props":641,"children":645},{":request":642,":response":643,"title":644},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"08\",\"description\":\"Request control SID.\"},{\"name\":\"testIdentifier\",\"mnemonic\":\"TID\",\"placeholder\":\"TID\",\"description\":\"Test ID identifying the system, test or component.\"},{\"name\":\"dataRecord\",\"mnemonic\":\"DREC\",\"placeholder\":\"0–5 bytes (Data A–E)\",\"description\":\"Optional Test ID-specific parameters (e.g. ON/OFF, duration).\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"48\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"testIdentifier\",\"mnemonic\":\"TID\",\"placeholder\":\"TID\",\"description\":\"Echoed Test ID.\"},{\"name\":\"dataRecord\",\"mnemonic\":\"DREC\",\"placeholder\":\"0–5 bytes (Data A–E)\",\"description\":\"Test ID-specific status / test result.\"}]}","0x08 — Request control of on-board system, test or component",[],{"type":104,"tag":360,"props":647,"children":649},{"id":648},"_0x09-request-vehicle-information",[650,656],{"type":104,"tag":322,"props":651,"children":653},{"className":652},[],[654],{"type":110,"value":655},"0x09",{"type":110,"value":657}," — Request vehicle information",{"type":104,"tag":112,"props":659,"children":660},{},[661],{"type":110,"value":662},"Reads identification data such as the VIN, Calibration ID(s), Calibration Verification Number(s) and the in-use performance tracking (IPT) counters. The INFOTYPE selects what to read; the response includes a \"number of data items\" byte so the tester knows how many records (e.g. multiple Calibration IDs) follow.",{"type":104,"tag":421,"props":664,"children":668},{":request":665,":response":666,"title":667},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"09\",\"description\":\"Request vehicle information SID.\"},{\"name\":\"infoType\",\"mnemonic\":\"INFTYP\",\"placeholder\":\"INFOTYPE\",\"description\":\"1-byte INFOTYPE (e.g. 0x02 = VIN, 0x04 = Calibration ID, 0x06 = CVN).\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"49\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"infoType\",\"mnemonic\":\"INFTYP\",\"placeholder\":\"INFOTYPE\",\"description\":\"Echoed INFOTYPE.\"},{\"name\":\"numberOfDataItems\",\"mnemonic\":\"NODI\",\"placeholder\":\"count\",\"description\":\"Number of data items in the response.\"},{\"name\":\"dataRecord\",\"mnemonic\":\"DREC\",\"placeholder\":\"INFOTYPE-specific bytes\",\"description\":\"For INFOTYPE 0x02 (VIN), 17 ASCII bytes. Other INFOTYPEs use their own format.\"}]}","0x09 — Request vehicle information",[],{"type":104,"tag":360,"props":670,"children":672},{"id":671},"_0x0a-permanent-dtcs",[673,678],{"type":104,"tag":322,"props":674,"children":676},{"className":675},[],[677],{"type":110,"value":524},{"type":110,"value":679}," — Permanent DTCs",{"type":104,"tag":112,"props":681,"children":682},{},[683,685,690,692,697],{"type":110,"value":684},"Reads DTCs with \"permanent\" status — confirmed DTCs that the ECU stores in non-volatile memory. They cannot be cleared by Service ",{"type":104,"tag":322,"props":686,"children":688},{"className":687},[],[689],{"type":110,"value":511},{"type":110,"value":691}," or by disconnecting the battery; only the ECU's own monitor can clear them, after observing the fault is no longer present. This is intended to stop drivers from passing emissions inspections by clearing codes right before the test. Same wire format as Service ",{"type":104,"tag":322,"props":693,"children":695},{"className":694},[],[696],{"type":110,"value":473},{"type":110,"value":565},{"type":104,"tag":421,"props":699,"children":703},{":request":700,":response":701,"title":702},"{\"fields\":[{\"name\":\"Service ID\",\"mnemonic\":\"SIDRQ\",\"bytes\":\"0A\",\"description\":\"Request permanent DTCs SID. No payload.\"}]}","{\"fields\":[{\"name\":\"Response SID\",\"mnemonic\":\"SIDPR\",\"bytes\":\"4A\",\"description\":\"Request SID ORed with 0x40.\"},{\"name\":\"numberOfDTCs\",\"mnemonic\":\"#OFDTC\",\"placeholder\":\"count\",\"description\":\"Number of permanent DTCs that follow.\"},{\"name\":\"dtcRecord\",\"mnemonic\":\"DTC\",\"placeholder\":\"2 bytes per DTC\",\"description\":\"Two bytes per DTC, same format as Service 0x03.\"}]}","0x0A — Request DTCs with permanent status",[],{"type":104,"tag":133,"props":705,"children":707},{"id":706},"parameter-ids-pids",[708],{"type":110,"value":709},"Parameter IDs (PIDs)",{"type":104,"tag":112,"props":711,"children":712},{},[713,715,720,722,727],{"type":110,"value":714},"PIDs identify the values readable through Service ",{"type":104,"tag":322,"props":716,"children":718},{"className":717},[],[719],{"type":110,"value":335},{"type":110,"value":721}," (current data) and ",{"type":104,"tag":322,"props":723,"children":725},{"className":724},[],[726],{"type":110,"value":436},{"type":110,"value":728}," (freeze frame data). The full list lives in the SAE J1979-DA digital annex; a small selection is shown below.",{"type":104,"tag":112,"props":730,"children":731},{},[732],{"type":110,"value":733},"Each PID has a fixed response format. The data bytes are conventionally named A, B, C, D and combined per PID into a physical value via a fixed formula. Most PIDs return 1 to 4 data bytes; a few return larger records.",{"type":104,"tag":112,"props":735,"children":736},{},[737,739,744,745,750,751,756],{"type":110,"value":738},"PIDs ",{"type":104,"tag":322,"props":740,"children":742},{"className":741},[],[743],{"type":110,"value":381},{"type":110,"value":405},{"type":104,"tag":322,"props":746,"children":748},{"className":747},[],[749],{"type":110,"value":396},{"type":110,"value":405},{"type":104,"tag":322,"props":752,"children":754},{"className":753},[],[755],{"type":110,"value":327},{"type":110,"value":757},", … are markers: each returns a 4-byte bitmap of which PIDs in the next 32-PID block the ECU supports. Walking these markers lets a tester enumerate every supported PID without prior knowledge of the ECU.",{"type":110,"value":759},"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",{"type":104,"tag":761,"props":762,"children":763},"table",{},[764,808],{"type":104,"tag":765,"props":766,"children":767},"thead",{},[768],{"type":104,"tag":769,"props":770,"children":771},"tr",{},[772,778,783,788,793,798,803],{"type":104,"tag":773,"props":774,"children":775},"th",{},[776],{"type":110,"value":777},"PID",{"type":104,"tag":773,"props":779,"children":780},{},[781],{"type":110,"value":782},"Bytes",{"type":104,"tag":773,"props":784,"children":785},{},[786],{"type":110,"value":787},"Description",{"type":104,"tag":773,"props":789,"children":790},{},[791],{"type":110,"value":792},"Min",{"type":104,"tag":773,"props":794,"children":795},{},[796],{"type":110,"value":797},"Max",{"type":104,"tag":773,"props":799,"children":800},{},[801],{"type":110,"value":802},"Unit",{"type":104,"tag":773,"props":804,"children":805},{},[806],{"type":110,"value":807},"Formula",{"type":104,"tag":809,"props":810,"children":811},"tbody",{},[812,848,889,929,970,1010,1043],{"type":104,"tag":769,"props":813,"children":814},{},[815,824,829,834,837,840,843],{"type":104,"tag":816,"props":817,"children":818},"td",{},[819],{"type":104,"tag":322,"props":820,"children":822},{"className":821},[],[823],{"type":110,"value":381},{"type":104,"tag":816,"props":825,"children":826},{},[827],{"type":110,"value":828},"4",{"type":104,"tag":816,"props":830,"children":831},{},[832],{"type":110,"value":833},"PIDs supported (0x01 – 0x20)",{"type":104,"tag":816,"props":835,"children":836},{},[],{"type":104,"tag":816,"props":838,"children":839},{},[],{"type":104,"tag":816,"props":841,"children":842},{},[],{"type":104,"tag":816,"props":844,"children":845},{},[846],{"type":110,"value":847},"Bit encoded",{"type":104,"tag":769,"props":849,"children":850},{},[851,859,864,869,874,879,884],{"type":104,"tag":816,"props":852,"children":853},{},[854],{"type":104,"tag":322,"props":855,"children":857},{"className":856},[],[858],{"type":110,"value":511},{"type":104,"tag":816,"props":860,"children":861},{},[862],{"type":110,"value":863},"1",{"type":104,"tag":816,"props":865,"children":866},{},[867],{"type":110,"value":868},"Calculated Engine Load",{"type":104,"tag":816,"props":870,"children":871},{},[872],{"type":110,"value":873},"0",{"type":104,"tag":816,"props":875,"children":876},{},[877],{"type":110,"value":878},"100",{"type":104,"tag":816,"props":880,"children":881},{},[882],{"type":110,"value":883},"%",{"type":104,"tag":816,"props":885,"children":886},{},[887],{"type":110,"value":888},"A / 2.55",{"type":104,"tag":769,"props":890,"children":891},{},[892,900,904,909,914,919,924],{"type":104,"tag":816,"props":893,"children":894},{},[895],{"type":104,"tag":322,"props":896,"children":898},{"className":897},[],[899],{"type":110,"value":550},{"type":104,"tag":816,"props":901,"children":902},{},[903],{"type":110,"value":863},{"type":104,"tag":816,"props":905,"children":906},{},[907],{"type":110,"value":908},"Engine coolant temperature",{"type":104,"tag":816,"props":910,"children":911},{},[912],{"type":110,"value":913},"-40",{"type":104,"tag":816,"props":915,"children":916},{},[917],{"type":110,"value":918},"215",{"type":104,"tag":816,"props":920,"children":921},{},[922],{"type":110,"value":923},"°C",{"type":104,"tag":816,"props":925,"children":926},{},[927],{"type":110,"value":928},"A − 40",{"type":104,"tag":769,"props":930,"children":931},{},[932,941,946,951,955,960,965],{"type":104,"tag":816,"props":933,"children":934},{},[935],{"type":104,"tag":322,"props":936,"children":938},{"className":937},[],[939],{"type":110,"value":940},"0x0C",{"type":104,"tag":816,"props":942,"children":943},{},[944],{"type":110,"value":945},"2",{"type":104,"tag":816,"props":947,"children":948},{},[949],{"type":110,"value":950},"Engine speed",{"type":104,"tag":816,"props":952,"children":953},{},[954],{"type":110,"value":873},{"type":104,"tag":816,"props":956,"children":957},{},[958],{"type":110,"value":959},"16383.75",{"type":104,"tag":816,"props":961,"children":962},{},[963],{"type":110,"value":964},"rpm",{"type":104,"tag":816,"props":966,"children":967},{},[968],{"type":110,"value":969},"(256·A + B) / 4",{"type":104,"tag":769,"props":971,"children":972},{},[973,982,986,991,995,1000,1005],{"type":104,"tag":816,"props":974,"children":975},{},[976],{"type":104,"tag":322,"props":977,"children":979},{"className":978},[],[980],{"type":110,"value":981},"0x0D",{"type":104,"tag":816,"props":983,"children":984},{},[985],{"type":110,"value":863},{"type":104,"tag":816,"props":987,"children":988},{},[989],{"type":110,"value":990},"Vehicle speed",{"type":104,"tag":816,"props":992,"children":993},{},[994],{"type":110,"value":873},{"type":104,"tag":816,"props":996,"children":997},{},[998],{"type":110,"value":999},"255",{"type":104,"tag":816,"props":1001,"children":1002},{},[1003],{"type":110,"value":1004},"km/h",{"type":104,"tag":816,"props":1006,"children":1007},{},[1008],{"type":110,"value":1009},"A",{"type":104,"tag":769,"props":1011,"children":1012},{},[1013,1021,1025,1030,1033,1036,1039],{"type":104,"tag":816,"props":1014,"children":1015},{},[1016],{"type":104,"tag":322,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":110,"value":396},{"type":104,"tag":816,"props":1022,"children":1023},{},[1024],{"type":110,"value":828},{"type":104,"tag":816,"props":1026,"children":1027},{},[1028],{"type":110,"value":1029},"PIDs supported (0x21 – 0x40)",{"type":104,"tag":816,"props":1031,"children":1032},{},[],{"type":104,"tag":816,"props":1034,"children":1035},{},[],{"type":104,"tag":816,"props":1037,"children":1038},{},[],{"type":104,"tag":816,"props":1040,"children":1041},{},[1042],{"type":110,"value":847},{"type":104,"tag":769,"props":1044,"children":1045},{},[1046,1055,1059,1064,1068,1073,1078],{"type":104,"tag":816,"props":1047,"children":1048},{},[1049],{"type":104,"tag":322,"props":1050,"children":1052},{"className":1051},[],[1053],{"type":110,"value":1054},"0xA6",{"type":104,"tag":816,"props":1056,"children":1057},{},[1058],{"type":110,"value":828},{"type":104,"tag":816,"props":1060,"children":1061},{},[1062],{"type":110,"value":1063},"Odometer",{"type":104,"tag":816,"props":1065,"children":1066},{},[1067],{"type":110,"value":873},{"type":104,"tag":816,"props":1069,"children":1070},{},[1071],{"type":110,"value":1072},"429496729.5",{"type":104,"tag":816,"props":1074,"children":1075},{},[1076],{"type":110,"value":1077},"km",{"type":104,"tag":816,"props":1079,"children":1080},{},[1081],{"type":110,"value":1082},"(A·2²⁴ + B·2¹⁶ + C·2⁸ + D) / 10",{"type":104,"tag":133,"props":1084,"children":1086},{"id":1085},"diagnostic-trouble-codes-dtcs",[1087],{"type":110,"value":1088},"Diagnostic Trouble Codes (DTCs)",{"type":104,"tag":112,"props":1090,"children":1091},{},[1092,1094,1099],{"type":110,"value":1093},"Another important part of the OBD-II standard are the Diagnostic Trouble Codes (DTCs). These are a standardized way of reporting issues with a vehicle. Each DTC is encoded as a two-byte value. A list of stored DTCs is requested using service ",{"type":104,"tag":322,"props":1095,"children":1097},{"className":1096},[],[1098],{"type":110,"value":473},{"type":110,"value":1100}," without any payload.",{"type":104,"tag":112,"props":1102,"children":1103},{},[1104,1106,1112,1114,1120,1122,1128,1130,1136,1138,1144,1146,1152,1154,1159],{"type":110,"value":1105},"The first two bits of the 2-byte value indicate the type of DTC: ",{"type":104,"tag":322,"props":1107,"children":1109},{"className":1108},[],[1110],{"type":110,"value":1111},"0b00",{"type":110,"value":1113}," for P(owertrain), ",{"type":104,"tag":322,"props":1115,"children":1117},{"className":1116},[],[1118],{"type":110,"value":1119},"0b01",{"type":110,"value":1121}," for C(hassis), ",{"type":104,"tag":322,"props":1123,"children":1125},{"className":1124},[],[1126],{"type":110,"value":1127},"0b10",{"type":110,"value":1129}," for B(ody), and ",{"type":104,"tag":322,"props":1131,"children":1133},{"className":1132},[],[1134],{"type":110,"value":1135},"0b11",{"type":110,"value":1137}," for U (Network). The next two bits encode the first digit of the DTC. The final three sets of 4 bits encode the second, third, and fourth digit of the DTC. For example, the value ",{"type":104,"tag":322,"props":1139,"children":1141},{"className":1140},[],[1142],{"type":110,"value":1143},"0xC158",{"type":110,"value":1145}," decodes to the DTC ",{"type":104,"tag":322,"props":1147,"children":1149},{"className":1148},[],[1150],{"type":110,"value":1151},"U0158",{"type":110,"value":1153},". The DTC ",{"type":104,"tag":322,"props":1155,"children":1157},{"className":1156},[],[1158],{"type":110,"value":1151},{"type":110,"value":1160}," means \"Lost Communication With Head Up Display\".",{"type":104,"tag":133,"props":1162,"children":1164},{"id":1163},"can-arbitration-ids",[1165],{"type":110,"value":1166},"CAN Arbitration IDs",{"type":104,"tag":112,"props":1168,"children":1169},{},[1170,1172,1178,1180,1186,1188,1194,1196,1202,1203,1209],{"type":110,"value":1171},"For OBD-II over CAN, the Arbitration ID ",{"type":104,"tag":322,"props":1173,"children":1175},{"className":1174},[],[1176],{"type":110,"value":1177},"0x7DF",{"type":110,"value":1179}," is used, which acts as a broadcast address. ECUs both listen to the broadcast address and to their own address in the range ",{"type":104,"tag":322,"props":1181,"children":1183},{"className":1182},[],[1184],{"type":110,"value":1185},"0x7E0",{"type":110,"value":1187}," through ",{"type":104,"tag":322,"props":1189,"children":1191},{"className":1190},[],[1192],{"type":110,"value":1193},"0x7E7",{"type":110,"value":1195},". They respond on their own address + 8, so ",{"type":104,"tag":322,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":110,"value":1201},"0x7E8",{"type":110,"value":1187},{"type":104,"tag":322,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":110,"value":1208},"0x7EF",{"type":110,"value":565},{"type":104,"tag":112,"props":1211,"children":1212},{},[1213,1215,1221,1223,1229,1231,1237],{"type":110,"value":1214},"Some cars use 29-bit Arbitration IDs for OBD-II instead of the standard 11-bit Arbitration ID. The 29-bit broadcast address is ",{"type":104,"tag":322,"props":1216,"children":1218},{"className":1217},[],[1219],{"type":110,"value":1220},"0x18DB33F1",{"type":110,"value":1222},", and the ECU addresses are in the range ",{"type":104,"tag":322,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":110,"value":1228},"0x18DAF1xx",{"type":110,"value":1230},", responding on ",{"type":104,"tag":322,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":110,"value":1236},"0x18DAxxF1",{"type":110,"value":1238}," (swap last two bytes).",{"title":99,"searchDepth":14,"depth":14,"links":1240},[1241,1242,1243,1244,1265,1266,1267],{"id":135,"depth":14,"text":138},{"id":217,"depth":14,"text":220},{"id":237,"depth":14,"text":240},{"id":301,"depth":14,"text":304,"children":1245},[1246,1248,1250,1252,1254,1256,1258,1260,1262,1263],{"id":362,"depth":19,"text":1247},"0x01 — Show current data",{"id":429,"depth":19,"text":1249},"0x02 — Show freeze frame data",{"id":466,"depth":19,"text":1251},"0x03 — Show stored diagnostic trouble codes",{"id":504,"depth":19,"text":1253},"0x04 — Clear diagnostic trouble codes and stored values",{"id":543,"depth":19,"text":1255},"0x05 — Oxygen sensor monitoring test results (non-CAN only)",{"id":574,"depth":19,"text":1257},"0x06 — On-board monitoring test results",{"id":596,"depth":19,"text":1259},"0x07 — Pending DTCs",{"id":625,"depth":19,"text":1261},"0x08 — Control on-board component / system",{"id":648,"depth":19,"text":667},{"id":671,"depth":19,"text":1264},"0x0A — Permanent DTCs",{"id":706,"depth":14,"text":709},{"id":1085,"depth":14,"text":1088},{"id":1163,"depth":14,"text":1166},"markdown","content:7.knowledge-base:2.diagnostics:4.obd-ii.md","content","7.knowledge-base/2.diagnostics/4.obd-ii.md","md",1778093002006]