NOTE: Please ensure you have one of these daughter boards inside your ECU before continuing. If you have a black microprocessor, then you have an MS1 and these manuals are NOT for MS1 see here for MS1-Extra Manuals
All of these instructions / diagrams are to be used at your own risk, like most things there is more than one way to do the same thing, what we have tried to do is to offer a method that we have tested or that others have tested for us. No warranty expressed or implied.
Use at your own risk.
This manual is to help people either move from
over to MS2-Extra or to simply run their MS2 on the MS2-Extra code.
Obviously you will need an MS2 Daughter Board to run this code.
Basic Required Hardware Mods -- Installing MS2-Extra Firmware and Software -- OEM Temperature Sensors
Base Configuration File (MSQ) --More Engine Settings -- Injector Characteristics -- Settings/Injector Control
WideBand Lambda Sensor Users -- EGO Sensor Type (EgoOption) -- AFR Tables
Start/Idle settings -- Priming Pulse -- Warmup Enrichment -- Cranking Pulse -- After Start Enrichment -- Idle Control -- Barometric correction
MAT Correction -- Over Run Fuel Cutoff -- Staged Injection
Table Switching Control
For Ignition Settings, etc, please
General Ignition Manual HERE
Basic required Hardware Mods for MS2-Extra
Obviously you will need an MS2 Daughter Board to run the MS2-Extra code.
If you already have a built MS1, (V2.2 or V3.0) then carefully remove the 68HC908 processor from the 40 pin DIP socket and fit the MS2 daughter board in its place. (To remove the 68HC908 processor it is recommended to slightly lift each end a little at a time until it is free.)
If you are building an ECU from scratch then you will find the older MS2 build manual tells you to install a wire for the ignition output (pad JS10 on a V3.0 and pin 17 on a V2.2 board), this is only required for MS2-Extra code if you are going to use EDIS. The standard wiring for MS2/Extra is to use the LED outputs for spark outputs A,B,C. However, JS10 may optionally be used for Spark A provided you do not need a second trigger (cam sensor) input. If you are going to use JS10 for the cam input then you will need to remove the jumper to IGBTIN and rewire your spark A on the LEDs as described here.
The MS2 daughterboard requires a 12V supply in order to run the Stepper Idle valve output or the programmable outputs IAC1 and IAC2.
The rest of the build is as standard for any other MS2. The ignition options will vary depending on your engine, etc, this will be covered later in the ignition hardware manual.
Note: This 12V Supply must NOT
be present if you ever want to go back to MS1, as it WILL blow the
MS1 microprocessor up!!!
Remove the wire if you ever fit the MS1 microprocessor back in again.
For an MS Version 3.0 board:
For an MS Version 2.2 board:
For an MS Version 3.57 board:
For all Versions of Megasquirt PCB's:
Installing MS2-Extra Firmware and Software
OEM Temperature Sensors
The MegaSquirt-II code is set up for the standard General Motors temperature sensors. If you are using other sensors, you can use the 'Calibrate Thermistor Tables' dialog under 'Tools'. You enter the bias resistor value and three temperature/resistance points, and the table is created and downloaded to MS2-Extra (or MicroSquirt Running MS2-Extra) for you.
Making a base configuration file (msq) to start you off
Note: It is highly recommended that you either use the default.msq file in the firmware zip or you can download the default settings from the MS2 once the MS2-Extra code has been installed and use that as a base to start from!! To download from the ECU simply run the tuning software and select File - Save As when connected
Always save a combination after you have changed things, and give it a descriptive name. That is, don't save every file as megasquirt.msq, you won't be able to recover if you corrupt a file. Instead, save files with names like msii_june2605.msq, or some other scheme that makes sense to you and lets you identify how recent a file is.
When editing the tables, be sure to 'Burn Table' when you are happy with it, or the changes you make will disappear when you shut off the power to MS2-Extra (or MicroSquirt Running MS2-Extra)
In general, change only those items you need to at first. If you are not sure what a parameter does, or whether it applies to you, leave it at the default value.
If you have already been running MS1-Extra then you can simply Import your VE and Spark tables into the MS2. Simply Export the tables from the original msq in Fuel VE Table - File - Table Export. This saves the table as a VEX file. Simply Import them the same way. Don't expect the engine to run without tuning it though, as the code will not generate exactly the same Pulse Width as MS1 did.
MS2-Extra has the option of a 16x16 VE table, in order to use your original 12x12 table or indeed an old 8x8 table simply Export the table (Inside Fuel VE Table go to File - Table Import and select the VEX file to be used. The table size will be adjusted and values interpolated.
To use the extra functions that the MS2-Extra code has set the Basic/Advanced User to Advanced in the Basic Setup tab. If your unsure of some of the features then it is best to start at one of the other options. These manuals will explain what all the Advanced features do.
Dual Table Use choose whether you want to control each bank of injector independently, or to run both injector banks off one set of VE/AFR tables.
Barometric Correction choose whether you want:
'None' - no barometric correction, baro correction based on the initial startup MAP reading ('Initial MAP Reading'), or
'Two Independent Sensors' for continuous baro correction (ONLY if you have installed a second MAP sensor.)
Enhanced Accel Enrichment X-Tau usage can be set to off, or accel/decel using this parameter.
Input Smoothing Lag Factors Lag factors force the variables
to change more slowly than the actual input value. Note that in all
cases, 100 is no lag effect at all, and smaller numbers slow the
input response speed. Use the settings from the above table if
your unsure what to enter to start with.
The lag factors are used as follows:
NewValue = PreviousValue + (NewValue - PreviousValue) * (LagFactor/100%)
In each case the PreviousValue is itself filtered.
For example, suppose your last MAP value was 70, the lag factor is 40 and the current MAP value read directly from the sensor is 90. Then MS2-Extra (or MicroSquirt Running MS2-Extra) will calculate:
NewValue = 70 + (90 - 70) * (40/100) = 70 + 20*0.4 = 78
If the MAP then remains at 90, then next value would be:
NewValue = 78 + (90 - 78) * (40/100) = 78 + 12*0.4 = 82.8
and so on...
This has the effect of slowing MS2-Extra (or MicroSquirt Running MS2-Extra)'s response to fluctuating input values, both smoothing them and reducing the effect of noise in the signals.
The following inputs can have lag factors applied to them:
MAP Averaging Lag Factor,
RPM Averaging Lag Factor,
TPS Averaging Lag Factor,
Lambda Averaging Lag Factor,
CLT/MAT/Batt Averaging Lag Factor,
Knock Averaging Lag Factor.
More Engine Settings
The MS2-Extra code can run using a combination of load parameters. This is useful if you have a boosted engine with a very poor Manifold Pressure at idle, due to very large throttles, cam, etc. In this case you can run using TPS as the primary load and use MAP as the secondary to compensate for boost, that wouldn't be seen without using the MAP sensor. For 99% of engines simply set it to disabled.
Before attempting to start your MS2-Extra equipped engine, you will need to set a number of parameters that determine how MegaSquirt injects fuel. These include the injector open time, Req_Fuel, injector control criteria, PWM criteria, EGO characteristics, etc. These constants are either calculated, or based on the configuration of your system. For the most part, these are very similar to those from MS1-Extra
Injector Opening Time (ms) (more correctly called Dead Time or offset) is effectively the portion of the pulsewidth when no fuel is injected.
It is important to use the correct figure here or you will have tuning problems particularly at low pulsewidths such as at idle.
Typically high-impedance injectors will be 0.8-1.1 ms and low-impedance injectors will be 0.6-0.7 ms.
More technically dead time = opening time - closing time Some manufacturers will post the technical specifications, but it also depends on the electrical circuit used to drive the injector. If in doubt start with the settings mentioned here.
One install had low-z injectors with PWM control, but the dead time was set to 1.0ms. At idle the pulsewidth was around 1.3ms and the user had very low (e.g.15%) numbers in the fuel VE table, it was impossible to get a stable idle and the AFRs jumped from lean to rich. Resetting the dead time to 0.6ms and bumping up the VE values gave a similar reported pulsewidth but greater control. The engine ran smoothly and the AFRs were stable.
Battery Voltage Correction (ms/V) (BatFac) is the number of milliseconds that MS2-Extra (or MicroSquirt Running MS2-Extra) adds to each fuel injection pulse to compensate for the slower opening of the injectors with lower supply voltages. Generally 0.10 ms/V or 0.2 ms/V is about right.
PWM Time Threshold (ms) (InjPWMTim) is the amount time full-current is applied to the injector (to open it quickly) before PWM current limiting starts. It is only used for low-impedance injectors and is similar to the 'peak' in peak-and-hold systems. Generally you should set this to the same value as your injector mechanical opening time. (Do not confuse this setting with 'opening time'.)
Injector PWM Period (µsec) (InjPWMPd) is the time between cycles of on/off and the Injector Duty Cycle is the % of time it stays on relative to the total time for one cycle. You use high frequency to make things smooth. Since the injectors stay open for milliseconds, you need a period that is much shorter than that. Such a frequency never lets the injector start to close - the turn off turn on cycle is so fast that the injector stays where it is. Keep this value between 10 and 25 KHz (100-40 µsec).
To tune the PWM [pulse width modulation] values for your engine, you need to know what kind of injectors you have- low impedance or high-impedance. If you are running high-impedance injectors (greater than 10 Ohms), then set the PWM time to 25.5, to disable the PWM mode. This allows full current to the injectors throughout the pulse width.
For low-impedance injectors (less than 3 Ohms), you need to limit the current to avoid overheating the injectors. To do this, there is a period of time that you apply full battery voltage [peak] current, then switch over to a lower current-averaged [hold] current, i.e. peak and hold. Alternatively, you can add resistors in series with the injectors. See the Injectors and Fuel Supply section of the MegaSquirt manual for more details.
To run low-impedance injectors with the PWM current limit mode, you need to set two parameters - the "PWM Current Limit %" and the "Time Threshold for PWM Mode" - both are on the “Constants” page. The current limit % is the percent duty cycle when the current limit is invoked. The time threshold is the amount of time from when the injector is first opened until the current limit is activated.
If you are running high-impedance injectors (greater than 10 Ohms), then set:
Opening time to 1.0 ms
PWM Time Threshold to 25.5 ms
PWM Current Limit (%) to 100%.
If you have low impedance injectors (less than 4 Ohms), set the:
Opening time to 0.6ms
PWM Time Threshold to 1.0 ms
PWM Current Limit to 30%
(75% if you are running an old style V2.2 mainboard which not advised).
You will tune these after getting the engine running. See “Setting the PWM Criteria” in the tuning section of this manual. Failure to perform the tuning steps can result in damage to your injectors.
Required Fuel – (ReqFuel) this is top field of the
Constants window. It has a calculation dialog to help you find an
appropriate value. It should contain the injector pulse width, in
milliseconds, required to supply the fuel for a single injection
event at stoichiometric combustion and 100% volumetric efficiency.
In order to come up with this value, TunerStudio provides a calculator that will suffice for 99% of applications. To use the calculator, click on the Required Fuel button, and fill in the fields (Engine Displacement, Number of cylinders, Injector flow, and Air:Fuel ratio, then click 'Okay'). The values are typically not 'remembered' so if you open the calculator again do not be alarmed if you see different numbers.
For a 4-stroke, a complete stroke cycle is 720 degrees of crankshaft rotation (i.e. two revolutions); for a 2-stroke, it is 360 degrees (this is also factored in the REQ_FUEL value down loaded to MegaSquirt).
In the tuning software, the upper REQ_FUEL box is the amount per cylinder, as noted above. The lower REQ_FUEL box is the value down loaded to MegaSquirt. It is the REQ_FUEL number on top, but scaled by your selected injection mode (number of squirts and alternate/simultaneous).
For example, if you inject simultaneous and one injection, and have the same number of injectors as cylinders [i.e. port injection], then REQ_FUEL on the bottom is the same as REQ_FUEL on top. Same with alternate and two squirts. If you put in simultaneous and two squirts, then REQ_FUEL is divided in half - because you squirt twice, you need to inject 1/2 the fuel on each shot.
Note: if you choose alternating for port injection, make sure your number of squirts is an even number (2,4,...) and evenly divisible into the number of cylinders. For example, with an eight cylinder engine, you could use alternating and 2, 4, or 8 squirts/cycle. With a six cylinder, if you choose alternating, you MUST use 2 or 6 squirts/cycle. Also, the only possible combinations for an odd-cylinder count engine are either 1 squirt/simultaneous or N squirt/simultaneous combination, where N is the number of cylinders."
"OK" means the combination will work with either simultaneous or alternating. "no" means it will not work with either, i.e., not at all. Vertually all installs will use 2 (4 is ok for lower RPM engines like V8's) Values of 7 and above would most certainly not be used.
The maximum injector pulse width possible with MS2-Extra (or MicroSquirt) is 65 milliseconds.
Control Algorithm (FuelAlpha) lets you choose between Speed Density Alpha-N and Percent Baro. In all cases, you should choose speed density unless you have a good reason to do otherwise, and understand how this will change your tuning efforts. All tuning advice in this manual is based on the speed-density algorithm. Alpha-N uses the throttle position (alpha) and RPM (N) to calculate the amount of fuel to inject as opposed to using the manifold absolute pressure (MAP) and RPM to calculate the amount of fuel to inject. Alpha-N is useful for long duration cams where the resolution of manifold air pressure (map) would be small. It is also useful to get smoother idle on engines that have erratic map values. MegaSquirt be converted from its default speed-density calculations to Alpha-N which uses RPM, temperature and TPS only. You must have version 2.0 (or higher) of the embedded software installed. Start up the tuning software, go to the Constants dialog and change speed density to Alpha-N. Re-map your VE table. You will no longer use the MAP sensor for estimating the load on the engine, the throttle position and rpm are used instead. This can help with cams with long duration and/or a lot of overlap, as they have low and variable vacuum at idle, making tuning very difficult.
Injections per Engine Cycle is set the number of squirts you want per engine cycle. You want this to be set so that your idle pulse width is no less than 2.0 ms, if possible, and your Req_Fuel is less than 15-18 milliseconds, but more than 6 milliseconds. These values allow proper tuning of the idle mixture while maintaining the ability to apply enrichments (acceleration, warm-up, etc.) under full throttle. This is the total injector events that you wish to occur for every engine cycle (360 degrees for two stroke engines and 720° for four strokes).
There is some benefit to choosing 2 squirts/alternating for port injection, since only half of the injectors fire at once, the pressure drop in the fuel rails is reduced and the fuelling is more consistent.
With throttle body injection, the number of injection/cycle you can will depend on your number of cylinders, plenum size, Req_Fuel, etc. You have to experiment to see what works best for your combination. Generally, you will need at least as ½ as many squirts per cycle as you have cylinder, though you can run this alternating.
Injector Staging (Alternate) values for injector staging are simultaneous or alternating. If you want all your injectors to fire at once, select simultaneous. If you want half your injectors to fire at each injection event, and the other half on the next event, select alternating.
Note that with port injection, you must choose at at least 2 squirts per cycle with alternating injection, otherwise every other cycle for each cylinder will get NO fuel! The engine will run very badly.
Engine Stroke (EngStroke) values for engine stroke type are two-stroke or four-stroke. MegaSquirt uses engine stroke to determine how many degrees are in an engine cycle.
Number of Cylinders is the count of the cylinders on your engine. If you are unsure how many cylinders your engine has, you should not be installing MegaSquirt on it. This value is actually the number if ignition events per cycle sent to the ignition input on the controller.
Injector Port Type (InjType) is used to select the type of injectors that you are using, either throttle body (if the injectors spray above the throttle plates) or multi-port (if the injectors spray into the intake ports). This setting is not used by the code at this time.
Number of Injectors (NoInj) is the total number of injectors MegaSquirt is controlling, whether port or throttle body injection.
MAP Type values for this may be selected from the option
menu, and are either 115 kPa or 250 kPa. All Version 2 MegaSquirt
partial kits have the 250 kPa MAP sensor (this is all MegaSquirt sold
in the last few years). The MAP sensor type should be auto-detected
from MegaSquirt, but if it is not, select the right one and hit "Send
You should check that TunerStudio reads approximately the correct barometric pressure when no vacuum is applied (i.e. the engine isn't running). Below is a chart of the 'normal' barometric pressures for various geographic elevations. MS2-Extra should generally be within 2 or 3 kPa of the value below for your elevation. Because of the increased accuracy of the 10-bit ADC on MS2-Extra, versus the 8-bit ADC of MegaSquirt, the MAP reading will likely be 1 or 2 kPa higher with MS2-Extra. If it is significantly different, check under 'Tools/Sensor Calibration' and verify that you have values of 9.3 (@ volts) and 260.9 (@ 5 volts) for the MAP sensor.
MS2-Extra (or MicroSquirt Running MS2-Extra) has the provisions for a second independent 'realtime' baro sensor. This will update your fueling continuously, which may be helpful if you are climbing the Rocky mountains or running Pike's Pike.
To add an independent baro sensor to your MS2-Extra (or MicroSquirt Running MS2-Extra), use an MPX4250AP (the standard MS sensor). Run leads from:
sensor pin #1 (signal) to header position X7 on the MegaSquirt PCB
through a 1K Ohm resistor,
sensor pin #2 to ground (the non-banded end of D1), and
sensor pin #3 to 5 Volts - use the via at the "M" in the copyright notice near the existing MAP sensor.
You can use other 0-5 volt pressure sensors, but you will have to calibrate it using the 'Tools/Sensor Calibration' dialog in TunerStudio.
You do not use any caps or protection diodes. The baro sensor can be mounted to the top of the case, above the LEDs near the DB9. It should clear the MegaSquirt-II here, but not by much, be sure to check. You may be able to put it at the other end, if the flyback board is not in the way in your installation.
Engine Type (OddFire1, OddFire2) has the options of odd
fire or even fire. Odd-fire or even fire does not refer to the firing
order, but rather the interval between successive firings.
So if you have a 4 cylinder, and a spark every 180 degrees, you have an even fire. Almost all 4 cylinder engines are even fire.
However some 90 degree V6s, some V4s, and most V-Twins (usually motorcycle engines), as well as a few others, have 'odd-fire' arrangements.
For example, from 1978 to 1984, the GM V6 (200 and 229 cid) had a semi-even fire sequence, with firing intervals of 132°/108°. It is "semi" because the rod journals are offset, but not quite enough to make for even firing intervals. In MegaSquirt terms, this is an 'odd-fire' engine, because the interval between firing can be either 132° OR 108° degrees.
EGO Sensor Type (EgoOption)
Disabled If you don't have an oxygen sensor installed, choose 'Disabled' under EGO Sensor Type in TunerStudio, and MS2-Extra (or MicroSquirt Running MS2-Extra) does not use the numbers in the AFR table to adjust the VE table numbers (as shown above) when calculating the pulse widths. There is no feedback.
Narrow Band O2 Sensor If you have enabled a narrow band oxygen sensor, choose 'Narrow Band' under EGO Sensor Type in TunerStudio, and MegaSquirt-II will try to adjust the amount fuel injected, up to the limits you specify, to give the oxygen sensor voltage specified in the tuning software. The AFR table is not used, instead a single oxygen sensor voltage target is used.
IMPORTANT NOTE: Do NOT burn tables ('Calibrate AFR Table' or 'Calibrate Thermistor Tables') on a running engine. Even idle is NOT allowed, because these tables ONLY exist in flash, so once a table is erased, there is nothing but garbage in there until it is reprogrammed, one word at a time. Until that reprogramming is complete, operating the engine is unsafe.
Dual Narrow Band: You connect the second sensor to the ADC6 input with appropriate circuitry and it adjusts the PW2 output independently of PW1. You connect the second sensor to the JS5 hole (on a V3 main board) - X7 on a V2.2 main board, duplicating the R10, R11, C10 circuit from the v3.0 PCB in the proto grid area. There is only one calibration because it is assumed you are going to use the same type of sensor on each side. If there is a small difference, you can compensate for it in the separate AFR target tables.
Wide Band If you have a narrow band O2 sensor OR a wide band oxygen sensor & controller, choose the appropriate setting under Settings/EGO Control in TunerStudio, and be SURE to go to Tools/Calibrate AFR Table and select your controller type. Make sure to have the MS2-Extra (or MicroSquirt Running MS2-Extra) connected and powered up while you do this - the calibration is saved for both TunerStudio (on the PC) and to MegaSquirt-II (to which the calibration table is downloaded). Then MS2-Extra (or MicroSquirt Running MS2-Extra) will adjust the amount of fuel injected based on the AFR table until the sensor reports a voltage corresponding to the air/fuel ratio in the appropriate cell of the AFR table (for wide band) or switch point (for narrow band).
IMPORTANT NOTE: Do NOT burn tables ('Calibrate AFR Table' or 'Calibrate Thermistor Tables') on a running engine. Even idle is NOT allowed, because these tables ONLY exist in flash, so once a table is erased, there is nothing but garbage in there until it is re-programmed, one word at a time. Until that reprogramming is complete, operating the engine is unsafe.
Dual Wide Band: You connect the second sensor to the ADC6 input with appropriate circuitry and it adjusts the PW2 output independently of PW1. You connect the second sensor to the JS5 hole (on a V3 main board) - X7 on a V2.2 main board, duplicating the R10, R11, C10 circuit from the v3.0 PCB in the proto grid area. There is only one calibration because it is assumed you are going to use the same type of sensor on each side. If there is a small difference, you can compensate for it in the separate AFR target tables.
Ignition Events per Step: (EgoCountCmp) This is the number of 'sparks' the engine sees before adjusting the fuel amount based on the EGO sensor feedback. Large numbers make the EGO feedback respond more slowly, but also tend to make it more stable. Typically this should be set to a value that would switch about 4x a second at your average cruising speed:
4 cylinder assume 3500rpm cruise set Ignition Events per Step to : 29
6 cylinder assume 2500rpm cruise set Ignition Events per Step to : 31
8 cylinder assume 2000rpm cruise set Ignition Events per Step to : 33
You can calculate yours:
O2 adjustments per second = ((rpm/120) * cylinders) / ignition events per step
Controller Step Size (%): (EgoStep) This is the amount the
EGO will be adjusted after the number of ignition events specified
above. Smaller numbers make the response more stable, but slower.
Typically a value of 1 sould be entered here once the engine is tuned
to a reasonable stage.
Note that the wide band control algorithm does not use the constant step size controller algorithm that was previously used in MS1-Extra, it now has a P (just proportional) control algorithm, since it gives much more reliable information than the narrow band sensor does. MS2, MS2-Extra (or MicroSquirt) computes the difference between actual and target AFR, then uses that to do what it thinks is the exact adjustment to pulse width needed to attain the target AFR. So, step size and events don't play a role at all and they are grayed out when the wide band algorithm is selected.
Controller Authority ± (%): (EgoLimit) This is the maximum the EGO feedback is allowed to adjust the fuel from the VE table, regardless of the state of the O2 sensor feedback. Large numbers (50% to 80%) are better when the set-up is rough, smaller numbers (5% to 15%) are better when the VE table is 'dialed in'.
Active Above Coolant Temp (°): (EgoTemp) This is the lowest coolant temperature at which EGO feedback is allowed to operate. It is necessary to prevent the EGO feedback from working against the warm-up enrichments when the engine needs to be particularly rich while cold.
Active Above RPM: (RPMOXLimit) This is the lowest engine speed at which EGO feedback is allowed to operate. It is necessary for those engines that need to be rich while idling. (1200RPM is a typical value)
Active Below TPS (V): (TPSOXLimit) This prevents EGO feedback with either a narrow-band or wide band sensor from operating at wide-open throttle (WOT), because narrow band sensors are not effective at measuring the rich mixtures required. (70-80% of the throttle opening is a typical value)
Active Below MAP (kPa): (MAPOXLimit)
This prevents EGO feedback with either a narrow-band or wide band
sensor from operating at high loads, because narrow band sensors are
not effective at measuring the rich mixtures required.
WideBand Lambda Sensor Users
If you are using a wideband lambda sensor then you'll need to set the MS2 ECU up for that sensor. this is easilly done by going into TunerStudio and selecting Tools - Calibrate AFR Table. With the MS ECU powered up and on-line select your wideband sensor from the list and click OK
If you are using a Wideband lambda sensor you can set the AFR targets that the ECU will correct for in a table. The table does away with your EGO Switch point in Exhaust Gas Settings, but it is strongly recommended that this is only used when you have a Wideband Lambda sensor setup. Generally, you want it to be lean in the areas where it is lightly loaded and you want best economy. You may be able to run as lean as 17:1 in these areas. At WOT, conventional wisdom is that you want 13.0:1 at peak torque, and 12.5:1 at peak horsepower. Then blend the WOT and economy areas so that there is a smooth transition. You will have to do this twice if you have selected the dual table option.
NOTE: These are just targets, they don’t replace your VE table and should be thought of as a fine tune for the VE table.
If you don’t want to use them simply select them off. The target will then be as set in the enrichments page.
The Start/Idle settings are for setting the point at which the code decides that the engine is running rather than cranking. This should be set above your cranking RPM, typically 300RPM. The Cranking Fuel Pulse rate is how often the fuel is injected into the cylinders during cranking. The MS1 code was "Every Event" as standard, this means that for every ignition firing point the fuel is squirted in on both banks. It can be changed to Alternate Events if needed, this setting will double the cranking PW to compensate.
The Priming Pulse is the amount of fuel added when the ignition is first switched on. It is to help the engine start a little quicker during cranking. I tend to leave this at zero when messing about with the install, etc, as flooding can soon occur if your switching the ignition on and off a lot. So this is best set after the engine is running.
The MS1-Extra code had the option for a fixed value for this, or the same value as the cranking PW, so this can be set to a similar amount as before to get you going.
You can also set all the Warmup Enrichment and the After Start Enrichment Percentage. Simply write down your previous settings from MS1 and then convert them over to MS2:
The Cranking Pulse is now a percentage of the Req_Fuel, so it may need to be re-tuned. It has been found that the default values are pretty close and it is therefore recommended that you start tuning using these as a base setpoint.
After Start Enrichment
The After Start Enrichment is added to the base fueling map once the engine starts. The rate at which it decreases can be changed, as the warmer an engine is the less time it needs the ASE running for. This can be setup in the AfterStart Enrichment Taper table, try using the default settings to start with and see how it goes. Again this will need fine tuning for your setup.
The MS2 daughter board has a built in stepper motor controller and it also retains the FIdle output if its needed. If you had an FIdle output using the MS1-Extra code then you will need to set this up as PWM, if you have a stepper motor wired in then you can set this up as a IAC Stepper, but remember the 2 programmable IAC outputs (programmable to switch on at xxRPM, or xxxTPS, etc) can not be used when using them as a stepper controller.
If you have an IAC stepper motor, you will have to choose between 'moving only' and 'always active'. If you set your stepper to 'always on' for 15 min or so and it doesn't feel too hot to you, then you can leave it that way. Apparently this is what General Motors does. But if you want to be safe you can test it on the bench for 15 min or so. It will get right warm, but it shouldn't burn your fingers just touching it. If it gets too hot, use 'moving only' instead.
Algorithm (IdleCtl): If you have a:
Fast Idle Valve (FIdle):
For an on/off fast idle valve, set the algorithm to 'Solenoid'. You can also set your Fast Idle Threshold if you have installed a fast idle solenoid. Enter a coolant temperature to turn on the fast idle solenoid. A typical value is 145º Fahrenheit. The Fast Idle valve will be activated below this temperature (145ºF) and turned off above 145ºF. The Fast idle Threshold is independent of any warm-up enrichment. Fast idle valves generally have one or two wires.
PWM Warmup: This is for the Ford or Bosch pulse width modulated idle air valves. Ten temperature dependent levels of PWM are user specifiable if this option is selected (see 'Idle PWM Dutycycle' under 'Tables'). Modifications to the board are required, see this link for more details.
Idle Air Controller (IAC): If you have a stepper motor IAC, you can set the IAC Start position, as well as ten intermediate positions based on the coolant temperature to allow a decreasing amount of "extra air" as the engine warms up. These are set under 'Tables/Idle Steps' in TunerStudio. Stepper motor IACs usually have four wires.
IAC Stepper Moving Only: Powers the stepper only when changes in pintle position are requested. This is the most common type, it holds its position if not powered, and is difficult to turn by hand.
IAC Stepper Always On: Powers the stepper at all times. Required if your stepper 'free wheels' when you spin its pintle un-powered with your hand.
15 Minute IAC: This operates the IAC stepper motor as 'always on' for 15 minutes, then switches to 'moving only'. This can be useful in some situations in which the stepper moves unreliably if moving only at the lower voltages of cranking and warming up, etc.
To select the appropriate 'Idle Control/Algorithm' for stepper motor control in TunerStudio you may need to do some testing. In some cases setting the stepper motor to "IAC Stepper Always On" will cause the IAC to get hot. However setting it to "IAC Stepper Moving Only", might cause a problem with idle speed changing from one start to another.
You can test if your IAC is suitable for 'always on' by leaving your stepper powered on the bench for 15 min or so. If it doesn't feel too hot to you, then set it to "Always On". Apparently this is what GM does. But if you want to be safe they should test it on the bench for 15 min or so, or monitor it closely in the car while not moving for at least 15 minutes, checking the IAC temperature frequently with your fingers. It may get warm, but it shouldn't burn your fingers just touching it.
Leave the other values (below) alone, you can experiment with them when you get the engine running.
Time Step Size (ms) (IACtstep): IAC stepper motor nominal time between steps (i.e., 2.5 milliseconds gives pulse frequency of 400 Hz).
Homing Steps / Start Value (IACStart): The number of steps applied to retract the IAC pintle to 'fully closed' at power up. This should be set to a larger number than the total number of steps from full open to full closed to ensure that the valve always returns to the same home position.
Cranking Position (IACcrankpos): During cranking, extra air may be useful in the same way as extra fuel in cranking pulses. The table value for the starting temperature may be fine after the engine has started up, but during cranking more power may be needed, especially if the starting temperature is cold. To provide this, you can input a step position that provides a larger than normal air opening during cranking. So, if in cranking and 'Cranking Position' < table value, then the IAC motor position (or PWM%) is set to 'Cranking Position', and when cranking is done, the motor position starts tapering (over the 'crank to run taper time') up to the table value over a user input period, typically a few seconds. (See the diagram below) If this feature is not desired, Just set 'Cranking Position' to a value higher than any table value. Then the table value will always be used since it provides more opening.
Crank-to-Run Taper Time (IACcrankpos): This is the time over which the cranking position of the idle (either the stepper steps or the PWM%) is moved to match the table value (see diagram below). Higher values give a higher idle for longer periods, which can improve starting performance.
Hysteresis (°) (IdleHyst): This input can be used to avoid continuous motor motion (and wear) for small coolant temperature changes. Changes to the motor are only made when new coolant temperature> coolant temperature on the last move, or, new coolant temperature < (coolant temperature on the last move - Hysteresis temperature). What this does is allow constant motor motion while the coolant temperature is rising, but when it peaks, there will be no further motion unless things cool back down - which is unlikely.
Time Based After Start (extended warm-up): You should NOT
use the Time Based After Start (extended warmup) option unless
you find you need it, and very few will. Disable it by setting the
'cold temperature to -40°F. Then this feature will not be used
unless the coolant temperature at startup (ECU first powered on) is
below -40°F. This feature is used toward the end of the warmup
sequence when the coolant temperature is close to its final operating
temperature. In this case, fast idle will normally come off, but SOME
cars (very few) may need extended fast idle. An example is a car that
uses heavy weight oil, which is nowhere near at operating temp when
the coolant gets there, plus a hot cam with not enough idle torque to
overcome the oil drag.
This feature is implemented by inputting a 'Cold Position' that is the step position at start of extended warmup, typically about 80% of the final, fully closed step position. The IAC behaves normally until the step position commanded from the table just exceeds this Cold position value (either PWM or stepper). From that point on, the steps are tapered in so as to reach the last step value in the table over the 'cold taper time' period. (see the diagram). This slows the reduction in idle air as the engine continues to warm up (increasing the idle speed for longer than the coolant temperature alone would do).
When using the PWM mode it has a table to set the Duty Cycle. In MS1-Extra there were 2 set points, one for hot, one for cold and the code would interpole the value from those points. The original values used in MS1-Extra can be converted over to MS2-Extra:
In the Extended tab there's the Barometric Correction page. Under the Basic Setup - General Settings tab, as long as the Barometric correction is turned to either Initial Map Reading or Two Independent Sensors, then the code will naturally correct for barometric conditions, either on start up or full time. The corrections page allows the user to fine tune the amount of correction used, as it has been found in a small number of cases that the correction can be too small or too large. This usually shows up when the AFR alters significantly traveling from one barometric pressure to another. As a starting point set the correction to zero percent and the code will follow the standard barometric correction factor. If you need to alter this it will only need a little tweak, if your having to set high values (>20) then the chances are you have other problems.
The MS2-Extra code also allows the user to fine tune the amount of correction given for the Air Density calculations that is worked out using the air temperature sensor. This compensates for some heat saturation from the plenum, or intake if the air sensor is in a particularly prone position to heat up due to heat saturation from the engine. This should be set to Zero for starters so the standard Air Density correction factor is used.
Over Run Fuel Cutoff
This is used to cut fuel off during deceleration to aid
engine braking and reduce fuel use. The RPM setpoint will need to be
a bit higher than your tickover speed, I would suggest it was around
800rpm higher than the tickover RPM so as the fuel and engine has
time to settle down again once fuel is switched back in.
The KPa should be set to slightly above the vacuum value pulled when decelerating, e.g. 20KPa.
A typical delay time of 1-2S is best to ensure it doesn't hunt.
To find your TPS setting value, go to Tools, Calibrate TPS, and with your foot completely OFF the throttle hit Get Current. Remember this value and hit CANCEL on the Calibrate TPS dialog. Add 2-3 to this value and enter it, so if you had a value of 20 enter 22 in the setting.
For normal setups this should be OFF.
This runs Bank 1 injectors only until the setpoint is satisfied, then Bank 1 and 2 will fire at a reduced amount depending on the flow rates of the injectors. So by wiring a small set of injectors to Ch1 and a larger set to Ch2 you can have a good idle control with the first bank firing and then under load switch the second bank on to get enough fuel for the power the engine produces.
This is worked out by calculating Primary Injector Flow/Total Inj Flow. When the engine runs below the setpoint-hysterisis the injectors change back to CH1 on normally and CH2 off. In this example the 2nd bank will turn on at 3000RPM and off at 2800RPM. The change over is gradually switched in by the Staged Gradual Transient, in this example it will take 55 ignition events before the staged injection has fully switched over to the 2 injection banks.
This is mainly used in rotary engines where the stock Mazda throttle body wants to be used, as it is progressive in nature. The injection must be progressive too if the stock EFI hardware is to be used without modification. This requires the MegaSquirt to fire the primaries only until the secondary throttle plates have opened adequately. A secondary switch point (Staged Injection Second) can be added to the mix. This allows the use of another parameter to switch the staged injection point on or it can be used so both setting have to be satisfied before the staged injection point is reached..
Table Switching Control
The MS2-Extra code can switch between 2 different Fuel
(VE table) and or Spark tables at a specific set point whilst the
engine is running. This can be done based on RPM, TPS, MAP KPa or
even using an external switch, e.g. when LPG switches on. Once the
setpoint has been made the fueling and or spark map will be
instantanously swapped over to Fuel VE Table 3 and Spark
Table 2 respectively. (Fuel VE Table 2 is reserved for Dual
To use the hardware switched input please see HERE
For Ignition Settings, etc, please see the General Ignition Manual HERE
If you have a question, comment, or suggestion for these manuals please post it on the forum
No part of this manual may be reproduced or changed without written permission from Philip Ringwood, James Murray, Ken Culver and Lance.