ASAM e.V. DataPlugin for MDF4 21.1 Readme

April 2021

This file contains installation instructions and compatibility information for ASAM e.V. DataPlugin for MDF4 .

You can find more release information on


Supported Operating Systems

Application Software Support

Installation Instructions

Product Security and Critical Updates

Automating the Installation of NI Products

Unsupported Windows Operating Systems

Legal Information


The ASAM e.V. DataPlugin for MDF4 provides support for MDF4 files created from Bosch products, ETAS INCA, Vector CANape, and other Vector products. This DataPlugin supports files in the .mf4 file extension.

The Measure Data Format (MDF) Version 4 is well-established in the automotive industry for recording and exchanging, and for post-measurement analysis. MDF4 files are used by eg. INCA from ETAS, and by CANape and other products from Vector.

Note  There is a second DataPlugin which supports MDF files up to version 3.2.

Supported Features (Reading MDF4 Files)

  • Reads MDF4 files up to version 4.1.
  • Channels with data types #0-9 and #13-14
    [unsigned integer, signed integer (two’s complement), IEEE 754 floating-point format FLOAT (4 bytes), IEEE 754 floating-point format DOUBLE (8 bytes): with Big Endian (Motorola) or Little Endian (Intel) byte order, String (UTF-8, UTF16, ASCII), CANopen date, CANopen time]
  • Reads channels without values (length = 0).
  • Root property "hd_start_time", representing the start time of the measurement.
  • Ignores invalid block IDs.
  • Extracts XML information in the "description" property to create new properties, e.g. <CGcomment xmlns=""><TX>asdf</TX></CGcomment>
  • Supports channel-scaling based on formula expressions
  • Supports compressed channels
  • Supports long channels larger than int32.
  • Generates unique channel group names. (optional) The group name is: "Group_"+ index +"_"+ cg_tx_acq_name
    Note  This feature is protected by DataPlugin parameter. Set UniqueGroupName=true

Non-Supported Features (Reading MDF4 Files)

  • Reading channels with CCBlock data types #9 (text to value tabular) and #10 (text to text tabular)
  • Reading channels with data type "Byte Array" (CN #10), "MIME sample"(CN #11) and "MIME stream" (CN #12)

Supported Features (Writing MDF4 Files)

  • Writes MDF version 4.0 formatted files (MDF4 DataPlugin) or MDF version 4.1 formatted files (MDF4-Zip DataPlugin).
  • When writing MDF4 files, the first channel of a channel group is a time channel ("master" or "virtual master").
  • All channels in a group have the same channel length.
  • A new time channel is created in a group with one single channel
  • The read properties (see list) are written back to MDF4 except:
    • Root.SortStatus is ignored. If read back, it is always "sorted"
    • Group.sortedgroup is ignored. If read back, it is always "sorted".
    • Channel.cn_type "variable length" is changed to "fixed length", 1st channel is always "master" or "virtual master". If the other channels have these values, they are changed to "fixed length".
    • Writes back Assignment channels (enumeration) with Assignment properties.
  • The data is stored as Little Endian (Intel) or Big Endian (Motorola).
  • Data types are always stored as eR64. For other data types use the "nativedatatype" switch.
  • There is a MDF4-zip DataPlguin registerd on the system to save MDF4 compressed bulk data blocks (DZBlock). The defautl "MDF4" DataPlugin do not save compressed bulk data blocks.

Non-Supported Features (Writing MDF4 Files)

  • Text channels are ignored when writing MDF files.


Note  MDF4 files can contain bus log information. For more information, please refer to DIAdem Bus Log Converter.

TDM-Mapping of the MDF DataPlugins (Version 3 and Version 4)

TDM Property MDF3 File MDF4 File DataType Description
Root.description HDBlock.Comment HDBlock.hd_md_comment String HDBlock.Author -- String only MDF3
Root.datetime HDBlock.Date + Time HDBlock.hd_start_time Time
Root.hd_start_time HDBlock.Date + Time HDBlock.hd_start_time Time For writing, this will overwrite Root.datetime.
Root.Program HDBlock.Program -- String only MDF3
Root.Subject HDBlock.Subject -- String only MDF3
Root.Project HDBlock.Project -- String only MDF3
Root.Division HDBlock.Department -- String only MDF3
Root.Version IDBlock.Version -- String only MDF3
Root.SortStatus Whether all CGBlocks are sorted or not Whether all CGBlocks are sorted or not String Value: "sorted" or "unsorted".
Group.Name “Group_” + index CGBlock.cg_tx_acq_name
String CGBlock doesn’t have name.only MDF4 with switch UniqueGroupName=true
Group.Description CGBlock.Comment CGBlock.cg_md_comment String
Group.sortedgroup CGBlock.sorted or not CGBlock.sorted or not String Value: "sorted" or "unsorted".
Group.si_tx_name -- Group.si_tx_name String acquisition source name
Group.si_tx_path -- Group.si_tx_path String acquisition source path
Group.si_md_comment -- Group.si_md_comment String acquisition source comment
Channel.Name CNBlock.LongName CNBlock.cn_tx_name String MDF-DP: Depending on DP switch;
CNBlock.ShortName as channel nameGet the substring before "\\" or "::".
Channel.Description CNBlock.SignalDescription CNBlock.cn_md_comment String
Channel.Unit CCBlock.PhyUnit if exists CNBlock.cn_md_unit orCCBlock.cc_md_unit if exists String
Channel.LongName CNBlock.LongName -- String only MDF3
Channel.ShortName CNBlock.ShortName -- String only MDF3
Channel.OriginalDescription CNBlock.ShortName or
LongName depending on uri switch.
-- String only MDF3
Channel.Samples CGBlock.NumRecords -- Int only MDF3
Channel.Frequency 1.0/CNBlock.SampleRate + “ Hz” -- String only MDF3
Channel.cn_type -- CNBlock.cn_type String Value: "fixed length", "variable length", "master", "virtual master", "synchronization"
Channel.cn_sync_type -- CNBlock.cn_sync_type String Value: "None", "Time", "Angle", "Distance", "Index"
Channel.cn_flags_discrete -- CNBlock.cn_flags BIT6 String Discrete value flag, "true" or "false"
Channel.si_tx_name -- CNBlock.cn_si_source.si_tx_name String Channel source name
Channel.si_tx_path -- CNBlock.cn_si_source.si_tx_path String Channel source path
Channel.si_md_comment -- CNBlock.cn_si_source.si_md_comment String Channel source comment
-- Enum properties
for enum channels only
String with the assignment definition.

DataPlugin Parameter

Parameter to control DataPlugin functionality:  <SwitchLabel>value</SwitchLabel>

Please have a look into the help system of your application to find the usage of "DataPlugin Parameter" for loading and saving bulk data.

Time values in MDF4 files and TDM root properties for the parameters adjusttime on read or write access:

Note  Keywords are case sensitive.

SwitchLabel Value Description
enumproperty false Enable assignment channels. (Default = true)
Note  This is the same default setting like MDF3.
chunksize <int> Specify memory for a chunk in KB. (Default is determined automaticly by channel leght)
  Only used for reading. Only needed for small memory setup.
uselongnames false Read MDF LongName as channel name and additional root properties. (Default = true)
xmlpropertyextraction off Controls whether or not the "description" property contains extracted XML information. (Default = on) 
Note  In case of "off" the fh blocks will be read as root properties. "fh_md_comment_x" , "x"(starting from 1) indicating the order of the fh blocks. The writing is not supported. (Ver.:5859)
nativedatatype true Enable reading and writing native datatypes. (Default = false)
Note  This is the same default setting like MDF3.
  1. Read datatype to channel property "channel_data_type";
  2. Read offset/factor to channel property "cc_val_1"/"cc_val_2";
  3. Write channel values to datatype specified by "channel_data_type" or if the property doesn't exist, write native channel values;
  4. Unscale channel values with "cc_val_1"/"cc_val_2" if any when writing.
    "channel_data_type" has one of the below enum values.
    eByteDa = 1 /* tByteDa */
    eI16Da = 2/* tI16Da */
    eI32Da = 3 /* tI32Da */
    eI64Da = 4 /* tI64Da */
    eR32Da = 5 /* tR32Da */
    eR64Da = 6 /* tR64Da */
    eTimeDa = 7 /* tTimeDa */
    eStringDa = 8/* tStringDa */
    eU64Da = 11/* tU64Da (unsigned I64) */
    eU32Da = 12/* tU32Da (unsigned I32) */
    eU16Da = 13/* tU16Da (unsigned I16) */
    eI8Da = 14 /* tI8Da (signed Byte) */
Note  reading and writing MDF big integers I64/U64. In the current DIAdem or LV, they may have precision issue after converting.
Note  eTimeDa and eStringDa are not supported in writing.
ignorecnflags true Ignore cn_flags when reading channel values. (Default = false)
UniqueGroupName true If the switch is turned on (true), the group name will be "Group_"+ index +"_"+ CGBlock.cg_tx_acq_name, to make it more similar to the MDF3 plugin. In case of non unique group names the group name is: CGBlock.cg_tx_acq_name. In case of writing a mdf4 file the "Group_"+index part will be revomoved before writing to the mf4 file.
(Default = false)
WriteCompressedData true If the switch is turned on (true), the plugin creates MDF4.1 files because DZBlock is supported in 4.1 only. The default is MDF4.0 file without compressed data.
adjusttime yes | no If this parameter is set to true the hd_start_time value is not adjusted but loaded as is into DIAdem. (Default = yes) On write the datetime or hd_start_time property will also not be changed.
Note  All datetime properties stored in XML are stored in local time. There is no ajustment done.

HD Start Time Setting Details

Comparison of time values in MDF4 files and TDM root properties for the parameters adjusttime:

Read Table
SwitchLabel MDF4 File TDM Root Property
adjusttime hd_start_timehd_time_flags hd_tz_offset_minhd_dst_offset_min datetimehd_start_time hd_time_flagshd_tz_offset_min hd_dst_offset_min
yes2013-01-01T13:00:00.1230002013-01-01T13:00:00.1232013-01-01T13:00:00.1230 <not existing> <not existing>
yes2013-01-01T13:00:00.1231002013-01-01T13:00:00.1232013-01-01T13:00:00.1231 <not existing><not existing>
no2013-01-01T13:00:00.1230002013-01-01T13:00:00.1232013-01-01T13:00:00.1230 <not existing> <not existing>
no2013-01-01T13:00:00.1231002013-01-01T13:00:00.1232013-01-01T13:00:00.1231 <not existing><not existing>
Write Table
SwitchLabel TDM Root Property MDF4 File
adjusttime datetimehd_start_time hd_time_flagshd_tz_offset_min hd_dst_offset_min hd_start_time hd_time_flagshd_tz_offset_min hd_dst_offset_min
yes 2012-01-01T13:00:00.123 <not existing> <not existing> <not existing> <not existing> 2012-01-01T12:00:00.123 2 60 0
yes2012-06-01T13:00:00.123 <not existing><not existing><not existing> <not existing>2012-06-01T11:00:00.12326060
yes2013-01-01T13:00:00.123 <not existing><not existing><not existing>2013-01-01T13:00:00.1230-1-1
no2012-01-01T13:00:00.123 <not existing> <not existing> <not existing> <not existing>2012-01-01T13:00:00.1230-1-1
no2012-06-01T13:00:00.123 <not existing><not existing><not existing> <not existing>2012-06-01T13:00:00.1230-1-1
no2013-01-01T13:00:00.123 <not existing><not existing><not existing>2013-01-01T13:00:00.1230-1-1

Supported Operating Systems

  • Windows 10 64 Bit
  • Windows Server 2019
  • Windows Server 2016

Application Software Support

ASAM e.V. DataPlugin for MDF4 supports the application software that support DataPlugins, for example DIAdem, SystemLink and LabVIEW.

Installation Instructions

Installing a C++ DataPlugin

Download the ASAM e.V. DataPlugin for MDF4 installer from NI software includes NI Package Manager to handle the installation. Refer to the NI Package Manager Manual for more information about installing, removing, and upgrading NI software using NI Package Manager.

Product Security and Critical Updates

Visit to view and subscribe to receive security notifications about NI products. Visit for information about critical updates from NI.

Automating the Installation of NI Products

You can automate the installation of most NI products using command-line arguments to suppress some or all of the installer user interface and dialog boxes.

If the NI product you are installing uses Microsoft .NET 4.6.2, the .NET installer may run before any NI software installs and may require a reboot before the installation of NI software begins. To avoid a .NET reboot, install .NET 4.6.2 separately before you install NI software.

For more information about automating the installation of NI products, refer to Automating an Installer in the NI Package Manager manual.

Unsupported Windows Operating Systems

ASAM e.V. DataPlugin for MDF4 no longer supports Windows Vista/XP/7/8.x, Windows Server 2003/2008/2012, or any 32-bit Windows operating system. Versions of this product that ship after May 1, 2021, may not install or execute correctly on these operating systems. For detailed information about NI operating system support, visit

Legal Information


© 2012–2021 National Instruments Corporation. All rights reserved.

Under the copyright laws, this publication may not be reproduced or transmitted in any form, electronic or mechanical, including photocopying, recording, storing in an information retrieval system, or translating, in whole or in part, without the prior written consent of National Instruments Corporation.

NI respects the intellectual property of others, and we ask our users to do the same. NI software is protected by copyright and other intellectual property laws. Where NI software may be used to reproduce software or other materials belonging to others, you may use NI software only to reproduce materials that you may reproduce in accordance with the terms of any applicable license or other legal restriction.

End-User License Agreements and Third-Party Legal Notices

You can find end-user license agreements (EULAs) and third-party legal notices in the following locations after installation:

  • Notices are located in the <National Instruments>\_Legal Information and <National Instruments> directories.
  • EULAs are located in the <National Instruments>\Shared\MDF\Legal\license directory.
  • Review <National Instruments>\_Legal Information.txt for information on including legal information in installers built with NI products.

U.S. Government Restricted Rights

If you are an agency, department, or other entity of the United States Government ("Government"), the use, duplication, reproduction, release, modification, disclosure or transfer of the technical data included in this manual is governed by the Restricted Rights provisions under Federal Acquisition Regulation 52.227-14 for civilian agencies and Defense Federal Acquisition Regulation Supplement Section 252.227-7014 and 252.227-7015 for military agencies.

IVI Foundation Copyright Notice

Content from the IVI specifications reproduced with permission from the IVI Foundation.

The IVI Foundation and its member companies make no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The IVI Foundation and its member companies shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material.


Refer to the NI Trademarks and Logo Guidelines at for information on NI trademarks. Other product and company names mentioned herein are trademarks or trade names of their respective companies.


For patents covering the NI products/technology, refer to the appropriate location: Help»Patents in your software, the patents.txt file on your media, or the NI Patent Notice at