UltraLog

A high-performance, cross-platform ECU log viewer written in Rust.

Overview
UltraLog is an independent, open-source desktop application designed for automotive tuners, engineers, and enthusiasts who need to analyze ECU (Engine Control Unit) log data. Built with Rust for maximum performance, it handles large log files (millions of data points) smoothly using advanced downsampling algorithms while maintaining visual accuracy.
Purpose: UltraLog exists to provide data interoperability for the automotive tuning community. It reads standard export formats (CSV, binary logs) from various ECU systems, enabling users to analyze their own vehicle telemetry data in a unified, cross-platform tool without vendor lock-in.
Key Benefits:
- Fast - Handles massive log files without lag using LTTB downsampling
- Universal - Supports multiple ECU formats in one unified interface for cross-platform data analysis
- Cross-platform - Runs natively on Windows, macOS, and Linux
- Accessible - Colorblind-friendly palette and clear visualization
- Open - AGPL-3.0 licensed with documented format specifications for community benefit
Features
Data Visualization
- Multi-channel overlay - Plot up to 10 data channels simultaneously on a single chart
- Normalized display - All channels scaled 0-1 for easy comparison regardless of original units
- Min/Max legend - Peak values displayed for each channel at a glance
- Real-time cursor values - Legend shows live values at cursor position with proper units
- High-performance rendering - LTTB (Largest Triangle Three Buckets) algorithm reduces millions of points to 2,000 while preserving visual fidelity
- Stacked plot areas - Split the chart into up to 10 independent vertically-stacked panels, each with its own Y-axis and channel set — ideal for comparing channels with wildly different scales
Timeline and Playback
- Interactive timeline - Click anywhere on the chart or use the scrubber to navigate
- Playback controls - Play, pause, stop with adjustable speed (0.25x, 0.5x, 1x, 2x, 4x, 8x)
- Cursor tracking mode - Keep the cursor centered while scrubbing through data
- Manual time input - Type a specific time in seconds to jump directly to that position
Multi-File Support
- Tab-based interface - Open multiple log files with Chrome-style tabs
- Drag and drop - Simply drop files onto the window to load them
- Per-tab state - Each tab maintains its own channel selections and view settings
- Duplicate detection - Prevents loading the same file twice
Unit Conversion
Configurable units for 8 measurement categories:
- Temperature - Kelvin, Celsius, Fahrenheit
- Pressure - kPa, PSI, Bar
- Speed - km/h, mph
- Distance - km, miles
- Fuel Economy - L/100km, MPG
- Volume - Liters, Gallons
- Flow Rate - L/min, GPM
- Acceleration - m/s², g
- AFR/Lambda - Air-Fuel Ratio, Lambda
Export Options
- PNG Export - Save chart views as PNG images
- PDF Export - Generate PDF reports of your visualizations
Computed Channels
- Formula-based virtual channels - Create custom channels from mathematical expressions
- Time-shifting support - Reference past/future values with index offsets (
RPM[-1]) or time offsets (Boost@-0.5s)
- Reusable library - Save formulas as templates to use across different log files
- Full expression support - All standard math functions:
sin, cos, sqrt, abs, max, min, etc.
- Example formulas:
RPM * 0.5 - Simple arithmetic
"Manifold Pressure" - "Barometric Pressure" - Quoted channel names with spaces
RPM[-1] - RPM - RPM change from previous sample
max(AFR1, AFR2) - Maximum of two channels
sqrt(TPS * MAP) - Complex calculations
Additional Tools
- Scatter Plot - XY scatter visualization for channel correlation analysis
- Histogram - 2D heatmap visualization with configurable grid sizes (10x10 to 25x25) for analyzing channel distributions
- MCP Server - Built-in Model Context Protocol server lets Claude Desktop (or any MCP client) control UltraLog — load files, select channels, get stats, create computed channels, and run analysis via
http://localhost:52453/mcp
- Analysis Tools - Built-in signal processing and statistics:
- Filters - Moving average, Kalman filter, and other signal processing tools
- Statistics - Min/max, percentiles, standard deviation calculations
- AFR Analysis - Air-Fuel Ratio analysis with target comparison
- Derived Channels - Calculated channels from existing data
- Normalization Editor - Create custom field name mappings for cross-ECU comparison
- Field Normalization - Maps ECU-specific channel names to standard names (e.g., "Act_AFR" → "AFR")
Accessibility
- Colorblind mode - Wong's optimized color palette designed for deuteranopia, protanopia, and tritanopia
- Font scaling - Four font sizes (S, M, L, XL) for improved readability
- Custom font - Clear, readable Outfit typeface
- Toast notifications - Non-intrusive feedback for user actions
- Multilingual support - 15 languages including English, Spanish, German, French, Italian, Portuguese, Chinese, Japanese, Hindi, Arabic, Bengali, Russian, Urdu, and Indonesian
Supported ECU Formats
Haltech - Full Support
- File type: CSV exports from Haltech NSP software
- Features: 50+ channel types with automatic unit conversion
- Supported data: Pressure, temperature, RPM, throttle position, boost, ignition timing, fuel trim, and more
ECUMaster EMU Pro - Full Support
- File type: CSV exports (semicolon or tab-delimited) from EMU Pro software
- Features: Hierarchical channel paths, automatic unit inference
- Note: Native
.emuprolog binary format not supported; export to CSV from EMU Pro
RomRaider - Full Support
- File type: CSV exports from RomRaider ECU logging software
- Features: Automatic unit extraction from column headers, Subaru ECU parameter support
- Supported data: Engine speed, load, AFR corrections, timing, knock, temperatures, and all standard Subaru ECU parameters
Speeduino / rusEFI - Full Support
- File type: MegaLogViewer binary format (
.mlg)
- Features: Binary format parsing with field type detection
- Supported data: All standard Speeduino/rusEFI channels with timestamps
AiM - Full Support
- File type: XRK/DRK binary format (
.xrk, .drk)
- Features: Pure Rust binary parser for AiM motorsport data loggers
- Supported devices: MXP, MXG, MXL2, EVO5, MyChron5, and other AiM data acquisition systems
- Supported data: All logged channels with lap times, GPS data, and metadata
Link ECU - Full Support
- File type: Link log format (
.llg)
- Features: Binary format parser for Link G4/G4+/G4X ECUs
- Supported data: All ECU parameters including RPM, MAP, AFR, ignition timing, temperatures, and custom channels
Emerald ECU - Full Support
- File type: Binary format (
.lg1 data + .lg2 channel definitions)
- Features: Native binary format parser for Emerald K6/M3D ECUs
- Supported devices: Emerald K6, M3D, and compatible ECU models
- Supported data: TPS, Air Temp, MAP, Lambda, Oil/Fuel Pressure, Oil/Fuel Temp, Exhaust Temp, Boost Target/Duty, RPM, Coolant Temp, Battery Voltage, Ignition Advance, Injector Pulse Width, and more
- Note: Both
.lg1 (data) and .lg2 (channel definitions) files must be in the same directory
MegaSquirt / Honda Tuning Studio - Full Support
- File type: CSV datalogs exported from TunerStudio
- Features: Automatic channel and unit extraction, boolean value parsing (MIL lamp ON/OFF), anomalous first-row timestamp handling
- Supported devices: MegaSquirt MS1, MS2, MS3, MS3Pro, Honda Tuning Studio, and any TunerStudio-compatible ECU
- Supported data: RPM, MAP, TPS, injector duration/duty, ignition timing, ECT, IAT, AFR, battery voltage, boost, VSS, gear, and all logged channels
BlueDriver OBD-II - Full Support
- File type: CSV exports from BlueDriver Bluetooth OBD-II scanner app
- Features: Automatic channel and unit detection from BlueDriver live data exports
- Supported data: All OBD-II PIDs logged by BlueDriver including RPM, speed, coolant temp, MAF, fuel trims, O2 sensors, and more
Woolich Racing Tuned - Full Support
- File type: CSV exports from Woolich Racing Tuned (WRT) flash-tuning software
- Features:
HH:MM:SS.mmm timestamp normalization, boolean channel parsing (Clutch In True/False), unit inference, trailing-comma handling
- Supported devices: Yamaha, Kawasaki, Suzuki, Honda, and BMW sportbike ECUs flashed/logged via the WRT datalogger
- Supported data: RPM, TPS, IAP (intake air pressure), AFR, Gear, Clutch In, Coolant Temp, IAT, and all logged channels
Coming Soon
Installation
Pre-built Binaries
Download the latest release for your platform from the Releases page:
| Platform |
Download |
Notes |
| Windows x64 |
ultralog-windows.zip |
Windows 10/11 |
| macOS Intel |
ultralog-macos-intel.tar.gz |
macOS 10.15+ |
| macOS Apple Silicon |
ultralog-macos-arm64.tar.gz |
M1/M2/M3/M4 Macs |
| Linux x64 |
ultralog-linux.tar.gz |
Most distributions |
Windows:
1. Download and extract ultralog-windows.zip
2. Run ultralog-windows.exe
3. You may see a SmartScreen warning on first run - click "More info" → "Run anyway"
macOS:
1. Download the appropriate .tar.gz for your Mac
2. Extract: tar -xzf ultralog-macos-*.tar.gz
3. On first run, right-click the file and select "Open" to bypass Gatekeeper
4. Or remove quarantine attribute: xattr -d com.apple.quarantine ultralog-macos-*
Linux:
1. Download and extract: tar -xzf ultralog-linux.tar.gz
2. Run: ./ultralog-linux
Building from Source
Prerequisites:
- Rust (latest stable version)
- Platform-specific build tools (see below)
Linux Dependencies (Ubuntu/Debian):
sudo apt-get update
sudo apt-get install -y \
build-essential \
libxcb-render0-dev \
libxcb-shape0-dev \
libxcb-xfixes0-dev \
libxkbcommon-dev \
libssl-dev \
libgtk-3-dev \
libglib2.0-dev \
libatk1.0-dev \
libcairo2-dev \
libpango1.0-dev \
libgdk-pixbuf2.0-dev
macOS Dependencies:
xcode-select --install
Windows Dependencies:
- Install Visual Studio Build Tools
- Select "Desktop development with C++" workload
Build Steps:
# Clone the repository
git clone https://github.com/ClassicMiniDIY/UltraLog.git
cd UltraLog
# Build release version (optimized)
cargo build --release
# The binary will be at:
# - Windows: target/release/ultralog.exe
# - macOS/Linux: target/release/ultralog
Quick Start Guide
-
Launch UltraLog - Double-click the application or run from terminal
-
Load a log file - Either:
- Click the "Select a file" button in the left sidebar
-
Drag and drop a log file onto the window
-
Select channels - Click channel names in the right panel to add them to the chart (up to 10)
-
Navigate the data -
- Click anywhere on the chart to move the cursor
- Use the timeline scrubber at the bottom
-
Use playback controls to animate through the data
-
Customize your view -
- Change units via the Units menu
- Enable Cursor Tracking to keep the cursor centered
- Enable Colorblind Mode for accessible colors
User Guide
Interface Overview
UltraLog v2.0 features a VS Code-style interface with an activity bar on the far left:
Activity Bar Panels:
- Files (folder icon) - File list, drop zone, loaded files management
- Channels (list icon) - Channel selection, search, selected channel cards
- Tools (wrench icon) - Access to Scatter Plot, Histogram, and Analysis Tools
- Settings (gear icon) - All application settings in one place (units, display options, accessibility)
Loading Log Files
Supported file extensions: .csv, .log, .txt, .mlg, .xrk, .drk, .llg, .lg1/.lg2
UltraLog automatically detects the ECU format based on file contents:
- Haltech: Identified by %DataLog% header
- ECUMaster: Identified by semicolon/tab-delimited CSV with TIME column
- RomRaider: Identified by comma-delimited CSV starting with Time column
- Speeduino/rusEFI: Identified by MLVLG binary header
- AiM: Identified by <hCNF tag in XRK/DRK files
- Link ECU: Identified by lf3 magic bytes in LLG files
- Emerald: Identified by .lg1 and .lg2 file pair
- Woolich Racing Tuned: Identified by comma-delimited CSV starting with a Log Time column of HH:MM:SS.mmm timestamps
Loading multiple files:
- Each file opens in its own tab
- Switch between tabs by clicking them
- Close tabs with the × button
- The same file cannot be loaded twice
Visualizing Data
Selecting channels:
1. Use the search box to filter channels by name
2. Click a channel name to add it to the chart (turns blue when selected)
3. Click again to remove it from the chart
4. Up to 10 channels can be displayed simultaneously
**Understanding the chart: