[{"data":1,"prerenderedAt":849},["Reactive",2],{"kb-nav":3,"kb-doc:/knowledge-base/diagnostics/xcp/":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":71,"_dir":97,"_draft":98,"_partial":98,"_locale":99,"title":72,"description":73,"part":43,"chapterNumber":74,"body":100,"_type":844,"_id":845,"_source":846,"_file":847,"_extension":848},"diagnostics",false,"",{"type":101,"children":102,"toc":828},"root",[103,111,117,124,189,195,200,205,211,218,240,246,252,257,332,338,343,349,354,371,399,406,423,433,446,452,458,460,810,816],{"type":104,"tag":105,"props":106,"children":108},"element","h1",{"id":107},"universal-measurement-and-calibration-protocol-xcp",[109],{"type":110,"value":72},"text",{"type":104,"tag":112,"props":113,"children":114},"p",{},[115],{"type":110,"value":116},"In 2003, XCP was standardized as a successor to CCP. It supports more transport layers than CAN, such as CAN FD, FlexRay, and Ethernet. XCP expands the protocol to include synchronous data acquisition and stimulation, read/write access on calibration data, memory page management, flash programming, and further optional features.",{"type":104,"tag":118,"props":119,"children":121},"h2",{"id":120},"history",[122],{"type":110,"value":123},"History",{"type":104,"tag":125,"props":126,"children":127},"ul",{},[128,140,150,160,170,180],{"type":104,"tag":129,"props":130,"children":131},"li",{},[132,138],{"type":104,"tag":133,"props":134,"children":135},"strong",{},[136],{"type":110,"value":137},"2003",{"type":110,"value":139}," — XCP 1.0 with support for CAN, Ethernet, SPI, USB",{"type":104,"tag":129,"props":141,"children":142},{},[143,148],{"type":104,"tag":133,"props":144,"children":145},{},[146],{"type":110,"value":147},"2008",{"type":110,"value":149}," — XCP 1.1 with support for FlexRay",{"type":104,"tag":129,"props":151,"children":152},{},[153,158],{"type":104,"tag":133,"props":154,"children":155},{},[156],{"type":110,"value":157},"2013",{"type":110,"value":159}," — XCP 1.2 with ECU description file updates + CAN FD",{"type":104,"tag":129,"props":161,"children":162},{},[163,168],{"type":104,"tag":133,"props":164,"children":165},{},[166],{"type":110,"value":167},"2015",{"type":110,"value":169}," — XCP 1.3 with ECU states, bypass handling, time correlation",{"type":104,"tag":129,"props":171,"children":172},{},[173,178],{"type":104,"tag":133,"props":174,"children":175},{},[176],{"type":110,"value":177},"2017",{"type":110,"value":179}," — XCP 1.4 with improvements and a new DAQ mode",{"type":104,"tag":129,"props":181,"children":182},{},[183,187],{"type":104,"tag":133,"props":184,"children":185},{},[186],{"type":110,"value":177},{"type":110,"value":188}," — XCP 1.5 with software debugging without a debug adapter",{"type":104,"tag":118,"props":190,"children":192},{"id":191},"protocol",[193],{"type":110,"value":194},"Protocol",{"type":104,"tag":112,"props":196,"children":197},{},[198],{"type":110,"value":199},"XCP is clearly derived from CCP, with some changes. XCP has Command Transfer Object (CTO) packets for commands, responses, errors, events, and service requests, and Data Transfer Object (DTO) packets for DAQ/STIM data. The counter field is now optional, and only used for DAQ-related frames. A timestamp was added to DAQ-related frames, defining exactly when the measurement was taken — an improvement over CCP, where the measurement could only be guessed based on the time the DTO was received.",{"type":104,"tag":112,"props":201,"children":202},{},[203],{"type":110,"value":204},"The first byte of the message contains the PID. As with CCP, for frames from tester to ECU the PID defines the command. For frames from ECU to tester, the PID defines the type of response frame (e.g. result, error, event).",{"type":104,"tag":206,"props":207,"children":210},"uds-packet",{":fields":208,"title":209},"[{\"name\":\"Packet Identification\",\"mnemonic\":\"PID\",\"placeholder\":\"PID\",\"description\":\"1 byte. Identifies the command (CTO) or DAQ list / response type (DTO).\"},{\"name\":\"Fill\",\"mnemonic\":\"FILL\",\"placeholder\":\"0..n bytes\",\"description\":\"Optional padding for word/dword alignment of the data field.\"},{\"name\":\"DAQ\",\"mnemonic\":\"DAQ\",\"placeholder\":\"1–2 bytes\",\"description\":\"Only present in DAQ DTOs that carry the DAQ list number separately from the PID.\"},{\"name\":\"Counter\",\"mnemonic\":\"CTR\",\"placeholder\":\"1 byte\",\"description\":\"Optional. Used to detect lost DAQ DTOs.\"},{\"name\":\"Time stamp\",\"mnemonic\":\"TS\",\"placeholder\":\"1–4 bytes\",\"description\":\"Optional. Records when the measurement was taken on the ECU.\"},{\"name\":\"Data\",\"mnemonic\":\"DATA\",\"placeholder\":\"command / measurement bytes\",\"description\":\"Variable-length payload up to MAX_CTO (CTO) or MAX_DTO (DTO).\"}]","General XCP packet layout",[],{"type":104,"tag":212,"props":213,"children":215},"h3",{"id":214},"command-transfer-object-cto",[216],{"type":110,"value":217},"Command Transfer Object (CTO)",{"type":104,"tag":112,"props":219,"children":220},{},[221,223,230,232,238],{"type":110,"value":222},"The CTO packet is used for command-oriented communication. The contents are the PID followed by data. For commands, the PID is in the range of ",{"type":104,"tag":224,"props":225,"children":227},"code",{"className":226},[],[228],{"type":110,"value":229},"0xC0",{"type":110,"value":231}," to ",{"type":104,"tag":224,"props":233,"children":235},{"className":234},[],[236],{"type":110,"value":237},"0xFF",{"type":110,"value":239},".",{"type":104,"tag":206,"props":241,"children":245},{":fields":242,"title":243,"direction":244},"[{\"name\":\"Packet Identification\",\"mnemonic\":\"PID\",\"placeholder\":\"command code\",\"description\":\"Range 0xC0–0xFF. Identifies the requested command (e.g. 0xFF CONNECT, 0xF4 SHORT_UPLOAD).\"},{\"name\":\"Parameters & data\",\"mnemonic\":\"DATA\",\"placeholder\":\"up to MAX_CTO − 1 bytes\",\"description\":\"Layout depends on the command. Unused trailing bytes are reserved.\"}]","CTO command (Tester → ECU)","request",[],{"type":104,"tag":212,"props":247,"children":249},{"id":248},"command-transfer-object-responses",[250],{"type":110,"value":251},"Command Transfer Object Responses",{"type":104,"tag":112,"props":253,"children":254},{},[255],{"type":110,"value":256},"The four types of CTO response packets are defined by their PID:",{"type":104,"tag":125,"props":258,"children":259},{},[260,278,296,314],{"type":104,"tag":129,"props":261,"children":262},{},[263,269,271,276],{"type":104,"tag":224,"props":264,"children":266},{"className":265},[],[267],{"type":110,"value":268},"RES",{"type":110,"value":270}," (PID = ",{"type":104,"tag":224,"props":272,"children":274},{"className":273},[],[275],{"type":110,"value":237},{"type":110,"value":277},") — Positive response to a command.",{"type":104,"tag":129,"props":279,"children":280},{},[281,287,288,294],{"type":104,"tag":224,"props":282,"children":284},{"className":283},[],[285],{"type":110,"value":286},"ERR",{"type":110,"value":270},{"type":104,"tag":224,"props":289,"children":291},{"className":290},[],[292],{"type":110,"value":293},"0xFE",{"type":110,"value":295},") — Negative responses now get their own PID compared to CCP. The second byte in the packet defines the error code. Having a separate PID for the error response saves a byte in every response compared to CCP.",{"type":104,"tag":129,"props":297,"children":298},{},[299,305,306,312],{"type":104,"tag":224,"props":300,"children":302},{"className":301},[],[303],{"type":110,"value":304},"EV",{"type":110,"value":270},{"type":104,"tag":224,"props":307,"children":309},{"className":308},[],[310],{"type":110,"value":311},"0xFD",{"type":110,"value":313},") — Event packet used by the ECU to inform the tester about an event asynchronously (i.e. not as a response to a command). The second byte in the packet defines the event code.",{"type":104,"tag":129,"props":315,"children":316},{},[317,323,324,330],{"type":104,"tag":224,"props":318,"children":320},{"className":319},[],[321],{"type":110,"value":322},"SERV",{"type":110,"value":270},{"type":104,"tag":224,"props":325,"children":327},{"className":326},[],[328],{"type":110,"value":329},"0xFC",{"type":110,"value":331},") — Service packet used by the ECU to request the execution of a service by the tester. For example the ECU can request the tester to restart. The second byte in the packet defines the service code.",{"type":104,"tag":212,"props":333,"children":335},{"id":334},"data-transfer-object-dto",[336],{"type":110,"value":337},"Data Transfer Object (DTO)",{"type":104,"tag":112,"props":339,"children":340},{},[341],{"type":110,"value":342},"DTO packets are used for synchronous data acquisition (DAQ) and stimulation (STIM). These packets carry measured or stimulated data rather than command responses.",{"type":104,"tag":118,"props":344,"children":346},{"id":345},"standard-commands",[347],{"type":110,"value":348},"Standard Commands",{"type":104,"tag":112,"props":350,"children":351},{},[352],{"type":110,"value":353},"A few interesting commands are described below. For the full list, see the XCP standard.",{"type":104,"tag":212,"props":355,"children":357},{"id":356},"_0xff-connect",[358,363,365],{"type":104,"tag":224,"props":359,"children":361},{"className":360},[],[362],{"type":110,"value":237},{"type":110,"value":364}," — ",{"type":104,"tag":224,"props":366,"children":368},{"className":367},[],[369],{"type":110,"value":370},"CONNECT",{"type":104,"tag":112,"props":372,"children":373},{},[374,376,381,383,389,391,397],{"type":110,"value":375},"The ",{"type":104,"tag":224,"props":377,"children":379},{"className":378},[],[380],{"type":110,"value":370},{"type":110,"value":382}," command is the first step in establishing a connection with the ECU. It has a single parameter, the connection mode. The standard defines ",{"type":104,"tag":224,"props":384,"children":386},{"className":385},[],[387],{"type":110,"value":388},"0x00",{"type":110,"value":390}," for normal, and ",{"type":104,"tag":224,"props":392,"children":394},{"className":393},[],[395],{"type":110,"value":396},"0x01",{"type":110,"value":398}," for user-defined. The ECU responds with the available resources, basic communication mode, the maximum CTO and DTO sizes, and the XCP version numbers.",{"type":104,"tag":400,"props":401,"children":405},"uds-exchange",{":request":402,":response":403,"title":404},"{\"fields\":[{\"name\":\"Command Code\",\"mnemonic\":\"CMD\",\"bytes\":\"FF\",\"description\":\"0xFF = CONNECT.\"},{\"name\":\"Mode\",\"mnemonic\":\"MODE\",\"bytes\":\"00\",\"description\":\"0x00 = normal. 0x01 = user-defined.\"}]}","{\"fields\":[{\"name\":\"Packet ID\",\"mnemonic\":\"PID\",\"bytes\":\"FF\",\"description\":\"0xFF = positive response (RES).\"},{\"name\":\"Resource\",\"mnemonic\":\"RES\",\"bytes\":\"1C\",\"nibbles\":{\"high\":\"Reserved (0)\",\"low\":\"CAL/PAG=0, DAQ=1, STIM=1, PGM=1 → DAQ + STIM + PGM available\"},\"description\":\"Bitmask of resources available on the ECU.\"},{\"name\":\"Comm mode (basic)\",\"mnemonic\":\"CMB\",\"bytes\":\"C0\",\"nibbles\":{\"high\":\"OPTIONAL=1, SLAVE_BLOCK_MODE=1\",\"low\":\"Address granularity = BYTE, byte order = Intel (LE)\"},\"description\":\"Communication-mode bitmask.\"},{\"name\":\"MAX_CTO\",\"mnemonic\":\"MCTO\",\"bytes\":\"08\",\"description\":\"Maximum CTO size in bytes (8 here — single CAN frame).\"},{\"name\":\"MAX_DTO\",\"mnemonic\":\"MDTO\",\"bytes\":\"08 00\",\"description\":\"Maximum DTO size, little-endian word. 0x0008 = 8 bytes.\"},{\"name\":\"Protocol version\",\"mnemonic\":\"PVER\",\"bytes\":\"01\",\"description\":\"Major version of the XCP protocol layer (most significant byte).\"},{\"name\":\"Transport version\",\"mnemonic\":\"TVER\",\"bytes\":\"01\",\"description\":\"Major version of the active transport layer (most significant byte).\"}]}","CONNECT — establish an XCP session",[],{"type":104,"tag":212,"props":407,"children":409},{"id":408},"_0xf4-short_upload",[410,416,417],{"type":104,"tag":224,"props":411,"children":413},{"className":412},[],[414],{"type":110,"value":415},"0xF4",{"type":110,"value":364},{"type":104,"tag":224,"props":418,"children":420},{"className":419},[],[421],{"type":110,"value":422},"SHORT_UPLOAD",{"type":104,"tag":112,"props":424,"children":425},{},[426,431],{"type":104,"tag":224,"props":427,"children":429},{"className":428},[],[430],{"type":110,"value":422},{"type":110,"value":432}," is very similar to the CCP equivalent, and is used to read a small chunk of memory from the ECU. Setting MTA is not necessary.",{"type":104,"tag":112,"props":434,"children":435},{},[436,438,444],{"type":110,"value":437},"Example of reading 4 bytes from address ",{"type":104,"tag":224,"props":439,"children":441},{"className":440},[],[442],{"type":110,"value":443},"0x80000000",{"type":110,"value":445}," (assuming Intel byte order, as advertised in the CONNECT response above):",{"type":104,"tag":400,"props":447,"children":451},{":request":448,":response":449,"title":450},"{\"fields\":[{\"name\":\"Command Code\",\"mnemonic\":\"CMD\",\"bytes\":\"F4\",\"description\":\"0xF4 = SHORT_UPLOAD.\"},{\"name\":\"Number of elements\",\"mnemonic\":\"N\",\"bytes\":\"04\",\"description\":\"How many address-granularity elements to read (1..MAX_CTO − 1).\"},{\"name\":\"Reserved\",\"mnemonic\":\"—\",\"bytes\":\"00\",\"description\":\"Reserved.\"},{\"name\":\"Address extension\",\"mnemonic\":\"EXT\",\"bytes\":\"00\",\"description\":\"Memory page / device selector. Implementation-specific.\"},{\"name\":\"Address\",\"mnemonic\":\"ADDR\",\"bytes\":\"00 00 00 80\",\"description\":\"32-bit source address. Little-endian per the CONNECT response (0x80000000).\"}]}","{\"fields\":[{\"name\":\"Packet ID\",\"mnemonic\":\"PID\",\"bytes\":\"FF\",\"description\":\"0xFF = positive response.\"},{\"name\":\"Data\",\"mnemonic\":\"DATA\",\"bytes\":\"00 00 00 00\",\"description\":\"Requested bytes. MTA is unchanged.\"}]}","SHORT_UPLOAD — read 4 bytes from 0x80000000",[],{"type":104,"tag":118,"props":453,"children":455},{"id":454},"error-codes",[456],{"type":110,"value":457},"Error Codes",{"type":110,"value":459},"\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\n\n\n\n\n\n\n\n",{"type":104,"tag":461,"props":462,"children":463},"table",{},[464,483],{"type":104,"tag":465,"props":466,"children":467},"thead",{},[468],{"type":104,"tag":469,"props":470,"children":471},"tr",{},[472,478],{"type":104,"tag":473,"props":474,"children":475},"th",{},[476],{"type":110,"value":477},"Code",{"type":104,"tag":473,"props":479,"children":480},{},[481],{"type":110,"value":482},"Description",{"type":104,"tag":484,"props":485,"children":486},"tbody",{},[487,504,521,538,555,572,589,606,623,640,657,674,691,708,725,742,759,776,793],{"type":104,"tag":469,"props":488,"children":489},{},[490,499],{"type":104,"tag":491,"props":492,"children":493},"td",{},[494],{"type":104,"tag":224,"props":495,"children":497},{"className":496},[],[498],{"type":110,"value":388},{"type":104,"tag":491,"props":500,"children":501},{},[502],{"type":110,"value":503},"Command processor synchronization",{"type":104,"tag":469,"props":505,"children":506},{},[507,516],{"type":104,"tag":491,"props":508,"children":509},{},[510],{"type":104,"tag":224,"props":511,"children":513},{"className":512},[],[514],{"type":110,"value":515},"0x10",{"type":104,"tag":491,"props":517,"children":518},{},[519],{"type":110,"value":520},"Command was not executed",{"type":104,"tag":469,"props":522,"children":523},{},[524,533],{"type":104,"tag":491,"props":525,"children":526},{},[527],{"type":104,"tag":224,"props":528,"children":530},{"className":529},[],[531],{"type":110,"value":532},"0x11",{"type":104,"tag":491,"props":534,"children":535},{},[536],{"type":110,"value":537},"Command rejected because DAQ is running",{"type":104,"tag":469,"props":539,"children":540},{},[541,550],{"type":104,"tag":491,"props":542,"children":543},{},[544],{"type":104,"tag":224,"props":545,"children":547},{"className":546},[],[548],{"type":110,"value":549},"0x12",{"type":104,"tag":491,"props":551,"children":552},{},[553],{"type":110,"value":554},"Command rejected because PGM is running",{"type":104,"tag":469,"props":556,"children":557},{},[558,567],{"type":104,"tag":491,"props":559,"children":560},{},[561],{"type":104,"tag":224,"props":562,"children":564},{"className":563},[],[565],{"type":110,"value":566},"0x20",{"type":104,"tag":491,"props":568,"children":569},{},[570],{"type":110,"value":571},"Unknown command or not implemented optional command",{"type":104,"tag":469,"props":573,"children":574},{},[575,584],{"type":104,"tag":491,"props":576,"children":577},{},[578],{"type":104,"tag":224,"props":579,"children":581},{"className":580},[],[582],{"type":110,"value":583},"0x21",{"type":104,"tag":491,"props":585,"children":586},{},[587],{"type":110,"value":588},"Command syntax invalid",{"type":104,"tag":469,"props":590,"children":591},{},[592,601],{"type":104,"tag":491,"props":593,"children":594},{},[595],{"type":104,"tag":224,"props":596,"children":598},{"className":597},[],[599],{"type":110,"value":600},"0x22",{"type":104,"tag":491,"props":602,"children":603},{},[604],{"type":110,"value":605},"Command syntax valid but command parameter(s) out of range",{"type":104,"tag":469,"props":607,"children":608},{},[609,618],{"type":104,"tag":491,"props":610,"children":611},{},[612],{"type":104,"tag":224,"props":613,"children":615},{"className":614},[],[616],{"type":110,"value":617},"0x23",{"type":104,"tag":491,"props":619,"children":620},{},[621],{"type":110,"value":622},"The memory location is write protected",{"type":104,"tag":469,"props":624,"children":625},{},[626,635],{"type":104,"tag":491,"props":627,"children":628},{},[629],{"type":104,"tag":224,"props":630,"children":632},{"className":631},[],[633],{"type":110,"value":634},"0x24",{"type":104,"tag":491,"props":636,"children":637},{},[638],{"type":110,"value":639},"The memory location is not accessible",{"type":104,"tag":469,"props":641,"children":642},{},[643,652],{"type":104,"tag":491,"props":644,"children":645},{},[646],{"type":104,"tag":224,"props":647,"children":649},{"className":648},[],[650],{"type":110,"value":651},"0x25",{"type":104,"tag":491,"props":653,"children":654},{},[655],{"type":110,"value":656},"Access denied, Seed & Key is required",{"type":104,"tag":469,"props":658,"children":659},{},[660,669],{"type":104,"tag":491,"props":661,"children":662},{},[663],{"type":104,"tag":224,"props":664,"children":666},{"className":665},[],[667],{"type":110,"value":668},"0x26",{"type":104,"tag":491,"props":670,"children":671},{},[672],{"type":110,"value":673},"Selected page not available",{"type":104,"tag":469,"props":675,"children":676},{},[677,686],{"type":104,"tag":491,"props":678,"children":679},{},[680],{"type":104,"tag":224,"props":681,"children":683},{"className":682},[],[684],{"type":110,"value":685},"0x27",{"type":104,"tag":491,"props":687,"children":688},{},[689],{"type":110,"value":690},"Selected page mode not available",{"type":104,"tag":469,"props":692,"children":693},{},[694,703],{"type":104,"tag":491,"props":695,"children":696},{},[697],{"type":104,"tag":224,"props":698,"children":700},{"className":699},[],[701],{"type":110,"value":702},"0x28",{"type":104,"tag":491,"props":704,"children":705},{},[706],{"type":110,"value":707},"Selected segment not valid",{"type":104,"tag":469,"props":709,"children":710},{},[711,720],{"type":104,"tag":491,"props":712,"children":713},{},[714],{"type":104,"tag":224,"props":715,"children":717},{"className":716},[],[718],{"type":110,"value":719},"0x29",{"type":104,"tag":491,"props":721,"children":722},{},[723],{"type":110,"value":724},"Sequence error",{"type":104,"tag":469,"props":726,"children":727},{},[728,737],{"type":104,"tag":491,"props":729,"children":730},{},[731],{"type":104,"tag":224,"props":732,"children":734},{"className":733},[],[735],{"type":110,"value":736},"0x2A",{"type":104,"tag":491,"props":738,"children":739},{},[740],{"type":110,"value":741},"DAQ configuration not valid",{"type":104,"tag":469,"props":743,"children":744},{},[745,754],{"type":104,"tag":491,"props":746,"children":747},{},[748],{"type":104,"tag":224,"props":749,"children":751},{"className":750},[],[752],{"type":110,"value":753},"0x30",{"type":104,"tag":491,"props":755,"children":756},{},[757],{"type":110,"value":758},"Memory overflow error",{"type":104,"tag":469,"props":760,"children":761},{},[762,771],{"type":104,"tag":491,"props":763,"children":764},{},[765],{"type":104,"tag":224,"props":766,"children":768},{"className":767},[],[769],{"type":110,"value":770},"0x31",{"type":104,"tag":491,"props":772,"children":773},{},[774],{"type":110,"value":775},"Generic error",{"type":104,"tag":469,"props":777,"children":778},{},[779,788],{"type":104,"tag":491,"props":780,"children":781},{},[782],{"type":104,"tag":224,"props":783,"children":785},{"className":784},[],[786],{"type":110,"value":787},"0x32",{"type":104,"tag":491,"props":789,"children":790},{},[791],{"type":110,"value":792},"The ECU's internal program verify routine detects an error",{"type":104,"tag":469,"props":794,"children":795},{},[796,805],{"type":104,"tag":491,"props":797,"children":798},{},[799],{"type":104,"tag":224,"props":800,"children":802},{"className":801},[],[803],{"type":110,"value":804},"0x33",{"type":104,"tag":491,"props":806,"children":807},{},[808],{"type":110,"value":809},"Access to the requested resource is temporarily not possible",{"type":104,"tag":118,"props":811,"children":813},{"id":812},"scanning-for-xcp",[814],{"type":110,"value":815},"Scanning for XCP",{"type":104,"tag":112,"props":817,"children":818},{},[819,821,826],{"type":110,"value":820},"Scanning for XCP is simpler than CCP, since no station address is required. Send the ",{"type":104,"tag":224,"props":822,"children":824},{"className":823},[],[825],{"type":110,"value":370},{"type":110,"value":827}," command to all CAN arbitration IDs and check for a response.",{"title":99,"searchDepth":14,"depth":14,"links":829},[830,831,836,842,843],{"id":120,"depth":14,"text":123},{"id":191,"depth":14,"text":194,"children":832},[833,834,835],{"id":214,"depth":19,"text":217},{"id":248,"depth":19,"text":251},{"id":334,"depth":19,"text":337},{"id":345,"depth":14,"text":348,"children":837},[838,840],{"id":356,"depth":19,"text":839},"0xFF — CONNECT",{"id":408,"depth":19,"text":841},"0xF4 — SHORT_UPLOAD",{"id":454,"depth":14,"text":457},{"id":812,"depth":14,"text":815},"markdown","content:7.knowledge-base:2.diagnostics:8.xcp.md","content","7.knowledge-base/2.diagnostics/8.xcp.md","md",1778097666505]