LibUDS 1.13.0
·
270 commits
to develop
since this release
UDSLib v1.13.0
Universal Diagnostics Stack for Embedded Systems
What's New
Added
- LinkControl (0x87) and AccessTimingParameter (0x83) — completes the reprogramming-negotiation flow; 22 of 27 services now implemented.
- Opt-in session policy (
config.restrict_sessions): when enabled, reprogramming services are gated to the programming session and other privileged services to extended/programming. Default off (behavior unchanged). - End-to-end reprogramming example (
examples/pro_flash_tool/): a flash tool driving a LibUDS ECU through the full session → security → link/timing → erase → download → transfer → checksum flow; smoke-tested in CI. - Real fuzzers for both untrusted-input boundaries (the core SDU dispatcher and the ISO-TP frame parser).
Fixed
- Periodic-scheduler NULL dereference: ReadDataByPeriodicIdentifier (0x2A) registered an entry even with no
fn_periodic_readconfigured, whichuds_process()then called as a NULL pointer (found by the new fuzzer). The handler now returns NRC 0x22 and the scheduler is guarded.
CI / Quality
- Pinned the Zephyr build to release v4.4.1 (was
main) for a deterministic gate. - MISRA-C:2012 enforced via cppcheck's addon against a documented deviation baseline (no mandatory-rule violations); see
docs/MISRA.md.
Docs
- Consolidated the two diverging compliance documents into a single, accurate
SERVICE_COMPLIANCE.md(22/27 matrix + ISO 15765-2 transport conformance). - Freshened the integrator guides for the instance-based ISO-TP API and the new features.
Test Results
All Tests Passed
- Total Tests: 44
- Passed: 44
- Failed: 0
Build Information
- Version: 1.13.0
- Build Date: 2026-06-15 15:29:39 UTC
- Compliance: ISO 14229-1 (UDS)
- Platform Support: Bare Metal, FreeRTOS, Zephyr, Linux, Windows
Supported Services
UDSLib v1.13.0 implements 16 ISO 14229-1 services:
| Service | Description | SID |
|---|---|---|
| Diagnostic Session Control | Session management | 0x10 |
| ECU Reset | Reset operations | 0x11 |
| Clear Diagnostic Information | DTC clearing | 0x14 |
| Read DTC Information | DTC reporting | 0x19 |
| Read Data By Identifier | Data reading | 0x22 |
| Read Memory By Address | Memory access | 0x23 |
| Security Access | Seed/Key exchange | 0x27 |
| Communication Control | TX/RX control | 0x28 |
| Authentication | Certificate exchange | 0x29 |
| Write Data By Identifier | Data writing | 0x2E |
| Routine Control | Routine execution | 0x31 |
| Request Download | OTA init | 0x34 |
| Transfer Data | Block streaming | 0x36 |
| Request Transfer Exit | OTA completion | 0x37 |
| Write Memory By Address | Memory writing | 0x3D |
| Tester Present | Keep-alive | 0x3E |
| Control DTC Setting | DTC ON/OFF | 0x85 |
Installation
Download Pre-built Binaries
Download the attached artifacts:
uds_host_sim- Host-based ECU simulatorunit_tests- Complete test suite
Build from Source
git clone https://github.com/w1ne/udslib.git
cd udslib
git checkout v1.13.0
mkdir build && cd build
cmake ..
make
ctestDocumentation
Licensing
- Community: PolyForm Noncommercial 1.0.0 (noncommercial use). See LICENSE.
- Commercial: 5,000 EUR for production/commercial use, includes integration + 1 year support.
- Contact: andrii@shylenko.com for commercial terms and support.
Report Issues
Found a bug? Open an issue
Full Changelog
See CHANGELOG.md for complete version history.
Code Coverage
Line Coverage: 86.2% · Function Coverage: 98.0%
Summary coverage rate:
lines......: 86.2% (855 of 992 lines)
functions..: 98.0% (50 of 51 functions)
branches...: no data found
Full coverage report available in release artifacts.