Open Source
.ddddigital tachograph file analyzer — full decoding with tree-structured data exploration.
- Multi-generation: G1 (Annex 1B), G2 Smart (Annex 1C), Gen 2.2 Smart V2 (Reg. EU 2023/980)
- Driver data: Surname, first name, date of birth, card number, expiry, issuing nation
- Daily activities: Driving, work, availability, rest/break
- Vehicle data: VIN, plate, registration nation, odometer
- GNSS positions: Coordinates, border crossings, places
- VU records: Card insertions/withdrawals, calibrations, sensors, events/faults
- Per-day vehicles: Vehicle(s) driven each day shown in the driver activity chart
- Full nation names: Registration/issuing/sensor nation codes expanded to English names
- Cryptographic signature verification (ERCA → MSCA → Card/VU chain)
- Recursive BER-TLV and STAP parsing (nested containers)
- 100% byte coverage on all tested files
- TREP completeness inventory and origin detection (driver card vs VU download)
- Plausibility gating and best-effort salvage of partial/corrupted downloads
- Tree structure for data exploration
- PDF, Excel, CSV, JSON export
- Interactive GUI with tree navigation
Activity dashboard · daily activity timeline · speed dashboard · detailed speed graph
Open the full-resolution screenshots
Download from the Releases page:
| Platform | File |
|---|---|
| Windows | TachoReader-v<version>-windows-x64.zip |
| macOS | TachoReader-v<version>-macos.dmg |
Extract the Windows archive and run TachoReader.exe. Open the macOS disk image
and drag TachoReader.app to Applications.
git clone https://github.com/Syax89/ddd-tachograph-reader.git
cd ddd-tachograph-reader
pip install -r requirements.txt
# GUI
python app/gui.py
# CLI
python app/cli.py path/to/file.dddddd-tachograph-reader/
├── app/
│ ├── cli.py # Command-line interface
│ ├── main.py # CLI compatibility entry point
│ ├── gui.py # GUI (tree + table, tkinter)
│ ├── engine.py # TachoParser entry point
│ └── export.py # PDF/Excel/CSV/JSON export
├── core/
│ ├── decoders/ # Field-level decoders and primitives
│ ├── parser/ # Deterministic, G1, and VU parsers
│ ├── registry/ # Decoder registry and result models
│ ├── crypto/ # Certificate and signature validation
│ └── utils/ # Shared helpers, constants, and version
├── certs/ # ERCA root certificates
├── tests/ # Test suite
├── scripts/ # Specifications and audits
├── docs/ # Documentation
└── .github/workflows/ # CI/CD (lint, tests, Windows/macOS builds)
| Generation | Standard | Header | Notes |
|---|---|---|---|
| G1 Digital | Annex 1B (Reg. 3821/85) | variable | Legacy tachographs |
| G2 Smart | Annex 1C (Reg. 2016/799) | 0x7621 |
Smart Tachograph V1 |
| G2.2 Smart V2 | Annex 1C (Reg. 2023/980) | 0x7631 |
Smart Tachograph V2 |
pip install -r requirements.txt
python -m pytest tests/ -vThe suite covers multi-generation detection, G1/G2/G2.2 parsing, byte coverage, fuzzing, and digital signatures. Tests requiring private DDD samples skip when those fixtures are unavailable.
pip install pyinstaller
pyinstaller build.spec
# Output: dist/TachoReader (macOS) / dist/TachoReader.exe (Windows)MIT © Syax89
Thank you to everyone who has used, tested, and contributed to this project. Your feedback and support keep it moving forward.
This project is and will remain open source and free to use. If it has been useful to you and you'd like to say thanks, you can buy me a coffee — completely optional, but always appreciated.

