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).
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.
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
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
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)
- e-mail: [email protected]
- group: UDS package development
- discord: UDS discord server