ISO 14229-1 defines Unified Diagnostic Services (UDS), a vehicle diagnostic communication protocol used over CAN, DoIP, and other automotive transports. Below is a concise, useful package of content you can use as a README, blog blurb, or GitHub repository description linking the standard, implementations, and research pointers.
ISO 14229 is the international standard for Unified Diagnostic Services (UDS). It defines the data link layer independent requirements for diagnostic communication in road vehicles. Iso 14229-1 Pdf Github
Part 1 (ISO 14229-1) specifically covers the Application Layer. It defines the syntax and semantics of the services that a client (typically a diagnostic tester) uses to request actions from a server (an ECU within the vehicle). Brief overview: ISO 14229-1 (UDS) — PDF +
If you are writing scripts to test ECUs, Python is the go-to language. Libraries like udsoncan allow you to build a UDS client easily. Example Python snippet (SocketCAN + python-can
read_data_by_identifier).udsoncan on GitHub to see real-world implementations of the standard.For network analysis, Wireshark is the industry standard. While Wireshark has built-in UDS support, GitHub hosts custom dissectors and Lua scripts for proprietary manufacturer-specific UDS variants.
.pcap file of vehicle traffic, these tools decode the hex bytes into the Service IDs defined in ISO 14229-1.Example Python snippet (SocketCAN + python-can, send ReadDataByIdentifier 0xF190)
import can
bus = can.interface.Bus(bustype='socketcan', channel='vcan0', bitrate=500000)
msg = can.Message(arbitration_id=0x7DF, data=[0x02, 0x22, 0xF1, 0x90], is_extended_id=False)
bus.send(msg)
If you are working with ISO 14229-1, these types of open-source projects are invaluable: