Repository navigation
v2.14.0
Highlights
UltraLog now opens TunerStudio .msl datalogs. That's the tab-delimited legacy ASCII format from TunerStudio's Data Logging menu — and, more to the point, what RealDash writes when it logs your ECU over Bluetooth. Drop the file straight into UltraLog: no export step, no conversion, no cable.
This one came from issue #86. A Speeduino user logs over Bluetooth with RealDash on a phone, which writes .msl by default — so every session meant either reconfiguring RealDash to emit CSV or converting files by hand before they could be opened. They shared two real sessions to build against, 3.6 MB and 10 MB, and both now load in full: 29 channels across 16,903 and 46,288 rows. Thank you for the files — real logs are what make format support solid.
New: TunerStudio MSL imports
An .msl is a header row, a units row, then tab-delimited data:
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
- Units come from the file. That second row carries the unit for every column, including the time base. A log recorded in milliseconds scales correctly instead of being read as seconds — the failure mode that once made a 34-minute log render as two seconds.
- The Track Map just works. GPS latitude and longitude arrive in decimal degrees under their exported names, so a logged session draws the circuit beside your chart with lap detection and channel coloring, same as any other GPS-bearing format.
- Gaps before GPS lock don't punch holes in your data. RealDash leaves GPS fields blank until it gets a fix, and writes
GPS Dateas text. Those fields carry the previous value forward rather than dropping to zero mid-log.GPS Timeis converted to seconds since midnight, so the clock plots as a real channel instead of reading zero. - Multi-session files stay in order. A
.mslcan concatenate sessions, which sends the time column backwards partway through. UltraLog shifts each restart forward so the timeline never doubles back — which is what keeps computed-channel time shifts (RPM[-1],Boost@-0.5s) correct on these files. - Faulted sensors stay readable. A logger that writes
NaNorinffor a dropped sensor no longer blanks out the chart's auto-scaling or the min/max legend for that channel. - Marks and preambles are handled. TunerStudio
MARKlines are skipped, and a firmware banner or capture-date preamble ahead of the header is fine.
Not to be confused with the MegaSquirt CSV. TunerStudio also exports a comma-delimited .csv, which UltraLog has read for a while via the MegaSquirt parser. Both are supported and UltraLog picks the right one automatically — you don't need to tell it which you have.
Under the hood
.msljoins the file-dialog filter, so the picker stops hiding your logs.- Format detection keys on the header/units row pair rather than the
Timecolumn alone. Several formats lead withTime; only MSL puts a time unit directly beneath it. A regression test now walks every bundled example log and asserts the new detector claims none of them — adding a parser to the chain is exactly when a detector can start stealing another format's files.
Documentation
- The Supported ECU Formats wiki gains a full TunerStudio MSL page covering the layout, GPS behavior, and how blank and non-numeric columns are handled. It also corrects a long-standing error: the format table listed
.mslunder MegaSquirt, which was never accurate — that parser only ever read the comma-delimited CSV. - README and ultralog.co list MSL in the format roster.
Installation
macOS
- Download the appropriate
.dmgfile for your Mac:- Intel Mac:
ultralog-macos-intel.dmg - Apple Silicon (M1/M2/M3/M4):
ultralog-macos-arm64.dmg
- Intel Mac:
- Open the DMG and drag UltraLog to your Applications folder
- Launch UltraLog from Applications. The app is signed and notarized by Apple, so it opens without a Gatekeeper warning.
Windows
- Download
ultralog-windows.zip - Extract the zip file
- Run
ultralog-windows.exe
Linux
- Download
ultralog-linux.tar.gz - Extract:
tar -xzf ultralog-linux.tar.gz - Run:
./ultralog-linux
What's Changed
🔄 Other Changes
- feat(parsers): add TunerStudio MSL (.msl) log support by @SomethingNew71 in #87
Full Changelog: v2.13.1...v2.14.0