DDT4ALL is a cross-platform diagnostic application for CAN bus vehicle networks. It lets you create your own ECU parameter screens and communicate with ECUs through various OBD-II interfaces, including ELM327, Vlinker FS, VGate iCar Pro, OBDLink SX/EX and ELS27 adapters.
v3.1.3 (Celestial Nemean)ecu.zip), JSON internal conversion, graphics extraction.| Device | Available speeds | Default baud | Timeout | Flow control | Category | Notes |
|---|---|---|---|---|---|---|
| VLinker FS | 57600, 115200 | 38400 | 3 s | None | Enhanced | Most stable, best compatibility |
| VGate iCar Pro | 115200, 230400, 500000, 1000000 | 115200 | 2 s | None | Enhanced | High-speed (up to 1 000 000 bps) |
| ELM327 (original) | standard | 38400 | 5 s | None | General | Usually marked PIC18F25K80 |
| ELM327 (clone) | standard | 9600–38400 | 5 s | None | Budget | Try different baud settings |
| ELM327 USB | standard | 38400 | 5 s | None | USB | Dedicated ELM327 USB (STD_USB) |
| OBDLink SX | 500k / 1M / 2M | 115200 | 2 s | RTS/CTS | Professional | Highest-speed adapter |
| OBDLink EX | 500k / 1M / 2M | 115200 | 2 s | RTS/CTS | Professional | Tested and confirmed |
| ELS27 | standard | 38400 | 4 s | None | Alternative | Good ELM327 equivalent |
| ELS27 V5 | standard | 38400 | 4 s | None | Enhanced | CAN pins 12-13, PyRen / Renolink compatible |
| DERLEK USB-DIAG2/3 | standard | 38400 | 4 s | None | Professional | Auto pin swap, STN/STPX support * |
| USB CAN | varies | 38400 | 5 s | None | Special | Automatic detection / fallback |
* DERLEK USB-DIAG2/3 status: not checked on real hardware yet.
IP:PORT format (e.g. 192.168.0.10:35000).Most adapters appear as a standard serial port. Dedicated USB-CAN / USB-ELM327 devices are handled natively with an automatic fallback.
gettext catalogs are authored under locales/ and compiled into
src/ddt4all/generated/locales/. English is the source language (used as msgid);
the following catalogues are shipped:
| Code | Language |
|---|---|
fr | Français |
pt | Português |
de | Deutsch |
es | Español |
it | Italiano |
ru | Русский |
pl | Polski |
nl | Nederlands |
hu | Magyar |
ro | Română |
sr | Српски |
tr | Türkçe |
cs_CZ | Czech |
uk_UA | Українська |
All catalogs are complete (content of all msgstr fields is present
and no #, fuzzy remains), keep valid gettext syntax and preserve the original
%s / named placeholders.
>=3.8 (3.10 or newer recommended)>=5.15, <5.16 — GUI framework>=5.15, <5.16 — optional, full HTML documentation view==3.5 — serial port communication==1.2.1 — USB access==1.7 — checksums>=227 — Windows (serial)git clone https://github.com/cedricp/ddt4all.git
cd ddt4all
python -m venv ./venv
# activate virtual environment
# Windows:
.\venv\Scripts\activate.bat
# Linux / macOS:
source ./venv/bin/activate
# install the package (editable for development)
pip install -e .
# launch application
ddt4all
# or
python -m ddt4all
pip install -e ".[dev]" # pytest, linting
pip install -e ".[can]" # python-can, obd
pip install -e ".[network]" # requests, websockets
pip install -e ".[bluetooth]" # pybluez / bleak
# all together:
pip install -e ".[dev,can,network,bluetooth]"
pip install "PyQt5>=5.15,<5.16" "PyQtWebEngine>=5.15,<5.16" pyserial==3.5 pyusb==1.2.1 crcmod==1.7 polib platformdirs
dialout group to access serial ports:
sudo usermod -a -G dialout $USER
# logout and login again
pip install -e ., update the
packaging tools first:
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install -e .
If the package data is missing at runtime (resources/projects.json not found),
reinstall from the repository root:
python3 -m pip install --force-reinstall -e .
# after a successful install
ddt4all
# or, from source (development mode):
python -m ddt4all
Use the built-in connection test to let DDT4ALL auto-detect the adapter and the correct baud rate. On discovery, the optimal device configuration is applied.
# Linux / macOS
alias ddt4all-dev='cd /path/to/ddt4all && source ./venv/bin/activate && python -m ddt4all'
# Windows (PowerShell)
Set-Alias -Name ddt4all -Value "ddt4all"
Vehicle-specific procedures are provided as Python modules under
src/ddt4all/plugins/:
ab90_reset.py — AB90 air-bag resetcard_programming.py — ECU card programmingclio3_eps_reset.py, clio4_eps_reset.py — Clio 3/4 EPS resetcmd_macros.py — DDT2000 command macros (.cmd, uses cmd_macros_lib/)laguna2_uch_reset.py, laguna3_uch_reset.py — Laguna 2/3 UCHmegane2_uch_reset.py, megane3_uch_reset.py — Megane 2/3 UCHmegane3_ab_reset.py — Megane 3 air-bag resetmegane3_eps_reset.py — Megane 3 EPSrsat4_reset.py — RSAT4 system resetvin_crc.py — VIN CRC calculationzoe_waterpump_counter_reset.py — ZOE water-pump counting resetThe plugin architecture allows custom procedures for other ECUs and brands.
src/ddt4all/main.py — entry point (PyQt GUI + connection handling)src/ddt4all/version.py — version / codename / contributorssrc/ddt4all/options.py — configuration & device settings persistencesrc/ddt4all/file_manager.py — file and directory utilitiessrc/ddt4all/cli/ — command-line interface handlers (DoIP, parameters, USB device)core/elm/ — ELM327 / adapter communication (elm.py, device_manager.py,
port.py, constants.py)core/ecu/ — ECU database, files and scanning (ecu_database.py,
ecu_scanner.py, ecu_device.py, ecu_file.py, ecu_request.py,
ecu_ident.py, data_item.py, utils.py)core/doip/ — DoIP (Diagnostics over IP) protocol supportcore/parameters/helpers.py — parameter parsing / helperscore/usbdevice/ — USB CAN devices (obd_device.py, usb_can.py, constants.py)ui/ — main window, widgets, dialogsui/displaymod/ — display widgets / graphical elementsui/data_editor/ — ECU qualitative data editingui/sniffer/ — CAN sniffing with a QThread-based threadgenerated/ — compiled resources and .mo translation catalogsresources.qrc — Qt resource descriptorvehicles/ — vehicle-specific filesjson/ — JSON database folderlogs/ — runtime logs (see also the platform user-log directory)threading.Lock() in the ELM layer for safe serial operationsQTimer for periodic refresh and connection monitoringpip install -e ".[dev]"
pytest
Test suites are in tests/ (unit, integration, smoke). A GitHub Actions
workflow (python-app.yml) runs the test suite on multiple OSes.
setup_tools/inno-win-setup/
(wininstaller.iss, version.h, win32_deps/).setup_tools/mac-os/builddmg.sh (with main.spec,
entitlements.plist).setup_tools/).Prebuilt installers are published on the Releases page.
dialout group. On Windows, try running as administrator.FTDI, CH340 or CP210x).IP:PORT, same local network, firewall open.pywin32 and run
python -m pywin32_postinstall -install, ideally with admin rights.See the project Wiki (Android port, device notes) and the YouTube channel (CAN sniffing, AirBag DTC, Megane examples).
Logs/ file, [Bug] in the title, OS + Python + adapter info.[Suggestion] in the title.locales/.This project is free software under the GPL-3.0-or-later license. DDT4ALL is an independent, unofficial, educational tool and is not affiliated with any vehicle/software brand. It is provided for study, testing and research only; it is not a replacement for factory/bench diagnostic tools. Use on a real vehicle is at your own risk — see the warnings at the top of this file.
Happy CAN studying! 🚗🔧
514 followers · starred Mar 2024
138 followers · starred May 2017
1,030 followers · starred Aug 2025
839 followers · starred Jun 2026
DDT4ALL is a cross-platform diagnostic application for CAN bus vehicle networks. It lets you create your own ECU parameter screens and communicate with ECUs through various OBD-II interfaces, including ELM327, Vlinker FS, VGate iCar Pro, OBDLink SX/EX and ELS27 adapters.
v3.1.3 (Celestial Nemean)ecu.zip), JSON internal conversion, graphics extraction.| Device | Available speeds | Default baud | Timeout | Flow control | Category | Notes |
|---|---|---|---|---|---|---|
| VLinker FS | 57600, 115200 | 38400 | 3 s | None | Enhanced | Most stable, best compatibility |
| VGate iCar Pro | 115200, 230400, 500000, 1000000 | 115200 | 2 s | None | Enhanced | High-speed (up to 1 000 000 bps) |
| ELM327 (original) | standard | 38400 | 5 s | None | General | Usually marked PIC18F25K80 |
| ELM327 (clone) | standard | 9600–38400 | 5 s | None | Budget | Try different baud settings |
| ELM327 USB | standard | 38400 | 5 s | None | USB | Dedicated ELM327 USB (STD_USB) |
| OBDLink SX | 500k / 1M / 2M | 115200 | 2 s | RTS/CTS | Professional | Highest-speed adapter |
| OBDLink EX | 500k / 1M / 2M | 115200 | 2 s | RTS/CTS | Professional | Tested and confirmed |
| ELS27 | standard | 38400 | 4 s | None | Alternative | Good ELM327 equivalent |
| ELS27 V5 | standard | 38400 | 4 s | None | Enhanced | CAN pins 12-13, PyRen / Renolink compatible |
| DERLEK USB-DIAG2/3 | standard | 38400 | 4 s | None | Professional | Auto pin swap, STN/STPX support * |
| USB CAN | varies | 38400 | 5 s | None | Special | Automatic detection / fallback |
* DERLEK USB-DIAG2/3 status: not checked on real hardware yet.
IP:PORT format (e.g. 192.168.0.10:35000).Most adapters appear as a standard serial port. Dedicated USB-CAN / USB-ELM327 devices are handled natively with an automatic fallback.
gettext catalogs are authored under locales/ and compiled into
src/ddt4all/generated/locales/. English is the source language (used as msgid);
the following catalogues are shipped:
| Code | Language |
|---|---|
fr | Français |
pt | Português |
de | Deutsch |
es | Español |
it | Italiano |
ru | Русский |
pl | Polski |
nl | Nederlands |
hu | Magyar |
ro | Română |
sr | Српски |
tr | Türkçe |
cs_CZ | Czech |
uk_UA | Українська |
All catalogs are complete (content of all msgstr fields is present
and no #, fuzzy remains), keep valid gettext syntax and preserve the original
%s / named placeholders.
>=3.8 (3.10 or newer recommended)>=5.15, <5.16 — GUI framework>=5.15, <5.16 — optional, full HTML documentation view==3.5 — serial port communication==1.2.1 — USB access==1.7 — checksums>=227 — Windows (serial)git clone https://github.com/cedricp/ddt4all.git
cd ddt4all
python -m venv ./venv
# activate virtual environment
# Windows:
.\venv\Scripts\activate.bat
# Linux / macOS:
source ./venv/bin/activate
# install the package (editable for development)
pip install -e .
# launch application
ddt4all
# or
python -m ddt4all
pip install -e ".[dev]" # pytest, linting
pip install -e ".[can]" # python-can, obd
pip install -e ".[network]" # requests, websockets
pip install -e ".[bluetooth]" # pybluez / bleak
# all together:
pip install -e ".[dev,can,network,bluetooth]"
pip install "PyQt5>=5.15,<5.16" "PyQtWebEngine>=5.15,<5.16" pyserial==3.5 pyusb==1.2.1 crcmod==1.7 polib platformdirs
dialout group to access serial ports:
sudo usermod -a -G dialout $USER
# logout and login again
pip install -e ., update the
packaging tools first:
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install -e .
If the package data is missing at runtime (resources/projects.json not found),
reinstall from the repository root:
python3 -m pip install --force-reinstall -e .
# after a successful install
ddt4all
# or, from source (development mode):
python -m ddt4all
Use the built-in connection test to let DDT4ALL auto-detect the adapter and the correct baud rate. On discovery, the optimal device configuration is applied.
# Linux / macOS
alias ddt4all-dev='cd /path/to/ddt4all && source ./venv/bin/activate && python -m ddt4all'
# Windows (PowerShell)
Set-Alias -Name ddt4all -Value "ddt4all"
Vehicle-specific procedures are provided as Python modules under
src/ddt4all/plugins/:
ab90_reset.py — AB90 air-bag resetcard_programming.py — ECU card programmingclio3_eps_reset.py, clio4_eps_reset.py — Clio 3/4 EPS resetcmd_macros.py — DDT2000 command macros (.cmd, uses cmd_macros_lib/)laguna2_uch_reset.py, laguna3_uch_reset.py — Laguna 2/3 UCHmegane2_uch_reset.py, megane3_uch_reset.py — Megane 2/3 UCHmegane3_ab_reset.py — Megane 3 air-bag resetmegane3_eps_reset.py — Megane 3 EPSrsat4_reset.py — RSAT4 system resetvin_crc.py — VIN CRC calculationzoe_waterpump_counter_reset.py — ZOE water-pump counting resetThe plugin architecture allows custom procedures for other ECUs and brands.
src/ddt4all/main.py — entry point (PyQt GUI + connection handling)src/ddt4all/version.py — version / codename / contributorssrc/ddt4all/options.py — configuration & device settings persistencesrc/ddt4all/file_manager.py — file and directory utilitiessrc/ddt4all/cli/ — command-line interface handlers (DoIP, parameters, USB device)core/elm/ — ELM327 / adapter communication (elm.py, device_manager.py,
port.py, constants.py)core/ecu/ — ECU database, files and scanning (ecu_database.py,
ecu_scanner.py, ecu_device.py, ecu_file.py, ecu_request.py,
ecu_ident.py, data_item.py, utils.py)core/doip/ — DoIP (Diagnostics over IP) protocol supportcore/parameters/helpers.py — parameter parsing / helperscore/usbdevice/ — USB CAN devices (obd_device.py, usb_can.py, constants.py)ui/ — main window, widgets, dialogsui/displaymod/ — display widgets / graphical elementsui/data_editor/ — ECU qualitative data editingui/sniffer/ — CAN sniffing with a QThread-based threadgenerated/ — compiled resources and .mo translation catalogsresources.qrc — Qt resource descriptorvehicles/ — vehicle-specific filesjson/ — JSON database folderlogs/ — runtime logs (see also the platform user-log directory)threading.Lock() in the ELM layer for safe serial operationsQTimer for periodic refresh and connection monitoringpip install -e ".[dev]"
pytest
Test suites are in tests/ (unit, integration, smoke). A GitHub Actions
workflow (python-app.yml) runs the test suite on multiple OSes.
setup_tools/inno-win-setup/
(wininstaller.iss, version.h, win32_deps/).setup_tools/mac-os/builddmg.sh (with main.spec,
entitlements.plist).setup_tools/).Prebuilt installers are published on the Releases page.
dialout group. On Windows, try running as administrator.FTDI, CH340 or CP210x).IP:PORT, same local network, firewall open.pywin32 and run
python -m pywin32_postinstall -install, ideally with admin rights.See the project Wiki (Android port, device notes) and the YouTube channel (CAN sniffing, AirBag DTC, Megane examples).
Logs/ file, [Bug] in the title, OS + Python + adapter info.[Suggestion] in the title.locales/.This project is free software under the GPL-3.0-or-later license. DDT4ALL is an independent, unofficial, educational tool and is not affiliated with any vehicle/software brand. It is provided for study, testing and research only; it is not a replacement for factory/bench diagnostic tools. Use on a real vehicle is at your own risk — see the warnings at the top of this file.
Happy CAN studying! 🚗🔧
514 followers · starred Mar 2024
138 followers · starred May 2017
1,030 followers · starred Aug 2025
839 followers · starred Jun 2026