Blog 21.3.2025

UDS – The protocol without which vehicles come to a standstill

Intelligent Industry

Woman and man standing by electric car prototype

UDS, short for “Unified Diagnostic Services” – behind this seemingly simple abbreviation lies a powerful protocol that is indispensable for modern automotive electronics. It enables communication and maintenance of control units used in cars, transport machinery, construction equipment, and much more. Thanks to UDS, it becomes possible to diagnose and monitor the functionality and potential faults of the electronic heart of our vehicles.

If a web browser or a word processing program crashes, it’s usually not a big deal. However, when it comes to the software in electronic control units found in vehicles, construction equipment, industrial machinery, and more, failures can cause significant damage. The flawless operation of these machines is crucial. To ensure this continuously and to detect, analyze, and resolve potential issues, diagnostic data is essential. The UDS protocol serves the purpose of retrieving these diagnostic data from electronic control units and managing their operation.

Specification and Standard

The UDS protocol is standardized as ISO 14229-1. It is a client-server protocol in which the control unit (ECU, “Electronic Control Unit”) acts as the server, receiving and responding to requests from a client. Such a client can run on any computer as long as a connection to the control unit exists. The UDS protocol supports various physical connection standards, such as CAN and Ethernet, to facilitate this communication. This flexibility is possible because UDS is purely a session and application protocol, operating at layers 5 and 7 of the OSI model.

The standard provides a detailed definition of how communication between the client and server takes place, including possible communication flows—i.e., potential client requests and corresponding server responses.

A key component of the protocol is the so-called UDS services. In this process, the client requests a service from the server, which is executed by the control unit and responded to with a code and, if applicable, additional data. The UDS services are categorized as follows:

  • 11 services for Diagnostic and Communications Management, e.g., ECU reset, security access, and authentication.
  • 7 services for Data Transmission, e.g., reading or writing data values by ID (see below) or address.
  • 2 services for Stored Data Transmission, e.g., clearing diagnostic data or reading Diagnostic Trouble Codes (see below).
  • 1 service for Input/Output Control, allowing manual control of internal and external I/O signals.
  • 1 service for Remote Activation of Routine, enabling the start, stop, or result retrieval of firmware-embedded software routines.
  • 5 services for Upload/Download, e.g., transferring new software, data, or files to the control unit.

In addition to these 27 standardized UDS services, the manufacturer of a control unit can define custom services. Furthermore, the standard specifies a set of response codes (NRC, Negative Response Code) for errors occurring during UDS communication.

Control units contain a large number of data points that can be read—and in some cases written—via their Data Identifiers (DIDs). These data points include sensor data such as speed and temperature, as well as information like the Vehicle Identification Number (VIN) or software versions.

During the operation of a control unit, diagnostic data is continuously generated. Of particular importance are the Diagnostic Trouble Codes (DTCs), which are stored in the control unit’s fault memory. These codes allow technicians and developers to track and analyze faults and issues that occur during operation.

With just a few components and concepts, UDS defines a protocol that is flexible, elegantly extensible, and comprehensive at the same time.

UDS by Gofore

Modern vehicles and machines are becoming more powerful and complex, with some containing over a hundred ECUs in a single unit. The shift toward electric vehicles and industrial electric machines—with their battery systems, inverters, and motor control units—further accelerates this development. In general, the more electronics and sensors a system has, the more control units it requires, increasing the demand for a unified, standardized diagnostic protocol.

UDS ensures compatibility between hardware from different manufacturers and suppliers. Additionally, UDS clients connected to the internet enable future-proof applications such as remote monitoring and management of vehicle fleets, as well as the installation of over-the-air updates.

Gofore engages with its customers and supports them at every stage of their transformation toward the Intelligent Industry. We have already developed a range of UDS-based solutions for several clients, such as deploying and verifying firmware updates. Now, we are taking the next step with a unified, platform-independent library and programming interface, available in both C and Python.

This gives customers maximum flexibility: our UDS client is ready for immediate use but can also be freely customized to meet specific needs. The library and API cover a wide range of UDS functionalities, enabling seamless integration into existing programs and toolchains. The choice of programming language allows for integration into various environments, ensuring adaptability and scalability.

Adrian Herrmann

Senior Software Developer

Adrian is passionate about embedded programming and the challenges of limited hardware resources. He has experience with embedded Linux kernels and IoT operating systems, among other things. Additionally, he has worked on interdisciplinary projects that integrate C++ and Python.

Beyond the technical realm, he is interested in the intersection of technology, culture, politics, and society, always seeking to understand the bigger picture where these elements converge.

Back to top