Tuesday, May 3, 2022

Protocol configuration

  • you can use the advanced protocol configuration, available in the app settings → Car → ECU → Advanced (Protocol configuration) to create custom parameters by inputting sensor calibration data (tuned ECU with aftermarket sensors) or explore the communication protocol on the ECU (stock OEM ECU) and discover unknown parameters

  • Create custom parameters

    If you're using aftermarket sensors such as high pressure MAP sensors, wideband oxygen sensors, etc. you can create a custom parameter by inputting calibration data for a particular sensor. Use these examples as a reference as the exact same configuration workflow is applicable to any other sensor type and protocol:

    Example 1: AFR (Air To Fuel Ratio) of NTK L1H1 wideband oxygen sensor
    1. Click memory address labeled "Voltage - Oxygen sensor" (HTS - eCtune → 0x02  {or 0x18 if you're using ELD as input for the oxygen sensor}; HOBD → 0x15) and in the address overview dialog click the plus button.
    2. Input Parameter name for identification (e.g.: NTK L1H1 AFR)
    3. Bind - (see binding explanation)
    4. Override - default, override not applicable for oxygen sensor voltage (see override explanation)
    5. Interpret as - select "user" for inputting custom calibration data
    6. Unit symbol - AFR air fuel ratio is dimensionless number, you can leave it empty
    7. Decimal Places - set to 3
    8. Base size - set to 1 byte (see base size explanation)
    9. Base type - set to "voltage based 0 - 5 V" (see base type explanation)
    10. Input the calibration data by adding as many conversion table rows ([X, Y] nodes) as necessary. Add a new row with the plus button at the bottom, remove a row by clicking the vertical 3 dots on the left side of each row
      A/F ratioVoltage(volts)
      10.0156250
      10.0156250.780
      10.28906250.936
      10.718751.092
      11.1093751.248
      11.4218751.404
      11.81251.560
      12.2031251.716
      12.593751.872
      13.10156252.028
      13.49218752.184
      14.11718752.340
      14.7031252.496
      15.718752.652
      17.00781252.808
      18.6093752.964
      18.96093753.120
      18.96093754.992
    11. Click the button "Create" to create a new parameter. Created custom parameters are available for selection in the main layout (gauges) as well as in the datalogging layout, under the filter label "User".
    NOTICE: The calibration data in this example has been sourced via Google. Please use the manufacturers spec sheet data or Google to source the calibration data for your application as we won't be able to provide it for you. Thank you for your understanding.


    Example 2: 4 Bar MAP sensor (hypothetical)
    1. Click memory address labeled "Manifold Absolute Pressure" (0x04  HTS - eCtune, 0x12  HOBD)  and in the address overview dialog click the plus button.
    2. Input Parameter name for identification (e.g.: MAP 4Bar)
    3. Bind - (see binding explanation)
    4. Override - set to Manifold Absolute Pressure (MAP) (see override explanation)
    5. Interpret as - select "user" for inputting custom calibration data
    6. Unit symbol - automatically filled out with app native units (see override explanation)
    7. Decimal Places - set to 0
    8. Base size - set to 1 byte (see base size explanation)
    9. Base type - set to "voltage based 0 - 5 V" (see base type explanation)
    10. Input the calibration data. In our hypothetical example the sensor has linear response, requiring only two [X, Y] nodes. 
      mBARVoltage(volts)
      00
      40005
    11. Click the button "Create" to create a new parameter. Created custom parameters are available for selection in the main layout (gauges) as well as in the datalogging layout, under the filter label "User".

    Example 3: MAP sensor values as vacuum (relative inHg / mBar)
    1. Click memory address labeled "Manifold Absolute Pressure" (0x04  HTS - eCtune, 0x12  HOBD)  and in the address overview dialog click the plus button.
    2. Input Parameter name for identification (e.g.: MAP vacuum)
    3. Bind - (see binding explanation)
    4. Override - default
    5. Interpret as - select "user" for inputting custom coonversion data
    6. Unit symbol - inHg or mBar
    7. Decimal Places - set to 2 (for inHg) or 0 (for mBar)
    8. Base size - 1 byte
    9. Base type - default
    10. Input conversion data for inHg or mBar. 
      byte value (X)inHg (Y)
      032.13
      255-24.34
      byte value (X)mBar (Y)
      01087.5
      255-825
    11. Click the button "Create" to create a new parameter. Created custom parameters are available for selection in the main layout (gauges) as well as in the datalogging layout, under the filter label "User".

    General protocol exploration

    1. Select a memory address that you want to explore (Honda OBD: 0x00 to 0xFF, HTS - eCtune: 0x00 to 0x32), the address is appended to the parameter name in format "@0x__")
    2. Create a parameter:
      • parameter name - for identification purposes
      • bind - use default if you're using only one car profile, otherwise if you're using multiple vehicles with the same Android device, you can bind your definition to a particular profile so that it would be active only when the corresponding profile is active
      • override - you can override the default definition provided by the app. This is useful in situations when the parameter values are used as input for calculating other parameters. (e.g.: MAP manifold absolute pressure parameter values are used for calculating Load, Boost, Fuel flow, etc.), thus by overring the default definition, the provided new custom definition will be used for internal app calculations. If using the override feature the app will automatically restrict the "interpret as" selection items to "user" only, and set the unit symbol to app native units. You have to input the calibration data in app native units (use Google units converter) so that the internal converters would apply correct conversion to user preferred units of measurement (configurable in app settings → User Interface → Units of measurement)
      • interpret as:
        • Default - no interpretation, the value is displayed as is (raw byte value)
        • User - define a user interpretation via a conversion table / calibration data
          • Unit symbol - unit of measurement symbol
          • Decimal Places - formatting accuracy, 0 to 3 decimal places
          • Base size - how many bytes are used for the value. Most values are 8 bit (1 byte), however some values (e.g.: "Injection Duration", "Engine Revs") use higher precision 16 bit (2 bytes), as denoted by the same label occupying two neighboring memory addresses in the overview table.
          • Base type - i.e. calibration data input method, usually voltage based 0 - 5 V, applicable in most situations. The default is simply raw value input (1 byte base: 0 to 255, 2 bytes base: 0 to 65535)
        • Binary State - choose one of the bit masks; for two state parameters, such as switches, discrete states, etc., masked value is displayed in binary range, 0 to 1 e.g. OFF/ON, masked parameters are denoted by an appendix in format "&0x__"
        • Predefined - choose one of the parameters from the list that will be used as a base for interpreting the raw value
    3. created user parameters are available for selection in main layout (gauges) as well as datalogging layout, under the filter with a label "User"
    4. use the datalogging tool to record and analyze the values returned by custom user parameters to see if they read any meaningful data

    Tips

  • you can export / import your configurations via the import/export icons available in the toolbar, you can also edit / duplicate / export / delete just a single configuration by bringing up the popup action toolbar for a particular configuration
  • adding, removing or updating a user parameter may cause all logged data to be cleared in the temporary datalog (HOBD protocol only, due to checksum mismatch)
  • you can adjust the parameter read frequency of user defined parameters. By default, the read priority is at level 3, to not slow down reading of other parameters too much (HOBD protocol only)
  • it's always better to start with default parameter definitions (interpret as: default) and duplicate the parameter to more memory addresses at once, in order to discover memory addresses that return changing values
  • once the memory addresses have been identified, apply more granular parameter definitions to get the desired readings
  • please keep in mind, if you discover an address that does return a changing value, and it does not correspond to any of the predefined parameters, there's currently no way to know what exactly this value means or how it should be interpreted, you may define a custom interpretation for it, basing on a service manual or other information source / educated guess. Please don't contact us asking about it as we definitely won't know what you're dealing with, otherwise it would have already been defined in the overview table of the protocol.

  • Example

  • the following video guide shows the general workflow for user parameter definition and datalogging