Freematics Packed Data Format is a CSV like text based data format used for both data logging and data transmission. In the data stream, each entry is separated by a newline (\n) or a white space character. The format of a data entry is like following.

<Time>,<Data Type>,<Data Value>[/<Data Value 2>/<Data Value 3>]

Time has two conditions. If it begins with a # and followed by a numeric value, it indicates the absolute time in milliseconds since the device starts working/logging. For example, #5000 means the data is captured after the device has been working for 5 seconds. If Time does not begin with a #, the numeric value represents time in milliseconds elapsed since last data entry. For example, 10 indicates 10ms passed since last data is captured, while 0 means the data has the same timestamp as previous one (retrieved at the same time).

Data Type is represented as a hex number that identifies the type of data, which is among standard OBD-II PIDs, and our custom defined PIDs mainly for GPS, MEMS and some other sensor data. Following are some commonly used Mode 01 PIDs in OBD-II standard.

  • 0x104 – Engine load
  • 0x105 – Engine coolant temperature
  • 0x10a – Fuel pressure
  • 0x10b – Intake manifold absolute pressure
  • 0x10c – Engine RPM
  • 0x10d – Vehicle speed
  • 0x10e – Timing advance
  • 0x10f – Intake air temperature
  • 0x110 – MAF air flow rate
  • 0x111 – Throttle position
  • 0x11f – Run time since engine start
  • 0x121 – Distance traveled with malfunction indicator lamp
  • 0x12f – Fuel Level Input
  • 0x131 – Distance traveled since codes cleared
  • 0x133 – Barometric pressure
  • 0x142 – Control module voltage
  • 0x143 – Absolute load value
  • 0x15b – Hybrid battery pack remaining life
  • 0x15c – Engine oil temperature
  • 0x15e – Engine fuel rate

Custom defined PIDs (all in mode 0 which OBD-II does not use)

  • 0x11 – UTC Date (DDMMYY)
  • 0x10 – UTC Time (HHMMSSmm)
  • 0xA – Latitude
  • 0xB – Longitude
  • 0xC – Altitude (m)
  • 0xD – Speed (km/h)
  • 0xE – Course (degree)
  • 0xF – Satellite number
  • 0x20 – Accelerometer data (x/y/z)
  • 0x21- Gyroscope data (x/y/z)
  • 0x22 – Magitude field data (x/y/z)
  • 0x23 – Device temperature (unit is 0.1 Celsius degree)
  • 0x24 – Battery voltage (unit is 0.01V)
  • 0x30 – Trip distance (in meters)

Value is always integer value at the moment. Multiple values can be present and divided by comma for some data type (e.g. X/Y/Z axis of ACC, GYR, MAG values).

Following is some sample data.

    #5506,10D,55
    0,20,-913/18/528
    0,21,-9/-22/17
    111,104,0
    0,20,-922/6/548
    0,21,1/-27/17
    30,111,16
    0,20,-922/-9/513
    0,21,-4/-36/24
    29,10F,32
    0,20,-927/14/573
    0,21,-14/-11/16
    8,10,2020520
    0,11,200116
    0,A,-33730629
    0,B,151159065
    0,C,16200
    0,D,55
    0,F,5
    33,10C,0
    0,20,-890/23/556
    0,21,-7/5/20
    30,10D,55
    0,20,-926/25/592
    0,21,-16/8/5
    29,104,0
    0,20,-946/-39/536
    0,21,-5/-10/30
    30,111,16
    0,20,-861/33/469
    0,21,-9/2/21
    31,131,4260
    0,20,-909/-49/543
    0,21,-14/-3/10
    8,10,2020540
    0,A,-33730628
    0,B,151159031
    0,C,16240
    0,D,55
    0,F,5
    61,10C,0

If several data and value pairs are having the same timestamp, they are allowed be joined by commas.

    #5506,10D,55;20,-913/18/528;21,-9/-22/17
    111,104,0;20,-922/6/548;21,1/-27/17
    30,111,16;20,-922/-9/513;21,-4/-36/24
    29,10F,32;20,-927/14/573;21,-14/-11/16
    8,10,2020520;11,200116;A,-33730629;B,151159065;C,16200;D,55;F,5
    33,10C,0;20,-890/23/556;21,-7/5/20;10D,55;20,-926/25/592;21,-16/8/5
    29,104,0;20,-946/-39/536;21,-5/-10/30
    30,111,16;20,-861/33/469;21,-9/2/21
    31,131,4260;20,-909/-49/543;21,-14/-3/10
    8,10,2020540;A,-33730628;B,151159031;C,16240;D,55;F,5
    61,10C,0