Skip to content

Python package for Unified Diagnostic Services (UDS, ISO 14229) communication. Provides a common API across diagnostic buses (CAN, Ethernet, LIN, FlexRay, K-Line) and can be extended to custom transports.

License

Notifications You must be signed in to change notification settings

mdabrowski1990/uds

UDS

Continuous Integration Status Security Scan Status CII Best Practices ReadTheDocs Build Status Software Tests Coverage

The latest Version of UDS package Supported Python versions PyPI status Total PyPI downloads Monthly PyPI downloads License Type

Python package for working with the Unified Diagnostic Services (UDS) protocol, as defined in ISO 14229. It supports different communication buses on both communication sides (client and server).

Documentation

User documentation is hosted by ReadTheDocs portal and available under the following link: https://uds.readthedocs.io/

Security policy for this package is defined in SECURITY.md file.

If you want to become a contributor, please read CONTRIBUTING.md file.

Motivation

Existing Python UDS packages (see Alternative Options) cover parts of the protocol, but often focus on a single bus, client-only communication, or limited configuration.

This package is designed to:

  • support multiple buses (CAN, LIN, Ethernet, K-Line, FlexRay) and multiple bus managers (e.g. python-can)
  • handle both client and server roles
  • provide detailed control over timing and transmission parameters
  • enable use-cases from simple send/receive to simulation, testing, and sniffing/decoding UDS traffic

Development is ongoing, but the architecture is already in place, and several features are implemented. See the current status at: https://uds.readthedocs.io/en/stable/#features

Alternative Options

python-udsoncan

Link: https://github.com/pylessard/python-udsoncan

  • pros:
    • extensive documentation
    • active community and maintenance
    • multiple connection types supported
    • full CAN support; extensible to other buses with custom code
    • configurable CAN transmission parameters via can-isotp
    • multiple diagnostic services implemented
    • error handling for both positive and negative scenarios
    • control over CAN network timings (N_As, N_Ar, N_Bs, N_Br, N_Cs, N_Cr)
    • possibility to inject Transport/Network layer errors
  • cons:
    • no full-duplex communication
    • only client-side communication implemented

python-uds

Link: https://github.com/richClubb/python-uds

  • pros:
    • CAN and LIN buses are supported
  • cons:
    • limited documentation
    • not actively maintained (last release: March 2019)
    • limited interface support (primarily python-can)
    • no full-duplex communication
    • only client-side communication implemented
    • limited configuration of communication parameters
    • no error injection options (e.g. Flow Status manipulation, incorrect sequence handling)

Contact

About

Python package for Unified Diagnostic Services (UDS, ISO 14229) communication. Provides a common API across diagnostic buses (CAN, Ethernet, LIN, FlexRay, K-Line) and can be extended to custom transports.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors 6

Languages