Vector provides a free command-line tool specifically for this task.
If you find command lines intimidating, the asammdf project also has a Graphical User Interface (GUI). This is the easiest way for a one-off convert blf to mf4 new task.
Step 1: Installation
Open a terminal (cmd/PowerShell) and type:
pip install asammdf[gui]
Step 2: Launch GUI
Type: asammdfgui
Step 3: Load BLF
Step 4: Configure Output
Step 5: Execute Click "Save." The tool will write the new MF4. You will see the channel count and bus events transfer.
| Problem | BLF Origin | MF4 Solution |
| :--- | :--- | :--- |
| Missing Signal Names | Only raw CAN IDs (0x123) logged. | Merge with DBC during conversion using mdf.merge_dbc(). |
| CAN FD Data | BLF handles variable DLC natively. | Ensure MF4 version is 4.10+ (older readers choke on CAN FD). |
| Event Discontinuity | Logging started/stopped mid-drive. | Use split_by_time() in MF4 to create continuous segments. |
| Tool | BLF size | MF4 size (compressed) | Time (min:sec) | RAM peak | |------|----------|----------------------|----------------|----------| | asammdf (Python) | 500 MB | 380 MB | 1:20 | 1.2 GB | | CANape (native) | 500 MB | 390 MB | 0:45 | 800 MB | | mdf4lib (C) | 500 MB | 370 MB | 0:28 | 450 MB | | PyViSim | 500 MB | 410 MB | 8:10 | 1.8 GB | convert blf to mf4 new
For files > 2 GB, use CANape or mdf4lib; asammdf may require chunked reading:
with MDF('large.blf') as mdf:
mdf.export_to_mdf4('large.mf4', chunk_size=1000000) # 1M records per chunk
In the world of automotive engineering, data logging is the backbone of development, validation, and diagnostics. Two formats dominate the landscape:
Why convert BLF to MF4?
Error: Timestamps appear as negative numbers or wrap around.
Cause: Old BLF files use 32-bit microsecond timestamps that overflow.
New fix: In asammdf, force 64-bit conversion: Vector provides a free command-line tool specifically for
mdf = MDF(input_path, sync_timestamps=True)
Before diving into the conversion process, it is essential to understand the fundamental differences between the two formats.
mdf4 convert my_log.blf --can-ids 0x100 0x200 0x300 --output filtered.mf4
4.4 Verify conversion
from asammdf import MDF
mdf = MDF('my_log.mf4')
print(mdf) # Lists all channels/groups
print(mdf.info) # Metadata
data = mdf.get('EngineSpeed') # Read a signal