<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=Unified_Diagnostic_Services</id>
	<title>Unified Diagnostic Services - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=Unified_Diagnostic_Services"/>
	<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=Unified_Diagnostic_Services&amp;action=history"/>
	<updated>2026-05-03T23:55:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://rs-485.com/index.php?title=Unified_Diagnostic_Services&amp;diff=1739&amp;oldid=prev</id>
		<title>RS-485: Imported from Wikipedia (overwrite)</title>
		<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=Unified_Diagnostic_Services&amp;diff=1739&amp;oldid=prev"/>
		<updated>2026-05-03T14:41:26Z</updated>

		<summary type="html">&lt;p&gt;Imported from Wikipedia (overwrite)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Diagnostic communication protocol}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Unified Diagnostic Services&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;UDS&amp;#039;&amp;#039;&amp;#039;) is a diagnostic [[communication protocol]] used by [[electronic control unit]]s (ECUs) in automotive electronics.&amp;lt;ref&amp;gt;{{Cite web|url=https://www.iso.org/standard/72439.html|title=Iso 14229-1:2020 Unified diagnostic services (UDS) Part 1: Application layer}}&amp;lt;/ref&amp;gt; UDS is defined by ISO 14229 and evolved from ISO 14230 ([[KWP2000]]), which is now largely obsolete. UDS specifies functionality at the session, presentation, and application layers (layers 5–7) of the [[OSI model]]. Because of this, it can operate on different physical and data link layers such as [[Controller Area Network|CAN]] (ISO 11898), [[Local Interconnect Network|LIN]] (ISO 17987), [[Ethernet]] (ISO 13400), [[FlexRay]] (ISO 17458), and K-Line (ISO 14230). In practice, UDS is most commonly used over [[CAN bus|CAN]] via &amp;#039;&amp;#039;Diagnostic over CAN&amp;#039;&amp;#039; (DoCAN), defined in [[ISO 15765-2|ISO 15765]].&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;unified&amp;quot; refers to the fact that UDS is an [[international standard]] rather than a manufacturer-specific protocol. Today, nearly all Tier 1 suppliers implement UDS in [[Electronic control unit|ECUs]] developed for automotive [[Original equipment manufacturer|original equipment manufacturers (OEMs)]]. UDS is also integrated into larger software architectures, including [[AUTOSAR]].&lt;br /&gt;
&lt;br /&gt;
Modern vehicles have a diagnostic interface for [[on-board diagnostics]], which makes it possible to connect a computer (client) or diagnostics tool, which is referred to as tester, to the communication system of the vehicle. Thus, UDS requests can be sent to the controllers which provide responses (this may be positive or negative). This makes it possible to [[Interrogation|interrogate]] the fault memory of the individual control units, to update them with new [[firmware]], have low-level interaction with their hardware (e.g. to turn a specific output on or off), or to make use of special functions (referred to as routines) to attempt to understand the environment and operating conditions of an ECU to be able to [[diagnose]] faulty or otherwise undesirable behavior.&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
SID (Service Identifier)&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#service-identifier |access-date=2025-11-09 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| Class = &amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Request Service Identifier (SID) !! Response Service Identifier (RSID) !! Service name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x10&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x50&lt;br /&gt;
| DiagnosticSessionControl&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (DiagnosticSessionControl) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#diagnosticsessioncontrol-0x10 |access-date=2025-11-09 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DiagnosticSessionControl&amp;#039;&amp;#039;&amp;#039; service is used to change diagnostic sessions in the server(s). In each diagnostic session a different set of diagnostic services (and/or functionalities) is enabled in the server.&lt;br /&gt;
Server shall always be in exactly one diagnostic session.&lt;br /&gt;
|-&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x11&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x51&lt;br /&gt;
| ECUReset&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ECUReset) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#ecureset-0x11 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ECUReset&amp;#039;&amp;#039;&amp;#039; service is used by the client to request that the server perform a reset. The server, after receiving this request, performs the specified type of reset (either before or after transmitting the positive response).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x14&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x54&lt;br /&gt;
| ClearDiagnosticInformation&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ClearDiagnosticInformation) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#cleardiagnosticinformation-0x14 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ClearDiagnosticInformation&amp;#039;&amp;#039;&amp;#039; service is used by the client to clear [[Diagnostic Trouble Code|Diagnostic Trouble Codes (DTCs)]] and related data stored in one or more server memories.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x19&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x59&lt;br /&gt;
| ReadDTCInformation&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ReadDTCInformation) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#readdtcinformation-0x19 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ReadDTCInformation&amp;#039;&amp;#039;&amp;#039; service allows the client to request current [[Diagnostic Trouble Code|Diagnostic Trouble Code (DTC)]] information from one or more servers within the vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x22&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x62&lt;br /&gt;
| ReadDataByIdentifier&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ReadDataByIdentifier) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#readdatabyidentifier-0x22 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ReadDataByIdentifier&amp;#039;&amp;#039;&amp;#039; service allows the client to request data record values from the server identifier by one or more DataIdentifiers (DIDs).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x23&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x63&lt;br /&gt;
| ReadMemoryByAddress&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ReadMemoryByAddress) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#readmemorybyaddress-0x23 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ReadMemoryByAddress&amp;#039;&amp;#039;&amp;#039; service allows the client to request server&amp;#039;s memory data stored under provided memory address.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x24&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x64&lt;br /&gt;
| ReadScalingDataByIdentifier&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ReadScalingDataByIdentifier) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#readscalingdatabyidentifier-0x24 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;ReadScalingDataByIdentifier&amp;#039;&amp;#039;&amp;#039; service allows the client to request the scaling information associated with a Data Identifier (DID). Scaling data provides information required to correctly interpret the actual data value, such as:&lt;br /&gt;
&lt;br /&gt;
* data encoding type (e.g. integer, floating-point, ASCII)&lt;br /&gt;
* units and formats&lt;br /&gt;
* conversion formulas and coefficients&lt;br /&gt;
* bit mappings, and other interpretation details&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x27&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x67&lt;br /&gt;
| SecurityAccess&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (SecurityAccess) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#securityaccess-0x27 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;SecurityAccess&amp;#039;&amp;#039;&amp;#039; service allows the client to unlock functions/services with restricted access.&lt;br /&gt;
Unlocking sequence:&lt;br /&gt;
&lt;br /&gt;
# The client requests a seed from the server.&lt;br /&gt;
# The server responds with a positive response that includes a randomly generated seed value.&lt;br /&gt;
# Both the client and server compute a key value based on the seed (using a secret algorithm).&lt;br /&gt;
# The client sends the computed key to the server.&lt;br /&gt;
# The server validates the client by comparing the received key with its own calculated key. If they match, the client is granted access to the protected functionality for the corresponding security level.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x28&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x68&lt;br /&gt;
&lt;br /&gt;
| CommunicationControl&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (CommunicationControl) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#communicationcontrol-0x28 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;CommunicationControl&amp;#039;&amp;#039;&amp;#039; service allows the client to switch on/off the transmission and/or the reception of certain messages on the server(s).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x29&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x69&lt;br /&gt;
| Authentication&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (Authentication) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#authentication-0x29 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Authentication&amp;#039;&amp;#039;&amp;#039; service provides a mechanism for the client to prove its identity, allowing access to data and/or diagnostic services that have restricted access due to security, emissions, or safety requirements.&lt;br /&gt;
It is an alternative for &amp;#039;&amp;#039;&amp;#039;SecurityAccess&amp;#039;&amp;#039;&amp;#039; service.&lt;br /&gt;
|-&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x2A&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x6A&lt;br /&gt;
| ReadDataByPeriodicIdentifier&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ReadDataByPeriodicIdentifier) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#readdatabyperiodicidentifier-0x2a |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ReadDataByPeriodicIdentifier&amp;#039;&amp;#039;&amp;#039; service allows the client to request periodic transmission of data record values from the server. Each periodic data record is identified by Periodic DID (the second byte of a DID with a fixed first byte 0xF2).&lt;br /&gt;
|-&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x2C&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x6C&lt;br /&gt;
| DynamicallyDefineDataIdentifier&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (DynamicallyDefineDataIdentifier) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#dynamicallydefinedataidentifier-0x2c |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DynamicallyDefineDataIdentifier&amp;#039;&amp;#039;&amp;#039; service allows the client to define Data Identifiers.&lt;br /&gt;
|-&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x2E&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x6E&lt;br /&gt;
| WriteDataByIdentifier&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (WriteDataByIdentifier) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#writedatabyidentifier-0x2e |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;WriteDataByIdentifier&amp;#039;&amp;#039;&amp;#039; service allows the client to set data values stored under given Data Identifier.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x2F&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x6F&lt;br /&gt;
| InputOutputControlByIdentifier&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (InputOutputControlByIdentifier) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#inputoutputcontrolbyidentifier-0x2f |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;InputOutputControlByIdentifier&amp;#039;&amp;#039;&amp;#039; service allows the client to take temporary control over Data Identifier values.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x31&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x71&lt;br /&gt;
| RoutineControl&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (RoutineControl) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#routinecontrol-0x31 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;RoutineControl&amp;#039;&amp;#039;&amp;#039; service allows the client to execute any sequence of actions that are defined as routines. Each routine has Routine Identifier assigned.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x34&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x74&lt;br /&gt;
| RequestDownload&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (RequestDownload) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#requestdownload-0x34 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;RequestDownload&amp;#039;&amp;#039;&amp;#039; service allows the client to initiate data transfer from the client to the server.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x35&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x75&lt;br /&gt;
| RequestUpload&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (RequestUpload) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#requestupload-0x35 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;RequestUpload&amp;#039;&amp;#039;&amp;#039; service allows the client to initiate data transfer from the server to the client.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x36&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x76&lt;br /&gt;
| TransferData&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (TransferData) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#transferdata-0x36 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TransferData&amp;#039;&amp;#039;&amp;#039; service transfers the actual data that were earlier requested by either &amp;#039;&amp;#039;&amp;#039;RequestDownload&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;RequestUpload&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;RequestFileTransfer&amp;#039;&amp;#039;&amp;#039; service&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x37&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x77&lt;br /&gt;
| RequestTransferExit&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (RequestTransferExit) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#requesttransferexit-0x37 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;RequestTransferExit&amp;#039;&amp;#039;&amp;#039; services ends the data transmission using &amp;#039;&amp;#039;&amp;#039;TransferData&amp;#039;&amp;#039;&amp;#039; service.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x38&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x78&lt;br /&gt;
| RequestFileTransfer&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (RequestFileTransfer) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#requestfiletransfer-0x38 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;RequestFileTransfer&amp;#039;&amp;#039;&amp;#039; service allows the client to initiate a file transfer (either download or upload).&lt;br /&gt;
It is an alternative for &amp;#039;&amp;#039;&amp;#039;RequestDownload&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;RequestUpload&amp;#039;&amp;#039;&amp;#039; services.&lt;br /&gt;
|-&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x3D&lt;br /&gt;
| Style = &amp;quot;text-align: center&amp;quot; | 0x7D&lt;br /&gt;
| WriteMemoryByAddress&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (WriteMemoryByAddress) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#writememorybyaddress-0x3d |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;WriteMemoryByAddress&amp;#039;&amp;#039;&amp;#039; service allows the client to set values directly in the server&amp;#039;s memory.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x3E&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x7E&lt;br /&gt;
| TesterPresent&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (TesterPresent) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#testerpresent-0x3e |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TesterPresent&amp;#039;&amp;#039;&amp;#039; service informs server(s) that the diagnostic tester device (client) is connected and server(s) shall not exit their current diagnostic session.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; |&amp;#039;&amp;#039;0x83&amp;#039;&amp;#039;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; |&amp;#039;&amp;#039;0xC3&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;AccessTimingParameter&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Services (AccessTimingParameter) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#accesstimingparameter-0x83 |access-date=2026-01-08 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;AccessTimingParameter&amp;#039;&amp;#039;&amp;#039; was withdrawn in ISO 14229-1:2020.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; |0x84&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; |0xC4&lt;br /&gt;
|SecuredDataTransmission&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (SecuredDataTransmission) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#secureddatatransmission-0x84 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;SecuredDataTransmission&amp;#039;&amp;#039;&amp;#039; service allows the client to secure UDS communication using either encryption or signature.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x85&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0xC5&lt;br /&gt;
| ControlDTCSettings&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ControlDTCSetting) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#controldtcsetting-0x85 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ControlDTCSettings&amp;#039;&amp;#039;&amp;#039; service allows the client to manage DTCs&amp;#039; statuses updating.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x86&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0xC6&lt;br /&gt;
| ResponseOnEvent&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (ResponseOnEvent) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#responseonevent-0x86 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;ResponseOnEvent&amp;#039;&amp;#039;&amp;#039; service allows the client to define events and request messages that the server is supposed to respond to when the event occurs.&lt;br /&gt;
This can be used to diagnose complicated issues. For example the client can request from the server to respond to &amp;#039;&amp;#039;&amp;#039;ReadMemoryByAddress&amp;#039;&amp;#039;&amp;#039; request (to provide detailed information about the reason for DTC reporting) when &amp;#039;&amp;#039;testFailed&amp;#039;&amp;#039; bit of a certain DTC is set.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0x87&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | 0xC7&lt;br /&gt;
| LinkControl&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (LinkControl) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#linkcontrol-0x87 |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;LinkControl&amp;#039;&amp;#039;&amp;#039; service allows the client to change physical connection parameters.&lt;br /&gt;
As an example, for [[CAN bus]], the client could change [[baudrate]] and version of CAN protocol (e.g. from CAN-FD to Classical CAN).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Diagnostic Message ==&lt;br /&gt;
There are two types of diagnostic messages transmitted using UDS protocol:&lt;br /&gt;
&lt;br /&gt;
* Request&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
=== Request Message ===&lt;br /&gt;
Request messages are transmitted by a Client towards one or more Servers.&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Message (Diagnostic Request) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/diagnostic_message.html#diagnostic-request |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Service Identifier (SID) is the first byte in each request message.&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (SID) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#request-service-identifier |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Response Message ===&lt;br /&gt;
Response messages are transmitted by Servers to a Client.&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Message (Diagnostic Response) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/diagnostic_message.html#diagnostic-response |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first byte in the response message is usually Response Service Identifier (RSID) value (with the exception of following responses to ReadDataByPeriodicIdentifier service).&amp;lt;ref&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Service (RSID) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/service.html#response-service-identifier |access-date=2025-11-11 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Positive Response Message ====&lt;br /&gt;
Format of each positive response message is specific for the diagnostic service it relates to.&lt;br /&gt;
&lt;br /&gt;
==== Negative Response Message ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Negative Response Message format&lt;br /&gt;
!Byte&lt;br /&gt;
!Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|#1&lt;br /&gt;
|0x7F&lt;br /&gt;
|Negative Response SID&lt;br /&gt;
|-&lt;br /&gt;
|#2&lt;br /&gt;
|SID&lt;br /&gt;
|SID value from request message&lt;br /&gt;
|-&lt;br /&gt;
|#3&lt;br /&gt;
|NRC&lt;br /&gt;
|reason for the rejection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Negative Response Codes =====&lt;br /&gt;
Negative Response Codes (NRC in short) carry the information for request message rejection.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{Cite web |last=Dąbrowski |first=Maciej |title=Diagnostic Message (Negative Response Codes) — py-uds documentation |url=https://uds.readthedocs.io/en/stable/pages/knowledge_base/diagnostic_message.html#negative-response-code |access-date=2025-11-09 |website=uds.readthedocs.io |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Negative Response Codes&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
! Value!! Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || generalReject&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || serviceNotSupported&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || SubFunctionNotSupported&lt;br /&gt;
|-&lt;br /&gt;
| 0x13 || incorrectMessageLengthOrInvalidFormat&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || responseTooLong&lt;br /&gt;
|-&lt;br /&gt;
| 0x21 || busyRepeatRequest&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || conditionsNotCorrect&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || requestSequenceError&lt;br /&gt;
|-&lt;br /&gt;
| 0x25 || noResponseFromSubnetComponent&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || FailurePreventsExecutionOfRequestedAction&lt;br /&gt;
|-&lt;br /&gt;
| 0x31 || requestOutOfRange&lt;br /&gt;
|-&lt;br /&gt;
| 0x33 || securityAccessDenied&lt;br /&gt;
|-&lt;br /&gt;
| 0x34 || authenticationRequired&lt;br /&gt;
|-&lt;br /&gt;
| 0x35 || invalidKey&lt;br /&gt;
|-&lt;br /&gt;
| 0x36 || exceedNumberOfAttempts&lt;br /&gt;
|-&lt;br /&gt;
| 0x37 || requiredTimeDelayNotExpired&lt;br /&gt;
|-&lt;br /&gt;
| 0x38 || secureDataTransmissionRequired&lt;br /&gt;
|-&lt;br /&gt;
| 0x39 || secureDataTransmissionNotAllowed&lt;br /&gt;
|-&lt;br /&gt;
| 0x3A || secureDataVerificationFailed&lt;br /&gt;
|-&lt;br /&gt;
| 0x50 || Certificate verification failed, Invalid Time Period&lt;br /&gt;
|-&lt;br /&gt;
| 0x51 || Certificate verification failed, Invalid Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x52 || Certificate verification failed, Invalid Chain of Trust&lt;br /&gt;
|-&lt;br /&gt;
| 0x53 || Certificate verification failed, Invalid Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x54 || Certificate verification failed, Invalid Format&lt;br /&gt;
|-&lt;br /&gt;
| 0x55 || Certificate verification failed, Invalid Content&lt;br /&gt;
|-&lt;br /&gt;
| 0x56 || Certificate verification failed, Invalid Scope&lt;br /&gt;
|-&lt;br /&gt;
| 0x57 || Certificate verification failed, Invalid Certificate &amp;#039;&amp;#039;(revoked)&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0x58 || Ownership verification failed&lt;br /&gt;
|-&lt;br /&gt;
| 0x59 || Challenge calculation failed&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A || Setting Access Rights failed&lt;br /&gt;
|-&lt;br /&gt;
| 0x5B || Session key creation/derivation failed&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C || Configuration data usage failed&lt;br /&gt;
|-&lt;br /&gt;
| 0x5D || DeAuthentication failed&lt;br /&gt;
|-&lt;br /&gt;
| 0x70 || uploadDownloadNotAccepted&lt;br /&gt;
|-&lt;br /&gt;
| 0x71 || transferDataSuspended&lt;br /&gt;
|-&lt;br /&gt;
| 0x72 || generalProgrammingFailure&lt;br /&gt;
|-&lt;br /&gt;
| 0x73 || wrongBlockSequenceCounter&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || requestCorrectlyReceived-ResponsePending&lt;br /&gt;
|-&lt;br /&gt;
| 0x7E || SubFunctionNotSupportedInActiveSession&lt;br /&gt;
|-&lt;br /&gt;
| 0x7F || serviceNotSupportedInActiveSession&lt;br /&gt;
|-&lt;br /&gt;
| 0x81 || rpmTooHigh&lt;br /&gt;
|-&lt;br /&gt;
| 0x82 || rpmTooLow&lt;br /&gt;
|-&lt;br /&gt;
| 0x83 || engineIsRunning&lt;br /&gt;
|-&lt;br /&gt;
| 0x84 || engineIsNotRunning&lt;br /&gt;
|-&lt;br /&gt;
| 0x85 || engineRunTimeTooLow&lt;br /&gt;
|-&lt;br /&gt;
| 0x86 || temperatureTooHigh&lt;br /&gt;
|-&lt;br /&gt;
| 0x87 || temperatureTooLow&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || vehicleSpeedTooHigh&lt;br /&gt;
|-&lt;br /&gt;
| 0x89 || vehicleSpeedTooLow&lt;br /&gt;
|-&lt;br /&gt;
| 0x8A || throttle/PedalTooHigh&lt;br /&gt;
|-&lt;br /&gt;
| 0x8B || throttle/PedalTooLow&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C || transmissionRangeNotInNeutral&lt;br /&gt;
|-&lt;br /&gt;
| 0x8D || transmissionRangeNotInGear&lt;br /&gt;
|-&lt;br /&gt;
| 0x8F || brakeSwitch(es)NotClosed (Brake Pedal not pressed or not applied)&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || shifterLeverNotInPark&lt;br /&gt;
|-&lt;br /&gt;
| 0x91 || torqueConverterClutchLocked&lt;br /&gt;
|-&lt;br /&gt;
| 0x92 || voltageTooHigh&lt;br /&gt;
|-&lt;br /&gt;
| 0x93 || voltageTooLow&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || ResourceTemporarilyNotAvailable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[On-board diagnostics]], general article about diagnostic services in vehicles&lt;br /&gt;
*[[OBD-II PIDs]], about the US standard&lt;br /&gt;
*[https://uds.readthedocs.io/en/stable/pages/knowledge_base.html UDS Knowledge Base - py-uds package]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[https://automotive.softing.com/fileadmin/sof-files/pdf/de/ae/poster/UDS_Faltposter_softing2016.pdf Unified Diagnostic Services - ISO 14229] (poster by softing.com)&lt;br /&gt;
*[https://www.peak-system.com/produktcd/Pdf/English/PCAN-UDS-API_UserMan_eng.pdf PCAN-UDS 2.x API description]&lt;br /&gt;
&lt;br /&gt;
[[Category:Automotive technologies]]&lt;br /&gt;
[[Category:Embedded systems]]&lt;/div&gt;</summary>
		<author><name>RS-485</name></author>
	</entry>
</feed>