udsoncan
Implementation of the Unified Diagnostic Service (UDS) protocol (ISO-14229) used in the automotive industry.
What it is and what it does
udsoncan is a Python implementation of the UDS (Unified Diagnostic Services) protocol standardized in ISO-14229, used primarily in automotive diagnostics to communicate with vehicle electronic control units (ECUs). It provides a client library that handles the protocol's request-response messaging, session management, security access, and data reading/writing operations typical in vehicle diagnostics workflows.
The package requires Python 3.7+ and has no runtime dependencies, making it lightweight to integrate. It exposes high-level client methods like `change_session`, `unlock_security_access`, `write_data_by_identifier`, and `ecu_reset` that abstract away low-level protocol details, allowing developers to focus on diagnostic logic.
Use it for:
- Develop custom vehicle diagnostic tools that read and modify ECU parameters without proprietary OEM software
- Automate ECU testing and validation during automotive development or manufacturing
- Build diagnostic applications that unlock security access and perform ECU resets for maintenance workflows
- Integrate UDS protocol support into Python-based automotive test harnesses or CI/CD pipelines
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Implements the Unified Diagnostic Services (UDS) protocol defined by ISO-14229 for automotive diagnostics in Python, enabling communication with vehicle electronic control units.
Yes, if you need UDS protocol support for automotive diagnostics. The package is actively maintained, has no external dependencies, carries a permissive MIT license, and addresses a specialized but real need in automotive development and testing. 721 repository stars and consistent release cadence suggest production use. No known security vulnerabilities. Install it if your project involves vehicle ECU communication; skip it if you do not work in automotive diagnostics.
Install
udsoncan on PyPI
pip
pip install udsoncanuv
uv add udsoncanpoetry
poetry add udsoncanInstalling udsoncan
Before you install
Low install friction with no runtime dependencies. Active maintenance: last commit 2026-08-09, 721 repository stars, and a release within 50 days indicates ongoing development.
License in practice
MIT license permits commercial and private use with minimal restrictions, suitable for both open-source and proprietary projects.
Quickstart
pip install udsoncan
import udsoncan
from udsoncan.client import Client
from udsoncan.connections import IsoTPSocketConnection
from udsoncan.services import DiagnosticSessionControl
conn = IsoTPSocketConnection('can0', ...)
with Client(conn, request_timeout=2) as client:
client.change_session(DiagnosticSessionControl.Session.extendedDiagnosticSession)
Requires Python 3.7+; transport layer (e.g., ISO-TP socket) must be configured separately
Verify before relying
- Whether isotp library shown in example is an optional or required peer dependency
- Specific vehicle models or ECU types supported or tested against
- Performance characteristics under high-frequency diagnostic requests
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.7) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 50 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 217,217/month — #9,362 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: udsoncan-1.26.1-py3-none-any.whl
Keywords: uds, 14229, iso-14229, diagnostic, automotive
Tags
More Interface Engine/Protocol Translator packages
Fetches financial and market data from Yahoo…
permissive · top 1,000 on PyPI
jsonconversionConverts arbitrary Python objects to JSON…
permissive · top 5,000 on PyPI
crcmodComputes Cyclic Redundancy Check (CRC) values…
permissive · top 5,000 on PyPI
pyusbPyUSB provides Python access to USB devices on…
permissive · top 5,000 on PyPI
PyVISAPyVISA provides Python bindings to VISA…
permissive · top 5,000 on PyPI
PyVISA-pyPyVISA-py is a pure Python backend for the VISA…
permissive · top 5,000 on PyPI
doipclientA pure Python 3 Diagnostic over IP (DoIP)…
permissive · top 15,000 on PyPI
icsneopyicsneopy is a Python binding for Intrepid…
unclear · top 15,000 on PyPI
odxtoolsodxtools parses and processes ODX (Open…
permissive · top 5,000 on PyPI
pydltPyDLT reads and writes AUTOSAR DLT (Diagnostic…
permissive · top 15,000 on PyPI
vininfoExtracts and verifies information from Vehicle…
permissive · top 15,000 on PyPI
cantoolsCantools parses automotive CAN bus database…
permissive · top 5,000 on PyPI
subarulinkInteract with Subaru's MySubaru Connected…
permissive · top 15,000 on PyPI
kuksa-clientKUKSA Python SDK provides a client library and…
permissive · top 15,000 on PyPI
canopenA Python implementation of the CANopen standard…
permissive · top 5,000 on PyPI
pymavlinkPymavlink is a Python implementation of the…
copyleft · top 15,000 on PyPI