LibUDS 1.12.0
·
270 commits
to develop
since this release
UDSLib v1.12.0
Universal Diagnostics Stack for Embedded Systems
What's New
Added
- ISO-TP transfer timeouts: N_Cr (reception) and N_Bs (transmission) deadlines abort a stalled multi-frame transfer instead of wedging the engine; configurable per instance.
- SecurityAccess sequence enforcement (0x27): sendKey without a preceding requestSeed is rejected with NRC 0x24; the issued seed is now passed to the key verifier.
Changed
- BREAKING (transport): the bundled ISO-TP layer is now fully instance-based.
uds_tp_isotp_init/set_fd/process,uds_isotp_send, anduds_isotp_rx_callbacktake an explicituds_isotp_ctx_t *and a caller-provided TX buffer (no file-global state); multiple channels can run concurrently. Wirefn_tp_sendto a small adapter that forwards to the instance.
Fixed
- Mutex deadlock:
uds_processheld the lock on the RCRRP-limit abort path. - Client/server state: a finished asynchronous server request could swallow a later request as a stale client response; pending state is now split into server/client fields.
- DID session gating: per-DID programming and extended sessions were mapped to each other's bits (access-control flaw in 0x22/0x2E).
- Periodic scheduler (0x2A): deadline comparison is now wrap-safe across the 32-bit millisecond rollover.
- ISO-TP framing: reject short SF/FF/FC frames and NULL/zero-length payloads.
- Zephyr: example and module now build (added missing
uds_service_io.c; completed the instance-based transport migration).
CI
- Fixed
docker_run.sh, which ranbash -c "bash"and left static-analysis, build-posix, and build-zephyr as silent no-ops. - Upgraded the toolchain to Ubuntu 24.04 (Python 3.12) with Zephyr SDK 1.0.1; made the coverage script lcov 2.x compatible.
Test Results
40 / 40 tests passed (0 failed) across unit, transport, compliance, and integration suites.
Build Information
- Version: 1.12.0
- Build Date: 2026-06-15 12:23:29 UTC
- Compliance: ISO 14229-1 (UDS)
- Platform Support: Bare Metal, FreeRTOS, Zephyr, Linux, Windows
Supported Services
UDSLib v1.12.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.12.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: 80.9% (741 of 916 lines) · Function Coverage: 93.8% (45 of 48)
Summary coverage rate:
lines......: 80.9% (741 of 916 lines)
functions..: 93.8% (45 of 48 functions)
branches...: no data found
Full coverage report available in release artifacts.