Repository navigation
Supported ECU Formats
UltraLog supports multiple ECU systems. This page details each format's capabilities and requirements.
| ECU System | Status | File Type | Export Required |
|---|---|---|---|
| Haltech | Full Support | .csv |
Yes (from NSP) |
| ECUMaster EMU Pro | Full Support | .csv |
Yes (from EMU Pro) |
| RomRaider | Full Support | .csv |
Yes (from RomRaider Logger) |
| Speeduino | Full Support | .mlg |
No (native format) |
| rusEFI | Full Support | .mlg |
No (native format) |
| AiM | Full Support |
.xrk, .drk
|
No (native format) |
| Link ECU | Full Support | .llg |
No (native format) |
| Emerald | Full Support |
.lg1, .lg2
|
No (native format) |
| MegaSquirt | Full Support | .csv |
Yes (from TunerStudio) |
| TunerStudio MSL | Full Support | .msl |
Yes (TunerStudio legacy ASCII, or RealDash) |
| Woolich Racing Tuned | Full Support | .csv |
Yes (from WRT software) |
| RaceChrono | Full Support |
.csv (v3) |
Yes (CSV v3 export) |
| MHD Tuning | Full Support | .csv |
Yes (from MHD Tuning app) |
| BlueDriver OBD-II | Full Support | .csv |
Yes (from BlueDriver app) |
| Motorsport Electronics | Full Support | .csv |
Yes (from ME Tuner software) |
| DynamicEFI | Full Support | .csv |
Yes (from EBL WhatsUp software) |
| Locomotive | Full Support | .csv |
Yes (from datalogger export) |
| AEM | Coming Soon | - | - |
| MaxxECU | Coming Soon | - | - |
| MoTeC | Coming Soon | - | - |
Full support for Haltech ECU log files exported from NSP (Nexus Software Platform).
- Type: CSV text file
-
Extension:
.csv - Source: Exported from Haltech NSP software
-
Identifier: File begins with
%DataLog%header
- Open your datalog in Haltech NSP
- Go to File → Export → CSV
- Select all channels you want to include
- Choose save location and filename
- Click Export
UltraLog supports 50+ Haltech channel types with automatic unit conversion:
Engine Parameters
- Engine Speed (RPM)
- Manifold Pressure (MAP)
- Throttle Position (TPS)
- Engine Load
Fuel System
- Air/Fuel Ratio (AFR)
- Lambda
- Fuel Pressure
- Injector Duty Cycle
- Fuel Trim (Short-term, Long-term)
Ignition System
- Ignition Timing
- Knock Levels
- Dwell Time
Temperatures
- Coolant Temperature
- Intake Air Temperature
- Oil Temperature
- Exhaust Gas Temperature (EGT)
Pressures
- Boost Pressure
- Oil Pressure
- Fuel Pressure
- Barometric Pressure
Vehicle Data
- Vehicle Speed
- Gear Position
- Battery Voltage
And many more...
Haltech logs store data in specific units based on the CAN protocol. UltraLog:
- Automatically detects the channel type
- Applies appropriate conversions
- Displays in your preferred units via Unit Preferences
Haltech logs include min/max metadata for each channel, which UltraLog uses for the legend display.
Full support for ECUMaster EMU Pro log files exported as CSV.
- Type: CSV text file (semicolon or tab-delimited)
-
Extension:
.csv - Source: Exported from EMU Pro software
-
Note: Native
.emuprologbinary format is NOT supported
- Open your log in EMU Pro software
- Go to File → Export → CSV
- Select channels to export
- Choose delimiter (semicolon or tab both work)
- Save the file
ECUMaster uses hierarchical channel paths:
engine/rpm
engine/map
engine/coolant_temp
fuel/lambda
fuel/injector_pw
ignition/timing
UltraLog parses these paths and can normalize them to standard names.
UltraLog infers units from channel naming patterns:
| Pattern | Inferred Unit |
|---|---|
*temp* |
°C |
*rpm* |
RPM |
*map*, *press*
|
kPa |
*lambda* |
Lambda |
*percent*, *duty*
|
% |
Engine
- RPM
- MAP
- TPS
- Load
Fuel
- Lambda
- AFR
- Injector Pulse Width
- Fuel Pressure
Ignition
- Timing
- Dwell
Temperatures
- Coolant
- Intake Air
- Oil
And more depending on your EMU Pro configuration
- Native
.emuprologbinary format is not currently supported - Always export to CSV from EMU Pro software
Full support for RomRaider ECU log files. RomRaider is an open-source tuning suite primarily used for Subaru ECUs, providing comprehensive logging capabilities for OEM and modified ECU parameters.
- Type: CSV text file (comma-delimited)
-
Extension:
.csv - Source: Exported from RomRaider Logger
-
Identifier: File begins with
Timecolumn header
- Open RomRaider Logger
- Start logging your parameters
- When complete, go to File → Save Log
- Choose CSV format and save location
- The file is ready to load in UltraLog
RomRaider logs use a straightforward CSV format:
Time (msec),Engine Speed (rpm),Engine Load (%),A/F Correction #1 (%)
0,850,15.2,1.5
20,855,15.4,1.6
40,860,15.3,1.5Key characteristics:
- First column is always timestamp in milliseconds
- Column headers include units in parentheses
- Comma-separated values
- Timestamps are converted to relative seconds automatically
UltraLog automatically extracts units from column headers:
| Header Example | Extracted Name | Extracted Unit |
|---|---|---|
Engine Speed (rpm) |
Engine Speed | rpm |
A/F Correction #1 (%) |
A/F Correction #1 | % |
Manifold Relative Pressure (psi) |
Manifold Relative Pressure | psi |
Coolant Temperature (C) |
Coolant Temperature | C |
For columns without units in parentheses, UltraLog infers units from common patterns.
Engine Parameters
- Engine Speed (RPM)
- Engine Load
- Manifold Absolute/Relative Pressure
- Throttle Position
- Mass Airflow
Fuel System
- A/F Correction #1 and #2
- A/F Learning #1 and #2
- A/F Sensor readings
- Fuel Injector timing
Ignition System
- Ignition Timing
- Knock Correction
- Fine Knock Learning
- Feedback Knock Correction
Temperatures
- Coolant Temperature
- Intake Air Temperature
Subaru-Specific
- IAM (Ignition Advance Multiplier)
- DAM (Dynamic Advance Multiplier)
- Fine Learning tables
- Various OEM diagnostic parameters
RomRaider logs time in milliseconds. UltraLog:
- Converts milliseconds to seconds for display
- Calculates relative time from the first record
- Supports precise cursor positioning and playback
Full support for Speeduino and rusEFI logs in MegaLogViewer (MLG) binary format.
- Type: Binary file
-
Extension:
.mlg - Source: Logged directly by Speeduino/rusEFI
-
Identifier: File begins with
MLVLGheader
Unlike Haltech and ECUMaster, Speeduino and rusEFI log directly to the MLG format. Simply load the .mlg file directly into UltraLog.
UltraLog supports all MLG field types:
| Type | Description |
|---|---|
| U08 | Unsigned 8-bit integer |
| S08 | Signed 8-bit integer |
| U16 | Unsigned 16-bit integer |
| S16 | Signed 16-bit integer |
| U32 | Unsigned 32-bit integer |
| S32 | Signed 32-bit integer |
| S64 | Signed 64-bit integer |
| F32 | 32-bit floating point |
Depends on your Speeduino/rusEFI configuration. Common channels include:
Engine
- RPM
- MAP
- TPS
- VE (Volumetric Efficiency)
Fuel
- AFR / Lambda
- Pulse Width
- Fuel Pressure
Ignition
- Advance
- Dwell
Temperatures
- Coolant
- IAT
Sensors
- O2 Sensor
- Battery Voltage
- Various analog inputs
MLG files include precise timestamps for each record, which UltraLog uses for:
- Time axis display
- Playback synchronization
- Cursor position tracking
UltraLog automatically detects the ECU format based on file contents. Binary formats are checked first:
-
AiM: Identifies
<hCNFtag in XRK/DRK files -
Speeduino/rusEFI: Identifies
MLVLGbinary header -
Link ECU: Identifies
lf3magic bytes in LLG files -
Emerald: Identifies
.lg1/.lg2file pair
Then text formats, each by its own fingerprint:
-
MHD Tuning: Identifies the leading
#metadata block (#Ecu CALID,#Ecu PRGID) or the tune-file header column -
RaceChrono: Identifies the "created using RaceChrono" banner plus the
Format,Nmetadata line - MegaSquirt: Identifies TunerStudio datalog markers in the header
-
TunerStudio MSL: Identifies a tab-delimited
Timeheader row followed by a units row naming a time unit (sec,s,ms) — that units row is what separates MSL from every other tab-delimitedTime-first export -
ECUMaster: Identifies semicolon/tab-delimited CSV with
TIMEcolumn - BlueDriver: Identifies BlueDriver's export header (UTF-16 files are decoded first)
-
Motorsport Electronics: Identifies a first column of exactly
Timewith ME Tuner channel markers — checked before RomRaider because ME Tuner logs seconds where RomRaider logs milliseconds -
RomRaider: Identifies comma-delimited CSV starting with a
Timecolumn (also the catch-all for generic OBD-II apps such as OBDLink; the time unit is read from the header) -
Locomotive: Identifies the
TimeStamp:/Customer:metadata header lines -
DynamicEFI: Identifies the EBL WhatsUp
RUNTIMEcolumn layout -
Woolich Racing Tuned: Identifies comma-delimited CSV starting with a
Log Timecolumn ofHH:MM:SS.mmmtimestamps -
Haltech: Looks for
%DataLog%header (also the final fallback in the chain)
You don't need to specify the format - just load the file.
Full support for AiM motorsport data acquisition systems. AiM devices are widely used in professional racing and track day applications.
- Type: XRK/DRK binary format
-
Extension:
.xrk,.drk - Source: Logged directly by AiM devices
-
Identifier: File begins with
<hCNFtag
AiM devices log directly to XRK/DRK format. Simply load the file directly into UltraLog.
UltraLog works with all AiM data loggers:
- MXP - Professional dash logger
- MXG - GPS lap timer with data acquisition
- MXL2 - Compact GPS lap timer
- EVO5 - Advanced dash display
- MyChron5 - Karting data acquisition
- And other AiM motorsport data loggers
UltraLog uses a pure Rust implementation to parse the XRK binary format:
- Automatically extracts all logged channels
- Parses metadata (vehicle, racer, track, championship, lap count)
- Handles GPS data and lap timing information
- Supports all AiM channel types
Depends on your AiM device configuration and sensors. Common channels include:
GPS and Lap Data
- GPS Speed
- GPS Position
- Lap Times
- Lap Number
- Split Times
Engine Data
- RPM
- Engine Temperature
- Oil Temperature
- Oil Pressure
Vehicle Dynamics
- Lateral G-Force
- Longitudinal G-Force
- Vertical G-Force
- Speed
Sensors
- Analog inputs
- Digital inputs
- CAN bus data (if configured)
- Lambda/AFR sensors
AiM files include rich metadata that UltraLog displays:
- Vehicle name
- Racer name
- Track/venue name
- Championship
- Session date and time
- Lap count
Full support for Link ECU log files from G4, G4+, and G4X ECUs. Link ECUs are popular in the performance and motorsport community.
- Type: Link log format (binary)
-
Extension:
.llg - Source: Logged directly by Link ECU via PCLink software
-
Identifier: File begins with
lf3magic bytes
Link ECUs log directly to LLG format via PCLink. Simply load the .llg file into UltraLog.
- Connect to your Link ECU with PCLink software
- Go to Logging tab
- Select channels to log
- Click Start Logging
- Drive/run the engine
- Click Stop Logging
- Save the
.llgfile
Link uses a proprietary binary format:
- Header with ECU model and software version
- Metadata section with log date/time
- Channel blocks with name, unit, and time-series data
- Data stored as f32 (value, time) pairs
- UTF-16 LE string encoding for metadata
Depends on your Link ECU model and configuration. Common channels include:
Engine Parameters
- Engine RPM
- Manifold Absolute Pressure (MAP)
- Throttle Position
- Engine Load
Fuel System
- Lambda (AFR)
- Fuel Pressure
- Injector Pulse Width
- Fuel Trim
Ignition System
- Ignition Timing
- Ignition Coil Dwell
- Knock levels
Temperatures
- Coolant Temperature
- Intake Air Temperature
- Oil Temperature
- Exhaust Gas Temperature (EGT)
Pressures
- Oil Pressure
- Fuel Pressure
- Barometric Pressure
Vehicle Sensors
- Vehicle Speed
- Gear Position
- Battery Voltage
Custom Channels
- Analog Voltage inputs
- Digital inputs
- CAN bus data (if configured)
Link log files include:
- ECU model name
- Log date and time
- Software version
- Data source information
Full support for Emerald ECU log files from K6, M3D, and compatible ECU models. Emerald ECUs are popular in the British motorsport and classic car communities.
- Type: Binary format (dual-file system)
-
Extensions:
.lg1(data) +.lg2(channel definitions) - Source: Logged directly by Emerald ECU via EM Soft
- Note: Both files must be in the same directory
Emerald ECUs log directly to LG1/LG2 format. Simply load either the .lg1 or .lg2 file into UltraLog - both files are automatically loaded together.
- Connect to your Emerald ECU with EM Soft
- Go to Logging section
- Select channels to log
- Click Start Logging
- Drive/run the engine
- Click Stop Logging
- Save the log files (both
.lg1and.lg2will be created)
Emerald uses a dual-file binary format:
-
.lg1file - Contains the actual time-series data values -
.lg2file - Contains the channel ID for each of the 8 logger slots and the logger unit settings - Data stored as binary values with timestamps
- Both files must be present in the same directory for UltraLog to load the log
The .lg2 file stores a channel ID for each of the 8 logger slots. UltraLog maps these IDs to channels:
| EM Soft label | UltraLog channel | Unit | Status |
|---|---|---|---|
| Engine Speed | RPM | RPM | Confirmed |
| Throttle Pos | TPS | % | Confirmed |
| AFR/Lambda | Lambda Sensor Voltage | V | Confirmed (see note) |
| MAP | MAP | kPa | Confirmed |
| Ign Adv | Ignition Advance | ° | Confirmed (see note) |
| Inj Duration | Inj Duration | % | Confirmed |
| BoostPWM | Boost PWM | % | Confirmed |
| Load site | Load Site | 0-15 | Confirmed |
| AirTemp | Air Temp | °C | Not yet confirmed |
| CoolantTemp | Coolant Temp | °C | Not yet confirmed |
Other channel IDs show as Channel N (ID x) with the raw value, or use a name that is not yet confirmed. If a channel shows the wrong name or value, open an issue and attach the .lg1/.lg2 pair and a screenshot of the same point in EM Soft.
Notes:
- Lambda Sensor Voltage is the K6's own lambda input in volts (0-1 V). If a wideband controller feeds that input, convert the voltage to AFR with a computed channel (see Computed Channels) that uses your controller's output curve.
- Ignition Advance uses an offset worked out from log data (5.5° at idle, 14-17° at full boost on a turbo engine). Compare it with EM Soft for your log before you use it for tuning.
-
MAP is stored in the pressure unit the EM Soft logger was set to. UltraLog reads that setting from the
.lg2file and shows kPa. Only the kPa and bar settings are supported; with any other setting MAP values are wrong. - If a log has two channels with the same name, the confirmed one keeps the plain name and the other gets its channel ID added, for example
Ignition Advance (ID 21).
-
Both files required: You must keep the
.lg1and.lg2files together in the same directory - Load either file: UltraLog can be pointed at either file - it will automatically find and load the companion file
-
File naming: The files must have matching base names (e.g.,
mylog.lg1andmylog.lg2)
- File type: CSV datalogs exported from TunerStudio
- Supported devices: MegaSquirt MS1, MS2, MS3, MS3-Pro, MSPNP, MSPNP2, Honda Tuning Studio
- Features: Automatic channel and unit extraction from column headers, boolean value parsing (MIL lamp ON/OFF), anomalous first-row timestamp handling, UTF-8 BOM support
- RPM, MAP, TPS, VSS, Gear
- Injector Duration & Duty Cycle
- Ignition Table & Final Timing
- Coolant Temperature (ECT), Intake Air Temperature (IAT)
- Air-Fuel Ratio, Battery Voltage
- Boost Pressure, Barometric Pressure
- Analog inputs (D14, MAP Voltage, ELD Voltage, TPS Voltage)
- MIL (Malfunction Indicator Lamp) status
- TunerStudio format: The log file must be exported from TunerStudio (starts with "Tune Datalog export")
- Channel variability: Available channels depend on your TunerStudio dashboard configuration
- Compatible software: TunerStudio MS, TunerStudio Lite, Honda Tuning Studio, MegaLogViewer
-
.mslfiles: Those use a different layout and are handled by the TunerStudio MSL parser below
-
File type: Tab-delimited legacy ASCII datalogs (
.msl) -
Where they come from: TunerStudio's Data Logging menu, and third-party dashes that write the same dialect — notably RealDash, which logs a Speeduino over Bluetooth straight to
.mslwith no cable and no conversion step - Supported devices: Speeduino, MegaSquirt, and any ECU logged through TunerStudio or RealDash
-
Features: Units read from the row beneath the header, optional firmware/capture-date preamble,
MARKlines skipped, blank and non-numeric fields carried forward from the last known value, clock columns converted to seconds since midnight, monotonic time enforced across concatenated sessions
Time SecL RPM MAP ... GPS Latitude GPS Longitude GPS Time
sec s RPM kPa ... lat lon time
0.0 202.0 965.0 33.0 ... -26.253315 -51.06884 21:51
Row 1 is the channel names, row 2 is the unit for each column, and everything after is data. UltraLog reads the time unit from that second row, so a log in milliseconds scales correctly instead of being read as seconds.
- RPM, MAP, TPS, MAT, CLT, Battery Voltage
- AFR and AFR2, EGO corrections
- Pulse Width, VE, Duty Cycle (per bank)
- Spark Advance, MAF, Boost (bar and psi), Acceleration
- Speed, and GPS Latitude / Longitude / Altitude / Speed / Date / Time
- Track Map works out of the box: GPS columns keep their exported names, so a logged session draws the track with lap detection and channel coloring
-
Non-numeric columns:
GPS Dateis text (18.8.2026) and has no numeric meaning, so it reads as the last known value.GPS Timeis converted to seconds since midnight and does plot - Blank fields: RealDash leaves GPS fields blank until it gets a fix. Those rows carry the previous value forward rather than dropping to zero mid-log
- Not the same as the MegaSquirt CSV: TunerStudio's comma-delimited CSV export is handled by the MegaSquirt parser above. Both are supported; UltraLog picks the right one automatically
- File type: CSV datalogs exported from Woolich Racing Tuned (WRT) flash-tuning software
- Supported devices: Yamaha, Kawasaki, Suzuki, Honda, and BMW sportbike ECUs flashed and logged through the WRT datalogger
-
Features:
HH:MM:SS.mmmtimestamp parsing normalized to relative seconds, boolean channel parsing (Clutch InTrue/False → 1/0), automatic unit inference, trailing-comma handling
Woolich logs are plain comma-delimited CSV with a Log Time column first and a trailing comma on every row:
Log Time,RPM,TPS,IAP,AFR,Gear,Clutch In,Coolant Temp,IAT,
00:00:00.040,0,0.00,100.00,0.0,0,False,24.0,25.0,
00:00:00.100,1224,12.50,59.00,13.2,0,True,92.0,26.0,
- Open your logged session in the Woolich Racing Tuned software
- Use the Export to CSV option from the logging/data view
- Load the resulting
.csvfile directly into UltraLog
- RPM, TPS (throttle position), IAP (intake air pressure)
- AFR (air-fuel ratio)
- Gear, Clutch In (boolean)
- Coolant Temp, IAT (intake air temperature)
- Any additional channels selected in the WRT logging configuration
The Log Time column is wall-clock elapsed time formatted as HH:MM:SS.mmm. UltraLog converts it to seconds and normalizes the first sample to t = 0.
WRT exports do not embed units in the header, so UltraLog infers conventional units from each channel name (e.g. RPM → RPM, IAP → kPa, temps → °C, TPS → %, AFR → AFR). Boolean channels such as Clutch In are charted as 1 (True) / 0 (False).
- File type: CSV v3 session exports from the RaceChrono / RaceChrono Pro lap-timing app (Android/iOS)
- Supported devices: Any session recorded in RaceChrono — phone GPS or external GPS receivers, phone accelerometer/gyroscope/magnetometer, and OBD-II / CAN-Bus channels from a connected adapter
- Features: All sources merged on one time axis, duplicate channel names disambiguated by source, multi-fragment (paused and resumed) sessions, GPS Track Map support out of the box
RaceChrono CSV v3 files start with a banner and a metadata preamble, followed by a header row, a units row, and a sources row:
This file is created using RaceChrono Pro v10.1.3 ( http://racechrono.com/ ).
Format,3
Session title,"My Track Session"
Session type,Lap timing
...
timestamp,fragment_id,lap_number,elapsed_time,...,latitude,longitude,...,speed,...,rpm
unix time,,,s,...,deg,deg,...,m/s,...,rpm
,,,,...,100: gps,100: gps,...,calc,...,300: canbus
1785849363.002,0,,0.002,...,44.831825,11.224415,...,0.0,...,850.0
- Open the session in RaceChrono
- Tap the share/export button and choose CSV v3 as the export format
- Load the resulting
.csvfile directly into UltraLog
Only CSV v3 is supported. The other RaceChrono export formats (.vbo, .rcz, CSV v1/v2) will not load — UltraLog shows a clear error asking for a CSV v3 re-export if it sees an older CSV version.
- GPS: latitude, longitude, altitude, speed, bearing, accuracy, satellites, fix type
- Phone sensors: accelerometer (x/y/z), gyroscope, magnetometer, and derived lateral/longitudinal/combined acceleration and lean angle
- Lap timing: lap number, fragment id, distance traveled
- OBD-II / CAN: every channel the session logged (RPM, engine oil temp, throttle, and more)
RaceChrono exports the same column name once per source (for example speed from GPS and from the calculated pipeline). UltraLog disambiguates duplicates with the source label — speed (gps), speed (calc), device_update_rate (acc) — while unique names such as latitude, longitude, and rpm are kept exactly as exported.
The timestamp column is unix time. UltraLog re-bases it so the first record is t = 0. The elapsed_time column resets to zero at every fragment boundary (each time the recording was paused and resumed), so it is kept as a regular channel rather than used as the time axis.
Because latitude/longitude arrive in decimal degrees under their standard names, the GPS Track Map works immediately: lap detection, channel-colored track polyline, and cursor sync.
- File type: CSV datalogs exported from the MHD Tuning flashing/logging app
- Supported devices: BMW N54, N55, S55, B58, and other platforms flashed and logged with MHD Tuning
-
Features: Skips the leading
#metadata block, UTF-8 BOM handling, unit extraction from column headers, MHD's*-for-degree notation normalized to °
MHD logs are comma-delimited CSV with a leading block of #-prefixed metadata lines, then a header row whose first column is Time and whose channel names carry their unit in trailing parentheses:
#Encoding: UTF-8
#Ecu CALID:
#Ecu PRGID: 7616431
#VIN: REDACTED
Time,Boost (Bar),Coolant (*C),RPM (RPM),Gear (-),MHD 5.26 IJE0S ST2V7.bin
539.607,-0.479,89,1346,2,0
539.742,-0.466,89,1350,2,0
- Open the logged session in the MHD Tuning app
- Use the log export option to save the session as CSV
- Load the resulting
.csvfile directly into UltraLog
- Boost and boost target, wastegate duty cycle (WGDC)
- RPM, coolant and intake air temperature, engine load
- Per-cylinder ignition timing correction
- Lambda/AFR per bank, short-term fuel trim per bank
- Fuel rail pressure, gear, torque
- Any additional channel selected in the MHD logging configuration
MHD writes a leading block of #-prefixed lines before the header row (#Encoding, #Ecu CALID, #Ecu PRGID, #VIN). UltraLog reads these into log metadata, then skips past them to find the header row. This preamble is also why MHD detection runs against the raw file text ahead of the rest of the format-detection chain, rather than after the generic comment-stripping step every other CSV parser sees.
The final header column is normally the active tune file name (e.g. MHD 5.26 IJE0S ST2V7.bin) — UltraLog captures this in log metadata rather than treating it as a channel.
MHD substitutes * for the degree sign in channel headers: (*C) normalizes to °C, (*) to °, and (*CRK) to °CRK. A unit of - means the channel is unitless (e.g. Gear (-)).
Unparseable or blank fields are filled with the last successfully parsed value for that column (0.0 before the first valid sample), the same approach used by the Haltech and ECUMaster parsers. This keeps every row aligned with the channel list instead of shifting later columns when one field fails to parse.
- File type: CSV log exports from the BlueDriver Bluetooth OBD-II scan tool app
- Supported devices: Any vehicle with an OBD-II port, scanned through a BlueDriver Bluetooth adapter
- Features: Automatic channel/unit extraction from parenthesized header units, UTF-16 file handling
BlueDriver exports a UTF-16-encoded CSV (with a byte-order mark) containing a title line, a date line, then a header row and comma-separated data. Time is in decimal seconds:
BlueDriver Data Log
Jan 16, 2026
Time(s), Engine RPM (rpm), Voltage (V)
0.00, 850, 14.2
0.50, 900, 14.1
1.00, 950, 14.0
- Open the logged session in the BlueDriver app
- Use the app's export/share option to save the session as CSV
- Load the resulting
.csvfile directly into UltraLog
- Every OBD-II PID logged by the session: RPM, vehicle speed, coolant temperature, MAF
- Fuel trims (short-term/long-term)
- O2 sensor readings and voltages (e.g. "O2 Bank 1 - Sensor 2 - Oxygen Sensor Voltage")
- Any additional PID selected in the BlueDriver live-data view
BlueDriver writes its CSV as UTF-16 with a byte-order mark, unlike nearly every other supported format, which is UTF-8. UltraLog detects and decodes this automatically — no manual conversion needed before loading the file.
Empty or unparseable cells are recorded as NaN rather than filled from the previous value, so a PID the scan tool briefly failed to read shows as a genuine gap instead of a flat line.
- File type: CSV exports from the ME Tuner software used with Motorsport Electronics ECUs
- Supported devices: ME221, ME442, and other Motorsport Electronics ECUs — common on turbo/supercharged MX-5s, Ford Focus ST150, Honda S2000, Toyota Starlet, Mitsubishi Evo, and similar builds
- Features: Automatic unit inference from channel names, since ME Tuner does not embed units in the header
ME Tuner logs are comma-delimited CSV with Time (seconds since logging start) as the first column, followed by ME-specific channel names:
Time, Marker, RPM, Sync status, Lost sync count, Injector duty, MAP Raw, MAP, TPS Raw, TPS, ...
0.11,0,1104.00,2.00,0.00,0.64,5908.00,27.05,5870.00,0.00,...
0.22,0,1105.00,2.00,0.00,0.64,5924.00,27.09,5881.00,0.00,...
- Open the logged session in ME Tuner
- Use the software's log export option to save the session as CSV
- Load the resulting
.csvfile directly into UltraLog
- RPM, MAP, TPS (raw and calibrated), primary/secondary load
- Injector duty cycle, base and total VE, fuel trims (CLT/IAT/idle/knock/lambda)
- Ignition advance (base table, knock modifier, CLT/IAT add), dwell
- Coolant and intake air temperature, battery voltage
- Boost open/closed-loop duty and target, wideband AFR/lambda status
- Drive-by-wire (DBW) status and throttle plate position
- Any additional channel logged in the ME Tuner configuration
ME Tuner's header also starts with a bare Time column — the same fingerprint the RomRaider/generic-CSV parser looks for. RomRaider treats an un-annotated Time column as milliseconds, which would scale ME221 timestamps 1000x too small. UltraLog fingerprints ME Tuner files by requiring several ME221-specific column names (Sync status, Lost sync count, MAP Raw, WBO2 Curr. AFR, and others) alongside the bare Time header, and runs this check before the RomRaider chain so ME Tuner exports are never misread as millisecond timestamps.
- File type: CSV exports from DynamicEFI's EBL WhatsUp software, used with modified GM TBI (Throttle Body Injection) systems
- Supported devices: GM TBI-based engines logged through EBL WhatsUp
- Features: GM TBI channel abbreviations mapped to display units, Y/N flag and gear-letter parsing, sub-second timestamp interpolation
EBL WhatsUp exports comma-delimited CSV with a trailing comma on every row, a RUNTIME column in HH:MM:SS format, and GM TBI-specific channel abbreviations:
RUNTIME,RPM,MPH,MAP,PSI,BRO,VAC,VE%,TPS,CTS,IAT,I/C,O2,G/S,SA,...,BLM,BPC,IAC,AFR,WB,...
00:00:00, 0, 0, 98, 0, 98, 0, 72, 0, 72, 69, 72, 451, 0,10, 0,...
00:01:53, 775, 0, 35, 0, 98, 63, 38, 0,100, 69, 99, 743, 17,25, 0,...
EBL WhatsUp logs natively to a .dat raw serial stream; use the software's CSV export option to convert a logged session, then load the resulting .csv file directly into UltraLog.
- RPM, road speed (MPH), MAP/BRO (kPa), boost/vacuum (PSI/inHg)
- VE%, TPS, injector pulse width (base/actual/AE)
- Coolant and intake air temperature (°F), O2 sensor (mV), airflow (g/s)
- Spark advance, BLM/BPC fuel trims, IAC steps
- AFR/wideband, and Y/N flag or gear-letter channels (e.g. Park/Neutral)
- Any additional channel logged by EBL WhatsUp
EBL WhatsUp's RUNTIME column only has 1-second resolution, but the underlying data is sampled much faster. UltraLog distributes the multiple samples that share a RUNTIME value evenly across that second so the time axis stays smooth instead of stair-stepping. It also detects RUNTIME resets — the column wrapping back to 00:00:00 mid-session — and continues the time axis monotonically with a 1-second gap rather than jumping backwards.
GM TBI channel values include letter/flag codes alongside numbers: Y/N map to 1/0, P/N (Park/Neutral) maps to 0, and gear letters map to D = 4, R = -1, L = 1.
- File type: CSV exports from a locomotive datalogger
-
Supported devices: Locomotive control/monitoring systems that export a
TimeStamp:/Customer:/UnitNumber:metadata header followed by day-of-week-prefixed data rows - Features: Wall-clock timestamp parsing, metadata extraction (customer, unit number, software version), parallel row parsing for large logs
Locomotive logs start with five metadata lines, a blank line, then a comma-delimited header row, followed by data rows that begin with a day-of-week abbreviation:
TimeStamp: Sat Nov 15 19:00:03 2025
Customer: VLi
UnitNumber: 6194
SoftwarePartNumber: 16085
SoftwareVersion: 33.21.04
TimeStamp, CPMRst, Rc_tfnd, AB Mode, ASRstSt, ..., Eng RPM, ..., Batt V, ...
Sat Nov 15 19:00:03 2025, 1, 1, 1, 2, ..., 2907, ..., 64.0000000000, ...
Export the session log as CSV from your locomotive datalogger software, then load the resulting .csv file directly into UltraLog.
- Hundreds of locomotive control and diagnostic channels: engine RPM, battery voltage, traction motor and alternator status, brake and throttle position, cab signal states, and fault/status flags across the locomotive's control systems
- Exact channel set depends on the datalogger configuration and locomotive model
- Channels carry no unit metadata in the source file, so all values display unitless
Locomotive logs carry session metadata in their first five lines, which UltraLog reads into log metadata rather than treating as channels: TimeStamp, Customer, UnitNumber, SoftwarePartNumber, and SoftwareVersion.
Each data row starts with a full wall-clock timestamp (e.g. Sat Nov 15 19:00:03 2025), not an elapsed-time column. UltraLog parses this <weekday> <month> <day> <HH:MM:SS> <year> format, converts it to seconds, and normalizes the first sample to t = 0.
The following ECU formats are planned for future releases:
- AEM Infinity
- AEM EMS
- MaxxECU log files
- MoTeC M1 series
- MoTeC i2 exports
If your ECU system isn't supported:
- Open an issue on GitHub
- Include:
- ECU system name and model
- Software version used for logging/export
- A sample log file (if possible)
- Documentation links (if available)
UltraLog is an independent, open-source project created for interoperability purposes. All ECU system names and trademarks mentioned on this page are property of their respective owners.
UltraLog is not affiliated with, endorsed by, or sponsored by any of these companies or projects. Product names are used solely for identification and interoperability purposes.
For full legal information, see Legal.
- Getting-Started - Start using UltraLog
- User-Guide - Complete feature reference
- Unit-Conversion - Configure display units
Links