Manuals Performance, Economy and Tuning Simplified. EFI Analytics bringing the superior Automotive Tuning Software to simplify EFI Mon, 14 Oct 2019 10:27:37 +0000 Joomla! 1.5 - Open Source Content Management en-gb Launching MegaLogViewer with a properties file. Similar to how you can pass a log file name in on startup to have MLV start and open a log, you can also enhance this using a .properties file that contains additional commands.

Instead of starting MLV with the normal command:
MLVStartupCommand [A_Log_File_Name]


MegaLogViewer.exe MyLogFile.mlg

Create a properties file and launch in this way:
MLVStartupCommand [Your_Properties_File_Name]

The content of the properties file supports these command:

# provide the full path to the log file you wish to open (Required):

# Optional parameter that will instruct MLV to continue loading a file in the case
# where it is actively logging. Default is false.

# Optional to instruct MLV to go to a specific tab or view
# accepted values include:
# scatterPlot
# histogram
# ignitionLogger

# Optional. Will start playback when the log is loaded when true. false is default
# If log is actively logging, the cursor will play from the most recent time
# Otherwise play from beginining


]]> (Phil Tobin) Manuals Mon, 04 Mar 2019 17:59:12 +0000
Supported inc file formats. Most calculations are linear and can be implemented using a basic mathematical expression in an ini file. However, in cases where the transformation is not easily fit to a basic mathematical expression, look up tables can be defined in an "inc" file.

A common example of this in TunerStudio is non-linear sensor outputs.


There are 2 primary formats of inc files.

In either format, Rows that start with #, ' or : are considered commented out.

Anything in a row after a semicolon is considered a comment.

Format 1

Format 2




Format 1:

This format contains rows made of of a key value and the lookup value separated by a tab. It should not be a space between the values, it should always be a tab.

It can contain any number of rows of data starting from the lowest key value to the highest. Any key values between will be interpolated from the lookup value. Finally the row should be ended with a line feed. Windows or Unix style linefeed/Carriage returns will work.


; My inc File

; Volts Pressure

0    [TAB] 0.0

0.5 [TAB] 10.6



4.5 [TAB] 120

5.0 [TAB]  160


Format 2:

A file that contains a row for each possible value with the data type for that entry. In a case where you have a 10bit ADC, the file would be expected to have 1024 entries, for an 8 bit ADC 255 entries are needed.

Valid Data types are: DB, DW and for TunerStudio, it does not matter which you use, they are treated the same. When using this format, spaces are commonly used instead of tabs, but tabs will work also.

In this case the lookup value is generally an ADC value that equates to a row Index, this is why an entry for each ADC is required, there is no interpolation.

Example 8 bit ADC temperature look up.


; Known Steinhart-Hart coefficients: A=0.00149032  B=0.00022746  C=1.1639e-007
; ADC - Temp (dF)
DB    210T    ;   0 - sensor failure.
DB    475T    ;   1 -  435.4
DB    409T    ;   2 -  369.4
DB    375T    ;   3 -  334.8
DB    351T    ;   4 -  311.7





DB      0T    ; 249 - -40.6
DB      0T    ; 250 - -45.6
DB      0T    ; 251 - -51.5
DB      0T    ; 252 - -58.9
DB      0T    ; 253 - -68.9
DB      0T    ; 254 - -85.1
DB    210T    ; 255 - sensor failure.



To use these inc files with TunerStudio or Shadow Dash, they should be placed in the inc directory of your project,


Then use the table() function in the [OutputChannels] section of an ini file.

Table Function:

table( lookupValue, "")

lookupValue - will be the key value to be used in the lookup. It will typically be another OutputChannel representing the ADC value or Key value. - is the name of the file that is in the Project inc folder. It should be surrounded by  quotes "


If you are working in a file the lookupValue channel can be any OutputChannel defined in your custom.ini or in the main firmware ini file.


Example custom.ini this example will use the adc7 as found with MS2Extra to perform a lookup in your inc file:



; adc7 is defined in the main firmware ini for this esample

myTemperature = { table( adc7, "")  }, "°F"




]]> (Phil Tobin) Manuals Wed, 27 May 2015 21:17:31 +0000
Tuning with Scatterplots presentation MegaMeet 2013 Link to download presentation from MegaMeet 2013 in Georgia at DIY AutoTune:

Tuning With Scatter Plots

]]> (Phil Tobin) Manuals Mon, 09 Jun 2014 17:03:26 +0000
Math Parser Functions The following functions are available for use in TunerStudio and MegaLog Viewer:

Function Definition Usage
Smoothing* Smooths a field by averaging over the smoothingFactor number of records. smoothBasic( field, smoothingFactor)
sine Standard Sine of a value. sin(val)
cosine Standard Cosine of a value. cos(val)
arcsine Standard arcsine of a value. asin(val)
arccosine Standard arccosine of a value. acos(val)
tangent Standard Tangent of a value. tan(val)
arc tangent Standard Arc Tangent of a value. atan(val)
square root Standard Square Root, same as pow(val, 0.5) of a value. sqrt(val)
absolute Changes any negative values to the same magnitude in the positive direction. abs(val)
log Natural log of a value. log(val)
log base 10 Base 10 log of a value of a value. log10(val)
recipricol The recipricol of a value, or 1/val recip(val)
exponent Exponent of a value. pow(val, exponent)
round Rounds the value of a value to the nearest integer value. round(val)
floor Returns the largest (closest to positive infinity) integer value that is greater than or equal to the argument. floor(val)
ceiling Returns the smallest (closest to negative infinity) integer value that is greater than or equal to the argument. ceil(val)
exponent Returns Euler's number e raised to the power of a double value. exp(val)
isNaN Checks the output of an expression to result in a invalid number isNaN(val)
smoothFiltered Smooth a field using a matrix filter for less lag smoothFiltered(val)
accelHp Calculates HP based on Acceleration rate. accelHp(
velocity (MPH),
Aero Drag Calculates the Aerodynamic Drag aerodynamicDragHp(
velocity (m/s),
airDensity (kg/m^-3),
frontalArea (m^2)
Rolling Drag Calculates estimated rolling resistence rollingDragHp(
speed (MPH),
tirePressure (psi),
weight (lbs)
Last Value Returns the last record value for the specified field or expression lastValue(anyField)
Historical Value Returns the value for the specified field or expression from n records back historicalValue(anyField, n)
Min Returns the minimum value resulting from 1-n expressions or variables min(exp, exp, ...)
Max Returns the maximum value resulting from 1-n expressions or variables max(exp, exp, ...)
Max Value Returns the maximum historical value for the specified field or expression maxValue(anyField)
Min Value Returns the minimum historical value for the specified field or expression minValue(anyField)
table Perform a table lookup using an inc file table(expression, '')

Perform a table lookup on 1D or 2D arrays based on specified OutputChannel(s) and 1D array lookup references.

It will provide the interpolated value for the relative position of the lookup.

tableLookup([array.valueArrayName], [array.lookupArrayName], [lookupChannelName])


tableLookup([array.zParamName], [array.xParamName], [array.yParamName], [xChannelName], [yChannelName])

Accumulate Accumulate and sum the expression
This allows totalling distance, milage, fuel consumption, etc.
Persistent Accumulate Same as accumulate, except the accumulated value is persisted to the next  session. Allows for an Odometer. persistentAccumulate(expression)
arrayValue* Gets the interpolated value from a Constant array. The right of the decimal for index expression will be used for interpolation arrayValue(Constant, indexExpresssion)
if* Excel style if function. if(condition, then, else)
sum* Excel style sum function. sum(exp0, exp1, expN...)


*TunerStudio 3.0.60+ required.

]]> (Phil Tobin) Manuals Sat, 24 Aug 2013 15:03:45 +0000
Customizing your dashboards in Shadow Dash MS You can add your own customized dashboards to shadow dash, any TunerStudio Dashboard can be loaded by Shadow Dash and will look very much the same as in TunerStudio. For best results use TunerStudio 2.19 or higher.


Shadow Dash by defaults has 8 dashboards for any firmware it may be talking to, that is 4 landscape and 4 portrait dashboards. They are broken down in the following way:

Page 1 - This is the main home screen dash, it primarily contains gauges that are availble on the phone itself so that it will work and display information without being connected to a controller. Once you are connected to a controller. The .dash files for Page 1 dashboards are found in:

/Shadow Dash MS/home_landscape.dash


/Shadow Dash MS/home_portrait.dash


Page 2 and 3 are the primary dashboards to be customized. These dashboards are specific to the firmware family of you controller and stored in the project for that firmware family. The files will be found at:

/Shadow Dash MS/[YourFirmwareFamilyProject]/dashboard/dashboard_0_landscape.dash

/Shadow Dash MS/[YourFirmwareFamilyProject]/dashboard/dashboard_0_portrait.dash

/Shadow Dash MS/[YourFirmwareFamilyProject]/dashboard/dashboard_1_landscape.dash

/Shadow Dash MS/[YourFirmwareFamilyProject]/dashboard/dashboard_1_portrait.dash

where [YourFirmwareFamilyProject] will be one of the following based on your MegaSquirt:

  • MS1_BG - Base B&G 3.0 MS1 firmware
  • MS1_Extra - Any MS1_Extra firmware
  • MS2_BG - Any MSII B&G firmware
  • MS2_Extra - Any MS2Extra firmware
  • MS3 - Any MS3 Firmware

If you create a new Dashboard using TunerStudio, you can then replace the .dash files for any of the page 2 and page 3 dashboards. Next time you connect to a controller within that firmware family your new dasbords will be used.


Tips for making Shadow Dash Dashboards in TunerStudio:

Shape the TunerStudio dashboard as close to the same aspect ratio as your table will be! This is very important to keep it looking the same on your tablet or phone... So for portrait dashboards you will want to shape TunerStudio tall and thin with roughly a 9:16 aspect ratio while editing, so size and shape will remain similar to your tablet screen. When doint Landscape dashboards similar, but this is closer to the natural shapew of your monitor, but here you may want to be more precise. In the top right corner of TunerStudio the width and height are display to help determine your true aspect ratio.


The Page 4 dashboards are generated from the ini and will always represent the default dash.


Custom.ini files

Shadow Dash also supports custom.ini files in the same manor as TunerStudio. You can copy the same custom.ini file that you use in your TunerStudio Project to the dir:

/Shadow Dash MS/[YourFirmwareFamilyProject]/projectCfg/


This custome.ini will be picked up and loaded just as it is in TunerStudio, thus allowing you to load dashboards that are referencing your own custom OutputChannels. Any additional [Gauge] definitions you may have in the custom.ini will also be loaded and displayed with the Gauge long click menu.


]]> (Phil Tobin) Manuals Wed, 05 Dec 2012 21:26:06 +0000
Creating TunerStudio Plugins About TunerStudio Plugins

Examples updated on Apr 18 for 1.39 API.

menuFor anyone with your own ideas on widgets to help everyone out or just to play with your own controller, as of TunerStudio MS version 1.34 Plugins are now active.

You can create plugins to run with in TunerStudio to update settings in the MegaSquirt, read runtime values, display just about any UI widget in TunerStudio or run calculation based on any OutputChannel or Constant value. The code you write can present this in any way you wish or interact with another component to exchange or combine data with other sources. Once tab based plugins are available, you may want to create a plugin that has little to do directly with your fuel injection controller, perhaps simply an mp3 player built into TunerStudio.

For working with the MegaSquirt, there is no over head of figuring out how to talk to the MegaSquirt or messing with byte shifting or ini parsing, simple API's let you access the data or update setting values in a few lines of code.

For this initial release, only Dialog Plugins are supported by version 1.34, but there is planned support for widgets and Tab based Plugins after the next stable release in the next beta cycle.

Please do think about additional features to the plugin API that would help, they can be included in upcoming releases. I expect that as Plugins are implemented, many more help full API's will become more apparent.

Get started:

The Latest Beta TunerStudio MS, found Here

Try a plugin:

An Example plugin is provided with source code. It is a basic plugin, but demonstrates the use most of the API's. Here it is compiled and ready to install, simply download this an select Install / Update TunerStudio Plugin on the main menu:
Tools --> TunerStudio Pugins --> Add or Update a Plugin



After installing a new plugin, you will need to restart TunerStudio for the Plugin to appear on the menu. Once installed, they are hot swapable during development. You can continue to load updates to your plugin and TunerStudio will reload the new classes.


How to create your own plugin

For a jar file to be identified as a valid TunerStudio Plugin, it must meet 2 criteria:


  1. Contain an implementation of ApplicationPlugin
  2. An entry n the Jar Files Manifest to set the name of the class that implements ApplicationPlugin
Example Manifest entry:
ApplicationPlugin: com.yourpackage.YourClassImplementingApplicationPlugin

The source code for the Example TunerStudio Plugin can be downloaded from here:
or you can download the full NetBeans Project here:

The online JavaDoc for the TunerStudioPluginAPI can be found Here

You will need TunerStudioPluginAPI.jar on your class path when you develop the plugin.

The current TunerStudio Plugin API jar file and download javadoc file, both of which can also be found in your TunerStudio installation under


]]> (Phil Tobin) Manuals Tue, 03 Apr 2012 21:21:33 +0000
Load and Save Dialog Settings A new Feature in TunerStudio is the ability to save or load settings for just a single dialog.

When available, on all Tune Settings Dialogs there will be a File menu. By selecting the menu:

File --> Load Dialog Settings

You can then load either a .msqpart file or a full msq, but no settings other than what is on that dialog will be loaded, whether it is a full msq or not.

So this allows you to load pieces of either tunes files you have saved, or perhaps people have sent you. You can take pieces of various saved tunes to make the starting point right for you.


Save Dialog Tune, this is similar in that only settings on the dialog will be saved to an msqpart file. That is why the msqpart extension is used instead of the standard msq to be sure you can identify this file and not a fully saved msq.

]]> (Phil Tobin) Manuals Wed, 14 Mar 2012 21:29:49 +0000
Changing Gauge Limits and Adding Gauge Templates For registered users changing the limits of a gauge is very simple, First you must put the dash in Designer Mode:

  • Right Click on the dashboard
  • Select Designer Mode

Once in Designer Mode you can change any attribute of a gauge by right clicking on it and selecting from the Properties Menu. So for example to change the max RPM and red line of a Tachometer:

  • Right Click on the Tachometer
  • Select: Properties --> Gauge Limits & Values

A dialog will open with a minimum, maximum, low warning, high warning, high critical. For a tachometer, the high warning would equate to the "Yellow" line and the high critical would equate to the "Red" line. You can change these values to anything that suits your setup.


Gauge Templates and Lite! users - To adjust the values applied by "Gauge Templates" or for users of TunerStudio Lite! the ini files must be edited.

The specifics of editing your ini file is dependent on your firmware, the names and values of variables are not necessarily the same for one firmware as another. So you will need to look at your ini and deduce what row needs to be edited. To see your firmware ini you will need a text editor such as notepad, or my preference is TextPad. Open the file:


Do a search for


This defines the beginning of the section where all Gauge Template parameters are defined. By looking through this section you will likely find a row with the label values to reveal itself as the Tachometer. For example in an ini for an MS3 firmware this record is found:

tachometer        = rpm,           "Engine Speed",       "RPM",     0,  8000,    300,   600, 3000, 5000, 0, 0

The break down of each value is as such:

Define a gauge's characteristics here, then go to a specific layout
block (Tuning or FrontPage) and use the name you've defined here to
display that gauge in a particular position.

Name  = Case-sensitive, user-defined name for this gauge configuration.
Var   = Case-sensitive name of variable to be displayed, see the
OutputChannels block in this file for possible values.
Title = Title displayed at the top of the gauge.
Units = Units displayed below value on gauge.
Lo    = Lower scale limit of gauge.
Hi    = Upper scale limit of gauge.
LoD   = Lower limit at which danger color is used for gauge background.
LoW   = Lower limit at which warning color is used.
HiW   = Upper limit at which warning color is used.
HiD   = Upper limit at which danger color is used.
vd    = Decimal places in displayed value
ld    = Label decimal places for display of Lo and Hi, above.

So in the case of the tachometer, the break down of each component is:

Name               Var      Title                  Units      Lo     Hi     LoD    LoW   HiW   HiD vd ld
tachometer   = rpm,   "Engine Speed",   "RPM",     0,  8000,    300,   600, 3000, 5000, 0, 0

The name of this gauge is specific to the firmware ini and may not be called tachometer in your ini, however the title will be the txt that you see rendered on your dash, tus is likely an easy identifier.

For this tachometer gauge you can see that there is a hi and a lo defined, the hi is what you would edit to change the maximum for your tachometer Gauge Template, change HiDvalue to adjust your red line. Once edited and the project is reloaded, the new values will be part of the Gauge Template, by right clicking on any Gauge, selecting the Gauge Template for Engine Speed, the new values will be applied.


While you can edit directly in your mainController.ini file that is not recommended. Any firmware upgrade will over write that file and your changes will be lost. Instead it is recommended that you make you change in a new file called custom.ini in the same directory as mainController.ini. You can add only the edited lines and section headers, all changes in custom.ini will over-ride what was in the mainController.ini file.

So to solve for the above, create a new file in your text editor. In it put this text:


tachometer        = rpm,           "Engine Speed",       "RPM",     0,  8000,    300,   600, 3000, 6000, 0, 0

Now save that file to:


With this new custom.ini you will have effectively changed the red line of your tach to 6000 RPM's.

]]> (Phil Tobin) Manuals Sat, 13 Aug 2011 14:52:20 +0000
Using TunerStudio Dashboard Designer Custom Dashboards using Designer Mode

In addition to the prepackaged dashboard designs that com with TunerStudio, the Registered version of TunerStudio provides a WYSIWYG dashboard designer that allows you to create just about any custom dash you can dream up. For the most part this is relatively intuitive to use. However, as the design of you dash gets more complex, it can become tedious. I have outlined here several tips that should help you get thing looking just the way you want them with less time spent.

To use Designer Mode - You can enter designer mode on any editable gauge cluster in TunerStudio by simply "Right Clicking" anywhere on the dashboard, then selecting "Designer Mode"

Before covering what settings and gauge attributes you can change, there are a few tips to navigating and selecting the components that can greatly simplify the process.

There are many different Attributes you can set for every gauge, from colors to operating ranges. What attributes are available or how they behave will depend on the selected Gauge Style. So first you will need to determine the desired Gauge Style.

Guage Style Menu

Gauge Style - selects what painter will render the gauge. This will drive the core behavior of a gauge and its general look. There are many styles available from typical round analog gauges or basic read outs to some more fancy styles with new ones coming.

To select the Gauge Style, right click on a selected gauge or group of gauges, on the pop up menu select:
"Gauge Styles --> {your Choice}"


Quick Tips:

Multi-Selecting components - By Holding the CTRL key, and clicking on additional gauges and indicators. Each selected gauge or indicator will have a yellow X appear over it to show it is selected and provides a handle for resizing in the bottom right corner. The first selected Gauge will drive the the initial value of any properties you should go to change.

For Example, you have 1 gauge with a Font Color that you want to apply to another 2 gauges:

  • 1st Select the the gauge with the desired target color
  • Press the CTRL key and Click on the other 2 gauges you want to have the same color.
  • Right Click on any of the selected Gauges
  • On the popup Menu Select
    Properties --> Gauge Colors --> Font Color
  • A Color Dialog will open and the Color set to the Font Color of the first clicked.
  • By Clicking Apply in the Font Color Dialog, that Color will be applied to all selected Gauges.

Tab Key Selecting - If you have a number of stacked Gauges it can become difficult to select a specific gauge with the mouse. In this case you can select a specific gauge by pressing the tab key to cycle through them. The tab key will move through according to the Z Order as in the order the stack on top of each other.
If it becomes difficult to tell which gauge is selected, you can open the "Gauge Text" dialog by right clicking and selecting "Properties --> Gauge Text". This dialog will then show the text for what ever gauge is selected. As you cycle through them, the text will be updated to the values for the selected Gauge.







]]> (Phil Tobin) Manuals Tue, 25 May 2010 05:34:27 +0000
MegaLogViewer Manual See EFI Analytics site:

]]> (Phil Tobin) Manuals Sat, 21 Jun 2008 22:02:50 +0000