Standalone VW ECU data logger with wxPython GUI and J2534 support.
- Modes: 22, 3E, HSL
- Interface: J2534 (OpenPort 2.0), SocketCAN, USB-ISOTP
- CSV logging with trigger conditions
- Live gauge display with color marking
- TCP stream on port 65432 for logger_viewer.html
pip install -r requirements.txt
On Windows, Python and the selected J2534 DLL must have the same architecture. For example, the 32-bit Scanmatik driver used by VW_Flash requires 32-bit Python. The device list only shows drivers compatible with the running logger.
The logger uses the same udsoncan==1.15.0 version pinned by upstream
VW_Flash. Use Python 3.10 or newer when installing the current requirements.
For a 32-bit J2534 driver, install and launch the matching runtime explicitly:
py -3.14-32 -m pip install -r requirements.txt
py -3.14-32 logger_gui.py
With the legacy Windows Python Launcher, download and run the traditional "Windows installer (32-bit)" from python.org before using those commands.
python logger_gui.py
You can also run run.bat. The logger remembers the selected adapter and, on
first run, reuses VW_Flash GUI's last J2534 selection when its config is found.
logger_gui.py— wxPython GUIlogger_core.py— ECU communication and logging logic- The selected log folder's
log_config.yaml— FPS, trigger, HP/TQ calculation config - Relative
param_filepaths in that YAML are loaded from the selected folder (for example,csv/parameters_3e.csv)
Logging is controlled manually with Start Log and Stop Log. Connecting
only polls the ECU. Each Start creates a new timestamped CSV; Stop flushes and
closes that file. Log Trigger is retained for configuration compatibility but
does not automatically start logging in the standalone GUI.
The GUI also lets you select the parameter-definition CSV independently from
the output directory. Both selections and the logger mode are remembered. The
bundled logs/log_config.yaml continues to provide FPS and HP/TQ settings.
Gauges can be reordered directly: hold the left mouse button on a gauge, drag it across another gauge, and release. The order is saved automatically. Right-click a gauge to choose its color from the styled gauge menu; the color is also saved automatically. Windows builds bundle the architecture-matched Microsoft Edge WebView2 loader so source and compiled versions use the same modern renderer. If WebView2 is unavailable, the GUI falls back to IE11 mode and a native color menu.
Tick DSG (TCU) to log the transmission controller alongside the engine.
The TCU is addressed on CAN 0x7E1 (request) / 0x7E9 (response) and is always
read with UDS Mode 22, regardless of the engine mode. The logger opens the
extended diagnostic session (10 03) automatically at the start of a run. DSG
parameters come from their own CSV — logs/csv/parameters_dsg_22.csv by
default, selectable next to the checkbox — and rows with Enabled set to
FALSE are skipped. The TCU is polled once every divider engine cycles
(see the DSG: section of log_config.yaml); on the cycles in between, the
last known values are carried forward, so every CSV row keeps the same width
with the DSG columns to the right of the engine columns. If the TCU stops
responding, DSG polling is disabled and engine logging continues.
If every multi-byte DSG value looks byte-swapped — for example clutch pressure
reading about 12.8 bar at idle instead of about 0.05 — set little_endian: false
in the DSG: section of log_config.yaml. The default (true) is correct for
the DQ250.
If you like this project and would like to support its development, you can make a donation through PayPal to lofr12@gmail.com. Thank you for your support!