Owner: Stephane Asselin aka “TheBlackOne”
Transmission: 6-Speed HSLD
This build was completed by Stephane Asselin back in 2008. Yeap, over 10 years ago. It was the very first Supercharged VQ35DE Nissan Altima in the world originating from Québec, Canada. It also has a 5-Speed Manual to 6-Speed HSLD Manual transmission from a 2004 Nissan Maxima. Everything was done by Stephane himself except the custom alternator pulley which he had made by a local shop. On the 1/4 track, the car ran 12.614 @ 110.730 MPH on 5.5-6 PSI of Boost.
Such an amazing and beautiful build!
Enjoy the build and progress photos below:
0-60 Feet: 1.807
1/8 Time: 8.133s @ 87.01 MPH
1/4 Time: 12.614s @ 110.73 MPH
Track Record Run Date: September 5, 2009
Owner: Jason Davis
Engine: 2012 Gen2 VQ35DE Altima Engine
Transmission: 6-Speed Manual
Member Credit: Matt Riney
For all you hardcore Nissan/Infiniti enthusiasts, there is finally an open-source solution that allows you to modify and flash ECUs! With a $10 VAG-KKL cable, you can basically flash your own ECU and tune it your to personal comfortable without breaking your wallet. The average tune costs roughly $600+ these days. Since you’re modifying the ROM yourself, there’s no vendor lock-in and you are free to do what you need and want. Great for those who have knowledge of tuning and want to tune their own vehicles!
Links to Tool/Software that you will need (Click links to Download):
Below are helpful videos on installing and running Rom Raider, along with dumping a Nissan SH7055 ECU with the Nisprog/Npkern software.
Most gasoline Nissan / Infiniti ECUs from ~ 2002 onwards share very similar ECU hardware, based on SuperH microcontrollers manufactured by Renesas (previously Hitachi). This project supports ECUs that use the OBD-II “K line” signal for diagnostics communications.
The process is carried out entirely over the OBD-II “K Line” serial communications link through an undocumented set of manufacturer-defined extensions to the standard ISO14230 protocol. Recently, the necessary commands have been reverse-engineered revealing the required steps:
The basic kernel is an implementation of an ISO14230-compliant protocol with extensions. It implements the following requests:
The basic reflashing kernel will support gasoline ECUs with:
There are several important points to be aware of when using Nisprog:
Credit: Jose R Garcia Colon & Robert Mandru
UPDATE from Robert Mandru: Have both the 300zx and 350z bracket adapters. They will NOT clear with Evo X 2 piece rotors, maybe just 1 piece. Even with one piece it still wouldn’t clear the inside, rotor too large with the 350z/G35 adapter. The EVO X top hats are too big and will not allow the calipers to bolt up. Probably could do it with the 300zx adapter without modding the caliper but for god sake, you have smaller bolts that are supporting all the strain coming from holding the caliper in place during braking conditions. Not worth it.
For better fitment, you are better off with these brackets: https://www.my4dsc.com/autosports-engineering-akebono-big-brake-kit-brackets-nissan-altima-02-06-maxima-95-08/
If you are reading this article, you are very likely trying to resolve P0420/P0430 without having to spend a lot of money on the issue. Most of the time, the codes are due to a bad clogged catalytic converter or bad O2 sensors. Before replacing the O2 sensor, be sure to do the spacer fix modification first because O2 sensors are not cheap.
There aren’t usually any drivability issues associated with these codes. For most people, the first sign that anything is wrong at all is the check engine light. Below are the typical check engine lights you would normally get:
You can eliminate the codes by using a spark plug non-fouler which tricks your engine computer to think that everything is working fine. This simple trick will pull the O2 sensor away from the exhaust flow and the computer will think the Catalytic converter is working properly. This will work if you remove the catalytic converter or have a bad cat. It’s very simple and cheap to do. Below is a video on how to perform the fix:
You can buy these non-fouler spacers at your local parts store. You can get them from Advanced Auto or Autozone for about $7-8 bucks.
You now need to drill out 1 of the non-foulers using a 1/2″ drill bit. When finished this is what it will look like.
O2 Sensor inserted in the modified non-fouler
Second, unmodified non-fouler now installed on modified non-fouler, then threaded into the pipe
Below are photos of the spacers installed and 100% working on Nissan Maximas by generation. After installing the spacers, the CEL codes went away.
Member Credit: xlack
This is from a G37 but the procedure pretty much identical to Nissan Maximas.
OEM Oil Pan completely stripped of silicon residue:
JWT Oil Pan Spacer:
New silicon applied:
Brush used to remove silicon remains:
This bolt has to be bended in order for the oil pan spacer to fit. (guy from 370z forum had it cut off, but is not necessary):
Bolt is knocked back into position:
Member Credit: djamps
THESE TABLES ARE FOR A VERY SPECIFIC F/I SETUP! I’m running GT25 twins with 600CC DW’s, AAM basic fuel return, and HPX MAF. Don’t be stupid and start making power pulls with these tables on YOUR setup. Tune it right and use these values as starting points if you want.
This tune actually took me almost a year to perfect a little here, a little there, learn from mistake and start over and repeat, ect ect. Some so-called ‘tuning shops’ and even exhaust parts and turbo kit manufacturers could learn alot from this post.
As of now it’s running perfect in every way from startup, mid throttle, and WOT. A/F in close and open loop are right on target. As you can see, most of the fuel work was done on the MAF table. Basically the car drives exactly like stock in and out of boost, with zero misfire.
If you’re not running a fuel return system, you’re going to be rich at low loads, and lean out hard in higher loads with this map so be aware! If you are running a return setup, set your base pressure to 48psi (or adjust the K accordingly to your pressure).
FYI I made 400whp with this tune at 8.3psi and power all the way to 7krpm in 108 degree ambient temps and major heatsoak. And I’m also running cats, so there’s probably more power to be had.
K fuel adjusted for my base pressure and injectors:
Injector minimum for DW 600 IMPORTANT that you upgrade to the latest ROM editor, as the older versions apply the wrong values:
Latency for DW 600 – IMPORTANT that you upgrade to the latest ROM editor, as the older versions apply the wrong values:
Startup enrichment – you need to pull ALOT from here especially at the bottom:
Load table (needed for 5AT only — I did it anyways so my logs looked better). Once you dial in your max fuel schedule on the fuel tables, adjust this so you’re hitting 100% whenever you’re in boost. If you don’t do this correctly, the torque converter will not lock up and it will granny shift to an early demise:
MAF table for my HPX MAF — IMPORTANT – If you don’t have a fuel return system, these MAF values will NOT be a good base map for you to start with, in fact it will make life more difficult!!! start with the Uprev tuned HPX MAF table instead. This table is where I spent most of my time. Yours will flatten out at a different lower voltage since they suck bawls at idle. It’s a delicate balance of fuel compensation and flattening to keep the A/F from bouncing at idle. At first, I tweaked the idle and free revving voltages manually by going over logs and making manual adjustments. Once it was somewhat drivable (out of boost), I took some logs of driving around normally and started making adjustments with my maf tool. Eventually I did a super rich boost pull and made more manual adjustments in the boost voltages. Once I was in the ballpark, I again used the maf tool to get the A/F exactly where I wanted it at all boost levels.
Cylinder trim — I’m glad uprev included this, because I was running about 0.6 a/f leaner on bank 2 in boost which required 6% increase in fuel for bank 2 to iron out — you should probably skip this at first and see how far your banks are off in boost before adjusting.
Fuel target — this has been adjusted with F/I and stock block in mind. take CAREFUL notice of the fuel schedule on the horizontal axis! You need to change the maximum value on the axis, then use the linear interpolation button on the whole row to smooth it out. This has to be done to timing table too! This DOES NOT happen automatically! If you changed your redline, do the SAME THING to the RPM column! The actual max fuel schedule totally depends on your fuel system. Yours will be higher without a fuel return, or with smaller injectors. On your first WOT pull, see how far the cursor goes to the right and adjust until it gets at least 80% across the table.
Fuel comp – I made most of my adjustments to the MAF table (manually to get in ballpark, then finished off using my tool http://djlab.com/uprev/maf.php) so the fuel table is mostly flat except for idle and cranking trims:
Timing main – Be sure to adjust the fuel schedle accordingly just like the fuel target table. Also, don’t run this high of timing unless you have knock headphones and know what to listen for. This map starts around 13deg at 3krpm and reaches 17deg at redline at 9psi (you should start with less!). Notice how it is smoothed out in the low-load areas so there isn’t a big jumps in timing in any direction. The key is no big jumps in values, because the ECU doesn’t like that and you will end up with instability. IMPORTANT If you run too low of timing in low load (left half) you can end up with a ‘danger to manifold’ situation as EGT’s will go thru the roof!:
Timing hi-det – copy and paste the main timing and subtract 4-5 from everything:
Cranking timing (A Table): Adding some timing at higher temps on the A table seems to help with warm starts.
Intake cams – RPM’s are scaled and cam advance is mostly stock, except extended for the new redline:
Idle targets (slight bump):
DTC disable – You should ONLY have to disable the two catalyst codes. If you throw any other codes, you’ve got a problem with the car or your tune. Misfire codes or codes of any other type should NOT occur with proper tuning and all sensors in place. In my year of struggling with this ***** of an ECU, I learned through trial and error the lower o2’s play a big role in closed loop operation. If you have them removed from the exhaust stream with non-foulers, steel wool, or simply tied up (like on the momentum kit) you’ll have issues dialing in your closed loop trims and may even throw bank range/lean/rich codes with an unstable A/F over time:
And finally, a 2nd and 3rd gear pull:
Member Credit: UpRev
Keep in mind that some ROM versions have parameters that other ROMs do not.
To find out what ROM should be used on a given vehicle, check the ECU part number with any of the UpRev software.
Then reference that number against the “ROM Support Matrix” which can be found in the UpRev directory or under Start >> All Programs >> UpRev >> ROM support matrix. The “MASTER” ROMs are the ROMs that overwrite any older versions. Use the master ROM for tuning.
X – Axis = BFS (theoretical injector PW), Y – Axis = RPM
This table is pretty straight forward. The values in the table tell the ECU what AFR target to try to run.
** Fuel targets tuning tips:
This table should be set to the AFR targets you WANT the ECU to run. Once the table is setup the way you want the car to run there should be no reason to adjust it again. You should be using the fuel compensation table or MAF curve to correct the injector pulse widths so that the ECU hits the targets you’re telling it to run. If you try to adjust this table to get the ECU to hit a desired AFR, but that AFR is not what you put in the target table then the ECU will trim to the targets you’re telling it to hit instead of what you’re tuning it to hit and it will likely throw bank rich/lean DTCs. Once you have the fuel compensation and MAF curve tuned so that the ECU is hitting the targets you’re telling it to hit, then adjusting the tune to run new targets is as simple as changing this table. It should hit new targets with little to no tuning once the other fuel parameters are dialed in.
X – Axis = UNKNOWN theoretical value; Y – Axis = RPM
There are 2 types of fuel compensation tables to be aware of depending on what ROM you are working with. Fuel Compensation Main is the primary table that every ROM uses.
Fuel Compensation Cold is only used on some of the newer vehicles. This table is only used when the vehicle is still in warm up stage. Once the coolant temperature gets up to 80 C, then the ECU will switch to the Main table.
For both tables, the values represent a change to base fuel schedule (BFS) as a %. 100 is no adjustment at all. Above 100 is adding injector PW, and below 100 is taking injector PW out.
** Fuel Compensation tuning tips:
This is one of the tables that you will use to correct the AFR so that the ECU hits the AFR targets that you are telling it to hit in the Fuel Target table. Tuning it is pretty straight forward. Increase the values to richen the AFR and decrease them to lean out the AFR.
K – Fuel Multiplier:
This is the multiplier that the ECU uses to determine the base fuel schedule (BFS). The BASIC formula is current MAF value times K value = BFS. Base fuel schedule is the theoretical pulse width that the ECU would have to run in order to maintain a 14.7 AFR. This is NOT the actual injector pulse width. The ECU will increase the injector pulse width based on the AFR target, fuel trims, other run time variable parameters, and environmental conditions.
There are a couple situations where you need to adjust the K value. You will need to decrease it when running larger injectors, and increase it when running a modified MAF sensor such as a PMAS sensor, UpRev calibrated sensor or larger MAF tube.
** K Fuel Multiplier tuning tips:
Regardless of if you’re adjusting the K value for injectors or MAF sensor, start by setting up an “AFR test” table in the
AFR targets. This table should have the same value everywhere except for the cranking and idle area. The RPM axis should also be adjusted so that with any increase in load and RPM the ECU will immediately start running the “flat” AFR target that you set. Here is an example of an AFR test table used to tune the K fuel multiplier:
With the AFR test map loaded start doing pulls and watching the AFR. Keep adjusting the K value until the AFR starts to get as close to the target as you can get it throughout the entire RPM range. It won’t be perfect, but get is as close as possible. Increasing the K will make it richer, decreasing the K will lean it out.
Once the K value is dialed in you can do the rest of the AFR tuning either with the fuel compensation table, or with the MAF table. The MAF table gives more precise adjustability, but it is not real time tunable so it takes longer to tune.
Single axis = sensor voltage. Axis is static (not adjustable).
Although the values in this table are raw (no real world conversion) they are directly related to grams per second of flow.
** MAF table tuning tips:
Tuning the table is very straight forward. Increasing the values will increase the injector PW and decreasing them will decrease the injector PW at the given voltage.
** PMAS tuning tips: The PMAS sensors are VERY inconsistent from one sensor to the next, especially in the low voltage areas (below ~2V). To start, you will need to load the PMAS pre tuned curve with the utility named “Select MAF Type” found under the fuel section of the ROM tree. This curve will get it into the ballpark, but it will still need a lot of work, especially in the low voltage areas (idle, cranking). You MUST dial the K value in under some load so that the MAF is running over 2V. Once you have the K value set for load so that the ECU is hitting the targets that you’re telling it to hit, you will have to make adjustments to the MAF curve so that the car will idle correctly. After that you will still have to make adjustments to the rest of the MAF curve to get your AFRs perfect.
** Helpful trick: If you’ve had to raise the MAF values so high that the table is maxed out you can give yourself some more head room by raising the K value via multiplying it and then multiply the entire MAF table by the inverse of that value. For example, multiply the K value by 1.2 (120%) and then multiply the ENTIRE MAF table by .8 (80%). The end result is that the vehicle will run exactly the same, but you will have more room to raise the MAF table.
Axis = coolant temp. Axis is static (not adjustable)
The cranking enrichment is very similar to the fuel compensation table. It will modify the BFS by a % based on the table lookup. Just like the fuel compensation table above 100 is adding fuel and below 100 is taking fuel out.
Cranking Minimum Pulse Width Mode 1 – 4:
Axis = coolant temp or RPM depending on table and ROM. Axis are static (not adjustable)
These tables vary from vehicle to vehicle, but they all have the same effect of setting a minimum pulse width during cranking. The actual injector pulse width during cranking does NOT match with what the ECU will log but can be verified with an oscilloscope.
** Cranking Enrichment tuning tips: One helpful tip for tuning cranking enrichment is to use the fuel compensation table. The fuel compensation table DOES still affect the injector PW during cranking. Watch the tracers for the fuel compensation table to see where it runs during cranking. It should be somewhere in the upper right hand corner. Set those cells to 100 and try to crank the engine. Try making adjustments in one direction or the other until you find the sweet spot. Once you have it cranking well, you can take the change from the fuel compensation table and use the change to multiply the cranking enrichment table and set the fuel compensation back to 100. Example: if the fuel comp had to be set to 82 for good cranking, multiply the cranking enrichment table by .82. If you can’t get it to lean out enough with the enrichment table also lower the “Cranking Minimum Pulse Width” tables.
If you’ve lowered the cranking enrichment by a significant amount and nothing is changing, verify that the injector pulse width IS actually changing. There is a good chance that it may be bottoming out on the minimum injector pulse width value, or possibly even the injector latency. You may need to lower the injector minimum pulse width value, or reduce the injector latency 14V offset to bring the latency down.
Helpful trick: If you’re still having a hard time during cranking you can also use the ETC table to make the throttle open during cranking. Watch the tracer on the ETC table to see where it is cranking. Raise the surrounding cells up by A LOT (usually has high as the highest points in the table). You may also have to adjust the RPM axis so that you do not get idle surge after the engine fires. Here is an example:
This table is also pretty straight forward. It will adjust the injector PW for a single cylinder across the board. Much the same as the other compensation tables, above 100 is adding fuel and below 100 takes fuel out.
Injector Minimum Pulse Width is the minimum injector pulse width that the ECU will ever run during normal operating conditions.
** Injector Minimum tuning tips:
The common reasons to change this parameter are: Vehicle is backfiring on deceleration fuel cut.
Idling or cranking too rich, but the K value, MAF table and fuel comp do not bring the injector PW down.
Fuel Target Lookup Delay:
This parameter is only available on a small number of ROMs, most of which are for V8 engines. It effects are really only noticeable on the V8 engine tunes. This parameter is a delay constant that is used to “smooth” the AFR lookup when the throttle is snapped open.
** Lookup delay tuning tips: Most often you will want to set this value to “0” when tuning a V8 vehicle. This becomes particularly critical when tuning for forced induction. If the value is left stock, then when the throttle is snapped open the AFR will slowly taper down to the rich setting and the engine will probably do some pinging while it’s still running the leaner targets leading to engine damage in the long run.
Adjust Injector Latency:
Injector latency in Nissan ECUs is modeled by a simple line (y = mX + B) where the 14V offset is the constant B and m is the slope of the line. This utility/wizard is used to calculate the injector latency for a given 14V offset and slope and tell you what the latency will be for any given voltage.
** Injector latency tuning tips: For injectors < 750cc you can usually just run the stock latency values. The best technique is to get the injector latency values from the injector manufacturer and try to match up the 14V and 8V data points. 14V is for normal operating conditions and 8V is how low the voltage may drop during cranking.
If you don’t have any latency values from the manufacturer you can adjust the slope by monitoring the A/F corrections, then load up the battery as much as possible by switching on the headlights, seat heaters, heater blower, etc… If the corrections go up, increase the slope, if the corrections drop, lower the slope. It’s not a perfect method, but it will get it close.
Axis = Engine RPM. Axis is static (not adjustable).
The ECU calculates the calculated load by dividing the current base fuel schedule into the value that is in this table for the given RPM.
** Calculated load tuning tips:
The calculated load will affect the way the AT reacts. It is particularly important that the calculated load read 100% at WOT on a forced induction AT vehicle so that the AT computer will run the correct line pressures. If you are not logging 100% at WOT, lower the values in this table at the given RPM.
X-Axis = Base Fuel Schedule; Y-Axis = Engine RPM
Nissan handles ignition timing a bit differently than what most tuners are used to working with. For max horse power with an internal combustion engine running gasoline you need the peak cylinder pressure to occur at 12-15 degrees after top dead center (ATDC). What most experienced tuners are used to seeing is a value that represents when the spark plug is fired in degrees before TDC.
What is seen in the Nissan table is a representation of the TIME that it takes for the cylinder pressure to reach peak pressure after the plug is fired. The ECU uses this “burn time” to calculate when the plug should be fired in order to get the peak cylinder pressure to occur at the desired 12-15 degrees. Because this table represents time, when it is fully tuned it tends to come out pretty flat, but the ECU will still run an increasing curve with RPM.
** Ignition Timing tuning tips:
There are a few different timing tables that Nissan ECUs employ.
Timing Main – This is the primary ignition table that is used under normal operation.
Timing High Det – This is the ignition table that the ECU will use if it hears too much noise on the knock sensor. Timing Cold – This table is only found in the newer Nissan ECUs and it is only used until the coolant temp gets up to 80 degrees C. At that point the ECU will switch over to the “Main” table.
Although there is no way to convert the table to DBTDC, adjustments are made in the same way as any typical timing table. Higher values yield more ignition advance. The only proper way to tune ignition advance is with the assistance of a dynamometer so that you can verify that the added advance is adding power and not just stress on the engine internals.
When tuning any vehicle it is good practice to make sure that the ignition table is not being accessed outside of the boundaries of the table. The easiest way to do this is to use the “map tracing” feature and make sure that the crosshairs are not moving outside of the table during a WOT run. If the crosshair does go outside of the table, then the RPM and/or BFS axis should be adjusted so that this does not happen.
On the newer vehicles equipped with VVEL, the ignition advance algorithms rely heavily on knock sensor feedback. In many cases it is not possible to make the ECU run more advance because as soon as you increase the values it hears something on the knock sensor and adjusts accordingly. For VVEL vehicles you WILL still have to pull timing for forced induction applications so that it won’t ping before it has a chance to do any learning. However for NA applications about all you can do is pull back the high spots and smooth the table out. The ECU will do the rest on it’s own. In our testing we found that pulling LARGE values from the main ignition table caused a LARGE power drop on the first run, but after a few consecutive runs the ECU would advance the ignition right back to where it was before based on knock sensor feedback.
For forced induction applications it is good practice to set the entire “High Det” table to very low values (like 45), on vehicles that support the high det table. This way, if the ECU does switch into high det mode, the ignition will fall flat on it’s face and you will know there is something wrong without having to check the high det flag in the logger. You will want to put the table back to reasonable value when you are done tuning, but make sure that all the values are LOWER than the values in the “Main” table so that if it does switch over it will run less advance. If you are listening to the knock sensor for knock, then you should hear the pings well before the ECU switches over.
For the earlier version ROM files (most pre 2009) there is a parameter that can be logged via the ROM editor called
“knock strength” which is basically a knock counter. Every time the ECU detects a knock event, the counter will jump. The amount of the jump will depend on what ROM is being run and how severe the knock was. Since the counter moves by different amounts for different ROMs it is impossible to say what a good or bad number is. What you want to look for are multiple jumps in the counter one after another. The knock counter is bound to move around a little, even on a stock car with stock tune, but if you’re seeing jump after jump through a WOT run, then the advance is surely too aggressive.
For forced induction it is HIGHLY recommended that a knock listening device be used. Although there are knock parameters that can be logged we do not recommend relying on these parameters. There are times when you will hear pinging on a set of headphones or with a knock amp before the ECU picks anything up. There is a PDF at www.UpRev.com under the support section about how to build your own low cost set of knock headphones that utilize the stock knock sensor(s).
Ignition Timing Knock Windows:
** These tables are only available to pro tuners. The X and Y axis are shared with the ignition tables.
The knock window tells the ECU where to run an aggressive knock control algorithm. 1 turns on the aggressive algorithm on and 0 turns it off. Even when the ECU is running in an area where the knock window is off the ECU will still listen to the knock sensor and do some timing control, but it’s much less aggressive compared to when it’s running in an area where the window is set to 1.
Flow Target Modifier
X – Axis = Turbo Volatility (largely effected by throttle, slight effect by temperature); Y – Axis = Flow in G/Sec
This is the primary table that is used to raise the flow target. The values in this table control how fast the ECU’s flow target tries to raise up to meet a theoretical flow value calculated by the ECU. This flow target is what is going to tell the ECU if it needs to run more or less boost pressure to meet the flow target.
Boost Sol Table
X – Axis = Boost Pressure; Y – Axis = Flow Delta (below target yields lower values, above yields higher) The values in this table relate directly to the boost control solenoid duty cycle.
Flow Delta Sensitivity
X – Axis = Base Fuel Schedule; Y – Axis = Engine RPM
This table will change the sensitivity of the X axis on the Boost Sol Table. Higher values will make the table X axis more sensitive to flow deviations and force a bigger change in boost solenoid reaction.
Boost Control Tuning Tips:
The first thing to be aware of is that the ECU is trying to hit a theoretical “flow target” not a manifold air pressure target like most tuners are used to. By tuning the flow target you can still get flat stabile boost with the factory algorithms. Assuming you need to run more boost than the current settings, the first thing to do is to raise the entire “Target Flow Modifier” table in order to bring the flow target up. You will see in the stock table that there is a very high resolution area from 7812 to 9375 of the Y-axis. This section is the “boost start” section of the map where the ECU “catches” the boost as it ramps up and starts to run the boost control solenoid. With higher values in the table you will have to do some runs and find out new point where the boost control solenoid SHOULD be starting to activate. Take note of the Y-axis value in the log for this table at that point and rescale the Y-axis so that the “start/catch” point is right at the beginning of the high resolution part of this table. See the comparison below of a stock car w/ stock tune on the left and ~17PSI tune on the right. Notice the difference not only in table values, but also the Y axis.
With the “Flow Target Modifier” setup and the Y-axis rescaled for the new start boost point you will need to start smoothing the flow target modifier table to flatten out the boost curve.
There is a good chance that the boost is also going to become unstable at higher RPMs with the higher boost settings. To force the boost control solenoid to react faster to target flow deviations you will need to increase the “Flow Delta Sensitivity” table in the given area of concern. That will force the Y axis of the Solenoid table to be more sensitive and in turn cause quicker response. See the example tuned table below. Stock is on the left, tuned is on the right.
Rev and Speed Limits are pretty straight forward. What you enter is what you get.
Rev and Speed Limits tuning tip: One problem that people seem to have over and over again is not raising the “Throttle Cut Rev Limit” when trying to run a higher rev limit. It is best practice to set the throttle cut rev limit at least 100 RPMs BELOW the fuel cut. It’s much safer and better for the engine to use the throttle cut instead of bouncing off of the fuel cut.
X-Axis = Base Fuel Schedule; Y-Axis = Engine RPM
Cam advance is straight forward. What is entered in the table is what the ECU will attempt to run.
X-Axis = Unknown theoretical value (follows accelerator, but not perfectly); Y-Axis = Engine RPM The values in this table affect how aggressive the throttle response is.
** Electronic Throttle tuning tips: Tuning this table is a matter of trial and error. Usually raising the values will cause more throttle opening, but it is a balancing act, if the values are too high the throttle may become unstable. Here at
UpRev we’ve actually discovered quite a bit more about how the electronic throttle control works. Expect to see more tables for throttle control very soon.
Estimated Torque Delivered:
X-Axis = Base Fuel Schedule; Y-Axis = Engine RPM. Both are static (not adjustable)
Although this table is present in all ROMs, it is ONLY used for automatic transmission vehicles. The values in the table are the estimated torque that will be delivered at the given RPM and load (BFS). The ECU sends this value to the AT computer so that the AT computer can run the appropriate line pressure.
** Estimated Torque Delivered tuning tips:
This table is particularly critical for forced induction vehicles with automatic transmission. When running larger injectors the entire BFS axis gets skewed due to the reduced injector pulse widths for the same flow. The entire table should be shifted to the left so that the AT expects more torque at lower BFS. Basically you just increase the values in this table wherever the AT feels squishy. You can also verify that the transmission is not slipping by logging the “AT Slip” parameter in the ROM editor. This parameter should stabilize once the torque converter locks up. If you’re running above TC lock up and this parameter starts to waiver that is an indication that the clutches in the AT are slipping.
Crank Drag A, B, and C: These tables represent the amount of drag on the crank. Increasing the values in this table will make it harder for the ECU to trip the misfire DTCs. If you set all the tables to the maximum value the ECU will never trip the misfire DTCs.
Axis = Engine coolant temperature. Axis is static (not adjustable).
Idle targets are very straight forward. The ECU will try to idle at the set RPM for the given coolant temp.
Export & Import All Tune Data: These utilities are used to copy all the tune data from one ROM to another.
Export all tune data will save all of the tune data from the ROM file where the utility was activated. This includes all the table values + axis and all other operational values.
Import all tune data will copy everything that was exported into the new ROM where it was activated.
** Export & Import All Tune Data tuning tip: These utilities currently do NOT copy the DTC settings, so if you’re copying a tune that requires some DTCs to be disabled, you will need to manually disable those DTCs in the new ROM.
Load & Save RTT Files: These utilizes are used to copy the RTT data from one map to another. The data saved in the RTT file is ONLY the data that is real time tunable (such as ignition tables, fuel tables, K value, and rev/speed limits). Any static parameters such as axis will NOT be saved/copied.
ETC on/off: This setting disables the torque management aspects of the electronic throttle control. Turning this setting off will have the effect of making the throttle linier. The ECU will try to run the throttle plate % at whatever the accelerator % is.
** ETC on/off tuning tips: Turning this setting off will also disable the cruise control. Most of the feedback about disabling this setting is that the throttle is far too touchy, even for race drivers. Chances are you will never turn it off, but it is there if you’d like to try.
** This setting is only available to pro tuners.
NATS stands for Nissan Anti Theft System. Turning this setting off will completely bypass the NATS code inside of the ECU. You will be able to start the engine without having a key that has been married to the vehicle. The setting is intended for testing purposes and for race cars where you may need to swap out ECUs regularly.
UpRev ROM specific parameters (these can only be logged via the ROM editor):
– Target Air/Fuel Ratio: The AFR that the ECU is attempting to run. Should coincide with the AFR table lookup + lookup delay.
– AFR (only available on vehicles that are equipped with a WB O2 sensor from the factory): The AFR is calculated based on the A/F Sensor voltage which is referenced to a table in the software. It is NOT returned directly from the ECU. The reading SHOULD be close, but checking against another WB O2 sensor is never a bad idea.
– Knock Strength (only available on earlier, pre 2009, vehicles): The value will jump up every time there is a knock event. The amount of jump will depend on the ROM that is being run and the severity of the knock event.
– High Det Flag (only available on earlier, pre 2009, vehicles): This parameter will switch from 0 to 1 when the ECU has detected too many knock events in a given amount of time. When it changes to 1 the ECU will run the high det timing table.
– Injector Duty Cycle: The injector duty cycle is calculated directly from the engine speed and injector pulse width. The ECU CAN report injector pulse widths that give a duty cycle greater than 100% even though that just means the injectors are wide open.
– AT slip: This parameter is derived from a division of the engine speed and vehicle speed. The value should stabilize anytime the transmission is in gear and the torque converter is locked up. If this value starts to waiver
at WOT after TC lockup, then the clutches inside the transmission are slipping.
Nissan Standard parameters: **There are MANY more standard Nissan parameters that will not be described here. Most are self explanatory.
– A/F correction (B1/B2) = Actual real time fuel trims. Above 100% is adding fuel, below 100% is taking fuel out.
– Base Fuel Schedule (BFS) = The theoretical injector pulse width that the ECU would have to run in order to maintain a 14.7 AFR. This is NOT the actual pulse width which will be different depending on the target AFR and fuel trims.
It is assumed that if you’re running forced induction you’re also running a modified MAF sensor.
First start by setting up a base tune with AFR test map. The AFR target table should have the same target in the entire table except for the cranking and idle areas. The RPM axis should be rescaled so that any rise in RPM/load off of idle will cause the ECU to go to the flat AFR setting. This will make tuning the K value much easier since the ECU will be targeting the same AFR target for any throttle input. See example AFR test table below:
If you are running LARGE injectors (>750cc) you will probably also need to setup the injector latencies based off of the data provided by the manufacturer. For most injectors < 750cc the stock latencies will be close enough with no need to adjust.
If you are running injectors > 600cc, you will probably need to reduce the Minimum Injector Pulse Width value. You can start by simply cutting it in half.
Setup the Ignition Main table with some low/safe numbers so that the engine does not ping when testing the AFR and tuning ing the K Fuel Multiplier. If the ECU utilizes the High Det table, also set that entire table to ~45 so if the ECU does switch over during testing it will be safe and also obvious that something went wrong.
If the engine is built for higher RPMs, rescale the RPM axis of the fuel and ignition tables accordingly.
Flash the starting map onto the ECU. Activate real time tuning for map 1 and start logging and tracing in the ROM editor. With the K Fuel Multiplier and AFR target table open start the engine. It’s probably not going to idle very well, especially if a PMAS MAF sensor is installed. Keep the engine running by giving it some gas if it wants to die.
Do a dyno run while verifying that the AFR target tracer is moving into the safe/flat AFR targets that you have set.
** Since the factory wide band AFR sensors were never intended for forced induction, the range on most of them only goes down to ~11.5 and at those readings they are not the most accurate, they are only in the ball park. It is recommended that the AFR tuning be done with the dyno’s AFR sensor.
Check the AFR from the run and adjust the K Fuel Multiplier as needed to get the AFR as close to the set target as possible throughout the entire RPM range. It may go lean or rich in the higher RPMs. If it does, get the AFR as close to the target throughout as much as the RPM range as possible.
Once the K value is set it should not be changed again.
After tuning the K value, tune the idle area of the MAF table. Simply log the MAF V and adjust the corresponding area of the MAF curve.
Once it’s idling well, start adjusting the MAF curve for partial throttle and then for any areas of the RPM range where the
AFR is not hitting the target. Just log the engine RPM and MAF voltage to figure out what V the MAF is at for any given RPM during the run. Keep in mind that it does take some time for the flow to get from the sensor through the cylinders and out to the exhaust, so you usually have to make adjustments 1-3 cells earlier in the table depending on how fast the engine is revving through the pull. The MAF may peak around peak torque and the engine may start to lean out at higher RPMs. In these cases you’ll have to use the fuel compensation table to add more fuel to the upper RPMs.
Once the AFRs are hitting the targets throughout the RPM range you can load a more suitable AFR target table that doesn’t run rich all the time. I recommend setting up the BFS axis on the AFR target table so that the middle of the axis is close to where the engine is starting to build boost. That way you will have ~1/2 of the table for vacuum operation and the last few columns for boost. See my example final AFR table below:
After the AFRs are all dialed in you can start adding ignition advance to the Main ignition table until you have optimum ignition advance. Although there is a “knock strength” parameter that can be logged in the ROM editor, it is highly advised that you use a knock headphone amplifier to listen for knocking. The knock strength is not always accurate and it may very well miss some pinging that would lead to engine damage over time.