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.
- 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
- 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
- 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
- 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
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
- Python 3.8.6+ (32-bit/64-bit) - Python 3.13 recommended
- PyQt5 - GUI framework
- pyserial - Serial communication
- pyusb - USB device support
- crcmod - Checksum functions
- PyQtWebEngine - Provides
PyQt5.QtWebEngineWidgets
for documentation viewing - pywin32 - Windows serial support (Windows only)
# 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
- 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 .
- 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)
- 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
)
- 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.
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 |
- 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
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
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
- 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"
- Connect Device: USB/Bluetooth/WiFi as appropriate
- Launch DDT4All: Application will auto-detect most devices
- Test Connection: Use built-in connection test feature
- Optimize Settings: Adjust baud rate if needed based on device type
- 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
Get the fully packaged installer here : Release area
- 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
- 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
DDT4All includes a comprehensive plugin system located in ddtplugins/
with ready-to-use modules:
ab90_reset.py
- AB90 module reset functionalitycard_programming.py
- ECU card programming utilitiesclio3_eps_reset.py
- Clio 3 EPS (Electric Power Steering) resetclio4_eps_reset.py
- Clio 4 EPS reset procedureslaguna2_uch_reset.py
- Laguna 2 UCH (Under Hood Control) resetlaguna3_uch_reset.py
- Laguna 3 UCH reset proceduresmegane2_uch_reset.py
- Megane 2 UCH resetmegane3_ab_reset.py
- Megane 3 AB (AirBag) resetmegane3_eps_reset.py
- Megane 3 EPS resetmegane3_uch_reset.py
- Megane 3 UCH resetrsat4_reset.py
- RSAT4 system resetvin_crc.py
- VIN checksum calculation utilitieszoe_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.
- 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
main.py
- Main application entry point with GUI setup and connection managementelm.py
- ELM327/adapter communication protocol with device-specific implementationsecu.py
- ECU database management and vehicle communicationparameters.py
- Parameter parsing, JSON/XML conversion, and ZIP database handlingoptions.py
- Configuration management and device settings persistencesniffer.py
- CAN bus monitoring with QThread-based real-time data captureusbdevice.py
- USB device handling and specialized CAN adapter supportdataeditor.py
- ECU data editing and modification interfacedisplaymod.py
- GUI display modules and graphical elementsuiutils.py
- UI utilities and helper functionsversion.py
- Application version and contributor information
- 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
- 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
# 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
# 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
If you encounter Qt platform plugin "xcb" errors:
sudo apt-get install --reinstall libxcb-xinerama0
cd ddt4all
.\venv\Scripts\activate.bat
.\venv\Scripts\python .\main.py
cd ddt4all
source ./venv/bin/activate
python ./main.py
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'
- Gnu/Linux (Ubuntu approved)
- Windows (For winXP, 2000, vista, try the winXP branch (Not updated version))
- MacOS
- Changing roof minimum speed operation on Megane II Cabriolet
- Checking AirBag firing lines
- Clearing Airbag DTC
- Can bus sniffing (Russian)
- ECU Parameters changes
- 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
- Check Physical Connection: Ensure device is properly connected and powered
- Try Different Baud Rates: Use the connection test feature to try different speeds
- Driver Installation: Ensure device drivers are properly installed
- Port Permissions: Check port access permissions (Linux/macOS)
If your ELS27 V5 is not detected:
- Verify Driver Installation: Ensure PyRen/Renolink drivers are properly installed
- Check Device Manager: Device should appear as COM port or USB Serial device
- Try Different USB Ports: Some ELS27 V5 units are sensitive to USB port selection
- Manual Port Selection: ELS27 V5 may appear as "FTDI", "CH340", or "CP210x" device
- Test All Available Ports: Use connection test on each COM port to find your device
- CAN Pin Configuration: ELS27 V5 uses CAN on pins 12-13 (configured automatically)
- Baud Rate Testing: Try 38400, 9600, and 115200 baud rates if auto-detection fails
- 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
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
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
# 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
β 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
- 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
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 |
- 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
- β Core Interface: Fully translated in all languages
- π Enhanced Features: Recently improved with new connection messages
- π Ongoing: Community contributions welcome for refinements
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.
- 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)
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
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)
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! :)
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.
Happy CAN-Hacking! ππ»
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
- Discord: Join our community for real-time support
- GitHub Issues: Technical problems and bug reports
- GitHub Discussions: Feature requests and general discussions