Skip to content

cedricp/ddt4all

Repository files navigation

DDT4All Python App Donate Discord

DDT4All is a comprehensive tool to create your own ECU parameters screens and connect to a CAN network with various OBD-II interfaces including ELM327, Vlinker FS, VGate, ObdLink SX, and ELS27 adapters.

Current Version: v3.0.5 - "Okapi-RC1" - Latest stable release with enhanced device support and performance improvements.

πŸš€ Recent Major Improvements

βœ… Enhanced Device Compatibility & Connection Stability

  • Multi-Device Support: Full compatibility with Vlinker FS, VGate, ELM327, ObdLink SX/EX, ELS27 adapters
  • Device-Specific Optimization: Automatic speed selection and optimal settings for each adapter type
  • Connection Types: USB, Bluetooth, and WiFi connections with automatic detection
  • Smart Reconnection: Automatic reconnection with device-specific handling and retry logic
  • Cross-Platform: Optimized for Windows, Linux, and macOS with platform-specific configurations
  • USB CAN Support: Added support for specialized USB CAN adapters with fallback handling

🌍 Complete Internationalization (13 Languages)

  • Fully Translated Interface in 13 languages with comprehensive translation coverage
  • Supported Languages: English, FranΓ§ais (fr), Deutsch (de), EspaΓ±ol (es), Italiano (it), Русский (ru), Polski (pl), Nederlands (nl), PortuguΓͺs (pt), Magyar (hu), RomΓ’nΔƒ (ro), Брпски (sr), TΓΌrkΓ§e (tr), Π£ΠΊΡ€Π°Ρ—Π½ΡΡŒΠΊΠ° (uk_UA)
  • Real-time Language Switching with proper encoding support
  • HTML-Aware Translations preserving markup while translating content

⚑ Performance & Reliability Improvements

  • Enhanced Device Detection: Optimized port scanning with intelligent device identification
  • Thread-Safe Operations: QThread-based operations with proper synchronization for connection stability
  • Enhanced Error Handling: Comprehensive error recovery and user-friendly messages
  • Memory Optimization: Improved resource management and cleanup

πŸ”§ New Device & Speed Management

  • VGate iCar Pro Support: Full support for enhanced STN-based VGate adapters
  • Intelligent Speed Selection: Device-specific speed options automatically loaded
  • Optimal Settings Engine: Automatic timeout and flow control configuration per device
  • Enhanced Vlinker Support: Improved speed options (No, 57600, 115200) for better performance

Android porting:

Notes:

This application is work in progress, so be very careful when using expert mode. Using the application in non expert mode should not be harmful for your vehicle (leave the expert mode button released).

Important :

Do not use this software if you don't have a strong knowledge of how a CAN network (or ECU) works, you can really do bad things with it, especially if you're working on a vehicle

The author declines all responsibility about a bad use of this tool. You are the only responsible

This tool is mainly aimed for CAN ISO_TP network study

Cloning Source Code

Dependencies :

python_3.13.x

πŸ”§ Core Requirements (Essential):

🌐 Enhanced Features (Optional but Recommended):

  • PyQtWebEngine - Provides PyQt5.QtWebEngineWidgets for documentation viewing
  • pywin32 - Windows serial support (Windows only)

πŸ“¦ Quick Installation:

# Basic installation (minimum requirements)
pip install PyQt5 pyserial pyusb crcmod

# Enhanced installation (recommended)
pip install PyQt5 PyQtWebEngine pyserial pyusb crcmod

# Windows users (additional - recommended)
pip install pywin32

# Complete installation (all features)
pip install -r requirements.txt

# Alternative with specific versions (matches requirements.txt)
pip install "PyQt5>=5.15.0,<5.16.0" "PyQtWebEngine>=5.15.0,<5.16.0" pyserial==3.5 pyusb==1.2.1 crcmod==1.7

⚠️ Important Notes:

  • PyQt5.QtWebEngineWidgets: Provided by PyQtWebEngine package, used for enhanced documentation viewing
  • If PyQtWebEngine fails to install: DDT4All will still work, but documentation viewing will be limited
  • Python Compatibility: 3.8.6+ supported (32-bit and 64-bit), tested on 3.8.6, 3.10.12, and 3.13+
  • WebEngine Compatibility: Optional PyQtWebEngine support with graceful fallback for documentation viewing
  • Virtual Environment: Recommended setup guide .

πŸ”Œ Supported Diagnostic Adapters

  • Vlinker FS - USB/Bluetooth (Recommended for best performance and stability)
  • VGate iCar Pro - USB/Bluetooth/WiFi (Enhanced STN-based adapter with advanced features)
  • ELM327 - USB/Bluetooth/WiFi (Original with PIC18F25K80, some Chinese clones supported)
  • ObdLink SX - USB (High-speed professional adapter with RTS/CTS flow control)
  • ObdLink EX - USB (Professional adapter, tested and confirmed working)
  • ELS27 - USB (Alternative ELM327-compatible adapter)
  • ELS27 V5 - USB (Enhanced ELS27 with CAN on pins 12-13, improved compatibility)
  • USB CAN Adapters - USB (Specialized CAN adapters with automatic fallback handling)

Connection Methods:

  • USB Serial: Serial-over-USB connection with automatic driver detection (most adapters)
  • USB Direct: Native USB communication for specialized CAN adapters
  • Bluetooth: Wireless connection with pairing support
  • WiFi: TCP/IP connection (format: 192.168.0.10:35000)

Latest Improvements:

  • Enhanced USB Support: Added dedicated handling for USB ELM327 adapters (STD_USB)
  • USB CAN Adapters: New support for specialized USB CAN interfaces with intelligent fallback
  • Device Normalization: Improved adapter type mapping for better device recognition
  • Connection Reliability: Enhanced error handling and timeout management per device type

Note: Most adapters (ELM327, Vlinker, VGate, ObdLink, ELS27) use serial-over-USB communication through standard COM ports. USB CAN adapters now have dedicated support with automatic fallback to ensure compatibility.

πŸ“‹ Supported Device Configuration:

Device Speed Options Default Timeout Flow Control Best For Notes
Vlinker FS No, 57600, 115200 38400 3s None Enhanced Most stable, best compatibility
VGate iCar Pro No, 115200, 230400, 500000, 1000000 115200 2s None Enhanced STN-based, very high speeds
ELM327 Original Standard speeds 38400 5s None General use Verify PIC18F25K80 chip
ELM327 Clone Standard speeds 9600-38400 5s None Budget option Test different baud rates
ELM327 USB Standard speeds 38400 5s None USB Direct Dedicated USB ELM327 support
ObdLink SX No, 500000, 1000000, 2000000 115200 2s RTS/CTS Professional Highest speeds, premium adapter
ObdLink EX No, 500000, 1000000, 2000000 115200 2s RTS/CTS Professional Confirmed working, professional grade
ELS27 Standard speeds 38400 4s None Alternative Good ELM327 alternative
ELS27 V5 Standard speeds 38400 4s None Enhanced CAN pins 12-13, PyRen/Renolink compatible
USB CAN Varies 38400 5s None Specialized Intelligent fallback, auto-detection

βš™οΈ Connection Optimization Tips:

  • USB: Most stable, recommended for diagnostic work
  • Bluetooth: Good for mobile use, may have occasional dropouts
  • WiFi: Convenient but requires stable network (format: 192.168.0.10:35000)
  • Speed Selection: Each adapter now has device-specific speed options for optimal performance
  • Troubleshooting: Use built-in connection test for automatic optimization

πŸš€ New Speed Selection Feature:

DDT4All now automatically provides optimal speed options based on your selected adapter:

  • Automatic Detection: Device-specific speed ranges are automatically loaded
  • Performance Optimization: Each adapter gets speeds suited to its capabilities
  • Easy Selection: Simply choose your adapter type and select from available speeds

⚑ Technical Speed Implementation:

VGate iCar Pro (STN-based, high-speed capable):

  • Available: No, 115200, 230400, 500000, 1000000 bps
  • Default: 115200 bps (speedcombo index 2)

Vlinker FS (Moderate speeds, stable):

  • Available: No, 57600, 115200 bps
  • Default: 38400 bps

ObdLink SX/EX (Professional, highest speeds):

  • Available: No, 500000, 1000000, 2000000 bps
  • Default: 115200 bps with RTS/CTS flow control

ELM327 variants (Standard compatibility):

  • Speed fallback: 38400, 115200, 230400, 57600, 9600, 500000, 1000000, 2000000 bps
  • Default: 38400 bps

πŸ” Device Identification Guide:

  • Vlinker FS: Usually labeled "Vlinker FS" or "OBDII WiFi"
  • VGate iCar Pro: Labeled "VGate" or "iCar Pro", often with WiFi/Bluetooth indicators
  • ELM327 Original: Look for "PIC18F25K80" chip marking
  • ELM327 Clone: Various markings, test with 9600-38400 baud
  • ELM327 USB: Dedicated USB connector, may show as "STD_USB" in interface
  • ObdLink SX: Professional blue/black housing, "OBDLink SX" branding
  • ObdLink EX: Professional housing, "OBDLink EX" branding, similar to SX
  • ELS27: Similar to ELM327 but with "ELS27" marking
  • ELS27 V5: Enhanced ELS27 with "V5" marking, CAN pins 12-13, better driver compatibility
  • USB CAN: Specialized CAN adapters, various manufacturers, auto-detected as "USBCAN"

⚑ Quick Setup Guide:

  1. Connect Device: USB/Bluetooth/WiFi as appropriate
  2. Launch DDT4All: Application will auto-detect most devices
  3. Test Connection: Use built-in connection test feature
  4. Optimize Settings: Adjust baud rate if needed based on device type

βœ… User-Tested Devices:

  • ObdLink EX: Confirmed working by community user with excellent results
  • Vlinker FS: Extensively tested, recommended for best compatibility
  • VGate iCar Pro: Enhanced adapter with excellent speed capabilities
  • ELM327 Original: Well-tested with PIC18F25K80 chip
  • ELS27 V5: Enhanced compatibility, works with PyRen and Renolink drivers

Note: If you have successfully tested other devices with DDT4All, please let us know so we can update this list!

Next, you need to get the source code. This source code repository uses git submodules. So when you clone the source code, you will need to clone recursively:

git clone --recursive https://github.com/cedricp/ddt4all.git

Or if you already cloned without the recursive option, you can update the submodules by running:

git clone --recursive https://github.com/cedricp/ddt4all.git
cd ddt4all
git submodule update --init --recursive

Windows installer

Get the fully packaged installer here : Release area

πŸš€ Key Features

πŸ”§ Diagnostic Functions

  • Read/Clear DTC: Comprehensive diagnostic trouble code management
  • Manual ECU Requests: Direct communication with vehicle control units
  • AutoScan ECUs: Automatic detection and file selection
  • Live Data Monitoring: Real-time parameter viewing and logging

πŸ“Š Advanced Capabilities

  • Log Recorder: Comprehensive data logging with export functionality
  • Screen Recorder: Automated capture via autorefresh with CSV export
  • CAN Bus Sniffing: Read/decode non-ISOTP frames for advanced diagnostics
  • Plugin System: Extensible Python-based plugin architecture for automated functions
  • Real-time Monitoring: Live data visualization and parameter monitoring
  • Custom Scripts: Support for vehicle-specific automation scripts

πŸ”Œ Plugin System

DDT4All includes a comprehensive plugin system located in ddtplugins/ with ready-to-use modules:

  • ab90_reset.py - AB90 module reset functionality
  • card_programming.py - ECU card programming utilities
  • clio3_eps_reset.py - Clio 3 EPS (Electric Power Steering) reset
  • clio4_eps_reset.py - Clio 4 EPS reset procedures
  • laguna2_uch_reset.py - Laguna 2 UCH (Under Hood Control) reset
  • laguna3_uch_reset.py - Laguna 3 UCH reset procedures
  • megane2_uch_reset.py - Megane 2 UCH reset
  • megane3_ab_reset.py - Megane 3 AB (AirBag) reset
  • megane3_eps_reset.py - Megane 3 EPS reset
  • megane3_uch_reset.py - Megane 3 UCH reset
  • rsat4_reset.py - RSAT4 system reset
  • vin_crc.py - VIN checksum calculation utilities
  • zoe_waterpump_counter_reset.py - Zoe water pump counter reset

The plugin architecture allows developers to create custom automation scripts for specific vehicle procedures and ECU operations.

⚑ Performance & Compatibility

  • Protocol Support: CAN / KWP2000 bus protocols
  • Database Format: Supports both XML and compressed ZIP formats for optimal storage
  • Database Compression: ZIP compression with automatic ecu.zip handling for efficient storage
  • Cross-Platform: Windows, Linux, macOS support with platform-specific optimizations

πŸ—οΈ Application Architecture

Core Modules

  • main.py - Main application entry point with GUI setup and connection management
  • elm.py - ELM327/adapter communication protocol with device-specific implementations
  • ecu.py - ECU database management and vehicle communication
  • parameters.py - Parameter parsing, JSON/XML conversion, and ZIP database handling
  • options.py - Configuration management and device settings persistence
  • sniffer.py - CAN bus monitoring with QThread-based real-time data capture
  • usbdevice.py - USB device handling and specialized CAN adapter support
  • dataeditor.py - ECU data editing and modification interface
  • displaymod.py - GUI display modules and graphical elements
  • uiutils.py - UI utilities and helper functions
  • version.py - Application version and contributor information

Threading Implementation

  • QThread-based Architecture: Uses Qt's threading system for non-blocking operations
  • snifferThread: Real-time CAN bus monitoring without UI freezing (sniffer.py)
  • Connection Management: Thread-safe serial communication with threading.Lock() in ELM class
  • Device Detection: Enhanced port scanning with intelligent device identification
  • Timer-based Operations: QTimer for periodic updates and connection monitoring

Database Format Support

  • XML Format: Original ECU database format for development and compatibility
  • ZIP Compression: Automatic ecu.zip detection and extraction for distribution
  • JSON Conversion: Internal conversion between XML and JSON for performance
  • Graphics Support: ZIP-embedded graphics extraction for ECU interface elements

πŸ“¦ Installation Guide

πŸͺŸ Windows Installation

# Navigate to project directory
cd ddt4all

# Create virtual environment
python -m venv ./venv

# Activate virtual environment
.\venv\Scripts\activate.bat

# Install dependencies
.\venv\Scripts\pip install -r requirements.txt

# Launch application
.\venv\Scripts\python .\main.py

🐧 Linux/macOS Installation

# Navigate to project directory
cd ddt4all

# Create virtual environment
python3 -m venv ./venv

# Set permissions (if needed)
chmod +x ./venv/bin/activate

# Activate virtual environment
source ./venv/bin/activate

# Install dependencies
pip install -r ./requirements.txt

# Launch application
python ./main.py

πŸ”§ Linux Ubuntu Fix

If you encounter Qt platform plugin "xcb" errors:

sudo apt-get install --reinstall libxcb-xinerama0

πŸš€ Quick Launch

πŸͺŸ Windows

cd ddt4all
.\venv\Scripts\activate.bat
.\venv\Scripts\python .\main.py

🐧 Linux/macOS

cd ddt4all
source ./venv/bin/activate
python ./main.py

πŸ’‘ Pro Tip

Create desktop shortcuts or shell aliases for faster access:

# Linux/macOS alias example
alias ddt4all='cd /path/to/ddt4all && source ./venv/bin/activate && python ./main.py'

Platforms

  • Gnu/Linux (Ubuntu approved)
  • Windows (For winXP, 2000, vista, try the winXP branch (Not updated version))
  • MacOS

Videos

πŸ”§ Troubleshooting

Connection Issues

No Serial Connection

  • Linux: Check user rights to access serial port Ubuntu Guide
    sudo usermod -a -G dialout $USER
    # Logout and login again
  • Windows:
    • Check serial drivers installation
    • Try to disable antivirus software
    • Run as administrator if needed

Device Not Detected

  1. Check Physical Connection: Ensure device is properly connected and powered
  2. Try Different Baud Rates: Use the connection test feature to try different speeds
  3. Driver Installation: Ensure device drivers are properly installed
  4. Port Permissions: Check port access permissions (Linux/macOS)

ELS27 V5 Specific Issues

If your ELS27 V5 is not detected:

  1. Verify Driver Installation: Ensure PyRen/Renolink drivers are properly installed
  2. Check Device Manager: Device should appear as COM port or USB Serial device
  3. Try Different USB Ports: Some ELS27 V5 units are sensitive to USB port selection
  4. Manual Port Selection: ELS27 V5 may appear as "FTDI", "CH340", or "CP210x" device
  5. Test All Available Ports: Use connection test on each COM port to find your device
  6. CAN Pin Configuration: ELS27 V5 uses CAN on pins 12-13 (configured automatically)
  7. Baud Rate Testing: Try 38400, 9600, and 115200 baud rates if auto-detection fails

WiFi Connection Issues

  • Format: Use IP:PORT format (e.g., 192.168.0.10:35000)
  • Network: Ensure device and computer are on the same network
  • Firewall: Check firewall settings for port blocking

Connection Test Feature

DDT4All now includes a built-in connection test that provides:

  • Automatic device detection and identification
  • Connection validation with detailed error messages
  • Troubleshooting suggestions for common issues
  • Performance metrics and connection quality assessment

Installation Issues

PyQtWebEngine / QtWebEngineWidgets Problems

If you encounter issues with PyQtWebEngine installation:

# Try installing specific version
pip install PyQtWebEngine==5.15.7

# If that fails, try without version constraint
pip install PyQtWebEngine

# Alternative: Install without WebEngine (basic functionality)
pip install PyQt5 pyserial pyusb crcmod

Note: DDT4All gracefully handles missing PyQtWebEngine:

  • βœ… Core functionality: Works perfectly without WebEngine
  • ⚠️ Documentation viewing: Limited to basic text display
  • πŸ”§ Error handling: Shows warning but continues normally

Windows-Specific Issues

# Install Windows-specific dependencies
pip install pywin32

# If serial port access fails
# Run Command Prompt as Administrator and install:
pip install pywin32
python -m pywin32_postinstall -install

Python 3.8.6 (32-bit) Specific Notes

βœ… Fully Supported: DDT4All works perfectly with Python 3.8.6 32-bit

Installation for Python 3.8.6 (32-bit):

# Core requirements (always work)
pip install PyQt5 pyserial pyusb crcmod

# Windows support (recommended)
pip install pywin32

# WebEngine (may not be available for 32-bit)
pip install PyQtWebEngine  # If this fails, DDT4All still works fine

32-bit Considerations:

  • βœ… Core functionality: 100% compatible
  • ⚠️ PyQtWebEngine: May not be available for Python 3.8 32-bit
  • βœ… Graceful fallback: Uses basic text widget if WebEngine unavailable
  • βœ… All OBD devices: Full compatibility with all supported adapters

Performance Optimization

  • Device Selection: Vlinker FS recommended for best performance
  • Connection Type: USB generally more stable than Bluetooth/WiFi
  • System Resources: Close unnecessary applications for better performance

🌍 Language Support

DDT4All supports 13 languages with ongoing translation improvements:

Language Code Status Recent Updates Contributors
English en_US βœ… Complete Native Core Team
FranΓ§ais fr πŸ“ Complete Core Team Core Team
PortuguΓͺs pt πŸ“ Complete Core Team Core Team
Deutsch de πŸ”„ Enhanced +30 new strings Community
EspaΓ±ol es πŸ”„ Enhanced +30 new strings Community
Italiano it πŸ”„ Enhanced +30 new strings Community
Русский ru πŸ”„ Enhanced +30 new strings Community
Polski pl πŸ”„ Enhanced +30 new strings Community
Nederlands nl πŸ”„ Enhanced +30 new strings Community
Magyar hu πŸ”„ Enhanced +30 new strings Community
RomΓ’nΔƒ ro πŸ”„ Enhanced +30 new strings Community
Брпски sr πŸ”„ Enhanced +30 new strings Community
TΓΌrkΓ§e tr πŸ”„ Enhanced +30 new strings Community
Π£ΠΊΡ€Π°Ρ—Π½ΡΡŒΠΊΠ° uk_UA πŸ”„ Enhanced +30 new strings Community

Recent Translation Improvements:

  • 390+ New Translation Strings added across all languages
  • Connection & Error Messages now fully localized
  • Device-Specific Messages translated for better troubleshooting
  • HTML-Aware Translation preserving formatting while translating content
  • Compiled .mo Files ready for immediate use

Translation Status:

  • βœ… Core Interface: Fully translated in all languages
  • πŸ”„ Enhanced Features: Recently improved with new connection messages
  • πŸ“ Ongoing: Community contributions welcome for refinements

Contributing Translations:

We welcome contributions to improve existing translations or add new languages. Translation files are located in ddt4all_data/locale/. Recent focus areas include device connection messages and error handling.

πŸ› οΈ Development Tools:

  • Translation Tools: Located in ddt4all_data/tools/ for managing .po/.mo files
  • Automated Testing: GitHub Actions workflow ensures code quality
  • Cross-Platform Building: Support for Linux, Windows, and macOS builds
  • Build Scripts: Automated installer generation for Windows (InnoSetup)

πŸ“ Project Structure:

ddt4all/
β”œβ”€β”€ main.py                 # Main application entry point
β”œβ”€β”€ elm.py                  # ELM327 and OBD-II adapter communication
β”œβ”€β”€ ecu.py                  # ECU communication and protocols
β”œβ”€β”€ options.py              # Configuration and settings management
β”œβ”€β”€ parameters.py           # Parameter definitions and handling
β”œβ”€β”€ dataeditor.py          # Data editing and validation
β”œβ”€β”€ displaymod.py          # Display modules and widgets
β”œβ”€β”€ sniffer.py             # CAN bus sniffing functionality
β”œβ”€β”€ uiutils.py             # UI utilities and helpers
β”œβ”€β”€ version.py             # Version information
β”œβ”€β”€ requirements.txt       # Python dependencies
β”œβ”€β”€ ecu.zip               # ECU DATABASE (download separately)
β”œβ”€β”€ vehicles/             # Vehicle-specific ECU databases and scripts
β”‚   β”œβ”€β”€ projects.xsl      # ECU project transformation
β”‚   β”œβ”€β”€ x*/               # Vehicle model directories (x06, x07, x10, etc.)
β”‚   β”œβ”€β”€ scriptsLibrary/   # Shared script resources
β”‚   └── DiagnosticAddressing.xsl  # Diagnostic addressing configuration
β”œβ”€β”€ ddtplugins/           # Plugin system directory
β”‚   β”œβ”€β”€ README.md         # Plugin documentation
β”‚   └── *.py              # Individual plugin modules (13 plugins)
β”œβ”€β”€ json/                 # JSON database directory (for ecu.zip extraction)
└── ddt4all_data/         # Application data and resources
    β”œβ”€β”€ config.json       # User configuration
    β”œβ”€β”€ projects.json     # Vehicle project definitions
    β”œβ”€β”€ locale/           # Translation files (13 languages)
    β”œβ”€β”€ icons/            # Application icons
    β”œβ”€β”€ tools/            # Development and build tools
    β”œβ”€β”€ inno-win-setup/   # Windows installer configuration
    └── mac-os/           # macOS build configuration

πŸ“‹ Important Information

πŸ› Report Bugs

Report bugs you found in issues. To help us fix the problem quickly, please:

  • Take a screenshot of the error you encounter
  • Attach your log file (located in the Logs/ folder)
  • Add [Bug] to the title for quick identification
  • Include system information (OS, Python version, adapter type)

πŸ’‘ Suggestions/Ideas

Tell us what you think we can do better in discussions. Give detailed description to help us understand what you are looking for. Add [Suggestion] to the title to help us quickly identify the category of the issue. Your suggestion might not be accepted, but we value all community input! :)

βš–οΈ Legal Disclaimer

This Website and Project is in no way affiliated with, authorized, maintained, sponsored or endorsed by ANYONE. This is an independent and unofficial project for educational use ONLY. Do not use for any other purpose than education, testing and research.


🎯 Final Notes

Happy CAN-Hacking! πŸš—πŸ’»

🀝 Support the Project

To make this application more reliable and add support for new devices, hardware donations are needed. Please consider contributing:

  • πŸ’° Financial donations via PayPal
  • πŸ”§ Hardware donations (OBD-II adapters, cables, ECU devices)
  • πŸ› Bug reports and patches
  • πŸ“– Documentation improvements
  • 🌍 Translation contributions

πŸ“ž Community & Support

  • Discord: Join our community for real-time support
  • GitHub Issues: Technical problems and bug reports
  • GitHub Discussions: Feature requests and general discussions