Nissan Tuning

From Nissan ECU RE


Do note that these guides are to be considered as works in progress! So while they're meant to help shed light on functionality, the data provided here has the potential to be incorrect and/or outdated. (Just look at UpRev's tuning guide as of 8/12/21) Also, this guide is based on the 2006 Nissan 350z 5AT(SH7058 ECU). While the core logic will be universal, there are plenty of notable exceptions across models and transmission types.

Do also note that this guide is going to be overly simplified to ensure ease of use. So there will be many situational components that won't be covered here. On top of this, I will be providing the ROM/Constant values from CF48D directly. So even if I state something checks if coolant temperature is above 75*F, it doesn't necessarily guarantee that this will be true for your ROM (however, it's very likely that they utilize the exact same value).

Ignition Timing[edit]

Nissan has two timing systems. One's a MBT System and one's a GOV Control System. It utilizes the MBT System under normal operation. The GOV Control System is utilized whenever the idle switch is on. This would be during deceleration and idle. The MBT System calculates MBT (Minimum Spark Advance for Best Torque) through flame speed, air mass, and so forth. The GOV Control System is based primarily on fixed 2D Tables. It will be described in further detail below.

GOV Control[edit]

GOV Control refers to ignition timing control during deceleration or idle. Once deceleration or idle conditions are detected, the ECU no longer utilizes the MBT-based ignition timing logic and instead switches to GOV Control logic.

GOV Table Utilized If All are True;

  • Utilized if GOV3/4 fails any of its condition checks.

GOV3 Table Utilized If All are True;

  • In Gear
  • Coolant Temperature >= mGOVTW (ROM)
  • Idle SW = ON
  • tGOVDLY (RAM) = 0 (mGOVDLY (ROM) sets tGOVDLY, but it's just the initial delay once the idle SW is on before it transitions to the GOV3 table.)

GOV4 Value Utilized if All are True;

  • GOV3 must fail at least one of its condition checks.
  • Current Gear Position = 3
  • AC SW = On

Limits of the MBT Calculations[edit]

While the MBT calculations work flawlessly for the stock setup, there are various modifications that can cause these calculations to become less accurate. ANYTHING that drastically affects flame speed and causes it to differ past what the stock system can compensate for (through changes to ITAC) will cause these calculations to be skewed. The faster the flame speed, the less timing is needed and vice versa.

What Affects Flame Speed;

  • Octane Rating (Higher octane rating = slower flame speed)
  • Fuel Contents (methanol has a faster flame speed than gasoline)
  • AFR Mixture (Richer mixture = slower flame speed)
  • And so on.

Ignition Timing Maps Guide[edit]

Just an extremely basic guide to tuning the timing maps for anyone who might have a hard time understanding.

The photo below shows the SAME VALUES, except the one on the left has the knock window removed to help visualize the timing adjustment aspect of it. First, we need to understand the timing formula. Given that this is an extremely complex thing, let's just put it simply as Ignition Timing = MBT + Timing Adjustment + X. Where MBT is the calculated MBT value that ALL COMPENSATIONS are based on, Timing Adjustment being the Ignition Timing Map Value, and X being the knock window compensation. The knock window compensation is based off knock sensor feedback and so forth, but this compensation is ONLY active when you're within the knock window. So when you're outside of the knock window, the formula is Ignition Timing = MBT + Timing Adjustment.

So we know how it's calculated, but how do we know how to tune it? So since we're relying on the ECU to calculate MBT accurately, we are now tuning based off the belief that the calculated MBT Value = Actual MBT. So instead of needing to focus on finding MBT, now we shift to preventing knock. Since anywhere outside the knock window is Ignition Timing = MBT + Timing Adjustment, this means that the MAXIMUM VALUE we want is 0. Because then we are running MBT. Anything higher will unnecessarily over-advance us. So if you know you're not knocking, you can raise the values closer and closer to 0 until you either hit 0, or knock starts to occur. Do be aware of what octane you're going to be running, because you don't want to run super close to MBT if you're going to be running on 87 octane.

If you notice that from 6.2%-31.2% ITAC (X-Axis) we are actually using positive values in a few spots. This is because most of the time that we're in those cells, we will be transitioning from deceleration. So the positive values are there to offset some of the initial acceleration retarding that occurs when going from deceleration to acceleration. Same for within the knock window. Since within the knock window the formula is Ignition Timing = MBT + Timing Adjustment + X, we now are fighting the X compensation. This is why you see +3 in some cells. This is because due to the aggressive knock logic, it can potentially pull a decent bit of timing unnecessarily. So by having +3, we're offsetting a lot of the timing retard that is occurring due to knock sensor feedback.

So outside of any areas where compensations are occurring, 0 is the maximum value you want to run for these maps. Within areas where compensations are occurring, you'll need to experiment through trial and error. Especially on any VVEL equipped vehicles. The reason the knock window is so frustrating to deal with is because Nissan's knock logic will retard ignition timing during a knock event, then leave it retarded for a predetermined amount of time to ensure that the engine stops knocking. I don't know the actual time frame, but just know that it will retard timing beyond the knock event to verify that knock stops occurring. When you're outside of the knock window, it doesn't give a crap about knock unless it trips the knock flag, where it'll then run off the high detonation ignition timing map.

Variable Valve Timing[edit]

There are three main target intake VVT maps. Cold, Normal, and High Detonation. Cold/Normal is determined by the switch temperature values. (133-140*F for CF48D) High detonation is used whenever the high detonation flag is set. Nissan's intake VVT system is a PI control system, with the proper code for a PID control system to be implemented. As a result, it is critical that you do not make too extreme of jumps between cells on the VVT maps. Remember, the maps just set the TARGET cam advance angle. So just because you set it to X, does not mean that it will be able to hit X.

For CF48D, the target cam limits are 0-38 degrees of advance. Do note, the cam angles appear to be ~+/- 2 degrees from the target near the limits. So a target of 38 degrees will typically result in 40 degrees of advance, while a target of 0 degrees will typically result in -2 degrees of advance. Not sure if this is just at higher RPM's or if this occurs across the board. Also, do note that CF48D has a minimum vehicle speed requirement of 2mph. So while unconfirmed, it does appear that VVT is NOT active during idle. So changes to the Target Cam Timing Map in the idle region won't actually result in changes to cam angle. This is potentially done to avoid the PID control system from freaking out if there's not enough oil pressure to hit the target cam angles at idle.

Fuel Delivery[edit]

Nissan's fuel delivery system is based on calculating a basic injector pulse width (Basic BFS), then applying compensations to this value to correct for various conditions. The main fuel compensation map is an Alpha-N setup, which means it's based on the throttle flow quantity/load. The transient throttle maps are used to compensate for the delay between where the air is read by the MAF sensor and when the air actually enters the combustion chamber. So most of your fueling changes will be made to the fuel compensation map.

  • K-Value - Fuel injector conversion unit. Represents a ms/Kg value used to convert the MAF Table value into an injector pulse width. Acts as the fuel injector size value within the ECU. So changes to injector size will require changes to this value directly. You can calculate a new K-Value for new injectors with the following equation: (Old Injector Size / New Injector Size) * Old K-Value = New K-Value
  • MAF Factor - Can be viewed as a percentage. Multiplies the MAF table value within the basic BFS calculation. You can use this value to compensate for airflow changes rather than using the MAF table. It's primarily useful for those who are running non-OEM intake tubing diameters.

Cylinder Filling Up Efficiency (ITAC) = (BFS/mTP100)*100

  • mTP100 - Cylinder Filling Up Efficiency Scaler. The BFS at which 100% volumetric efficiency occurs. Nissan has this setup to hit 100% stock for NA ROM's, even if the engines don't actually hit 100% VE, this is due to the fact that when WOT is detected (APO > 70 degrees), the ECU just uses the last column of the ITAC axis. (Can be changed based off ROM flags, so won't be consistent across all vehicles)

Fuel Injectors[edit]


  • K-Value
  • Cranking Pulsewidth Table
  • Cranking Pulsewidth Compensation Tables

MAF Sensor and/or Tubing Diameter[edit]

General Changes to Fueling or Airflow[edit]

While not necessarily guaranteed to be required all the time, it's best to check the following whenever you make changes to airflow or fueling;

  • Cylinder Filling Up Efficiency Scaler
  • Idle BFS Limits
  • MAF Idle Voltage Limits

Open Loop/Closed Loop Control[edit]

Open loop control means that the ECU will not be using readings from the upstream O2 sensors to compensate fueling with. Closed loop controls means that the ECU will be using readings to compensate fueling with. Within closed loop mode, fueling will be compensated by short term fuel trims (active), as well as long term fuel trims (learned). STFT's are actively compensating for deviances from 14.7 AFR, while LTFT's are the average STFT values within set ranges (RPM and BFS).

During most normal driving conditions, the Target AFR Map is used to determine whether the ECU will run in open or closed loop. If the Target AFR Map value = 14.7 AFR (1 lambda), then the ECU will run in closed loop. If the Target AFR Map value != 14.7 AFR, then the ECU will run in open loop. (!= means does not)

While not confirmed yet, there's a possibility that values close to 14.7 AFR will default to 14.7 AFR. (Such as, 14.59)

Automatic Transmission[edit]

Nissan utilizes their own DUETTE System. This basically just means that the ECU and TCM talk to one another to determine how to best operate the engine and transmission. For example, the TCM can request that the ECU retards ignition timing to prepare for a gear change. But due to the nature of them talking, there are a multitude of transmission related parameters stored within the ECU.

Line Pressure[edit]

Line pressure is completely managed by the transmission control module (TCM). As of 8/21/21, the TCM is not able to be reflashed. So the only thing we can do to control line pressure via the ECU is by altering the engine torque calculations.

The Engine Torque Map is used as the starting point for engine torque calculations. This is before compensations occur. So changing this map will directly alter the engine torque value sent to the TCM. The higher the engine torque, the higher the line pressure. If your engine is producing more power than stock (verified via a dyno), then you NEED to change this map to accurately reflect your power levels. If you're wanting to falsify the engine torque values as to make the transmission shift quick, then the accuracy is irrelevant, as you're not at risk of using too little of line pressure and burning your clutch packs.

Engine Torque Compensations;

  • MBT Deviance -PI % Table for DUETTE
  • Target AFR
  • Fuel Cut
  • mKTENG1 - Further analysis required.
  • vTHOKI - Further analysis required.

What Affects Line Pressure;

  • APS Voltage
  • TPS Voltage (Seems to only include Closed TPS and WOT signals)
  • Vehicle Speed
  • Engine Speed
  • A/T Fluid Temperature - Due to varying viscosity

Electronic Throttle Control[edit]

This one will, err, take quite some time to put into words. I have successfully converted the QH0 map to a final Target TVO map, but this is only done through excel and stepping through all the steps the stock code goes through. So there really isn't any easy way to explain this with a 1:1 relation with requested torque values and the actual TVO angles. On top of this, decel, cruise control, and low/no APS input logic is complex. So for now, I'd HIGHLY recommend avoiding messing with the 0-10% columns of QH0 Flow Potential. Outside of that should yield no issues.