Home › Tuning › HP Tuners, step by step
LS tuning with HP Tuners, step by step
The order we tune an LS in, from reading the stock file to the wide-open pass: which tables to change, what to log, the numbers we aim for, and when to move on to the next step. Written for VCM Suite on Gen III (P01/P59) and Gen IV (E38/E67) computers, with notes for Gen V (E92).
Use at your own risk. What we recommend here is based on what we've seen work across our own builds, our friends' builds and the wider LS community, reviewed by our lead tuner (20 years of LS tuning). Every engine, fuel, part and tune combination is different, so it won't always work the same on yours. Start conservative, log everything, and never go wide open until you've confirmed the checks on our Don't blow it up page. When in doubt, pay a professional tuner.
- One change at a time. Make one change, log it, and look at the log before the next one.
- Write Calibration by default. Use Write Entire only when you change the operating system or a setting that lives in it. Keep a battery charger on the car for every write; a Gen III computer can be bricked by a failed write.
- Tune in lambda. For reference, stoich is about 14.7:1 on straight gasoline, about 14.1:1 on E10 and about 9.8:1 on E85. Set the stoich value to the fuel that is actually in the tank.
- Fuel trims: within ±5% is the goal, ±10% is acceptable.
- Never zero the knock tables. Prove it is false knock first, then desensitize only the area where it happens.
- Torque management: on a stock transmission leave it alone; on a built one scale it back, never to zero.
- Injector duty: work below 80–85%; about 90% is where you stop and size up.
- Table names move between operating systems and VCM Editor versions. If a path here doesn't match your file, search for the table name (Ctrl+N) instead of guessing.
We may earn a commission when you buy through links on this page.
Before you start
00-1 Get an HP Tuners interface and stabilize battery voltage before any write
Keep battery voltage above 12.0V through every write so a mid-flash voltage loss never drops communication or bricks the PCM.
Targets
| What | Target | When |
|---|---|---|
| Battery voltage during write | > 12.0V | entire duration of the write |
| Charger output | minimum 10 amps | before and during every write |
Do this
- Connect an HP Tuners MPVI-series interface (MPVI3 is current) to the vehicle's OBD-II port and your laptop.
- Attach a dedicated battery charger set to a minimum of 10 amps and confirm voltage stays above 12.0V for the whole write.
Common mistakes
- Attempting a write without the 10+ amp battery charger attached.
- Never flash with the key in a marginal battery on a cold morning. If the write fails partway, stop and restore voltage before retrying.
- Voltage sagged or write failed partway: stop and restore above 12.0V with the charger before retrying.
Using EFILive? EFILive is a comparable GM flashing/tuning platform; HP Tuners is used here throughout.
00-2 Plan how your wideband O2 gets into VCM Scanner
Decide now how the wideband O2 signal reaches the logs (analog into ProLink+, CAN/OBD-II passthrough, or the P01 EGR input circuit) and tune in lambda, so every fueling change has real AFR feedback before tuning begins.
What to log in VCM Scanner
Wideband AFR/lambda via ProLink+ analog 0-5V inputActual measured air-fuel ratio is the feedback loop for every fueling change.AEM 30-0334 OBD-II wideband channelCAN/OBD-II passthrough wideband path on CAN-based vehicles.
Targets
| What | Target | When |
|---|---|---|
| Tuning scale | lambda 1.0 = stoich | all fuels (gasoline, E10, E85); same targets work on any fuel |
Do this
- Install a wideband O2 sensor (e.g., AEM X-Series 30-0334 OBDII gauge, validated to work with HP Tuners VCM Suite) in the exhaust before any tuning.
- Pick the logging path: (a) analog 0-5V wired into a ProLink+ on the MPVI, (b) AEM 30-0334 OBD-II pass-through on a CAN-based vehicle, or (c) on a P01 PCM, the EGR pintle-position input circuit in VCM Editor 5.0.4.
- Tune in lambda in VCM Scanner, not gasoline AFR, so the same targets work on any fuel.
Check before you move on
- Confirm the exact wideband input path on YOUR file before wiring; editor menus vary by OS version.
Common mistakes
- Trying to tune fueling by ear or by stock narrowbands alone — the sources call this doing it wrong.
00-3 Read the vehicle, license it, and save a pristine stock file plus a working copy
Pull the stock read file, license the VIN to the interface with credits, and keep the original untouched while editing only a working copy — a mistake is recoverable only if the pristine original still exists.
E92
Do this
- In VCM Editor, pull a read file from the vehicle. Reading uses no credits.
- Apply universal credits to license the VIN to your interface (Help > Resync Interface shows credits on the device and used).
- Save the read file as the stock file and never edit it; immediately Save As a working file and make all changes on the copy.
Check before you move on
- Check the support vehicle list before buying credits: if HP Tuners does not support your controller/OS, the license is useless.
Common mistakes
- Editing the original read file instead of a working copy — without the untouched original, a bad change is not recoverable.
00-4 Disable VATS (Vehicle Anti-Theft) so the swapped engine will start and run
Turn off VATS (the theft system) so the swapped ECM is allowed to command the injectors to pulse and the engine starts and runs.
P01, P59, E38, E67, E92
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | System > General > Security > VATS Control | Gen III VATS kill switch — must be set to None so the ECM pulses the injectors without the theft handshake. | Set to None (from Serial or PWM), then Write Entire. |
| E38/E67/E92 | OS > VATS Patch 1 / VATS Patch 2 (E38/E67/E92) | OS-level VATS disable switches on Gen IV/V ECMs. | Disable both patches; as backup set VATS DTCs (P0513, P0633, P1629, P1630/P1631/P1632) to No Error Reported; then Write Entire. |
Do this
- Gen III P01/P59: go to System > General > Security and set VATS Control to None (Serial or PWM otherwise), then Write Entire.
- E38/E67: open the OS tab (Edit > View > Advanced if needed) and disable the two VATS patches there; also set the VATS-related DTCs (P0513, P0633, P1629, P1630/P1631/P1632) to No Error Reported as backup; then Write Entire.
- E92 (Gen V): Edit > View > Advanced, OS tab > set both VATS switches to Disabled, System tab > starter diagnostics to Disabled, then Write Entire.
If it isn't right yet, try this, then this
- If the engine cranks but dies with no injector pulse after the write, re-check that all VATS switches and VATS DTCs were actually disabled and that a Write Entire completed. Worked if: Engine starts and runs after the corrected rewrite
Using EFILive? EFILive offers an equivalent VATS 'None' option on Gen III PCMs; the goal is identical (ECM allowed to pulse injectors without the theft handshake).
00-5 Understand Write Entire vs Write Calibration and OS/segment swaps
Default to Write Calibration for normal tuning changes and reserve Write Entire for OS-level changes (VATS patches, OS changes, segment swaps) — a failed full write can brick a Gen III PCM, which has no protected bootloader.
P01, P59, E38, E67, E92
Before this step:
- Battery charger from TW-00-1 attached and holding above 12.0V before any Write Entire (a full write takes several minutes).
Do this
- Default to Write Calibration for normal tuning changes (fuel, spark, airflow, speedo).
- Use Write Entire only for OS-tab changes (VATS patches), operating system changes, or segment swaps.
- Before any segment or OS swap on a Gen III PCM, confirm the donor segments match your hardware (trans, fuel system); on Gen IV ECMs, base OS changes may need GM's Service Programming System rather than a full flash.
Check before you move on
- Before any Gen III segment or OS swap, confirm the donor segments match your hardware (trans, fuel system) — mismatched segments can leave the vehicle inoperable.
- Write Entire takes several minutes and is the one that demands the battery charger from TW-00-1.
Common mistakes
- Using Write Entire for everyday fuel/spark/airflow/speedo changes — default to Write Calibration unless you absolutely have to.
Using EFILive? EFILive on Gen III can also apply a 'full flash' base calibration from a similarly equipped production vehicle.
1. Set the known values
01-1 Enter real injector data before touching any fuel table
Enter the injector manufacturer's real characterization (flow rate, offset, short pulse, minimum pulse width) for YOUR injectors — injector data is the foundation the whole tune is built on, and you never tune around wrong injector data.
P01, P59, E38, E67
Before this step:
- Wideband O2 logging path planned (TW-00-2) so fueling changes can be verified against real AFR feedback.
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Fuel > Flow Rate vs kPa | Injector flow rate vs manifold pressure; sets fueling per pressure. | Enter maker's data: flat for vacuum-referenced regulators (e.g. 25.2 lb/hr on a 2002 5.3 truck), sloped for deadhead rails (e.g. 24.5 to 27.1 on a 2005 Sierra). |
| P01/P59 | Engine > Fuel > Offset vs Volts vs Vacuum (Gen III) | Corrects the injector's opening delay vs battery voltage and vacuum. | Enter maker's offset data. |
| E38/E67 | Engine > Fuel > Offset vs Press vs IGNV (Gen IV) | 2007+ naming for the same opening-delay correction (offset vs pressure vs ignition voltage). | Enter maker's offset data. |
| E38/E67 | Engine > Fuel > Flow Rate vs Press (Gen IV) | 2007+ naming for flow rate vs pressure (values referenced to Delta MAP; 400 kPa in a Gen IV file equals 0 kPa in a Gen III file). | Enter maker's flow data. |
| E38/E67 | Engine > Fuel > Short Pulse Adder / Short Pulse Limit | Compensates fuel delivery for very short pulse widths. | Enter maker's short-pulse data. |
| E38/E67 | Engine > Fuel > Min Injector Pulse | A clip: the minimum pulse width the ECM will command. | Enter maker's minimum pulse width. |
| VCM Editor (all controllers) | Tools > Unit Conversion > Fuel Injector Calc | Built-in tool that rescales injector flow ratings between reference pressures. | Scale Ford-rated flows (39.15 psi ratings) to GM's 58 psi rail. |
Targets
| What | Target | When |
|---|---|---|
| Example flat flow rate | 25.2 lb/hr | 2002 5.3 truck, vacuum-referenced regulator |
| Example sloped flow rate | 24.5 to 27.1 (lb/hr) | 2005 Sierra deadhead rails |
| Ford injector reference pressure | 39.15 psi | Ford-rated flows must be rescaled to GM's 58 psi rail |
Do this
- Find the injector maker's HP Tuners data sheet (Fuel Injector Clinic publishes per-part-number HP Tuners pages; Injector Dynamics ships spreadsheets; Ford Performance data is posted on the HP Tuners forum).
- Gen III: enter Engine > Fuel > Flow Rate vs kPa (flat for vacuum-referenced regulators, e.g. 25.2 lb/hr on a 2002 5.3 truck; sloped for deadhead rails, e.g. 24.5 to 27.1 on a 2005 Sierra), plus Offset vs Volts vs Vacuum.
- Gen IV (2007+ naming): enter Offset vs Press vs IGNV, Flow Rate vs Press, Short Pulse Limit, Short Pulse Adder, and Min Injector Pulse.
- Use VCM Editor > Tools > Unit Conversion > Fuel Injector Calc to scale Ford-rated flows (e.g. 39.15 psi ratings) to your rail pressure.
From real tunes
In a modified 2003 Sierra LM7 / 4L60E tune compared with a stock 2004 LM7 1500 file on the same operating system (12587603), the injector flow table went from about 3.09 g/s to 4.16 g/s (about 35% more flow, a bigger injector), and the minimum pulse width and small-pulse values changed with it. Every injector table moves together when you change injectors; changing only one is a common mistake.
Two more real data points: Bosch 210 lb/hr injectors flow 210 lb/hr at 43.5 psi (about 240 at 58 psi) with 0.45 ms dead time at 14 V, and need a 40-micron or finer pre-filter. Decapped factory LM7 25 lb injectors (Delphi 25320288) flow about 55 lb/hr at 43.5 psi (about 64 at 58 psi); flow-test every one before you trust them.
If it isn't right yet, try this, then this
- If the injector maker has no HP Tuners-specific data, a same-part-number donor file from a production vehicle using those injectors is the next best source. Worked if: Injector characterization matches your part number
Check before you move on
- Confirm flow units match (lb/hr vs g/s) before pasting.
Common mistakes
- Tuning around wrong injector data instead of entering the maker's real characterization.
Using EFILive? In EFILive the equivalent injector flow table on Gen III/IV is B4001 (flow values in a Gen IV file are referenced to Delta MAP, so 400 kPa in a Gen IV file equals 0 kPa in a Gen III file).
01-2 Set engine displacement and the correct stoichiometric AFR for your fuel
Set cylinder volume to match the real displacement (per cylinder = displacement/8, changed if bored/stroked) and set stoich AFR to the fuel actually in the tank — a 4% stoich error shifts every fueling calculation by 4%.
Before this step:
- Real injector data entered (TW-01-1) — all fueling math builds on it.
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
Engine > General > Type | Engine type designation; fuel and airflow models scale from it. | Set to match the engine (e.g. OHV 6.0L). | |
Engine > General > Size > Cylinder Volume | Per-cylinder displacement; fuel and airflow models scale with cylinder volume. | Set to displacement/8 (a 370 ci stroker = 46.25 ci per cylinder); change it if the engine is bored or stroked. | |
Engine > Fuel > General > Stoich AFR | The stoichiometric AFR the ECM treats as 'correct' fueling for the fuel in the tank. | 14.7 for pure gasoline; 14.08 for E10 pump gas. |
Targets
| What | Target | When |
|---|---|---|
| Cylinder volume | 46.25 ci per cylinder | 370 ci stroker: displacement/8 |
| Stoich AFR | 14.7 | pure gasoline |
| Stoich AFR | 14.08 | E10 pump gas |
| Stoich error effect | ~4% shift in every fueling calculation | running 14.7 stoich on E10, i.e. roughly 4% off |
Do this
- Set Engine > General > Type (e.g. OHV 6.0L) and Engine > General > Size > Cylinder Volume to displacement / 8 (a 370 ci stroker = 46.25 ci per cylinder); change it if the engine is bored or stroked.
- Set Engine > Fuel > General > Stoich AFR to the fuel you will actually run: 14.7 for pure gasoline, 14.08 for E10 pump gas.
Check before you move on
- If you switch fuels later (e.g. to E85), stoich must change with it — see TW-01-7.
Common mistakes
- Leaving stoich at 14.7 while running E10 pump gas — that ~4% error shifts every fueling calculation.
01-3 Enter gear ratio, tire size, and speedometer calibration
Enter the real gear ratio and tire size and verify the VSS calibration so the speedometer, shift schedules, and torque management are all correct.
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
Speedo > Hardware > VSS Pulses per Rev – Trans | Transmission reluctor pulses per driveshaft revolution. | Verify it matches your transmission's reluctor; wrong values = wrong speedo and shift points. | |
Speedo > Sensor Calibration > VSS Pulses per Mile | Speed-sensor pulses per mile of travel. | Verify it matches your transmission's reluctor; wrong values = wrong speedo and shift points. |
Do this
- Use the gear/tire wizard to enter the actual rear gear ratio and tire size (use Tools > unit conversion if you only know tire diameter).
- Verify Speedo > Hardware > VSS Pulses per Rev – Trans and Speedo > Sensor Calibration > VSS Pulses per Mile match your transmission's reluctor.
Check before you move on
- Measure the tire or read its true diameter; a '33-inch' tire is rarely exactly 33.0 inches.
01-4 Set electric fan control and the rev limiter
Give the swap radiator real electric-fan control and set a sane rev limiter for the valvetrain before the engine ever sees load.
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
System > Fans (fan on/off temps) | Electric fan on/off temperature thresholds. | Enable the electric fans; a common starting point is fans on near 196 F. | |
System > A/C > Fan #2 enable | Ties fan #2 to A/C request. | Enable under the A/C tab if the harness runs fan #2 off A/C request. | |
Engine > Fuel > Cutoff > Cutoff RPM vs Gear | Gear-based fuel cutoff — the rev limiter per gear. | Set sane values for the valvetrain (stock Park/Neutral is often 4000). | |
Engine > Fuel > Cutoff, DFCO > RPM Limits > Cutoff > In-Gear | In-gear fuel cutoff and resume RPMs, including DFCO limits. | Set cutoff/resume values for the valvetrain. | |
Engine > Fuel > Cutoff > Resume > Bad VSS Resume / Bad P/N Resume | Resume limits used under fault conditions. | Check and set alongside the main limiter. |
Targets
| What | Target | When |
|---|---|---|
| Fan-on starting point | ~196 F | swap radiator baseline |
| Stock Park/Neutral limiter | 4000 | stock P/N cutoff value |
Do this
- Enable the electric fans and set on/off temperatures (a common starting point is fans on near 196 F), then enable fan #2 under the A/C tab if the harness runs it off A/C request.
- Set Engine > Fuel > Cutoff > Cutoff RPM vs Gear (Normal), plus the Park/Neutral limiter (stock is often 4000), and the DFCO > RPM Limits > Cutoff > In-Gear cutoff/resume values; also check Bad VSS Resume and Bad P/N Resume.
Check before you move on
- Verify fan operation with the engine running and A/C on before driving; a miswired fan will not show up in the tune.
01-5 Delete what the swap doesn't have: DOD/AFM, EGR, EVAP, rear O2s — and set open-loop/PE/COT
Turn off the systems the swap doesn't have — DOD/AFM, EGR, EVAP, rear O2s, catalyst tests — set their DTCs to No Error Reported, and configure open-loop/PE/COT for the exhaust actually on the vehicle.
P01, P59, E38, E67, E92
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67/E92 | Engine > Fuel > COT, Lean Cruise > DOD (Disable) | Displacement-on-demand enable/disable (Gen IV+ only; skip on Gen III). OS/editor naming varies: 'COT, Lean Cruise' vs 'Lean/Fuel-Saving'. | Set to Disable. |
| E38/E67/E92 | Engine > Fuel > DOD Disable by Gear | Backup per-gear DOD disable. | Disable as backup; set DOD DTCs P3400–P3497 to No Error Reported. |
Engine > Spark > EGR Spark Adder (zero) | Spark timing adder for EGR flow. | Zero it — no EGR valve means no EGR flow and leftover adders skew timing. | |
Engine Diagnostics > DTCs (P3400–P3497, EGR, EVAP, post-O2, catalyst) | Per-code error reporting mode. | Set to No Error Reported (3 - No error reported) and untick SES enable. | |
Engine Diag > Exhaust > Post O2 Test / Catalyst Test (disable) | Diagnostic monitors for rear O2s and catalysts. | Disable both on a swap without them. | |
Engine > Fuel > Open & Closed Loop > Closed Loop Enable (283 F) | Coolant temperature threshold for closed-loop fueling. | Set to 283 F to force open loop on cat-less/open exhaust. | |
Engine > Fuel > Open & Closed Loop > LTFT (disable; 131 F → 284) | Long-term fuel trim learning enable range. | Disable by setting 131 F to 284 — LTFT 'learns bad habits' on a swap. | |
Engine > Fuel > Power Enrich > PE Delay (0) | Delay before power enrichment engages. | From stock 2 s to 0. | |
Engine > Fuel > COT (disable) | Catalyst overtemp enrichment. | Disable when cat-less — it otherwise enriches for cats you no longer have and will cause it to run rich. |
Targets
| What | Target | When |
|---|---|---|
| Closed Loop Enable | 283 F | cat-less/open exhaust: forces open loop |
| LTFT disable | 131 F to 284 | swap baseline: prevents LTFT learning bad habits |
| PE delay | 0 | from stock 2 s |
Do this
- Disable DOD/AFM: Engine > Fuel > COT, Lean Cruise (or Lean/Fuel-Saving on some OS) > DOD switch to Disable, plus Disable-by-Gear as backup; set DOD DTCs P3400–P3497 to No Error Reported.
- Delete EGR: zero the EGR spark adder in Engine > Spark and set EGR DTCs to No Error Reported (the old Engine > General EGR switch is gone in VCM Editor 5.0.4).
- Delete EVAP and rear O2s: set EVAP, post-O2, O2 heater/slow-response/low-voltage, and catalyst-test DTCs to No Error Reported (3 - No error reported), untick SES enable, and disable the Post O2 test and Catalyst test under Engine Diag > Exhaust.
- For cat-less/open exhaust: force open loop by setting Closed Loop Enable to 283 F, disable LTFT (set 131 F to 284), turn STFT open-loop off, set PE delay from stock 2 s to 0, and disable COT.
Common mistakes
- Looking for the EGR on/off switch under Engine > General in VCM Editor 5.0.4 — The EGR on/off switch under Engine > General exists only in older VCM Editor versions, so zero the EGR spark adder instead.
- If your state or use case requires emissions equipment, do not proceed with the emissions deletes in this step. Emissions-delete legality varies by state and use; this walkthrough covers the tuning mechanics, not legal advice.
01-6 Decide MAF vs speed density and fail the MAF if you go SD
Pick one airflow model — MAF or speed density — and if you delete the MAF, fail it explicitly in diagnostics while leaving its DTCs reporting on 4L60E vehicles.
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
Engine Diagnostics > Airflow > Mass Airflow Sensor > MAF Frequency Fail High (0 Hz) | Forces the ECM to ignore the (missing) MAF and run the VE table. | Set to 0 Hz for speed density. | |
Engine Diagnostics > DTCs > P0101 / P0102 / P0103 (Fail on first, MIL unchecked) | MAF diagnostic error modes. | Fail on First Error, uncheck the MIL — but leave the DTCs reporting (NOT No Error Reported) on 4L60E vehicles. |
Targets
| What | Target | When |
|---|---|---|
| MAF Frequency Fail High | 0 Hz | speed-density setup: forces the ECM onto the VE table |
Do this
- If running speed density: set Engine Diag > Airflow > Mass Airflow Sensor > MAF Frequency Fail High to 0 Hz.
- Set P0101/P0102/P0103 to Fail on First Error and uncheck the MIL — but leave the DTCs reporting (do NOT set No Error Reported) on 4L60E vehicles.
From real tunes
If you go speed density for boost, you need a MAP sensor that reads it. Scaling values we use for GM MAP sensors in HP Tuners (linear / offset, kPa):
| Sensor | GM part | Linear | Offset |
|---|---|---|---|
| 1 bar | 16137039 | 94.43 | 10.34 |
| 2 bar | 16040609 | 207.66 | 9.00 |
| 2.5 bar | — | 244.68 | 10.21 |
| 3 bar | 12223861 | 329.41 | -6.35 |
| 3.3 bar | — | 333.33 | 33.33 |
Pinout on these sensors: pin 1 is 5 V reference, pin 2 is signal, pin 3 is ground. A 3-bar sensor reads to about 29 psi of boost at sea level. Boosted P01 and P59 builds commonly run a 2-bar or 3-bar speed density operating system.
Check before you move on
- Speed-density tuning shifts the work to the VE table; that is Phase 2+ work, not a known-values entry.
Common mistakes
- Running speed density with a live MAF (or vice versa) — pick one airflow model, because a live MAF corrupts speed-density fueling.
01-7 Match the tune to your fuel: pump gas, E85 on a non-flex OS, or true flex fuel
Make stoich AFR and the flex-fuel switch agree with the fuel in the tank: pump gas/E10, fixed-stoich E85 on a non-flex OS, or true sensor-based flex fuel on a supported P59.
P01, P59, E38, E67, E92flex
Check first: Flex fuel on a Gen III only works on certain P59 operating systems (the flex-fuel truck OS, 12579405 and later). Check that your OS has the Flex Fuel Enable switch before you buy a sensor.
Before this step:
- Flex-fuel conversions need ethanol-compatible fuel system hardware (pump, lines, injectors) beyond the tune.
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P59 | Engine > Fuel > Open & Closed Loop > Flex Fuel > Enable (P59) | Enables true flex-fuel blending from a live ethanol sensor (P59 OS 12579405+ only). | Enable with the sensor wired to pin 56 (blue connector); set P0178/P0179; fill the Stoich AFR table. |
| P59 | Engine > Fuel > General > Stoich AFR table | Stoich vs ethanol content for flex blending. | Fill per fuel; E85 fixed-stoich value ~9.83 as a starting point, tune in lambda (1.0 = stoich on any fuel). |
Targets
| What | Target | When |
|---|---|---|
| Stoich AFR, E10 pump gas | 14.08 | pump gas (see TW-01-2) |
| Stoich AFR, E85 | ~9.83 | non-flex OS fixed-E85 tune; a starting point — lambda 1.0 is the target |
Do this
- Pump gas/E10: confirm Stoich AFR is 14.08 (see TW-01-2). E85 on a non-flex OS: set stoich to ~9.83 and tune in lambda (1.0 = stoich on any fuel).
- True flex fuel (P59 OS 12579405+ only): enable Engine > Fuel > Open & Closed Loop > Flex Fuel, wire the ethanol sensor to pin 56 (blue connector), fill the Stoich AFR table, and set P0178/P0179.
- Do not enable 'virtual' flex fuel.
From real tunes
The 2004 P59 operating system 12587603 runs gasoline or E85 flex fuel, with any combination of engine, transmission and throttle type. It is common in 2004 trucks and vans with the 6.0 and 4L80E. In a modified 2003 Sierra LM7 / 4L60E tune compared with a stock 2004 LM7 1500 file on the same operating system (12587603), the tuner also set the default ethanol percentage to 10% (pump E10).
Check before you move on
- E85 stoich values vary slightly by blend; 9.83 is a starting point, lambda is the target.
Common mistakes
- Enabling 'virtual' flex fuel — it infers ethanol from fuel trims instead of measuring it, and experienced tuners advise against it.
2. Start it and verify
02-1 Set up the baseline scanner channel list
Build a short, fast channel list in VCM Scanner that covers airflow, fueling, spark, and mechanical health, with sane polling intervals so the log is actually usable for diagnosis.
P01, P59, E38, E67, E92gasolinenaturally aspirated
Before this step:
- VCM Suite installed, MPVI interface working, laptop battery or 12V power for the session
What to log in VCM Scanner
Engine RPM (SAE)Anchor for every other channel; all histograms and tables index off RPM.Intake Manifold Absolute Pressure (SAE)Load and vacuum reading; idle MAP and vacuum-leak diagnosis key off this.Mass Airflow (SAE)Airflow in g/s; the idle health target (4-7 g/s) is read here.Mass Airflow SensorMAF frequency in Hz; this is the tuning axis for the MAF table. The most commonly missed channel.Dynamic AirflowThe PCM's final filtered airflow number after blending MAF and VE.Cylinder AirmassPer-cylinder load; tells you which cells of the spark/fuel tables you are actually in.Intake Air Temp (SAE)Heat-soak and IAT-spark-correction sanity; IAT more than ~30F above ambient is a red flag.Engine Coolant Temp (SAE)Warm-up gating; don't judge fueling data until the engine is fully warm.Throttle Position (SAE)Driver demand context; decel/DFCO data must be filtered out of fuel histograms.O2 Voltage B1S1 (SAE)Narrowband switching trace, bank 1.O2 Voltage B2S1 (SAE)Narrowband switching trace, bank 2; bank-to-bank comparison catches single-bank problems.Short Term Fuel Trim Bank 1 (SAE)Instant fuel correction; positive = adding fuel (lean), negative = pulling fuel (rich).Short Term Fuel Trim Bank 2 (SAE)Bank 2 instant correction; split banks point at exhaust leaks or one bad O2.Long Term Fuel Trim Bank 1 (SAE)Learned correction; persistent learned error (disabled in many tunes, log it if active).Long Term Fuel Trim Bank 2 (SAE)Bank 2 learned correction.Fuel System #1 Status (SAE)Shows open loop vs closed loop; fuel trims only mean something in closed loop.Knock RetardDegrees of timing the PCM pulled for knock; baseline knock check before any spark work.Timing Advance (SAE)Actual delivered spark; confirms what the tables plus corrections are really doing.Engine Oil PressureMechanical health at idle and cruise; low pressure stops the session.Injector Pulse Width Avg. Bank 1Fuel delivery sanity; collapsing pulse width at load hints at fuel supply problems.Vehicle Speed (SAE)Context for cruise vs idle vs WOT segments of the log.Equivalence Ratio Commanded (SAE)The PCM's target lambda; compare against measured to find real errors.Idle Air Control PositionGen III drive-by-cable only; warm-idle target is about 30 counts with TPS under 0.8%.WB EQ Ratio 1Gen V E92 only (factory widebands); log the onboard wideband instead of wiring an external one.
Do this
- Connect the interface, key on, and in VCM Scanner go to Vehicle > Repoll for Supported Parameters so the channel selector only offers what this PCM actually supports.
- Open the channel selector (gear-with-plus icon) and double-click channels to add them; keep the list to roughly 20 channels for the baseline session.
- Right-click each channel > Polling Interval: leave fast channels (RPM, MAP, MAF, knock, spark) at their default fastest rate, and slow down slow-moving channels (coolant temp, intake air temp, baro) to multi-second intervals to free bandwidth for the fast ones.
- Prefer broadcast channels over polled equivalents where both exist; broadcast parameters are always being sent by the PCM and cost no polling overhead.
- Save the channel config (Documents/HP Tuners/VCM Scanner/Channel Configs) and save a matching layout so this exact setup is one click next time.
- Gen III note: add Idle Air Control Position, Idle Adapt (STIT), and LTIT Gear/ACoff for idle diagnostics; drive-by-cable cars need IAC counts, ETC cars do not have this channel.
- Gen IV E38/E67 note: no IAC channels (electronic throttle); make sure both Mass Airflow (SAE) (g/s) and Mass Airflow Sensor (Hz) are in the list.
- Gen V E92 note: look for WB EQ Ratio channels in the selector; 2017+ E92 controllers can revert to closed loop even with O2 readiness disabled, so confirm fuel system status in the log.
If it isn't right yet, try this, then this
- Keep the list at ~20 channels and slow down temp channels to 2-10 second polling intervals. Worked if: Fast channels (RPM, spark, knock) update briskly and chart-vs-time looks smooth.
- If a needed channel shows nothing, run Vehicle > Repoll for Supported Parameters with the engine running, then re-add it. Worked if: The channel populates with live values.
- If the log is still slow, swap polled channels for broadcast equivalents in the channel selector. Worked if: Update rate improves without dropping the channels you need.
Check before you move on
- Channel list loads, connects, and every channel populates with live data (no blanks or flatlines).
- Slow channels (ECT, IAT) set to multi-second polling intervals; fast channels at default.
- Channel config and layout saved under a clear name.
Common mistakes
- Logging 40+ channels at fastest polling and wondering why the log updates like a slideshow.
- Adding the MAF g/s channel but forgetting the MAF Hz channel, then having no axis for the MAF histogram.
- Tuning off a channel that never populated; blank channels usually mean you need Vehicle > Repoll for Supported Parameters with the engine running.
- Channels will not populate after a repoll; fix the interface/connection before touching the tune.
Using EFILive? EFILive Scan tool equivalents (same idea, different names): RPM, MAP, MAF, IAT, ECT, TPS, STFT1%/LTFT1, STFT2/LTFT2, HO2S11/HO2S21, IBPW1, KR, Spark, CylAir, VSS, commanded AFR.
02-2 Build the starter histogram and log layout
Set up a graph (histogram) that plots fuel-trim error against MAF frequency so the first logs immediately show where fueling is off, with cell-hit and filtering discipline that keeps bad data out.
P01, P59, E38, E67, E92gasolinenaturally aspirated
Before this step:
- Baseline channel list from TW-02-1 logging cleanly
What to log in VCM Scanner
Short Term Fuel Trim Bank 1 (SAE)Histogram parameter: the error signal the graph averages per cell.Mass Airflow SensorHistogram column axis in Hz; must match the MAF table axis in the editor.Fuel System #1 Status (SAE)Filter: only average cells logged in closed loop.
Do this
- In the editor, open the MAF calibration table (Engine > Airflow > General > MAF Airflow vs Frequency), right-click the column axis, and Copy Labels; paste these exact Hz breakpoints as the column axis of the histogram so the graph lines up with the table you will edit.
- Set the graph parameter to the short-term fuel trim average, set the view to Average (not Min/Max), and set cell hits to 5 to start; raise to 10 as the tune gets dialed in.
- Color-code the cells (e.g. +25% lean = red, -25% rich = green) so problem areas jump out at a glance.
- Add a filter so the histogram only averages closed-loop data: use fuel system status (closed loop) and/or Fuel Trim Cell to throw out decel and DFCO segments where the trims swing wildly.
- Make one layout for idle (gauges: RPM, MAP, STFT/LTFT, IAC, spark, knock) and one for cruise/WOT (charts vs time), and save both.
- Log with discipline: idle 1 minute before and after the drive, engine fully warm (over ~150F before STFT data counts), smooth steady acceleration; quick stabs followed by long coasts collect no useful data.
From real tunes
Filters we see in experienced tuners' scanner layouts: a wide-open filter of RPM above 4,000 and throttle above 99% for WOT fuel histograms; separate low and high MAF histograms split at about 5,800 Hz; base running airflow histograms split into park/neutral and in gear; and a closed-loop filter so trims only count when the computer is actually at stoich.
If it isn't right yet, try this, then this
- If histogram cells stay empty, confirm the MAF Hz channel is in the channel list (it must be logged, not just the g/s channel). Worked if: Cells start filling during the next drive.
- If cells fill with wild positive/negative spikes, add the closed-loop and Fuel Trim Cell filters to exclude decel. Worked if: Cell values settle toward single digits.
Check before you move on
- Histogram column axis matches the editor MAF table Hz breakpoints exactly.
- Cell hits at 5, view set to Average, closed-loop filter in place.
- A test log populates cells across the idle and cruise Hz range without DFCO contamination.
Common mistakes
- Building the histogram against the wrong axis (g/s instead of Hz) so paste-into-editor never lines up.
- Leaving the view on Min or Max, which makes the graph useless for tuning.
- Logging open-loop, decel, or DFCO segments into a trim histogram and chasing phantom errors.
Using EFILive? EFILive Scan tool: build the equivalent map with STFT1% averaged against MAF Hz; same cell-hit and closed-loop filtering discipline applies.
02-3 First start: the healthy idle checklist
Verify the engine is mechanically sound and idling in a normal window (airflow, vacuum, oil pressure, temps, trims, knock) before any table gets touched.
P01, P59, E38, E67, E92gasolinenaturally aspirated
Before this step:
- Channel list from TW-02-1, engine fully warm (ECT over ~170F)
What to log in VCM Scanner
Engine RPM (SAE)Warm idle speed check.Intake Manifold Absolute Pressure (SAE)Vacuum check at idle; high MAP at idle hints at a leak or big cam.Mass Airflow (SAE)Idle airflow check in g/s.Engine Coolant Temp (SAE)Confirm fully warm before judging anything.Intake Air Temp (SAE)Heat-soak check vs ambient.Engine Oil PressureMechanical health; the session stops if this is low.Idle Air Control PositionGen III drive-by-cable: warm-idle airflow check.Short Term Fuel Trim Bank 1 (SAE)Idle fueling correction check.Short Term Fuel Trim Bank 2 (SAE)Bank-to-bank comparison at idle.Knock RetardShould read zero at idle.
Targets
| What | Target | When |
|---|---|---|
| Warm idle RPM, stock cam | ~525-650 rpm | fully warm, in Park/Neutral |
| Idle MAP, stock cam | 35-40 kPa | warm idle; bigger cams read higher (less vacuum) |
| MAF at warm idle | 4-7 g/s (roughly engine displacement in liters) | warm idle, no loads |
| IAC position, Gen III drive-by-cable | ~30 counts | fully warm, TPS at 0.8% or lower |
| Base running airflow, warm | ~6 g/s stock; 10-13 g/s with a mild-to-medium cam (more for automatics) | normal operating temperature |
| Engine oil pressure | healthy LS trucks typically 20-40 psi warm idle, 40-60 psi cruise; never below ~10 psi per 1000 rpm; GM minimum spec 6 psi idle / 20 psi at 4000 rpm | fully warm oil |
| Intake air temp | no more than ~30F above ambient | driving, hood closed |
| Fuel trims at idle | within +/-5% ideal, +/-10% acceptable | closed loop, fully warm |
| Knock retard | 0 degrees | idle and light cruise |
Do this
- Start the engine, let it reach full operating temperature (treat ~170F coolant as the minimum before trusting fueling data), and log 1-2 minutes of steady warm idle.
- Read the checklist top to bottom: RPM, MAP, MAF g/s, trims both banks, O2 switching (covered in TW-02-4), oil pressure, IAT vs ambient, knock retard.
- Gen III drive-by-cable: check Idle Air Control Position near 30 counts with TPS at 0.8% or less; far off means the throttle blade/IAC setup needs mechanical attention before tuning idle.
- Gen IV/V electronic throttle: there is no IAC channel; use desired/idle airflow channels instead.
- Note the numbers in your tuning log document; this is the baseline everything else is judged against.
If it isn't right yet, try this, then this
- If idle MAP is high (low vacuum) and trims are positive, suspect a vacuum leak; hold 1500-2500 rpm steady and watch whether the trims fall toward zero. Worked if: Trims improve with RPM, confirming unmetered air (see TW-02-5).
- If IAC counts are pegged high or at zero on a Gen III DBC car, adjust the throttle stop and re-check TPS reset before touching idle tables. Worked if: IAC settles near 30 counts warm with TPS under 0.8%.
- If oil pressure reads low, verify with a mechanical gauge before condemning the pump or bearings. Worked if: Mechanical gauge agrees with the sensor; if it does not, fix the sensor/circuit first.
Check before you move on
- All targets above are inside their windows at warm idle.
- No check-engine light; read DTCs in the scanner (Diagnostics > Read DTCs) and resolve any before proceeding.
- Oil pressure healthy; no loud mechanical noises.
Common mistakes
- Judging fuel trims on a cold engine, or before the wideband/O2 sensors have warmed up and started switching.
- Chasing a high idle MAP as a tune problem when it is a vacuum leak or just a bigger cam.
- Ignoring low oil pressure because the gauge 'always read low'; verify with the 10-psi-per-1000-rpm rule.
- Hot idle oil pressure under ~10 psi, or pressure that does not rise with RPM; check the oiling system before any tuning.
- Coolant temperature that will not stabilize, overheating, or loud knocking/ticking that was not there before.
- Any sustained knock retard at idle or light cruise; move to TW-02-6 before continuing.
Using EFILive? Same checklist in EFILive Scan: RPM, MAP, MAF (g/s), ECT, IAT, engine oil pressure, STFT1%/STFT2, KR; Gen III DBC IAC counts equivalent.
02-4 Verify O2 sensors and fuel trims are working
Confirm the narrowband O2 sensors are switching properly, the engine reaches closed loop, and the fuel trims are reading believable corrections on both banks.
P01, P59, E38, E67, E92gasolinenaturally aspirated
Before this step:
- Warm idle checklist from TW-02-3 passing
What to log in VCM Scanner
O2 Voltage B1S1 (SAE)Narrowband switching trace, bank 1.O2 Voltage B2S1 (SAE)Narrowband switching trace, bank 2; compare against bank 1.Fuel System #1 Status (SAE)Confirms closed loop; trims only work in closed loop.Short Term Fuel Trim Bank 1 (SAE)Live correction; sign tells lean vs rich.Short Term Fuel Trim Bank 2 (SAE)Bank 2 live correction.Long Term Fuel Trim Bank 1 (SAE)Learned correction if LTFT is enabled in the tune.Long Term Fuel Trim Bank 2 (SAE)Bank 2 learned correction.Equivalence Ratio Commanded (SAE)Should read 1.00 at idle/cruise in closed loop.
Targets
| What | Target | When |
|---|---|---|
| O2 sensor switching in closed loop | oscillates roughly 0-1000 mV; GM lean threshold 350 mV, rich threshold 600 mV | fully warm, closed loop, idle or light cruise |
| STFT behavior | swings around 0%, normally within +/-10% | closed loop |
| Fuel System #1 Status | closed loop when warm | normal driving after warm-up |
| Commanded EQ at idle/cruise | 1.00 (stoich) | closed loop |
Do this
- With the engine fully warm, watch O2 Voltage B1S1 and B2S1 on chart-vs-time: healthy sensors oscillate rapidly between roughly 0 and 1000 mV.
- Read the oscillation like this: sensors switching up and down means the PCM is near stoich; sensors hanging high (rich side) with negative trims means a rich condition; sensors hanging low (lean side) with positive trims means a lean condition.
- Confirm Fuel System #1 Status reads closed loop once warm; if trims sit at zero and the O2s are flat, you are in open loop and trim data is meaningless.
- Remember the sign convention: positive trim = PCM adding fuel = engine is running lean; negative trim = PCM pulling fuel = engine is running rich.
- Compare bank 1 against bank 2 the whole time; a split between banks is the single most useful clue for exhaust leaks and bad sensors.
If it isn't right yet, try this, then this
- If an O2 channel shows nothing at all, make sure you added the actual sensor channel (bank 1 sensor 1 / bank 2 sensor 1), not the trim channel, and re-poll for supported parameters. Worked if: O2 trace appears and starts switching once warm.
- If one bank reads lean while the other is normal, swap the two upstream O2 sensors side to side and re-log. Worked if: The lean reading follows the sensor, proving a bad sensor; if it stays on the same bank, the problem is on that bank (exhaust leak, injector, etc.).
- If O2s are lazy (slow, low-amplitude switching), suspect an aging sensor or a contaminated/poisoned element. Worked if: Fresh sensors restore fast full-range switching.
Check before you move on
- Both upstream O2s switching in closed loop with believable crosscounts.
- Trims on both banks within +/-10% at warm idle.
- Fuel system status reaches closed loop after warm-up.
Common mistakes
- Logging the fuel-trim channels instead of the actual O2 sensor channels and wondering why there is no O2 trace.
- Trying to diagnose fueling from trims while the engine is still in open loop.
- Chasing a fueling problem that only exists on one bank as if it were a global tune issue.
- An O2 sensor reads a flatline near 0 mV or pegged high with no switching after full warm-up; diagnose the sensor/heater circuit before tuning fuel.
Using EFILive? EFILive equivalents: HO2S11/HO2S21 for the O2 voltages, STFT1%/LTFT1 and STFT2/LTFT2 for trims; same switching and sign-convention logic.
02-5 Diagnose vacuum/exhaust leaks and bad O2 sensors from the log
Use trim-vs-RPM patterns, bank splits, and O2 behavior to separate vacuum leaks, exhaust leaks, dirty MAF readings, and bad O2 sensors before any fuel table is edited.
P01, P59, E38, E67, E92gasolinenaturally aspirated
Before this step:
- O2 and trim channels verified in TW-02-4
What to log in VCM Scanner
Short Term Fuel Trim Bank 1 (SAE)Pattern vs RPM is the primary leak diagnostic.Short Term Fuel Trim Bank 2 (SAE)Bank split isolates one-bank problems.Long Term Fuel Trim Bank 1 (SAE)Learned pattern confirms the STFT story over time.Long Term Fuel Trim Bank 2 (SAE)Bank 2 learned pattern.Intake Manifold Absolute Pressure (SAE)Low vacuum at idle corroborates a vacuum leak.O2 Voltage B1S1 (SAE)Erratic or pegged traces point at leaks or bad sensors.O2 Voltage B2S1 (SAE)Bank-to-bank comparison.Engine RPM (SAE)RPM axis for the trim-vs-RPM test.Mass Airflow (SAE)MAF under-reporting check.
Do this
- Run the RPM sweep test: hold a steady 1500, 2000, and 2500 rpm in Park/Neutral and watch the trims at each point, then compare to the warm-idle trims.
- Read the pattern: trims high-positive at idle that fall back toward zero as RPM rises is the classic vacuum-leak signature, because the leak is a large fraction of total airflow at idle and dilutes into insignificance at higher airflow.
- Read the opposite pattern: trims near normal at idle but climbing positive with RPM/load points at the MAF under-reporting (dirty element) or a fuel-delivery problem, not a leak.
- Check idle vacuum: a stock-cam engine should pull roughly 18-20 inHg at idle; much less (e.g. ~11 inHg) with a stock cam suggests a leak, while a big cam naturally reads lower.
- Split the banks: a lean condition on one bank only is not a vacuum leak; look for an exhaust leak ahead of that bank's upstream O2 (pulling in outside air and fooling the sensor lean) or a bad sensor on that bank.
- Confirm a suspect O2 by swapping the two upstream sensors side to side; if the problem follows the sensor, replace it.
- If trims are high everywhere and nothing above fits, clean the MAF element with proper MAF cleaner, reset fuel trims, and re-log before condemning anything else.
If it isn't right yet, try this, then this
- Trims high-positive at idle, falling toward zero by 2000-2500 rpm: smoke-test or propane-test the intake tract, PCV and brake-booster hoses, and intake manifold gaskets. Worked if: Trims return to single digits at idle after the leak is sealed.
- Trims high at all RPM and loads: clean the MAF element, reset fuel trims, and re-log. Worked if: Trims drop everywhere; a dirty MAF reads low and the PCM under-fuels to match.
- Still high everywhere after a clean MAF: check fuel pressure and injector balance; weak delivery looks like under-reporting airflow. Worked if: Fuel pressure meets spec and trims normalize.
- One bank lean only: inspect that bank's exhaust manifold, flange, and O2 bung for leaks ahead of the upstream sensor, then swap the upstream O2s side to side. Worked if: Problem follows the sensor (bad sensor) or disappears after the exhaust leak is sealed.
- O2 traces erratic with jumping trims on both banks: look for a leak affecting both banks (intake tract after the MAF, exhaust crossover). Worked if: Steady switching and stable trims return once sealed.
Check before you move on
- Trim-vs-RPM pattern identified and its cause fixed or ruled out.
- Both banks agree within a few percent at idle and cruise.
- O2 sensors switching normally with no erratic traces.
Common mistakes
- Tuning the MAF table to 'fix' a vacuum leak; the leak is mechanical and the tune just masks it until it gets worse.
- Replacing O2 sensors for a both-banks-lean condition that is really unmetered air or low fuel pressure.
- Assuming a leak must show up at all RPM; a vacuum leak's trim signature fades as airflow rises.
- Trims pegged beyond +/-25% with an obvious leak or a failed sensor; fix the hardware, do not tune around it.
Using EFILive? Same diagnostic in EFILive Scan: watch STFT1%/STFT2 vs RPM; same bank-split and MAF-clean-first logic.
02-6 Baseline knock check and the stop-if list
Establish that the engine is knock-free in its current state, learn to tell real knock from false knock in the log, and lock in the stop conditions for the rest of the walkthrough.
P01, P59, E38, E67, E92gasolinenaturally aspirated
Before this step:
- TW-02-3 through TW-02-5 complete; no unresolved leaks, sensor faults, or DTCs
What to log in VCM Scanner
Knock RetardDegrees of timing pulled for knock; the pass/fail signal for this step.Timing Advance (SAE)Confirms delivered spark collapses when KR is active.Engine Coolant Temp (SAE)Overheating is a knock contributor; rule it out first.Intake Air Temp (SAE)Heat-soaked IAT is a knock contributor; rule it out second.O2 Voltage B1S1 (SAE)Lean mixture is a knock contributor; O2 stuck low means fix fuel first.Engine RPM (SAE)Locates where in the rev range any KR occurs.
Targets
| What | Target | When |
|---|---|---|
| Knock retard, idle and light cruise | 0 degrees | normal driving, fully warm |
| Knock retard, brief tip-in blips | up to ~2 degrees momentary is not a crisis (even stock engines knock a little on 87 octane) | throttle transitions |
| Knock retard, sustained | anything sustained, or repeated hits of 3+ degrees under load, must be explained before spark tuning | any load |
Do this
- Log a normal drive including light cruise and a few moderate pulls, watching Knock Retard on chart-vs-time next to Timing Advance.
- Work the real-vs-false ladder on any KR you see: (1) check ECT and IAT first, IAT more than ~30F above ambient is suspect; (2) check fueling via the O2s, rich O2s mean fuel is not the cause, lean O2s mean fix fuel first; (3) sanity-check timing, stock timing values on a bolt-on engine should not knock; (4) look for physical noise sources: blown motor mounts, valvetrain noise from cam/lifters/rockers/springs, wrong plug heat range, carbon buildup.
- Remember the worked example: a Trailblazer showed 10-14 degrees of knock with a hesitation, all environmental checks passed, and the cause was blown stock motor mounts letting the engine rattle in the bay; no tune change could fix it.
- Read DTCs one more time before leaving Phase 2; resolve knock-sensor circuit codes before trusting the KR channel.
- Write down the stop-if list for the rest of the walkthrough: sustained KR under load, audible knock, oil pressure below the 10-psi-per-1000-rpm rule, overheating, or any new DTC means stop tuning and fix the hardware.
If it isn't right yet, try this, then this
- Check ECT and IAT in the log at the moment of KR; overheating or heat-soaked intake air is the first suspect. Worked if: KR disappears once temperatures are normal.
- Check O2/fueling at the KR moment; O2s hanging low (lean) means fix the fueling before blaming spark. Worked if: KR stops once the mixture is corrected.
- Sanity-check timing against stock; excessive advance on a bolt-on engine is the next suspect. Worked if: KR stops with timing back at sane values.
- Go physical: motor mounts, accessory drive, valvetrain noise, plug heat range, carbon buildup. Worked if: KR stops after the mechanical noise source is fixed (e.g. new motor mounts).
Check before you move on
- A clean log with zero sustained knock retard across idle, cruise, and moderate load.
- Real-vs-false knock ladder understood and documented.
- Stop-if list written into the tuning notes for the rest of the walkthrough.
Common mistakes
- Pulling timing in the tune to 'fix' knock that is really a blown motor mount or rattling accessory.
- Tuning spark on the first WOT hit of the day; the PCM is still learning noise baselines, so judge knock on repeatable hits.
- Desensitizing the knock sensors in the tune instead of finding the noise source.
- Sustained knock retard under load that does not resolve through the ladder; do not advance spark anywhere until it is explained.
- Audible knock or any knock-sensor DTC; the KR channel cannot be trusted until the circuit is healthy.
Using EFILive? EFILive Scan: log KR (knock retard) against RPM and spark; same environmental-then-physical ladder.
3. Idle
03-1 Set a realistic desired idle RPM for the cam
Command an idle speed the engine can actually hold, so every later idle adjustment starts from a sane target.
P01, P59, E38, E67, E92allall
Before this step:
- Injector data and base fueling verified (no vacuum leaks, sane AFR)
- VE/MAF in the ballpark at idle so fueling is not the idle problem
- Engine fully warmed up for final checks
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67 | Engine > Idle > Base Set Point | Desired idle RPM targets vs. engine coolant temperature, separate for in-gear and park/neutral. | Raise hot cells to cam-appropriate RPM (see targets); raise cold cells less aggressively. |
| P01/P59 | Engine > Idle > Idle RPM | Desired idle RPM vs. ECT. Some OS split A/C-on and A/C-off tables. | Same as E38: set hot cells to cam-appropriate RPM, in-gear ~100 RPM below P/N. |
| E92 | Engine > Idle > Base Set Point | Desired idle RPM (torque-based idle on Gen V). | Raise to cam-appropriate RPM; see brief Gen V notes in TW-03-10. |
What to log in VCM Scanner
Engine RPMActual RPM vs. commandedIdle Desired RPMConfirms which table cell the PCM is targetingECTConfirms which temperature column is active
Targets
| What | Target | When |
|---|---|---|
| Stock LS hot idle | 550-600 RPM | stock cam |
| 240 deg @ .050 duration cam, hot idle | 800-850 RPM | aggressive street cam |
| Cam, negative to 0 deg overlap, hot idle | 850-900 RPM all cells | mild cam |
| Cam, 0-15 deg overlap, hot idle | 900-950 RPM all cells | medium cam |
| Cam, over 15 deg overlap, hot idle | 950-1100 RPM all cells | big cam |
| Truck Norris / Chopacabra (Gen 4 truck) | +200 RPM over stock on all base set point tables | E38 truck, mild-mid cam |
| In-gear vs P/N split | In-gear ~100 RPM below P/N across the board | automatic (Gen III procedure) |
Do this
- In VCM Editor open the Idle tab > RPM > Base Set Point and raise every cell to the cam-appropriate range (all cells across the board, not just one).
- On E38 also raise Startup (P/N and In Gear), Rolling Idle / Minimum Set Point, and Minimum RPM Reference to match the new base target.
- Keep in-gear targets ~100 RPM below P/N on an automatic; add ~50 RPM to the A/C-on tables if A/C engagement causes a stumble.
- Flash, warm the engine fully, and confirm logged Engine RPM tracks Idle Desired RPM.
If it isn't right yet, try this, then this
- Raise base set point 50 RPM at a time until the engine stops stumbling at hot idle Worked if: Logged RPM matches Desired RPM within ~25 RPM steady-state
Check before you move on
- Engine holds the commanded RPM hot in P/N without throttle help
- RPM does not hunt more than ~50 RPM at steady hot idle
Common mistakes
- Targeting a 550 RPM stock idle with a big cam and then fighting every other table to make it work
- Raising only the hot cells and leaving cold-start cells at stock, causing cold stalls
- On a tight stock converter, setting in-gear idle so high the truck pushes through the brakes
- Engine cannot hold any steady RPM (suspect vacuum leak, dead MAF, or mechanical issue first)
Using EFILive? B4603 Desired Idle Speed (vs. ECT, A/C on/off); B4612 RPM Set Point Adjust In Gear and B4614 RPM Set Point Adjust Timer control how much/often the PCM adjusts the target; B4602 is the max idle RPM cap (EFILive exposes it on OS where HP Tuners may not).
03-2 Gen III drive-by-cable: set mechanical base idle (IAC counts)
Give the PCM a mechanical base airflow that lands IAC counts in the controllable window, so the IAC motor (not the blade) does idle control.
P01, P59allall
Before this step:
- TW-03-1 desired idle RPM set
- Engine at full operating temperature
- No vacuum leaks (smoke-test if unsure)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Idle > Idle Airflow > General | Converts desired IAC/ETC effective area (mm2) to IAC steps. Only touch with a bigger throttle body. | Leave stock unless a larger-than-stock throttle body was fitted. |
What to log in VCM Scanner
IAC PositionIdle air control motor steps (counts) at hot idleTPS %Must be 0% for the PCM to enter idle stateTPS VoltsShould stay under ~0.8-0.9 V after blade adjustment
Targets
| What | Target | When |
|---|---|---|
| IAC Position steps | 50-60 counts (acceptable 40-65) | hot idle, P/N (automatics: check Drive) |
| TPS % / TPS voltage | 0% and < 0.8-0.9 V | idle |
| Diagnostic read of IAC counts | ~0 counts means too much blade air; ~100+ means too little | hot idle |
Do this
- Warm the engine fully, then log IAC Position (counts) at hot idle in P/N.
- Adjust the throttle blade set screw: if counts are high (~100+), open the blade; if counts are near 0, close the blade (too much air is passing the blade). Wait ~30 s between adjustments for counts to settle.
- Verify TPS reads 0% and TPS voltage under ~0.8-0.9 V; if the TPS % will not return to 0 after blade adjustment, do the TPS reset: key off, unplug TPS, key on 5 s, key off, plug TPS back in, restart.
- On an automatic, set the counts in Drive (the load that matters); P/N will land where it lands.
From real tunes
A P59 only runs a cable throttle if it has the idle air control driver chips. These service numbers are known to: 2003 12576106 (hardware 12570558), 2004 12586243 (hardware 12583659), 2005–06 12589462 (hardware 12589161). Others may work, but you have to open the PCM and check for the IAC driver chips.
If it isn't right yet, try this, then this
- Warm engine, adjust throttle set screw until IAC counts read 50-60 hot Worked if: Counts hold steady in the window and TPS reads 0% / under 0.8 V
- If counts sit at 0, close the blade slightly; if over ~100, open it slightly Worked if: Counts move into the 50-60 window
- If counts will not respond, smoke-test for vacuum leaks before touching tables Worked if: Counts respond to blade adjustment
Check before you move on
- Hot idle IAC counts stable in the 50-60 window
- TPS 0% and TPS voltage under ~0.8 V
Common mistakes
- Drilling the throttle blade or enlarging the bypass hole to fix counts: it throws off the desired-airflow vs. STIT/LTIT relationship and causes a hanging idle
- Chasing a hunting idle with the set screw when the real problem is base running airflow or spark
- Setting counts with a cold engine or with the A/C cycling
- Counts will not come below ~100 with the blade fully closed (vacuum leak or oversized throttle body)
- TPS % will not return to 0 (worn TPS or binding blade)
Using EFILive? Same mechanical procedure (EFILive logs IAC counts the same way). B4349 ETC Throttle Area Conversion covers the equivalent calibration on drive-by-wire: 'Cable-driven throttle bodies are mechanically adjusted to bring the idle-air-controller counts into spec.'
03-3 Gen III: dial in Base Running Airflow (the cold-start RAF method)
Give the PCM the correct base airflow vs. coolant temp so STIT/LTIT barely have to work.
P01, P59allall
Before this step:
- TW-03-2 IAC counts in range (DBC)
- A/C off, fans off during measuring runs
- Cold engine for each measuring pass
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Idle > Idle Airflow > Base Running Airflow | Base airflow in g/sec for IAC/ETC vs. ECT; the starting point for the adaptive idle routines. | Paste measured desired-airflow averages; as a rough start add 2-3 g/sec over stock at operating temp. |
| P01/P59 | Engine > Idle > Idle Airflow > Base Running Airflow | Minimum allowed idle airflow after all idle calculations. | Leave near stock unless idle hangs; it is the floor after all idle calculations. |
| P01/P59 | Engine > Idle > Idle Airflow > Adaptive Idle Airflow Limits | LTIT learning limits per gear/A/C state. | Zero during measuring; restore MAX 4.50 g/sec, set MIN to -0.5 g/sec or less after. |
What to log in VCM Scanner
Idle Desired Airflow (g/sec)Total airflow the PCM commands at idle; the number to pasteSTIT (Short Term Idle Trim)Fast correction to base airflow; want near zeroLTIT (Long Term Idle Trim)Learned correction; want within +/- 0.5-1.0 g/secECTHistogram axis for the airflow tableIAC PositionSanity check that counts stay in range
Targets
| What | Target | When |
|---|---|---|
| Base running airflow (example LS) | ~6.2 g/sec | stock, 176 F operating temp |
| Base running airflow | 10-11 g/sec hot | manual, mild-medium cam |
| Base running airflow | 12-13 g/sec hot | automatic, mild-medium cam |
| STIT and LTIT | +/- 0.75-1.0 g/sec (tighter: +/- 0.5) | after dial-in, hot idle |
| Adaptive idle airflow limits | MAX 4.50 g/sec, MIN -0.5 g/sec or less | post-measurement restore |
Do this
- Flash a measuring tune: disable LTFT (Long Term Fuel Trim Enable Min/Max ECT = 284 F), zero the Adaptive Idle Airflow limit tables (Max/Min In-Gear AC Off, Max/Min P/N AC Off), disable electric fans via VCM Controls.
- From stone cold, start logging BEFORE cranking; do not touch throttle, A/C, or shifter. Let the engine warm fully (up to ~235 F if it will get there with fans off) while the scanner populates a desired-idle-airflow vs. ECT histogram.
- Copy the histogram averages into the Base Running Airflow table (In Gear and P/N rows), interpolating cells you did not hit. Match the histogram units (g/sec) to the table units first.
- Reflash, cool the engine overnight, and repeat: once more in P/N and once in Drive (auto: e-brake on, wheels chocked, stay in the seat). Two full passes each.
- Restore the adaptive limit tables (MAX back to 4.50 g/sec stock; set MIN to -0.5 g/sec or less so a hot restart is never starved) and re-enable LTFT.
- Hand-tune until STIT and LTIT sit within +/- 0.75-1.0 g/sec (tighter: +/- 0.5).
Worked example (illustrative numbers that show the math; yours will differ)
If the learned idle airflow trim settles at +0.6 g/s when fully warm, add 0.6 g/s to Base Running Airflow in the warm cells for that gear (park/neutral or drive), clear the learned values, and re-log. Repeat until the trims stay close to zero.
If it isn't right yet, try this, then this
- Quick start: add 2-3 g/sec across the hot end of Base Running Airflow Worked if: Engine holds idle long enough to run the measuring procedure
- Run the full stone-cold histogram procedure in P/N, then in Drive Worked if: STIT/LTIT fall within +/- 1.0 g/sec
- Set adaptive MIN to -0.5 g/sec if hot restarts idle too low Worked if: Hot restart catches and holds idle
Check before you move on
- STIT and LTIT within +/- 1.0 g/sec hot, in both P/N and in gear
- RPM holds the TW-03-1 target without the throttle
Common mistakes
- Pasting histogram data with the table in lb/min while the histogram logged g/sec (or vice versa)
- Measuring with a warm engine only and leaving the cold cells guessed
- Leaving the adaptive airflow limits at zero after the measuring tune, which disables idle learning
- Doubling airflow 'to be safe' and creating a hanging idle or cruise-control feeling
- Desired idle airflow never stabilizes (vacuum leak, bad MAF, or valve train issue)
- LTIT pegs at its limit in one direction (base airflow table is far off or there is unmetered air)
Using EFILive? B4307 Idle Desired Air Flow: 'this parameter tells the ECU how much airflow the engine should see at that idle speed... this value is used for all calculations, so it has to be right. If you find band-aid numbers here, it is a symptom of another problem.'
03-4 Gen IV E38/E67: Airflow Final Minimum, Startup Airflow, Minimum RPM Reference
Give the torque-based Gen IV idle the minimum airflow floor it needs so the throttle holds the target without hunting or stalling.
E38, E67allall
Before this step:
- TW-03-1 desired idle RPM set on the E38 base set point tables
- Fueling (VE/MAF) and base spark sane at idle
- Automatic: commanded-RPM logging done in Drive as well as P/N
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67 | Engine > Idle > Airflow > Airflow Final Minimum | Minimum base airflow floor for ETC idle control vs. RPM and gear; the Gen IV equivalent of Base Running Airflow. | +8 g/sec at 200-800 RPM, +4 g/sec above 2000 RPM, interpolated between; or the 5_Liter_Eater measured-log method then x0.8. |
| E38/E67 | Engine > Idle > Airflow > Startup Airflow | Extra airflow added during cranking/startup to catch the flare and prevent stall. | +3 g/sec across the whole table (Gen 4 truck rule). |
| E38/E67 | Engine > Idle > RPM (Base Set Point area) | RPM the ECU targets for adaptive idle; acts as the enable switch for idle control and the adaptive PID. | Set to your TW-03-1 target RPM. |
What to log in VCM Scanner
Dynamic Airflow (g/sec)Measured airflow to paste into the tableIdle Desired RPMConfirms the commanded cellThrottle % (ETC)Confirms throttle is doing the control, not oversaturatedSpark AdvanceWatch for idle-spark fighting the airflow
Targets
| What | Target | When |
|---|---|---|
| Airflow Final Minimum adder | +8 g/sec over stock | Gen 4 truck, mild-mid cam, 200-800 RPM band |
| Airflow Final Minimum adder | +4 g/sec over stock | Gen 4 truck, mild-mid cam, above 2000 RPM |
| Startup Airflow adder | +3 g/sec across the table | startup catch |
| Minimum Set Point and Minimum RPM Reference | 725 (entire table) | stock converter |
Do this
- Flash a measuring setup: zero out the entire Airflow Final Minimum table, return the idle adaptive spark overspeed/underspeed and the adaptive idle proportional/integral tables to stock, and get fueling and base timing right first.
- Warm the engine with A/C on (A/C adds airflow, which you need to map anyway). Using VCM Controls, command 650, 800, 1000, then 1200 RPM for 30-60 s per cell and log the dynamic airflow histogram averaged over the same table shape.
- Copy the histogram values into Airflow Final Minimum, fill the 450 and 250 RPM cells with sane values, multiply the whole table by 0.8, then smooth.
- Apply the cam starting adders: +8 g/sec in the 200-800 RPM band, +4 g/sec above 2000 RPM, interpolated between (only if the measured numbers land lower than that).
- Set Startup Airflow +3 g/sec across the board (Gen 4 truck rule) and set the Minimum Set Point and Minimum RPM Reference tables to your TW-03-1 target.
- Re-enable adaptives, flash, and log: confirm the engine catches on start and Dynamic Airflow tracks commanded RPM. Hand-tune the table until idle spark swing is minimal.
Worked example (illustrative numbers that show the math; yours will differ)
Hot idle runs 50 rpm under target and the idle trims show the computer adding about 0.8 g/s to hold it. Add that 0.8 g/s to Airflow Final Minimum at operating temperature (for example 7.4 → 8.2 g/s), taper it to less at cooler temperatures, and re-log until the idle trims sit near zero.
If it isn't right yet, try this, then this
- Zero the table and log commanded-RPM airflow, then paste and multiply by 0.8 Worked if: Idle catches and holds with adaptives back on
- Add the +8 / +4 starting numbers and +3 startup airflow Worked if: Hot start catches immediately
- If idle RPM hangs above target, reduce the sub-1000 RPM cells 10% at a time Worked if: RPM returns to target with throttle closing
Check before you move on
- Engine catches on start and holds the target RPM hot
- Dynamic airflow tracks commanded RPM without STIT/LTIT-style fighting
- Raising airflow too far does not produce hanging RPM (back off if it does)
Common mistakes
- Doubling the table on a Gen 4 like you would on a Gen 3: the truck will try to drive itself
- Zeroing adaptives and leaving them zeroed instead of using them as the finish gauge
- Adjusting airflow before fueling and timing are right
- Airflow above the table keeps climbing but idle quality does not change (look for a vacuum leak or fueling error instead)
Using EFILive? B4307 Idle Desired Air Flow remains the Gen IV desired-airflow anchor in EFILive; E38-specific idle area limits are B1651/B1652 (max idle area) and B1829 (min idle air = 63) with B1844/B1845 typically zeroed. B4603 covers desired idle speed.
03-5 Gen IV ETC: Percentage Max and Throttle Follower torque
Un-cap the electronic throttle so it can actually deliver the idle airflow the cam needs, and make the follower move the right amount.
E38, E67allall
Before this step:
- TW-03-4 airflow floor set
- Engine torque logged at hot idle (for the follower table)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67 | Engine > Idle > Airflow > Effective Area > Percentage Max | Maximum allowed percentage of throttle effective area; caps how far the ETC blade may open for idle airflow. | Raise 0.5% at a time from ~1.9% stock toward ~4% for an aggressive cam. |
| E38/E67 | Engine > Idle > Airflow > Throttle Follower > Torque | Tells the throttle follower the engine's actual torque vs. RPM so the ETC moves the correct amount. | 800 RPM column = measured idle torque (e.g. 110 Nm); 1000 RPM column = 80 Nm; interpolate. |
What to log in VCM Scanner
Throttle % (ETC)Watch for the 24-27% flatline symptomEngine Torque (Nm)Actual idle torque to enter in the follower tableIdle Desired Airflow (g/sec)Confirms airflow target vs. throttle capabilityEngine RPMConfirms RPM tracks through transitions
Targets
| What | Target | When |
|---|---|---|
| Percentage Max | ~1.9% | stock |
| Percentage Max ceiling guide | ~4% | aggressive cam |
| ETC throttle % symptom | 24-27% throttle flatline = increase Percentage Max | diagnostic |
| Throttle Follower Torque | 800 RPM = 110 Nm, 1000 RPM = 80 Nm, interpolated | VCM Performance example |
Do this
- Log ETC throttle % through a cold start and a hot idle. If the throttle hits a flatline at 24-27% and will not open further while RPM is still low, the Percentage Max cap is the bottleneck.
- Raise Percentage Max in small steps (0.5% at a time) from the stock ~1.9% until the throttle can open enough to hold the target idle without flatlining; aggressive cams land around 4%.
- Open the Throttle Follower Torque table and enter the engine's actual idle torque: in the follower table, set the 800 RPM column to the measured idle torque (VCM Performance example: 110 Nm) and the 1000 RPM column to 80 Nm, then interpolate across.
- Log a drive: confirm the throttle no longer flatlines and that return-to-idle decays smoothly without hanging.
If it isn't right yet, try this, then this
- Raise Percentage Max 0.5% at a time until the 24-27% flatline disappears Worked if: Throttle can open past the flatline and idle airflow target is met
- Enter measured idle torque into the follower table and interpolate Worked if: Throttle transitions smoothly, no surging on tip-in or return to idle
Check before you move on
- ETC throttle % can exceed the flatline zone and reaches the airflow target
- Throttle follows RPM commands smoothly with no dead spots
Common mistakes
- Slamming Percentage Max to 10-15%: it destroys idle control resolution
- Drilling the throttle blade instead (never drill drive-by-wire blades; it breaks the desired-airflow vs. STIT/LTIT relationship and causes a hanging idle)
- Ignoring the follower torque table so the throttle moves the wrong amount for the commanded airflow
- Throttle position sensor disagrees with commanded throttle (mechanical/electrical fault, fix first)
Using EFILive? B4349 ETC Throttle Area Conversion is the EFILive equivalent area table: 'Cable-driven throttle bodies are mechanically adjusted to bring the idle-air-controller counts into spec. On electronic throttle bodies, the Throttle Area Conversion (B4349) is a good place to start.'
03-6 Idle spark: set the base tables and find the cam's sweet spot
Put idle spark in the cam's happy place and make it agree with the main spark table so idle is stable and transitions are clean.
P01, P59, E38, E67allall
Before this step:
- TW-03-3 or TW-03-4 airflow set (cylinder airmass is then close)
- No knock retard activity at idle
- VCM Controls available for the Spark Idle disable
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Spark Control > Spark Advance | Base spark the PCM uses predominantly at idle, split by In Drive vs. Park/Neutral. | Set idle-region cells (at/below target idle RPM, idle airflow columns) to the sweet-spot timing. |
| P01/P59 | Engine > Spark Control > Spark Advance | Idle spark command tables; adders fine-tune P/N vs. in-gear. | Set to the found sweet spot at/below idle RPM. |
| E38/E67 | Engine > Spark > (Advance) > Idle Spark Advance (table naming varies by OS) | Commanded idle spark on torque-based controllers; must agree with the main spark table in the idle region. | Set to 18-22 deg start; match main spark tables 0-1200 RPM to the same values. |
What to log in VCM Scanner
Spark AdvanceIdle timing actually commandedIdle Adaptive Spark (deg)How hard the adaptive system is working; want smallMAP (kPa)Best idle timing shows lowest MAP / strongest vacuumCylinder Airmass (g/cyl)Confirms you are editing the correct spark cellsEngine RPMConfirms stability while sweeping timing
Targets
| What | Target | When |
|---|---|---|
| Idle spark advance | 10-15 deg | stock LS |
| Idle spark advance | 18-22 deg | aggressive cam start |
| Idle spark adder over stock | +2 deg (neg-0 overlap), +4 deg (0-15), +6 deg (>15) over stock at <=1200 RPM / 0.08-0.28 g/cyl | cam overlap tiers (Gen III) |
| Idle spark swing | within +/- 2 deg | steady hot idle |
| Idle timing while sweeping with adaptive spark disabled | strongest vacuum / smoothest engine note (often 24-28 deg) | sweet spot found |
Do this
- Warm the engine, then set the idle spark tables to a sane starting point (18-22 deg) at and below the target idle RPM and in the idle air-mass cells.
- Match the main High Octane (and Low Octane) spark tables to the idle spark values in the idle region (0-1200 RPM, 0.08-0.28 g/cyl or the idle airflow columns) so there is no step when the PCM transitions between tables.
- Use VCM Controls > Spark Idle: ON to disable the adaptive spark, then change idle spark up/down while watching MAP/vacuum and listening: find the point where vacuum is strongest and the engine note is smoothest (often 24-28 deg), with no miss.
- Flash the winning value into the idle tables AND the matching main-spark idle cells, re-enable adaptive spark, and confirm the spark swing at steady hot idle stays within +/- 2 deg.
If it isn't right yet, try this, then this
- Set idle spark 18-22 deg and match main spark 0-1200 RPM Worked if: Idle is smooth, no transition stumble
- Disable adaptive spark via VCM controls and sweep timing for best vacuum Worked if: MAP bottoms out and engine note smooths
- If idle hunts in a rhythm, reduce timing a few degrees (timing hunting) Worked if: Rhythmic surge disappears
Check before you move on
- Steady hot idle spark swing within +/- 2 deg
- No stumble when the PCM transitions between idle and main spark tables (they agree in the idle region)
Common mistakes
- Too much idle timing: causes a hunting/surging idle (timing error hunting looks like a rhythm, not random)
- Idle spark tables disagreeing with the main spark table in the idle region, causing a transition stumble
- Leaving the 'Spark Idle: ON' VCM control active and then judging adaptive behavior
- On Gen V, fighting the torque model with spark alone (see TW-03-10)
- Spark will not stabilize and MAP is erratic at fixed timing (mechanical: vacuum leak, valvetrain, or injector fault)
Using EFILive? Same concept on EFILive: idle spark and main spark tables are matched in the idle region; E38 tuners log 'idle adaptive spark' PIDs while dialing in. Normal E38 idle advance is about 15 deg (A/C off) to 18-20 deg (A/C on).
03-7 Adaptive idle spark: tame overspeed/underspeed and add a stall saver
Tame the PCM's spark corrections so a big cam does not overcorrect into a sawtooth or stall, and add a spark catch for dips below the target.
P01, P59, E38, E67allall
Before this step:
- TW-03-6 idle spark set near the sweet spot
- Adaptive spark re-enabled after the TW-03-6 sweep
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Spark Control > Spark Advance | How many degrees the PCM may add (underspeed) or remove (overspeed) in response to idle RPM error. | Multiply by 0.5 for an aggressive cam; keep underspeed >= overspeed. |
| E38/E67 | Engine > Spark > (Advance) > Idle Adaptive Spark Control | Same spark correction authority on the torque-based controllers. | Return to stock first, then reduce by 50% if sawtoothing. |
What to log in VCM Scanner
Spark AdvanceTotal timing; look for sawtooth patternsIdle Adaptive Spark (deg)Size of the PCM's correctionEngine RPMRPM error the corrections are chasingIdle Desired RPMThe target the adaptive system defends
Targets
| What | Target | When |
|---|---|---|
| Overspeed/Underspeed table multiplier | 0.5x stock values | aggressive cam start |
| Idle spark below the target RPM | ~25 deg at 0-400 RPM, ~22 deg at 800 RPM | stall saver (example, desired idle 850) |
| Idle adaptive spark correction | small, non-sawtoothing | steady hot idle |
Do this
- Log the idle spark behavior first: if spark is sawtoothing (PCM adds spark, RPM overshoots, PCM pulls spark, RPM dips, repeat), the stock adaptive authority is too aggressive for the cam.
- Multiply the overspeed AND underspeed tables by 0.5 to start, keeping the underspeed values at or above the overspeed values (bigger corrections when RPM dips below target, gentler when it overshoots, so the PCM cannot pull timing so fast it creates an undershoot).
- Add the stall-saver trick at the bottom of the idle spark table: raise the sub-idle cells (0-400 RPM up toward ~25 deg, ~800 RPM up to ~22 deg) so that when RPM falls below the target, the added spark catches it.
- Log again: you want the idle adaptive spark correction small and boring, with RPM error recovering smoothly from a load hit (blip the throttle, cycle A/C, drop it in gear).
If it isn't right yet, try this, then this
- Halve overspeed and underspeed; keep underspeed >= overspeed Worked if: Sawtooth disappears, spark correction stays small
- Raise the sub-idle RPM cells of the idle spark table (~25 deg at 0-400 RPM) Worked if: RPM dips below target recover instead of stalling
- If dips still stall, the airflow floor is the problem, not spark (back to TW-03-3/4) Worked if: Idle catches on the airflow change alone
Check before you move on
- Spark correction at steady hot idle is small and does not sawtooth
- RPM recovers from load hits (A/C, in-gear) without stalling or long flares
Common mistakes
- Zeroing the adaptive spark tables and leaving them zeroed: kills the idle's ability to recover from load
- Making overspeed stronger than underspeed: the PCM pulls spark too fast and sets up an undershoot
- Adding authority instead of reducing it on a lumpy cam
- RPM dips stall even with authority and stall-saver raised (airflow is the real shortage; go back to TW-03-3/TW-03-4)
Using EFILive? Same overspeed/underspeed adaptive idle spark tables exist in EFILive's spark section; EFILive tuners also use 'spark idle' logging to see the adaptive correction. The stall-saver concept (raising spark below idle RPM) applies identically.
03-8 STIT/LTIT adaptives: limits, enable temp, learning speed
Let the adaptive idle system do its job: base airflow right, limits sane, learning speed matched to the cam.
P01, P59, E38, E67allall
Before this step:
- TW-03-3 or TW-03-4 base airflow dialed in
- Adaptive airflow limits restored (not zero)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Idle > Idle Airflow > Adaptive Idle Airflow Limits | LTIT learning authority per gear/A/C state. | Restore MAX 4.50 g/sec; MIN -0.5 g/sec or less. |
| P01/P59 | Engine > Idle > Idle RPM > Adaptive Idle RPM | When idle adaptives engage and how fast they react. | Min ECT ~30 F below operating temp; Err Time ~0.4 mild cam, higher for big cams. |
| E38/E67 | Engine > Idle > RPM > Adaptive Idle | Momentary (P, only above ~50 RPM error) vs. continuous (I) adaptive airflow correction. | Leave at stock. |
What to log in VCM Scanner
STIT (Short Term Idle Trim)Fast trim; goal is 0LTIT (Long Term Idle Trim)Learned trim; goal is +/- 0.5-1.0 g/secIdle Desired Airflow (g/sec)Confirms trims are modifying a sane base numberECTConfirms adaptives are enabled at the logged temperature
Targets
| What | Target | When |
|---|---|---|
| Adaptive Idle Airflow Limits | MAX 4.50 g/sec, MIN -0.5 g/sec or less | measuring restore |
| Adaptive Idle RPM Min ECT | ~30 F below normal operating temp (e.g. 150 F) | normal engagement |
| Update RPM Err Time | ~0.4 | mild cam |
| Update RPM Err Time | increase above 0.4 | big cam |
| Idle trims | STIT ~ 0, LTIT +/- 0.75-1.0 (tighter: +/- 0.5) | steady hot idle, learned |
Do this
- Restore the Adaptive Idle Airflow limit tables to sane values after measuring: MAX back to the stock 4.50 g/sec, MIN to -0.5 g/sec or less so LTIT can trim down but never starve a hot restart.
- Set the Adaptive Idle RPM Min ECT to roughly 30 deg F below your normal operating temperature (example: 150 F with a 160 F thermostat and ~180 F running temp) so idle adaptives engage early enough on warm-up.
- Set Update RPM Err Time around 0.4 for a mild cam and increase it for bigger cams (slower learning on a lumpy cam keeps the adaptives from chasing their own tail).
- Drive and idle for a few full heat cycles before judging: LTIT has to learn first. Judge only when STIT is near 0 and LTIT has settled within +/- 0.75-1.0 g/sec (tighter: +/- 0.5).
- On E38: leave the Adaptive Idle Proportional and Integral Airflow tables at stock; the Proportional factor is only momentary correction above ~50 RPM error, the Integral is continuous.
- If a change to LTIT is needed and you only changed base spark, be aware on Gen IV the airflow learning and spark interact: make fueling/timing changes first, then let trims re-learn.
If it isn't right yet, try this, then this
- Restore adaptive limits (MAX 4.50, MIN -0.5) and drive several heat cycles Worked if: LTIT settles within +/- 1.0 g/sec
- Lower Min ECT ~30 F below operating temp and raise Update RPM Err Time for big cams Worked if: Trims stop chasing and converge
- If LTIT still pegs at a limit, base airflow or a leak is the problem, not the adaptives Worked if: Base airflow change moves LTIT off the limit
Check before you move on
- STIT hovers near 0 at steady hot idle
- LTIT settled within +/- 1.0 g/sec in P/N and in gear
Common mistakes
- Judging idle quality before LTIT has learned (a few heat cycles)
- Leaving the adaptive limits at zero from the measuring tune: idle learning is dead
- Chasing trims with the base table endlessly while the real problem is a vacuum leak or wrong injector data
- LTIT pegs at the limit in one direction (base airflow far off, vacuum leak, or unmetered air)
Using EFILive? EFILive Gen III tunes show the same STIT/LTIT learning behavior; the goal is identical: trims near zero, meaning the base airflow table is right. B4307 remains the anchor the trims correct against.
03-9 Throttle cracker & follower: fix the return to idle
Make the car actually slow down when you lift, and hand idle control back to the adaptive system at a stop.
P01, P59, E38, E67allall
Before this step:
- TW-03-3/TW-03-4 base airflow dialed in (so you know the hang is cracker/follower, not base airflow)
- A safe road or dyno for coast-down tests
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Idle > Idle Airflow > Throttle Cracker | Extra airflow added for rolling idle vs. RPM and MPH; enable/disable speed sets when the cracker is active. | Zero the 400-1000 RPM / 0-32 MPH zone and 1600 RPM / 0-12 MPH; disable speed to 256 MPH if needed. |
| P01/P59 | Engine > Idle > Idle Airflow > Throttle Follower | How fast the follower airflow bleeds off vs. vehicle speed, and how long it waits before decaying. | Double the decay in the 0-4 MPH rows. |
| E38/E67 | Engine > Idle > Airflow > Throttle Follower | ETC follower torque model plus adaptive PID (leave stock). | Confirm torque table sane and adaptive P/I stock. |
What to log in VCM Scanner
Engine RPMWatch for hang vs. target on coast-downThrottle Cracker Airflow (g/sec)Confirms cracker contributionThrottle Follower Airflow (g/sec)Confirms follower bleed-offVehicle Speed (MPH)Maps the hang to speed/RPM cellsIAC Position / Throttle %Confirms the actuator is closing at a stop
Targets
| What | Target | When |
|---|---|---|
| Off-throttle airflow adders | cracker and follower airflow = 0 at a stop in gear | return to idle |
| Return-to-idle behavior | RPM decays to target without hanging or stalling | coast-down |
Do this
- Log a coast-down: come off the throttle at speed and watch RPM. If RPM hangs hundreds of RPM above idle or the car feels like it has cruise control with your foot off the gas, the cracker/follower is adding too much air.
- Zero the Throttle Cracker Airflow table cells in the return-to-idle zone: 400-1000 RPM columns at 0-32 MPH, and the 1600 RPM column at 0-12 MPH, then smooth the surrounding cells.
- Double the Throttle Follower Decay values in the 0-4 MPH rows (faster airflow bleed-off as the car stops) and confirm the follower and cracker are at zero when the car is at a stop in gear.
- If the car still will not slow down, raise the cracker Disable Speed (the nuclear option: 256 MPH effectively disables the cracker) and re-test.
- On E38: confirm the Adaptive Idle Proportional/Integral Airflow tables are stock (per the E38 guide, tune airflow with the Final Minimum method instead of the adaptive PID).
If it isn't right yet, try this, then this
- Zero the cracker in the 400-1000 RPM / 0-32 MPH zone and smooth Worked if: Cruise-control feeling disappears
- Double follower decay in the 0-4 MPH rows Worked if: RPM settles to target as the car stops
- Raise cracker disable speed (up to 256 MPH) if hang persists Worked if: Coast-down decays cleanly to idle
Check before you move on
- Coast-down returns to target idle without hanging or stalling
- At a stop in gear, cracker and follower airflow are zero and adaptive idle is in control
Common mistakes
- Treating a hanging idle as an airflow shortage and adding MORE base airflow
- Changing only the cracker table and forgetting the follower decay/delay in the low-speed rows
- RPM drops below target and stalls on coast-down (you went too far; restore some cracker in the 1600 RPM column)
03-10 Cammed-idle order of operations + fix-it ladder (A/C, startup, Gen V)
Assemble everything into the cammed-idle order of operations, cover A/C, startup, misfires, and the Gen V torque-model notes, then run the fix-it ladder.
P01, P59, E38, E67, E92allall
Before this step:
- TW-03-1 through TW-03-9 complete
- Several heat cycles of adaptive learning done
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Idle > Idle Airflow > Startup | Extra start airflow and how long it lingers after crank. | +0.5-1.0 g/sec; delay +50 cam revs (100 total). |
| P01/P59 | Engine > Torque Management > Engine Torque > AC Torque | Stops the PCM from pulling timing when the A/C clutch engages. | Max Retard = 0; reduce ETC Max in 10% steps, not below 2.5%. |
| E38/E67 | Engine > Spark > Advance > Minimum Spark | Floor for spark-based RPM reduction; zeroing it kills spark idle control. | Leave stock (do not zero). |
| P01/P59 | Engine > Diagnostics > Misfire | False misfire from cam overlap trips P0300 at idle. | Raise idle cells (max 32767); delete P0300 only as a last resort. |
What to log in VCM Scanner
Engine RPMOverall idle behaviorIdle Desired RPMTarget vs. actualA/C Request / A/C ClutchCorrelate dips with compressor engagementMisfire Current Cylinder countsFalse misfire from overlap
Targets
| What | Target | When |
|---|---|---|
| A/C-on idle RPM | +50 RPM over A/C-off tables (P/N and in gear) | A/C on |
| AC Torque retard | Max Retard = 0 | A/C engagement |
| Startup Airflow Initial adder | +0.5-1.0 g/sec | hard warm start |
| Torque-model idle notes | spark minimum 8-10 deg; reduce torque tables if timing pinned | Gen V E92 idle |
Do this
- Work the steps in this order on a cammed car: 1) desired idle RPM (TW-03-1), 2) mechanical IAC baseline on cable cars (TW-03-2), 3) base airflow (TW-03-3 Gen III / TW-03-4 Gen IV), 4) idle spark (TW-03-6), 5) adaptive spark (TW-03-7), 6) trims and learning (TW-03-8), 7) cracker/follower (TW-03-9). Never tune idle around bad fueling: VE/MAF first.
- Set the A/C idle: raise the A/C-on idle RPM tables by 50 RPM (P/N and in gear), and set AC Torque Max Retard to 0 (Engine > Torque Management > Engine Torque > AC Torque) so the PCM does not pull timing when the compressor engages.
- Set startup flare control: add 0.5-1.0 g/sec to Startup Airflow Initial if warm starts are hard, and add ~50 cam revs to the Idle Startup Airflow Delay (100 total) so the startup airflow hangs on longer.
- If the cam trips misfire codes at idle (P0300), raise the misfire detection tables (up to 32767 in the idle cells) or, as a last resort on a big cam, delete P0300: false misfire from overlap is a known cause.
- E92 / Gen V notes (brief): the torque model fights idle spark, so set the idle spark minimum to 8-10 deg; if timing sits pinned at 0-5 deg or -2 deg, reduce the torque tables rather than chasing spark; correct fueling and airflow with the MAF-only, engine hot, first. Big cams have been made to idle at 700 RPM this way.
If it isn't right yet, try this, then this
- Confirm no vacuum leaks (smoke test) and MAF reads sane (not a 2.32 g/sec default) Worked if: Desired airflow numbers respond to table changes
- Set a realistic target idle RPM for the cam (TW-03-1) Worked if: Engine at least attempts the target
- DBC: set IAC counts 50-60 hot with the set screw; DBW: fix ETC flatline via Percentage Max Worked if: Counts / throttle in the controllable window
- Add base airflow: +2-3 g/sec Gen III; E38 +8 (<800 RPM) / +4 (>2000 RPM) interpolated Worked if: Engine holds idle unassisted
- Set idle spark 18-22 deg, match main spark 0-1200 RPM, sweep for best vacuum Worked if: Smooth idle, +/- 2 deg swing
- Dial base airflow until STIT ~ 0 and LTIT within +/- 1.0 g/sec Worked if: Trims converge after a few heat cycles
- Tame overspeed/underspeed (halve), add the stall-saver low-RPM spark Worked if: No sawtooth; dips recover instead of stalling
- Zero cracker in the return-to-idle zone; double follower decay 0-4 MPH Worked if: Coast-down decays to idle, no cruise-control feeling
- Set startup airflow + delay for start issues; AC Torque Max Retard = 0; +50 RPM A/C idle Worked if: Cold/hot starts catch; A/C engagement recovers
- Raise misfire tables / handle P0300 if overlap trips false misfire Worked if: No false misfire codes at idle
Check before you move on
- Cold start: key-turn, no-throttle start, catches and holds
- Hot restart: catches without a long crank or stall
- A/C engagement: RPM dips and recovers without stalling
- No P0300 or false misfire codes at idle
Common mistakes
- Tuning idle before fueling is right (the #1 rule: fueling and timing first)
- Zeroing Minimum Spark (Base) on E38: it is the floor for spark-based RPM reduction, leave it alone
- Drilling throttle blades on any drive-by-wire car
- Judging results before the adaptives have learned (a few heat cycles)
- Engine still will not hold idle after the full ladder (mechanical: cam too big for the converter/compression, or a fault the tune cannot cover)
Using EFILive? B4603 (desired idle), B4307 (desired airflow), B4349 (ETC area), B4612/B4614 (in-gear set point adjust) cover the Gen III procedure. E38: B1651/B1652 (max idle area), B1829 (min idle air = 63), B1844/B1845 (zeroed). B4602 max idle RPM exists in EFILive on OS where HP Tuners does not expose it.
4. Part-throttle fuel
04-1 Force open loop and isolate the MAF (MAF-only test mode)
Put the controller in a clean, repeatable state where the MAF curve is the only air model being corrected and no enrichment/trim is polluting the data. Save an as-found file first, then save each change as a new step file so you can walk back.
P01, P59, E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- As-found tune saved to disk and documented
- Wideband installed in the exhaust and given time to warm up before logging
- Engine at full operating temperature before any log counts
- Injector data already correct (wrong injector data can never be tuned out with the MAF curve)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67/E92 | Engine > Fuel > Cutoff | Decel fuel cut off; on decel it cuts fuel and the log goes full lean, corrupting trim/error data | Max out both so DFCO never engages (e.g. enable 8100, disable 8099); restore stock at the end |
| E38/E67/E92 | Engine > Fuel > Temperature Control | Dumps extra fuel to protect the cats; that enrichment looks like a rich error in the log | Disable during fuel tuning; put it back if the vehicle still has cats |
| P01/P59 | Engine > Fuel > Oxygen Sensors > Closed Loop Enable > ECT vs IAT | Decides when the PCM is allowed into closed loop | Set to ~260 F across the board to force open loop; also set Long Term Fuel Trims to Disable |
| P01/P59/E38/E67/E92 | Engine > Fuel > Oxygen Sensors | Voltage threshold that lets the narrowbands control fueling | Set negative so the O2 sensors cannot control fueling during the test |
| E38/E67/E92 | Engine > Airflow > Dynamic | Above the disable RPM the PCM runs on the filtered MAF only; below it blends MAF and VE | Set to 100/99 RPM (Gen 4/5 keep the two 100 RPM apart) so everything runs MAF-only |
| P01/P59 | Engine > Airflow > Dynamic | Same job on Gen 3, which only has the one disable threshold | Set to 300-400 RPM for MAF-only operation |
| E38/E67/E92 | Engine > Fuel > Displacement on Demand | Cylinder deactivation changes the airflow model mid-log | Turn off during fuel tuning |
| all | Engine > Spark > Advance > Base tables | Safety margin while you sweep the engine for fuel data | Subtract 5 degrees globally; knock during a fuel log ruins the data and the engine |
What to log in VCM Scanner
Mass Airflow Sensor (Hz)MAF tuning is done in hertz, not g/s or lb/minSTFT Bank 1 / STFT Bank 2Short-term correction the PCM is applying right nowLTFT Bank 1 / LTFT Bank 2Long-term learned correction; disable these for the test, log them to confirmFuel System StatusConfirm you are actually in open loop before the log countsEQ Ratio CommandedWhat the PCM is asking for, the denominator of your error mathWideband EQ RatioWhat the engine is actually doing, the numerator of your error mathRPM, IAT, ECTConfirm operating temp and rule out temperature adders
Targets
| What | Target | When |
|---|---|---|
| Fuel system status during logs | Open loop | every log that feeds a correction |
| LTFT activity | Disabled (reads 0, no learning) | whole test |
Do this
- Read the PCM and save the file as as-found. Never tune on the only copy.
- Save a copy as your step-1 file and make all the test-mode changes above in it.
- Write calibration only to the PCM (no need to write the TCM).
- Warm the engine fully and let the wideband heat up before you hit record.
- Use VCM Controls > Fuel and Spark > Reset Fuel Trims so no old learning pollutes the log.
- Confirm open loop in the scanner before driving; if it flips to closed loop, your enable thresholds are wrong.
If it isn't right yet, try this, then this
- Scanner will not stay in open loop Worked if: Re-check the closed-loop-enable ECT vs IAT table (or O2 readiness voltage); one of them is still letting the PCM go closed loop.
- Log shows lean spikes on every lift Worked if: DFCO is still active - re-max the enable/disable RPMs.
- Log shows rich patches at steady cruise Worked if: COT or PE is adding fuel - disable COT, raise PE enable out of the way.
Check before you move on
- Scanner shows open loop for the whole log and LTFTs are flat at zero.
- No DFCO events, no COT enrichment, no PE activation in the log.
Common mistakes
- Logging before the wideband is warm - the first minute of data is garbage.
- Leaving DFCO on - every lift of the throttle paints a false lean streak across the histogram.
- Leaving PE enabled - power enrichment data is not part-throttle data and must be excluded.
- Tuning with a cold engine - open-loop enrichment tables are still adding fuel in the background.
- MAF pegs its ceiling (Gen 3 MAF tables top out around 12,000 Hz and the sensor caps near 512 g/s) - you cannot tune past a pegged sensor with the MAF curve; that is a speed-density or bigger-MAF conversation.
- Fuel pressure is wrong or injector data is a guess - fix hardware and data first; the MAF curve cannot correct those.
Using EFILive? EFILive AutoMAF recipe: set B0120 to zero (disable VE), disable closed loop/LTFT/STFT (B3801, B4205, B4206), set PE safely rich (B3618), log wideband lambda, build a MAF map of BEN = {EXT.WO2LAM1}*{GM.EQIVRATIO}, apply a low-cell-count and throttle-transient filter, multiply the BEN map into MAF table B5001, then extrapolate/smooth the un-hit cells.
04-2 Calibrate the MAF curve from LTFT+STFT vs MAF Hz (closed-loop histogram method)
Correct the MAF calibration table cell by cell using the fuel trims the PCM is already reporting, so trims center near zero across the whole hertz range. Positive trim means the PCM is adding fuel (you are lean, MAF is under-reporting air); negative trim means it is pulling fuel (you are rich).
P01, P59, E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- TW-04-1 test mode flashed (or at minimum LTFT disabled and DFCO/COT off)
- Engine fully warm, trims reset via VCM Controls
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Airflow > General | Converts the MAF sensor's hertz signal into an airflow number; the whole fuel calculation keys off it | Paste-special multiply by the trim % (or by half the trim %) cell by cell; smooth outliers |
| E38/E67 | Engine > Airflow > General | Same job on Gen 4; table runs to about 15,000 Hz vs 12,000 on Gen 3 | Paste-special multiply by the trim % (or by half the trim %) cell by cell; smooth outliers |
| E92 | Engine > Airflow > General | Same job on Gen 5 | Paste-special multiply by the trim % (or by half the trim %) cell by cell; smooth outliers |
What to log in VCM Scanner
Mass Airflow Sensor (Hz)The column axis of the correction - tune in hertzLTFT + STFT (math channel)Total correction the PCM is applying; most tuners disable LTFT and log STFT onlySTFT Bank 1 / Bank 2Raw short-term data feeding the math channelFuel System StatusOnly closed-loop data counts here; exclude PE/open-loop rows
Targets
| What | Target | When |
|---|---|---|
| STFT across the driven Hz range | within +/- 7% (shoot for +/- 2%) | steady cruise and light accel, warmed up |
| LTFT once re-enabled | slightly negative, 1-3% | final verification drive in normal mode |
| Quick first pass | within 10% | acceptable before moving to fine passes |
Do this
- Build the scanner graph/table: parameter is your trim math (LTFT+STFT or STFT only), column axis is MAF Hz. Copy the column labels straight out of the tune's MAF table (right-click the column axis, copy labels) and paste them into the graph so every column lines up with the editor.
- Log 20-30 minutes of mixed driving - cruise, light accel, hills. Keep your foot steady; no WOT. Different loads at the same RPM are different cells, so vary the load.
- Set cell hits low at first (around 5) so cells populate, then raise to ~10 as you get closer.
- Copy the histogram and paste-special multiply by % into the MAF table for big errors; switch to paste-special multiply by % - half once you are close, so you do not overshoot.
- After each paste, look at the 2D chart and smooth any spike or dip - a jagged MAF curve drives terribly even if the average error looks good.
- Flash, reset trims, drive again. Expect about 3 passes to get it close, more to get it tight.
Worked example (illustrative numbers that show the math; yours will differ)
At 3,000 Hz the histogram shows LTFT +4% and STFT +2%, so the computer is adding 6% fuel there. The MAF is under-reading airflow in that cell. Multiply the MAF table value at 3,000 Hz by 1.06: 50.0 g/s becomes 53.0 g/s. Smooth it into the cells either side, re-log, and repeat until every cell you drive in sits within ±3%.
If it isn't right yet, try this, then this
- Trims will not come in no matter how much you move the curve Worked if: Check fuel pressure and injector data first - a wrong injector constant looks exactly like a MAF error.
- Lean only at low Hz (idle and just off idle) Worked if: Suspect a vacuum leak or a dirty/oiled MAF element; clean or replace the sensor before touching the table.
- Trims swing bank to bank Worked if: Look for an exhaust leak ahead of the O2 on the lean bank, or a lazy O2 sensor.
- Trims look good but drift after a few days Worked if: EVAP purge was active during logging - disconnect the EVAP solenoid for the final passes, then plug it back in and re-verify.
- Corrections land in the wrong part of the curve Worked if: Re-copy the column labels from the tune - your graph axis does not match the editor table.
Check before you move on
- Trim histogram is centered near zero across every hertz column you actually drive in.
- MAF curve is smooth with no cliffs between adjacent cells.
Common mistakes
- Pasting the full error on a noisy cell - half-steps converge; full steps oscillate.
- Including PE/open-loop rows in the paste - zeros above the PE enable point (often around 7500 Hz) are not trim data.
- Graph axis labels that do not match the tune's table - the correction lands in the wrong cells.
- Forgetting the exhaust side: an exhaust leak ahead of the O2 reads false lean and you will chase trims forever.
- Trims are pegged at their limit (+/- 25%) and will not move with MAF changes - you have a mechanical problem (fuel pressure, injector data, vacuum leak), not a calibration problem.
Using EFILive? Same method in EFILive: log BEN = {EXT.WO2LAM1}*{GM.EQIVRATIO} against MAF frequency and multiply the BEN map into B5001 (MAF table).
04-3 Wideband open-loop MAF method and knowing when you are done
Dial the MAF curve to within about 1% of commanded using a wideband in open loop, which is tighter than trims alone can get you, and define done so you stop chasing noise.
P01, P59, E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- TW-04-1 test mode flashed (open loop, MAF-only, DFCO/COT off, spark pulled 5 degrees)
- Wideband installed, warmed up, and reading the same as its gauge
- TW-04-2 done or skipped if you are going straight to the wideband method
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59/E38/E67/E92 | Engine > Airflow > General | Same table as TW-04-2; this method just measures the error with a wideband instead of the trims | Paste-special multiply by half the EQ error %, repeat until the histogram reads near zero |
What to log in VCM Scanner
Mass Airflow Sensor (Hz)Column axis, in hertzEQ Ratio CommandedThe target - keep it at 1.00 (stoich) in the logged zonesWideband EQ RatioMeasured resultUser math: EQ error %Graph parameter; (wideband - commanded) / commanded in percent
Targets
| What | Target | When |
|---|---|---|
| EQ error histogram | within +/- 1% everywhere you drive | smooth driving, warm wideband, 10+ cell hits |
| Number of passes | about 3 to get close; keep going until the numbers stop moving | half-step corrections each pass |
Do this
- Add MAF frequency (Hz), commanded EQ, and your wideband EQ as channels. Build a user math channel for EQ error in percent and make a graph of it vs MAF Hz, with the column labels copied from the tune.
- Set the open-loop EQ ratio to 1.00 in the zones you will log so commanded stays at stoich (about 14.63 on gasoline).
- Drive with smooth transitions - roll in and out of the throttle. Abrupt stabs create false data. Work as far up the curve as the road allows with slow pulls.
- Copy the error graph, paste-special multiply by half into the MAF table, and smooth any outlier on the 2D view. Flash and repeat.
- When the whole histogram sits between -1 and +1, the MAF is dialed. Do not keep tuning past this - the sensor and the road are noisier than your corrections now.
Worked example (illustrative numbers that show the math; yours will differ)
Commanded lambda 1.00, wideband reads 1.04: 4% lean, so there is about 4% more air than the computer thinks. Multiply the MAF table at that frequency by 1.04, re-log, and repeat until actual matches commanded within about 2%.
If it isn't right yet, try this, then this
- Error is large and positive everywhere on the first log Worked if: Add a flat percentage to the whole table (e.g. multiply by 1.15 for 15% lean) before doing cell-by-cell work - do not try to fix a global offset one cell at a time.
- One Hz region will not converge Worked if: Check for intake leaks, MAF placement issues, or reversion; a mechanical cause beats the table every time.
- Numbers bounce pass to pass and never settle Worked if: Raise cell hits to 10-25 and drive longer; you are correcting noise, not error.
Check before you move on
- EQ error histogram reads -1 to +1 across the driven Hz range on a warm wideband.
- Curve is smooth; no single-cell spikes left behind.
Common mistakes
- Starting the log before the wideband is warm - the first stretch of data is false.
- Using the histogram for WOT tuning - the scanner does not record fast or accurately enough at WOT; that is a separate wideband-vs-commanded job done in the chart, cell by cell, also in half steps.
- Applying 100% of a big error in one shot - half steps keep you from overshooting into a lean condition.
- Error will not drop below a few percent in one Hz region while everywhere else is clean - suspect a sensor or intake tract issue in that airflow range (leak, resonance, reversion from a big cam) rather than the table.
Using EFILive? Same BEN-error method as TW-04-2: BEN = {EXT.WO2LAM1}*{GM.EQIVRATIO} mapped against MAF Hz, multiplied into B5001 in EFILive, extrapolated and smoothed.
04-4 VE tuning with the MAF failed (Gen III speed density)
On Gen III controllers, fail the MAF and tune the Primary (and Secondary) VE table against RPM and MAP so the speed-density model is correct on its own. You need this for MAF-failure limp behavior, and it is mandatory if the combo outflows the Gen 3 MAF's ~512 g/s ceiling.
P01, P59gasoline, E85naturally aspirated
Before this step:
- TW-04-1 test-mode thinking applied to VE: open loop, LTFT off, DFCO/COT off
- Wideband installed and warm; MAF failure confirmed by DTC
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Airflow > General Airflow > Main VE | Volumetric efficiency vs RPM and MAP - the speed-density air model | Paste-special multiply by the AFR error %; smooth between rows |
| P01/P59 | Engine > Airflow > General Airflow > Main VE | Backup VE table used in some failure modes | Copy the even-numbered MAP rows from the corrected Primary table into it |
| P01/P59 | Engine Diagnostics > Airflow | Setting it to 0 fails the MAF and forces speed density | 0 to fail; back to stock (e.g. 14000) when VE is done |
| P01/P59 | Engine > Fuel Control > Open Loop > EQ Ratio | Commands the target while in open loop | 1.00 from operating temp up (commands stoich, about 14.63) |
| P01/P59 | Engine > Fuel Control > Power Enrich | Keeps PE out of the part-throttle data | Raise (e.g. 640 kPa range value) so PE does not trigger during VE logging |
What to log in VCM Scanner
RPMRow axis of the VE tableMAP (kPa)Column axis of the VE tableWideband AFRMeasured resultCommanded AFRTargetAFR error % (user math)Graph parameter vs RPM and MAP
Targets
| What | Target | When |
|---|---|---|
| AFR error across the VE table | within a couple percent | warm engine, 25+ cell hits on final passes |
| Number of passes | about 3 to get it close | half-step or full-step paste-special, then smooth |
Do this
- Set the MAF fail frequency to 0 and confirm the MAF DTC actually sets - if there is no code, the MAF is not failed and you are tuning the wrong model.
- Force open loop (closed-loop-enable ECT vs IAT to 284 F), disable LTFT, set open-loop EQ to 1.00 at operating temp, DFCO enable temp to 284 F, PE enable MAP high, COT disabled.
- Log VE error: wideband AFR vs commanded AFR as a percent, graphed against RPM and MAP with the axes copied from the Primary VE table.
- Raise cell hits (25 is a good final number), copy the error graph, paste-special multiply by % into the Primary VE table, then copy the even MAP rows into the Secondary table.
- Smooth the table, write calibration only, reset trims, drive again. About three rounds gets it close.
- When done, set the MAF fail frequency back to stock and tune the MAF table the same way.
Worked example (illustrative numbers that show the math; yours will differ)
With the MAF failed, the cell at 2,000 rpm and 60 kPa reads 5% lean on the wideband. Whatever units your VE table uses, multiply that cell by 1.05. Change only cells with enough data, re-log, and repeat until the error is within ±2–3%.
If it isn't right yet, try this, then this
- PCM will not stay in speed density Worked if: Verify the MAF fail DTC is actually setting; some harnesses wire IAT into the MAF plug, so you cannot just unplug it - fail it in the tune.
- Error will not converge at low MAP Worked if: Check for vacuum leaks and verify injector data; VE cannot fix a mechanical fueling error.
- Table looks like a staircase after pasting Worked if: Smooth and interpolate between rows; a jagged VE table drives worse than a slightly wrong smooth one.
Check before you move on
- VE error is within a couple percent everywhere you drive, on a warm engine.
- MAF fail frequency restored to stock and the MAF code cleared.
Common mistakes
- Tuning VE with the MAF still alive - the PCM blends the two models and your corrections fight each other.
- Forgetting the Secondary VE table - the PCM can fall back to it and your work disappears.
- Logging before the engine is fully warm - the open-loop fuel tables are still adding fuel.
- No MAF DTC sets with fail frequency at 0 - the fail did not take; fix that before logging a single row.
Using EFILive? EFILive: set C6001 P0101 to Non-Emissions so a MAF DTC shows immediately, set B3803 to 283 F, and work the stock Main VE and Backup VE tables.
04-5 Gen IV/V virtual VE workflow (E38, E67, E92)
Tune the speed-density model on controllers that have no conventional VE table. From 2006 up, VE is a set of coefficients behind an equation; you edit it through the Virtual VE editor, paste your corrections into the generated table view, and recalculate the coefficients.
E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- TW-04-1 test-mode changes applied (open loop, LTFT off, DFCO/COT off)
- MAF failed in the tune and confirmed by DTC
- Wideband installed and warm
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67/E92 | Edit > Virtual VE | Generates a conventional-looking VE table (RPM x MAP) from the coefficient set so you can paste corrections into it, then calculates new coefficients back into the tune | Paste-special multiply by % of the logged error, then hit Calculate Coefficients |
| E38/E67/E92 | Edit > Virtual VE > zone display | The surface is computed in zones; the calculator can glitch where zones meet | Inspect boundaries after each calculation; manually fix artifacts or move a zone boundary |
| E38/E67 | Engine Diagnostics > Airflow | Fails the MAF to force speed density on Gen 4 | Set MAF fail high to 1 Hz; set P0101/P0102/P0103 to MIL on first error at first so you can confirm the fail, then silence the light later |
What to log in VCM Scanner
RPMAxis of the VVE table view - copy the labels from the editorMAP (kPa)Axis of the VVE table viewWideband AFR or EQ error %The correction, same as the Gen 3 VE histogramManifold switch state (IMRC)Gen 4 has separate VE for manifold switch open vs closed - log in the state you are tuning
Targets
| What | Target | When |
|---|---|---|
| VE error across the table | within a couple percent | warm engine, enough cell hits |
Do this
- Open Edit > Virtual VE. In VE mode pick the manifold switch state you are tuning (open is the common one), then set the MAP range to match the combo: 10-105 kPa for NA, 10-210 for 2-bar, 10-315 for 3-bar.
- Copy the RPM and MAP labels out of the VVE table view into your scanner graph so the axes match exactly.
- Fail the MAF (fail high to 1 Hz) and confirm the P0101/2/3 code sets - no code, no fail, no valid data.
- Log the AFR/EQ error vs RPM and MAP, smooth and interpolate like a Gen 3 table, then paste-special multiply by % into the VVE table view.
- Hit Virtual VE > Calculate Coefficients so the correction is written back as coefficients - the paste alone does nothing until you do this.
- Turn on Show Zone Numbers and look at every zone boundary; the calculator sometimes creates a ridge or cliff where zones meet. Fix it by hand or shift the boundary, then recalculate.
- Flash, reset trims, repeat until the error is within a couple percent.
If it isn't right yet, try this, then this
- Corrections seem to do nothing Worked if: You skipped Calculate Coefficients - the paste only edits the table view until the coefficients are recalculated.
- A sharp ridge appears in the surface after calculating Worked if: That is a zone-boundary artifact - smooth it by hand or move the boundary, then recalculate.
- Error will not converge in one MAP region Worked if: Check MAP sensor calibration and range selection (NA vs 2-bar vs 3-bar); the wrong range puts you in the wrong table.
Check before you move on
- Error histogram is tight and the coefficient calculation produced a smooth surface with no zone-boundary artifacts.
Common mistakes
- Pasting corrections and forgetting to calculate coefficients - the tune never actually changes.
- Tuning the wrong manifold-switch state - the open and closed tables are different.
- Trusting the zone boundaries blindly - always inspect them after a calculation.
- You cannot get the MAF to fail (no DTC) - the PCM is still blending MAF data and every correction is wrong.
Using EFILive? EFILive handles E38/E67 virtual VE through its own coefficient editor; table IDs vary by OS, so confirm the exact tables in EFILive's per-OS table list for your controller.
04-6 Blend MAF and VE, restore the test-mode changes, verify
Return the tune to normal blended operation - VE handling low RPM, MAF taking over above the dynamic-airflow threshold - and prove the trims stay in target with everything (closed loop, DFCO, COT, DOD, full spark) back on.
P01, P59, E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- TW-04-2/04-3 MAF dialed; TW-04-4 or TW-04-5 VE dialed
- As-found file available for compare
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67/E92 | Engine > Airflow > Dynamic | Below the disable RPM the PCM blends MAF and VE; above it runs MAF-only | Restore stock values from the as-found file |
| P01/P59 | Engine > Airflow > Dynamic | Same blend threshold on Gen 3 | Restore stock value from the as-found file |
| all | Engine > Fuel > Cutoff / Temperature Control / Oxygen Sensors | All the test-mode defeats from TW-04-1 | Restore every one from the as-found compare - DFCO, COT (if cats are present), O2 readiness, closed-loop enable, LTFT enable, DOD |
| all | Engine > Spark > Advance > Base tables | The 5 degrees you took out in TW-04-1 | Add it back if you are moving on to spark tuning next; if you are done with fuel and going to spark, you may leave it until Phase 5 starts |
What to log in VCM Scanner
LTFT Bank 1 / Bank 2Re-enabled - they should learn to near zero and stay thereSTFT Bank 1 / Bank 2Should hover near zero in closed loopFuel System StatusConfirm closed loop is back
Targets
| What | Target | When |
|---|---|---|
| LTFT in normal blended driving | slightly negative, 1-3% | closed loop, all systems restored |
| STFT in normal blended driving | within +/- 7% | closed loop, all systems restored |
Do this
- Open the as-found file in compare and walk every test-mode change back: dynamic airflow thresholds, DFCO, COT, O2 readiness, closed-loop enable, LTFT, DOD, and the MAF fail frequency if you touched it.
- Write the file, reset fuel trims with VCM Controls, and drive 20-30 minutes of mixed conditions in normal closed loop.
- Watch LTFT learn - it should settle slightly negative (1-3%) with STFT hovering near zero. If a region drifted, it is usually the blend zone just under the dynamic-airflow threshold; touch up whichever model owns that zone.
- Keep the cats-safe items (COT) enabled if the vehicle still has catalytic converters.
If it isn't right yet, try this, then this
- Trims good in MAF-only but off in the blend zone Worked if: The VE model is wrong where the blend happens - re-fail the MAF and fix VE in that RPM/MAP region.
- Trims good everywhere except idle Worked if: Idle lives deep in the VE/blend zone - check the low-RPM, low-MAP corner of the VE model and look for vacuum leaks.
- LTFTs learn negative at cruise after a few days Worked if: EVAP purge is adding fuel vapor the tune does not know about - normal; verify with the solenoid unplugged that the base calibration is right.
Check before you move on
- Trims in target with everything restored - this is the actual finished state, not the test-mode state.
- No DTCs from the fail/restore cycle left active.
Common mistakes
- Leaving DFCO or COT disabled on a street car with cats - one protects the converters, the other is factory driveability.
- Leaving the 5-degree spark pull in and then tuning spark on top of it - your spark tables end up 5 degrees off from where you think they are.
- Judging the tune by test-mode logs instead of re-verifying in normal blended mode.
- Trims were perfect in test mode but fall apart in blended mode - one of the two models is wrong in the blend zone; re-isolate and fix that model, do not fudge the other one to compensate.
Using EFILive? EFILive: restore B0120 (MAF/VE threshold), B3801/B4205/B4206 (closed loop and trims), B3618 (PE), B3803 and C6001 as they were.
5. Part-throttle spark
05-1 Base spark: high octane, low octane, and the knock learn factor
Understand how the PCM picks spark before you change any of it: the high and low octane tables, the knock learn factor that blends between them, and the adders that move timing around on top of the base tables. If you cannot explain why the scanner shows less timing than the table, you are not ready to edit the table.
P01, P59, E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- Phase 4 fueling done - never tune spark on top of wrong fueling
- Running the fuel you intend to run (octane changes everything here)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Spark Control > Spark Advance | Base spark vs RPM and cylinder airmass; the PCM interpolates between the two by the knock learn factor | High octane is the working table; low octane stays a safety net 4-7 degrees under it |
| E38/E67 | Engine > Spark > Advance | Same arbitration on Gen 4 | High octane is the working table; low octane stays a safety net 4-7 degrees under it |
| E92 | Engine > Spark > Advance > Base | Same arbitration on Gen 5; base tables sit alongside a full set of adder/correction tables | High octane is the goal table; verify the log actually achieves it |
| all | Engine > Spark > Advance (correction/adders) | Add or subtract timing on top of the base tables for conditions | Usually left alone; log them so you know what moved your timing |
| all | Engine > Spark > Retard | Predictive retard on throttle transients, separate from sensor knock | Factory attack rate is aggressive; it can be softened, but understand it first |
What to log in VCM Scanner
Knock Learn Factor1.00 means full high-octane table (Gen 3); dropping toward 0 means the PCM is sliding toward low octaneSpark AdvanceCompare against the table cell for your RPM and airmassKnock RetardWhat the sensors are pulling right nowCylinder Airmass (g/cyl)The load axis of the spark tables - match units to the tableIAT, ECTThe two adders most likely to explain timing that does not match the table
Targets
| What | Target | When |
|---|---|---|
| Knock learn factor on good fuel | 1.00 (full high-octane table) | no knock history; Gen 3 scale (Gen 4 logic is reversed) |
| Timing vs table | scanner timing matches the high-octane cell plus known adders | steady state, warm engine |
Do this
- Log a normal drive and pick a steady-throttle moment. Note RPM and cylinder airmass, look up the high-octane cell, and compare to the scanner's spark advance.
- Account for the adders first: IAT pulls timing on a warm day (a couple of degrees is normal), ECT pulls it if the engine is hot, flex fuel can add several degrees.
- Check the knock learn factor. If it is below 1.00 the PCM has seen knock and is blending toward the low-octane table - the table is not the problem, the knock history is.
- On Gen 5 torque-based controllers, also consider the virtual torque tables: if torque modeling is off, the PCM closes the throttle and pulls timing for reasons that have nothing to do with knock.
- Do not touch the spark tables until the scanner timing is explainable from the tables plus adders.
If it isn't right yet, try this, then this
- Scanner shows less timing than the high-octane table Worked if: Check IAT and ECT adders and the knock learn factor before assuming the table is wrong.
- Timing drops on tip-in then recovers Worked if: That is burst knock doing its job - log burst KR separately before blaming the sensors.
- Timing will not reach the table on a Gen 5 Worked if: Check the virtual torque tables - an undersized torque model pulls timing and closes the throttle.
Check before you move on
- You can point at any moment in a log and explain the scanner's timing from the high/low tables, the learn factor, and the adders.
Common mistakes
- Adding timing to chase a number the adders already explain - the IAT table pulled it, not the base table.
- Tuning spark while the learn factor is dragged down from old knock - reset it or fix the knock first.
- Forgetting the idle spark map is separate from the driving map on some platforms.
- Timing flatlines far below the table with no KR and no learn-factor drop - suspect a torque-model limit or a sensor fault (one documented case was a bad cam position sensor), not the spark table.
Using EFILive? EFILive: High Octane B5913 and Low Octane B5914 spark tables; Base Spark in Gear B5923 and Base Spark in Park/Neutral B5933 should mirror the corresponding rows so transitions between tables stay smooth.
05-2 KR histogram vs RPM and cylinder airmass - the 2-degree method
Walk the high-octane table toward MBT safely: add timing where there is no knock, pull it where the knock-retard histogram lights up, and finish with a safety margin and a real low-octane fallback table.
P01, P59, E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- TW-05-1 done - timing in the log is explainable
- Fueling dialed (Phase 4); knock learn factor reset or at 1.00
- Torque management understood - disable or account for TM while tuning KR so it does not obscure the knock picture
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Spark Control > Spark Advance | The working table you are optimizing | +2 degrees where the KR histogram is clean; -1 degree (or half the KR) where it is not; -2 degrees across the board at the very end |
| P01/P59 | Engine > Spark Control > Spark Advance | The fallback the PCM blends toward when it learns knock | Copy the finished high-octane table into it, then subtract 4 degrees (some tuners use 7) as the bad-gas safety net |
| E38/E67/E92 | Engine > Spark > Advance > Base | Same job on Gen 4/5 | Same 2-degree method; keep the low-octane table a real fallback, not a copy |
| all | Engine > Spark > Retard | How aggressively KR hits and how long it hangs around | Soften attack and quicken decay while tuning so KR does not overshoot and hide the real knock picture; restore or keep sane values after |
What to log in VCM Scanner
Knock Retard (max)Graph parameter - the histogram of worst KR per cellRPMHistogram row axis - match the spark tableCylinder AirmassHistogram column axis - match the spark table unitsSpark Retard (sensor)Raw sensor retard; on GM a negative value is timing being pulledKnock Learn FactorReset or watch it so old knock does not drag the test
Targets
| What | Target | When |
|---|---|---|
| KR histogram after several passes | all 0-1 degrees of max spark retard | mixed part-throttle driving, TM accounted for |
| Transient KR | 1-2 degrees acceptable, do not chase it | brief tip-in events |
| Final safety margin | subtract 2 degrees across the board once the histogram is clean | after the last add/pull pass |
| Low-octane fallback | 4-7 degrees under the finished high-octane table | final tune |
Do this
- Build the Main Spark Knock-Retard histogram: parameter is knock retard, axes are RPM and cylinder airmass copied from the spark table.
- Drive a good mix of throttle positions and load - cruise, grades, light accel. Fill the cells you actually use.
- Where the histogram shows KR, pull timing: about a degree for small KR, or about half the KR amount from the column just before and at the point it starts (KR is reactive - the knock started before the cell where it shows up). Smooth the change in.
- Where the histogram is clean, add 2 degrees. Repeat the drive.
- After a few rounds the histogram should read all 0-1 degrees of max retard. Then subtract 2 degrees across the whole table as the safety margin - that is your near-MBT street tune.
- Copy the finished high-octane table to the low-octane table and subtract 4 degrees (up to 7 on pump gas) so bad fuel or bad weather has something to learn down to.
Worked example (illustrative numbers that show the math; yours will differ)
Cruising at 2,400 rpm and 0.48 g/cyl, the knock-retard histogram averages 2.5° and it repeats log after log. Pull 2° from that cell and the cells around it in the high-octane table, re-log, and only add timing back once it stays at 0.
If it isn't right yet, try this, then this
- KR shows up in the same cells every drive Worked if: Pull 1 degree there, smooth it in, and re-drive - small, local, repeatable.
- KR only on tip-in, clean at steady state Worked if: That is burst knock, not sensor knock - look at the burst knock tables before touching the base tables.
- KR everywhere, pulling timing does nothing Worked if: Stop - this is the false-knock signature. Go to TW-05-4 before you pull the table into uselessness.
- Histogram will not populate in some cells Worked if: You are not dwelling there - hold gears longer on grades; do not invent data for cells you never hit.
Check before you move on
- KR histogram is 0-1 degrees everywhere after the final -2 degree pass.
- Low-octane table is a real fallback, not an identical copy.
Common mistakes
- Chasing 1-2 degrees of transient KR forever - it is normal, leave it.
- Pulling the full KR amount out of the exact cell where it appears - the knock started earlier; work the column before it too, and use half steps.
- Tuning KR with torque management active - TM retard looks like KR problems and sends you in circles.
- Leaving high and low octane identical - then the PCM has nowhere to go when it learns knock.
- KR appears everywhere regardless of timing, even after pulling 6+ degrees - that is false knock (TW-05-4), not a spark table problem. Stop pulling timing and diagnose the noise.
Using EFILive? Same method on B5913 (high octane); keep B5914 (low octane) as the fallback. Mirror the finished rows into B5923/B5933 (base spark in gear / park-neutral).
05-3 Knock sensor sensitivity - desensitize locally, never globally off
Handle proven false knock by desensitizing the knock detection only in the RPM/MAP region where the false signal lives, while keeping full knock protection everywhere else. Turning the sensors off removes the engine's last line of defense.
P01, P59, E38, E67gasoline, E85naturally aspirated
Before this step:
- TW-05-4 false-knock diagnosis done - you have proven the KR is false (higher octane test, physical inspection)
- TW-05-2 attempted - pulling timing did not move the KR
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Engine > Spark > Retard > Knock Sensor | Detection gain by manifold pressure and cylinder; raising it desensitizes that region | Change ONLY the MAP/RPM region of the false knock (e.g. the cells at and above the problem MAP); leave the rest stock |
| P01/P59 | Engine > Spark > Retard > Knock Sensor | Static background-noise reference the sensor signal is compared against | Small adjustments in the false-knock region only |
| P01/P59 | Engine > Spark > Retard | Caps how much timing KR can pull | Restore to normal - do not leave it zeroed as a shortcut |
| E38/E67 | Engine > Spark > Retard > Knock Sensor | Gen 4 detection sensitivity; Gen 4 sensors are more sensitive than Gen 3 to begin with | About 10% less sensitive at a time, only where the false knock lives |
| E92 | Engine > Spark > Retard > Knock Sensor | Same concept; Gen 5 adds knock enrichment tables alongside | Local, incremental changes only - same rule as Gen 4 |
What to log in VCM Scanner
Knock RetardConfirm the false KR is gone in the treated region and nowhere else changedRPM, MAPVerify you treated the right regionKnock Learn FactorIt should stop dragging toward low octane once the false signal is gone
Targets
| What | Target | When |
|---|---|---|
| KR in the treated region | 0-1 degrees like the rest of the histogram | same drive that used to show the false KR |
| Desensitization step size | ~10% per change | one region at a time, re-log between changes |
| KR everywhere else | unchanged - sensors still protecting the engine | verify with a deliberate light-knock check if you can |
Do this
- Prove it is false first: run a tank of higher octane or an ethanol blend and re-log. If the KR does not move with octane, it is noise, not knock.
- Find the exact RPM and MAP where the false KR lives from the histogram.
- On Gen 3, raise the Knock Sensor Global Gain vs MAP vs Cyl values only at and above that MAP in that region (documented example: cells went from all 4s to all 1s at 65 kPa where the false knock lived - note the direction for your OS and verify with a re-log).
- On Gen 4, raise the threshold/gain numbers about 10% in that region only.
- Re-log the same drive. The false KR should be gone and the knock learn factor should stay at full high-octane.
- If you ever zeroed Max KR vs PE during diagnosis, put it back - a zeroed cap is not a tune, it is a blindfold.
If it isn't right yet, try this, then this
- KR persists after pulling 6+ degrees of timing Worked if: That is the classic false-knock tell - timing does not move it because it was never knock. Prove with octane, then desensitize locally.
- KR appears at the same MAP everywhere in RPM Worked if: Treat the MAP column, not the whole table - one documented fix changed only 65 kPa and up.
- Not sure which direction makes it less sensitive on your OS Worked if: Change one region by 10%, re-log, and read the result before touching anything else - never guess the direction on the whole table.
Check before you move on
- False KR gone in the treated region, real knock protection intact everywhere else.
Common mistakes
- Desensitizing the whole table because one region is noisy - you just turned off the smoke detector because the toast burned.
- Zeroing knock retard tables or Max KR to 'stop the KR' - the KR was the messenger; now you get no messages.
- Desensitizing before proving false knock with the octane test - if it was real knock, you just approved detonation.
- The KR moves with octane (less KR on better fuel) - it is real knock, not false. Put the sensor tables back and fix fueling, timing, or the mechanical cause.
Using EFILive? EFILive exposes the same knock sensor gain/threshold tables per OS; same rule applies - local changes only, prove false knock with fuel first.
05-4 False knock diagnosis - get out from behind the laptop
Before touching any knock table, rule out the physical and environmental causes of false KR. The documented Trailblazer case had 10-14 degrees of KR and a brutal hesitation, and the fix was motor mounts - no table on earth fixes blown mounts.
P01, P59, E38, E67, E92gasoline, E85naturally aspirated
Before this step:
- TW-05-2 done - you have a KR histogram and pulling timing did not fix it, or the KR pattern looks mechanical
What to log in VCM Scanner
Total KRLog alongside sensor KR to see the whole retard pictureBurst KRSeparates tip-in burst knock from sensor knock - do not treat burst knock as a sensor problemKnock Retard (sensor)The channel you have been chasingIAT, ECT, Ambient TempRule out temperature first; IAT within ~30 F above ambient is normal for a closed-hood truckNarrowband O2 (mV)Oscillating near stoich is healthy; hanging at the bottom of the range means lean, which causes REAL knock
Targets
| What | Target | When |
|---|---|---|
| IAT vs ambient | within ~30 F above ambient | normal driving, hood closed |
| Narrowband O2 | oscillating around stoich (near 14.7) | part-throttle cruise |
| Octane test result | KR unchanged on better fuel = false; KR reduced = real | same drive, higher octane or ethanol blend |
Do this
- Check the environment first: ECT and IAT. An overheating engine or a heat-soaked intake causes real knock - fix the cooling/airflow before anything else.
- Look at the narrowband O2s at the KR point. Oscillating near 14.7 is healthy. Hanging at the bottom of the range means lean, and lean causes real knock - that is a fueling problem, not a knock-sensor problem.
- Ask whether the timing is excessive for the combo. A mostly stock engine on stock timing should not knock - if it does, suspect noise, not the table.
- Run the octane test: same drive on 93 or a splash of ethanol. KR that does not move with octane is false KR. KR that drops was real.
- Log Total KR and Burst KR separately. KR that only appears at tip-in and carries until you lift is often burst knock - treat the burst tables, not the sensors.
- Inspect the physical suspects: valvetrain noise (cam, lifters, pushrods, rocker arms, valve springs - all get louder with age and mods), carbon buildup (induction cleaning), wrong spark plug heat range, and the chassis - motor mounts, suspension, wheels and tires. The documented case was blown stock motor mounts letting the engine rattle in the bay.
- Only after all of this still shows KR that will not move with timing or octane do you earn TW-05-3.
If it isn't right yet, try this, then this
- KR is worst at light throttle and cruise Worked if: Check mounts, exhaust contact, and accessory drive noise first - light-load KR is the classic false-knock pattern.
- KR carries from tip-in until you lift Worked if: Log burst KR separately - that signature is burst knock, and the fix is in the burst tables.
- KR appeared after a cam/valvetrain change Worked if: Noisier valvetrain is the expected cause - octane-test it, then treat only the affected region (TW-05-3).
- KR on an older, high-mileage engine that used to be clean Worked if: Carbon buildup and worn mounts accumulate with age - induction cleaning and a mount inspection before any table change.
Check before you move on
- You can state in one sentence why the KR is false (octane test + physical cause) before any knock table is touched.
Common mistakes
- Pulling timing for weeks against KR that never moves - if 6+ degrees of pull does nothing, it was never knock.
- Treating burst knock at tip-in as a sensor sensitivity problem.
- Chasing KR on a lean hole - fix the fueling and the 'knock' vanishes.
- Ignoring the mounts and the exhaust - the sensor hears the whole engine, not just the cylinders.
- The octane test reduces the KR - it is real knock. Stop the false-knock hunt and fix timing, fueling, or the mechanical cause of the detonation.
Using EFILive? Same diagnostic process in any software - the octane test and the physical inspection are tool-independent.
6. Wide open
06-1 PE enable conditions: RPM, throttle/pedal, MAP and delay
Get Power Enrichment to engage promptly and predictably at WOT on your controller, so the first pulls are rich and safe rather than delayed and lean.
P01, P59, E38, E67, E92
Before this step:
- TW airflow-model steps (VE/MAF dialed in closed loop)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01 | Engine > Fuel > Power Enrich | Throttle-position threshold that must be crossed (along with MAP) before PE engages; hot and cold engine versions. | Stock trucks can be lazy; many tuners lower the enable thresholds toward WOT-appropriate values and verify PE actually engages in the log. |
| P01 | Engine > Fuel > Power Enrich | MAP threshold that must also be met before PE engages (both TPS and MAP gates must be satisfied). | Raise or lower to suit; on boosted cars set it very low (below 10) so boost at part throttle still gets PE. |
| P01 | Engine > Fuel > Power Enrich | Delay before PE enrichment begins/ramp rate at which fuel is added toward the PE target. | Stock delay (e.g. 5500 RPM delay on a 2002 Z06, or a ~2-second delay on a 2002 Silverado) is reduced to near zero for performance use; enrichment rate of 1.0 means no ramp, instant step to PE AFR. |
| E38 | Engine > Fuel > Power Enrich | Gen IV equivalent gates: accelerator pedal %, MAP kPa, and RPM delay before PE engages. | A widely referenced E38 truck recipe: 'Lower the pedal enable to 60%, raise the MAP kpa to 80. Lower the RPM delay to 1,500'. Labels vary by OS; use Ctrl+N to find them on your file. |
| E92 | Engine > Fuel > Power Enrichment | Gen V (torque-based) PE gate: the ECM must see a target % of the engine's available torque before PE is allowed. | Do not max this table to 100%; lower it toward ~50% if PE will not engage. Maxing it tells the ECM PE is forbidden unless making all available torque. |
What to log in VCM Scanner
Throttle Position / Accel Pedal PositionConfirm you actually crossed the PE gate during the pull.MAPConfirm the MAP enable gate was satisfied.Equivalence Ratio (Commanded)Confirm PE engaged: commanded lambda should drop below 1.0 toward your PE target.
Targets
| What | Target | When |
|---|---|---|
| PE RPM delay (performance use) | ~0-1500 RPM / ~0 sec | gasoline, all controllers |
| PE pedal/TPS gate | ~60-65% (E38 truck), low single digits acceptable on boosted Gen III | boosted applications where boost occurs at part throttle |
Do this
- Open the PE section for your controller and record the stock gates before changing anything.
- Lower delay toward zero and set TPS/pedal and MAP gates so PE engages well before full boost/load.
- On Gen V E92, check PE Enable Torque is not maxed at 100%.
- Flash and do a short part-throttle-to-WOT pull to confirm commanded EQ drops below 1.0.
From real tunes
In a modified 2003 Sierra LM7 / 4L60E tune compared with a stock 2004 LM7 1500 file on the same operating system (12587603), the 2-second delay before power enrichment kicks in was set to 0, so PE comes in as soon as its enable conditions are met.
If it isn't right yet, try this, then this
- If PE still will not engage, halve the pedal/TPS gate and halve the RPM/time delay, then re-test with a short pull. Worked if: Commanded EQ drops below 1.0 within about a second of WOT.
Check before you move on
- Commanded EQ visibly drops to your PE target during WOT in the log.
- PE engages promptly (no multi-second lean lag at the start of the pull).
Common mistakes
- On Gen V, maxing PE Enable Torque to 100% kills PE entirely and the engine runs near stoich at WOT (lean, power loss, engine risk).
- Leaving a 2-second PE delay or high stock gates: the engine sits lean at full load before enrichment arrives.
- On E38, commanding a low pedal % does not guarantee PE below ~50% pedal because GM derives an ETC % internally; verify in the log.
- Commanded EQ stays at ~1.0 (lambda 1.0) during a WOT pull: stop, PE is not engaging. Do not keep pulling; fix the gates first.
Using EFILive? EFILive V7.5/V8 Tune: same GM PE parameter set under Fuel; table labels mirror VCM Editor (hot/cold TPS enable on Gen III, pedal/MAP on Gen IV).
06-2 Commanded PE fueling: EQ Ratio vs RPM and target lambda
Command a safe, proven WOT lambda: rich enough for component safety and best power, lean enough to avoid drowning the pull.
P01, P59, E38, E67gasolinena|boosted
Before this step:
- TW-06-1 (PE actually engages)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01 | Engine > Fuel > Power Enrich | Commanded enrichment during PE: commanded AFR = stoich AFR / EQ ratio. The main WOT fueling target on Gen III. | Set across the board to a safe starting EQ (e.g. ~1.16-1.18 for ~12.5:1 on gas), then adjust per RPM after wideband error passes. |
| P01 | Engine > Fuel > Open Loop | Open-loop fueling adder used when PE is delayed or not yet engaged (notably the stock Corvette PE delay RPM of 5500 means much WOT time is on this table). | Leave sane; do not use it as a substitute for proper PE settings. |
| E38 | Engine > Fuel > Power Enrich | Commanded PE fueling on Gen IV; the ECM blends between this and the alcohol table by ethanol content on flex tunes. | Set for your target lambda; richen under boost. |
What to log in VCM Scanner
Equivalence Ratio (Commanded)What the ECM is asking for at WOT.Wideband EQ / AFR (MPVI Pro serial or analog input)What the engine is actually running; commanded vs actual drives the airflow-model corrections.Injector Pulse WidthSanity check that fuel delivery exists to back up the command.
Targets
| What | Target | When |
|---|---|---|
| Target lambda, NA gas | ~0.85 (12.5:1 AFR) | cammed/heads LS at WOT; stockers may like 13.0-13.5:1 |
| Target lambda, forced induction gas | ~0.78-0.80 (11.5-11.8:1 AFR) | supercharged; turbocharged can run ~0.72-0.75 |
| PE EQ ratio entries (gas) | ~1.16-1.20 (12.5-12.7:1 from 14.68 stoich) | starting point, then tune by wideband error |
Do this
- Convert your target AFR to EQ ratio: EQ = stoich / target AFR (e.g. 14.68/12.5 = 1.17).
- Set PE EQ vs RPM flat at that value first; do a WOT pull on the wideband.
- Compute EQ/AFR error vs commanded and correct the airflow model (MAF/VE), not the PE table, until actual matches commanded.
- Only then chase max power by leaning slightly on a dyno or with back-to-back pulls.
Worked example (illustrative numbers that show the math; yours will differ)
Target lambda 0.85 at 5,000 rpm, wideband reads 0.88: about 3.5% lean. Richen the PE command at that RPM by about 3.5% (or better, fix the airflow model in that range), re-log with another short pull, and stop if it reads leaner than target anywhere.
If it isn't right yet, try this, then this
- Command flat 12.5:1 (EQ ~1.17) across the PE table. Worked if: Wideband reads within a few tenths of 12.5:1; trims model from there.
- If lean at the top only, verify fuel pressure under load before adding more to any table. Worked if: Pressure holds 58 psi (returnless) or rises 1:1 with boost (referenced regulator).
Check before you move on
- Actual wideband lambda/AFR matches commanded PE within ~2-3% across the pull.
- No lean spikes at PE entry (enrichment rate check).
Common mistakes
- Chasing the PE table to fix a lean pull: PE is only the command; a lean actual means the airflow model (MAF/VE) or fuel system is wrong.
- Setting PE extremely rich 'for safety' without checking: wastes power and can mask knock; tune fueling to a real target.
- Reading narrowbands at WOT: they cannot measure WOT AFR, only rich/lean of stoich.
- Wideband shows leaner than ~0.90 lambda (~13.2:1) on gas at WOT and error will not correct with airflow model: stop and check fuel delivery (pump, filter, pressure).
Using EFILive? EFILive V7.5: PE EQ tables under Fuel > Power Enrich; commanded-vs-actual workflow is identical (AFR error vs MAF/VE).
06-3 WOT spark: PE correction, high/low octane tables, safe timing window
Run WOT timing that makes best power without living on knock retard; understand which spark tables act at WOT on your controller.
P01, P59, E38, E67na
Before this step:
- TW-06-1, TW-06-2 (fueling commanded and verified)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01 | Engine > Spark Advance > Spark Correction | Gen III table that adds (or removes) spark during PE as a function of EQ ratio. Factory LS2/GTO tunes can remove up to 1 deg by 6800 RPM. | Zero it or use small positive values deliberately; never assume it is zeroed. |
| P01 | Engine > Spark Advance | Base WOT spark maps on Gen III; the knock learn factor blends between them. | Start from a stock or LS6 table; reduce 2-4 deg below any unknown 'tuner' file, especially on 91 octane. |
| E38 | Engine > Spark > Advance | On Gen IV the timing tables stay high and low even in speed density; the knock learn factor shifts between them with knock. | Tune on the high table for your fuel, keep the low table a safety margin below. |
What to log in VCM Scanner
Knock RetardThe single most important WOT channel: any sustained KR means pull timing or add fuel.Spark AdvanceSee actual timing after all corrections (PE, IAT, knock).Knock Learn FactorOn Gen IV, shows how far the ECM has drifted from the high table toward the low table.
Targets
| What | Target | When |
|---|---|---|
| WOT timing, stockish LS1 | ~24-28 deg peak | pump gas; 30-32 deg at WOT is a lot of timing and usually shows real knock |
| Knock retard target | 0 deg sustained; occasional 1-2 deg tip-in blips acceptable after checking fueling | all WOT pulls |
Do this
- Scan for pending/active knock sensor codes first: with a code pending, sensors pull max allowable timing in PE and you will chase your tail.
- Log a WOT pull and read KR; if KR appears, remove timing in the affected cells before doing anything else.
- Add timing back in 1-deg steps only where KR was zero and the wideband confirms fueling is on target.
- Remember: the ability to add timing without KR does not prove it made power; verify with MPH/trap or dyno.
If it isn't right yet, try this, then this
- Start WOT timing 2-4 deg below the stock/LS6 table for your heads on 91 octane. Worked if: No KR and trap speed/MPH stops improving as you add 1 deg back.
Check before you move on
- Zero sustained KR on a full WOT pull with fueling on target.
- You know which table actually commands your WOT timing (PE correction + base tables).
Common mistakes
- Leaving PE Spark Correction at unknown values and wondering why timing does not match the base tables.
- Tuning spark before fueling is verified: a lean engine knocks no matter the timing.
- Copying an internet timing table verbatim onto 91-octane fuel.
- Sustained KR above ~4 deg on a pull: abort the pull, you are knocking hard; pull 2-3 deg in those cells and re-test.
- Audible ping at any point: abort immediately.
Using EFILive? EFILive V7.5 Scan: log KR, spark advance, and knock learn; spark tables live under Spark in the tune tool.
06-4 Injector duty cycle and fuel pressure under load
Prove the fuel system can deliver the commanded fuel at WOT before you tune around it; catch maxed injectors or a fading pump.
P01, P59, E38, E67
Before this step:
- TW-06-2 (commanded fueling set)
What to log in VCM Scanner
Injector Duty CyclePercent of available injection time used; over ~90% the injector is effectively static and fueling stops tracking command.Injector Pulse Widthms of open time; cross-check against RPM cycle time.Fuel Pressure (sensor) / Fuel Rail PressureConfirm pressure holds under load; returnless GM systems should hold ~58 psi, referenced systems should rise 1:1 with boost.
Targets
| What | Target | When |
|---|---|---|
| Injector duty cycle | <80-85% peak, never over ~90% | all WOT pulls; 90-95% is the absolute edge experienced tuners accept |
| Fuel pressure, returnless LS | 58 psi, steady | under all loads |
| Fuel pressure, boost-referenced regulator | rises 1:1 with boost (e.g. 58 + boost psi) | boosted |
Do this
- Log injector duty cycle on a full WOT pull and note the peak near redline/shift.
- If peak duty is over ~85%, plan bigger injectors before finalizing WOT fueling; do not band-aid with pressure beyond ~65 psi on stock-style injectors.
- Verify rail pressure holds under load with a mechanical gauge or sensor; if pressure drops as RPM climbs, fix pump/wiring/filter first.
- If you raise base pressure, rescale injector flow data in the tune (flow scales with the square root of pressure) and re-tune.
From real tunes
A real data point: a 6.0 with an SS2 cam and long tubes on pump gas made about 376 whp and 370 lb-ft on the stock 25 lb injectors, and the tune file notes it was out of fuel. If you are near that power on stock injectors, check injector duty before you add anything.
Fuel pumps in real builds: one 255 lph pump has supported about 500 whp and two of them 650+ whp; a Walbro 400 has supported a little over 600 whp in a turbo truck. A boosted build on decapped LM7 injectors at 16.5 psi showed 66% duty at 6,200 rpm while commanding 10.8 AFR.
If it isn't right yet, try this, then this
- Estimate headroom: rough rule, 80 lb/hr injectors support ~700 whp pump gas at ~90-95% duty. Worked if: Peak logged duty stays under 85% with the planned power level.
Check before you move on
- Peak duty under ~85% with margin for hot weather/altitude.
- Fuel pressure verified steady under load.
Common mistakes
- Logging duty only in low gears: load is highest in top gear; check the worst case.
- Assuming 100% duty is usable: some injectors go static well below 100% and lose linearity above ~90%.
- Cranking base pressure to 90-100 psi to avoid buying injectors: stock-style injectors were not designed for it.
- Duty over ~90% with AFR drifting lean at the top of the pull: abort, you are out of injector.
- Fuel pressure falling under load: abort, fix the fuel system before any more WOT.
Using EFILive? EFILive V7.5 Scan: log injector duty cycle and pulse width PIDs; same limits apply.
06-5 First-pass WOT procedure: low gear, short pull, abort criteria
Get the first full-load data safely: staged pulls, a co-pilot watching the log, and hard abort rules.
P01, P59, E38, E67, E92
Before this step:
- TW-06-1 through TW-06-4 (PE engages, fueling set, duty/pressure verified)
What to log in VCM Scanner
RPMKeep pulls in a safe RPM window.Knock RetardPrimary abort trigger.Wideband EQ/AFRPrimary abort trigger; watch for lean spikes.Engine Coolant Temp / IATHeat-soaked pulls knock sooner; log the conditions.Injector Duty CycleConfirm headroom live on the first pulls.
Targets
| What | Target | When |
|---|---|---|
| First pull | short: 3000-4500 RPM in a low gear, then extend range pull by pull | street testing with a co-pilot watching the log |
| Abort: knock | sustained KR > 2-3 deg or any audible ping | lift immediately |
| Abort: lean | wideband leaner than ~0.90 lambda (~13.2:1 gas) under boost, or commanded-vs-actual diverging fast | lift immediately |
| Abort: duty | > ~90% | lift; do not do another pull until injectors are sized |
| Abort: temps | IAT climbing fast / ECT overheating | cool down, do not heat-soak into knock |
Do this
- Verify wideband reads correctly at idle/cruise before any pull (sanity check against commanded).
- Start with a short low-gear pull, 3000-4500 RPM; co-pilot calls out KR and AFR while you drive.
- Review the log: commanded vs actual, KR, duty, gates (did PE actually engage?).
- Extend the RPM window one step per clean pull; only chase timing/fueling changes after fueling tracks command.
- Dyno is the controlled alternative: same staged approach, same abort rules.
If it isn't right yet, try this, then this
- Short pull, check log, extend 500-1000 RPM per clean pull. Worked if: Each extension shows KR = 0 and AFR on command.
Check before you move on
- At least one full pull to your shift point with zero sustained KR, fueling on target, duty under ~85%.
- You know your exact abort triggers by heart before the next pull.
Common mistakes
- No wideband on the first WOT pull: 'you can cause engine damage if you fuel the engine incorrectly' with narrowbands only.
- Doing the first pull in top gear at full load: highest cylinder pressure, least margin.
- Ignoring a pending knock-sensor code and tuning around max retard in PE.
- Any single pull shows sustained KR, a lean spike, duty > ~90%, or falling fuel pressure: that pull is the last one until fixed.
- Audible ping or mechanical noise: abort and investigate; do not 'finish the pull'.
Using EFILive? Same procedure with EFILive V7.5 Scan logging KR, wideband, duty; FlashScan for flashing.
06-6 Read the pull: commanded vs actual, AFR error, and iterating
Turn each pull's log into the next tune revision: fix the airflow model with wideband error, not the PE command.
P01, P59, E38, E67
Before this step:
- TW-06-5 (at least one logged WOT pull)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01 | Engine > Airflow > MAF Calibration | Airflow model used at WOT when MAF is enabled; corrected with wideband AFR/EQ error histogram. | Multiply by % from the EQ-error histogram (positive error = lean = add airflow). |
| P01 | Engine > Airflow > General | Speed-density airflow model; corrected with wideband error in SD. | Multiply by % from the VE EQ-error histogram. |
| E38 | Engine > Airflow > General | Gen IV virtual VE airflow model; corrected with wideband error. | Same % correction workflow; on 2-bar custom OS the VE table is the direct adjuster. |
What to log in VCM Scanner
EQ Ratio Error / AFR Error (user math)(Commanded - actual)/commanded in %: the number you paste-multiply into MAF/VE.MAF FrequencyX axis of the MAF error histogram.MAP / RPMX/Y axes of the VE error histogram.
Targets
| What | Target | When |
|---|---|---|
| WOT EQ/AFR error | within ~2-3% | after airflow model corrections, before chasing power |
| PE command vs dyno best | NA: start 12.5:1, lean toward best MPH/power in small steps | only after fueling tracks command |
Do this
- Build the EQ-error histogram in the scanner (commanded vs wideband), filtered to PE/WOT cells with enough hits.
- Apply paste-special multiply-% to the MAF or VE table (never add raw AFR points).
- Re-flash, re-pull, confirm error shrinks; repeat until actual tracks commanded.
- Then, and only then, experiment with PE target (leaner for NA power, richer for boost safety) in small steps with back-to-back verification.
- Watch the IAT correction: a heat-soaked pull can show KR that matches the IAT spark table, not a fueling problem.
Worked example (illustrative numbers that show the math; yours will differ)
Lay commanded lambda over actual for the pull. If actual is 3–4% leaner than commanded across 4,000–5,500 rpm and right on target elsewhere, the fuel model is off in that range: correct those cells, not the whole table.
If it isn't right yet, try this, then this
- Correct the airflow model until commanded = actual. Worked if: EQ error under ~3% everywhere at WOT.
- Only then sweep PE target for power. Worked if: MPH/trap or dyno torque rises, KR stays zero.
Check before you move on
- Wideband tracks commanded PE within a few percent across the whole pull.
- KR stays zero as you extend to full RPM.
Common mistakes
- Changing the PE table when the error is in the airflow model: then commanded moves but actual does not, and the error histogram lies to you.
- Tuning WOT fueling while PE entry is still delayed: the tip-in cells pollute the histogram; fix the gates first.
- Chasing a lean top-end that is actually falling fuel pressure.
- Corrections over ~10% in one pass with no improvement: stop and check for exhaust leaks (false lean), injector data errors, or a maxed MAF/injector.
Using EFILive? EFILive V7.5 Scan maps: build commanded-vs-actual error maps against MAF Hz or MAP/RPM, paste into Tune tables.
7. Throttle & torque management
07-1 Map the pedal-to-throttle relationship (DBW/ETC)
Understand which pedal tables actually set throttle response on a drive-by-wire LS, verify yours are stock/corrupt-free, and know which controllers tolerate changes.
E38, E67, P59
Before this step:
- Engine starts, idles, and drives without ETC/REP codes
- Stock read saved before any edit
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67 | Engine > Airflow > Electronic Throttle > Desired Throttle Area | Defines desired throttle blade area as a function of pedal input (axis is RPM on cars, VSS on trucks depending on OS) — this is the pedal remap table. | Leave stock. Small, smooth increases at low pedal for tip-in feel; never multiply the whole table at once. |
| P59 (Gen III DBW) | Engine > Airflow > Electronic Throttle | Gen III equivalent: max throttle rotation vs RPM and pedal-position mapping for TAC-module trucks. | Leave stock — Gen III PCM/TAC combos are known to freak out on pedal-map edits. |
What to log in VCM Scanner
Accelerator Pedal PositionVerify the pedal the driver sees matches what the ECM seesThrottle Position (Sensor) / Desired Throttle AreaConfirm blade actually reaches the desired area; mismatch = ETC tables or mechanical issueETC Throttle Angle Error (where available)Large error = increase/decrease the area table by 0.1–0.5 (large error) or hundredths (small error)
Targets
| What | Target | When |
|---|---|---|
| Throttle follows pedal to full commanded area at WOT | ~100% blade / commanded area | WOT pull, no REP or P0606 codes |
| No ETC angle error | error near zero across the sweep | Part-throttle and WOT logging |
Do this
- Open Engine > Airflow > Electronic Throttle and compare your Desired Throttle Area tables against a stock file for your exact OS; if a previous tuner copied tables from a different year/cal, copy the OEM set back in.
- On Gen III DBW (P59) swaps, do not remap the pedal tables — the TAC module will throw REP/P0606 and dead-pedal the truck.
- If throttle response feels dead with a larger throttle body, adjust the area tables in small increments and re-log angle error before touching anything else.
If it isn't right yet, try this, then this
- Compare all ETC tables cell-for-cell against a stock file of your OS Worked if: No codes and throttle error returns to zero
- Copy the complete Engine/Airflow/Electronic Throttle tab from the original tune into the new OS Worked if: Dead pedal / P0606 clears (known swap-car fix)
Check before you move on
- No ETC/REP codes after a full pedal sweep and a drive cycle
- Throttle reaches full commanded area at WOT in the log
Common mistakes
- Copying Desired Throttle Area tables from a different year calibration — causes P0606 and limp mode
- Maxing the whole table for 'more response' — small changes go a long way, big ones cause REP mode
- Trying Gen IV pedal-remap tricks on a Gen III TAC truck
- P0606 or Reduced Engine Power appears — restore the OEM ETC tables from a stock file immediately
Using EFILive? EFILive: Engine > Airflow > Electronic Throttle section carries the same Desired Throttle Area tables (category-level equivalent; individual parameter paths not individually verified).
07-2 Set engine-side torque management strategy (manual vs auto)
Decide what stays on and what gets raised: keep the trans-protecting TM, neuter the nannies that kill drivability (abuse mode, brake TM), and treat manuals differently.
P01, P59, E38, E67
Before this step:
- TW-07-1 complete
- Fueling and spark base tune reasonably close (TM hides nothing)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 (Gen III) | Engine > Torque Management > Spark Retard vs Torque Reduction | Converts a torque-reduction request into actual degrees of spark pulled — this table sets how much timing disappears per unit of requested reduction. | On 2005+ trucks where the trans upshift tables are zeroed from the factory, reduce this table ~50% to restore some shift TM instead of zeroing everything. |
| P01/P59/E38/E67 | Engine > Torque Management > Abuse | Cuts power on suspected neutral drops / driveline shock; can falsely trigger on swap vehicles. | Raise abuse RPM to 4000–5000 (or 6000) and abuse speed to 0 to get it out of the way. |
| P01/P59 | System > System Options | Pulls power when brake and throttle overlap (anti-burnout logic). | Set to 0 (off) on a swap vehicle — 1 means active, 0 means off. |
| E38/E67 | Engine > Spark > Advance > Minimum Spark | Floor for how far timing can be pulled during any torque reduction. | Stock is about -10; do not go lower than about -15. |
What to log in VCM Scanner
Torque Management AdvanceShows how much timing TM is actively pulling — log it during shifts and launchesSpark AdvanceCompare against TM advance to see the net timing the engine actually runs
Targets
| What | Target | When |
|---|---|---|
| No TM timing pull at steady WOT in gear | Torque Management Advance = 0 outside shift events | WOT pull, warm engine |
| Abuse mode never triggers on launch | No RPM cut / bounce at launch | Hard launch from a stop |
Do this
- Manual trans: engine-side TM during shifts barely matters (no shift event), but Drivetrain Abuse can cap you — a segment-swapped auto-to-manual file bouncing at ~2000 RPM is the classic abuse-mode symptom.
- Auto trans: leave engine-side TM functional; cut way back or max out only the tables that limit power *in gear* at WOT, never the shift-event path.
- Set Brake Torque Management to 0 on swaps (it exists to stop burnouts; you are doing a swap, you want burnouts).
- Raise Abuse Mode RPM out of the way (4000–6000) rather than zeroing tables you don't understand.
From real tunes
On a P01 (0411) computer, brake torque management pulls timing when it sees the brake applied, which can stall the engine or kill a launch. Turn it off under System > System Options by setting brake torque management from 1 to 0 on the row for your system type. This one needs a Write Entire, not a calibration write.
If it isn't right yet, try this, then this
- Raise Abuse Mode RPM to 4000–6000 and set abuse speed to 0 Worked if: Launch bounce / mystery power cut disappears
- Reduce Engine > Torque Management > Spark Retard vs Torque Reduction ~50% instead of zeroing trans tables Worked if: Shift firmness improves without killing the trans
- Set Brake Torque Management to 0 Worked if: Power no longer cut with brake+throttle overlap
Check before you move on
- WOT log shows no TM advance in gear
- No abuse-mode RPM bounce on launch
Common mistakes
- Zeroing every TM table at once, then wondering why the trans dies on full-power shifts
- Chasing 'TM' when the real limiter is abuse mode bouncing the engine at ~2000 RPM after an auto-to-manual segment swap
- Lowering minimum spark past -15 and inviting misfire-level timing holes
- TM advance stays pegged during normal driving — something else (traction control request, torque model) is asking for reduction; diagnose before proceeding
Using EFILive? EFILive: Engine > Torque Management carries the same Spark Retard vs Torque Reduction, Abuse Mode, and Minimum Spark parameters (category-level equivalent; individual parameter paths not individually verified).
07-3 Dial in torque reduction during shifts (don't delete it)
Keep the timing pull that happens *during* the shift event — it's what lets a stock trans survive — and scale it to your power level instead of on/off.
P01, P59, E38/E67 + T42
Before this step:
- TW-07-2 complete
- Shift pressures roughly set (TW-08-1) so TM changes are evaluated on a trans that shifts clean
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Trans > Torque Management > Upshift > Torque Factor | Multiplier on the shift-event torque reduction. 1.0000 = full factory TM, lower = less timing pulled during the shift. | Try 0.70 for ~30% less TM; do not zero it on a stock trans. A -1 modifier means no TM, 0 means full TM. |
| E38/E67 (T42) | Trans > Torque Management > Torque Reduction (Normal / Performance) | Percent of engine torque to pull during a shift event. Normal = drive, Performance = tow/haul (usable as a sport button). | Add ~10% across the table as a first experiment; 100% + lowered minimum spark is the max-attack setting (choppy at part throttle). |
| P01/P59/E38 | Trans > Torque Management > Abuse | Protects against neutral drops and driveline shock. | Disable or raise RPM to ~4000. |
What to log in VCM Scanner
Torque Management AdvanceWatch it swap with spark advance during each shift — the red/white swap in the log is the shift eventDelivered TorqueConfirm torque actually drops during the shift (target ~30 lb-ft at WOT on a healthy setup)Time of Latest 1-2 / 2-3 / 3-4 ShiftCorrelate shift duration with TM activity — TM duration is effectively fixed, so the shift must finish before timing ramps back in
Targets
| What | Target | When |
|---|---|---|
| Upshift torque factor | 1.00 stock → ~0.70 for 30% reduction; ~0.75 for 25% less timing pull | Healthy or built trans; stock 4L60E stays near 1.00 |
| Delivered torque during WOT shift | ~30 lb-ft (vs 200+ stock with a dragging shift) | WOT 1-2 / 2-3, trans warm |
| Shift duration | ~0.30 s at WOT | Warmed up, adaptives settled |
Do this
- On a stock 4L60E: change nothing in the shift TM path — 'we all know that 4L60s needs all the help they can get so just leave this alone.'
- On a built trans or higher power: scale the Upshift Torque Factor down in steps (1.00 → 0.85 → 0.70), logging delivered torque and shift time each step.
- Use the Performance (tow/haul) tables as a second, more aggressive shift calibration rather than overwriting Normal.
- If the shift drags past ~1 second with TM active, fix shift time/pressure first — TM duration is fixed, so a slow shift runs out of TM and timing ramps back in mid-shift.
If it isn't right yet, try this, then this
- Reduce Upshift Torque Factor 1.00 → 0.75 (~25% less timing pull) Worked if: Firmer WOT shift, shift time holds ~0.3 s
- Add ~10% to Trans > Torque Management > Torque Reduction table Worked if: Part-throttle shifts clean up without harshness
- Copy aggressive settings into the Performance (tow/haul) tables only Worked if: Normal driving stays civil, tow/haul becomes the sport mode
Check before you move on
- WOT shifts complete in ~0.3 s with TM advance visible during the event
- No flare, no double-bump 1-2
Common mistakes
- Killing all torque management on a stock 4L60E — 'don't disable it unless you want a broken trans'
- Zeroing trans TM tables and leaving the engine-side Spark Retard vs Torque Reduction maxed (or vice versa) — the two multiply
- Setting shift time to 0.00 while leaving adaptives enabled — can revert to 1-second shifts out of nowhere
- Shift times suddenly revert to ~1 s or flares appear after a flash — clear trans adaptives in the scanner and re-log before changing tables
Using EFILive? EFILive: Transmission > Torque Management holds the same upshift/downshift torque-reduction and torque-factor tables (category-level equivalent; individual parameter paths not individually verified).
07-4 Check Gen IV ETC airflow/torque ceilings (and Gen V notes)
Find the torque-model ceilings that close the throttle on modified Gen IV/V engines (Max Engine Torque, ETC TPS Max, Driver Demand/Peak Torque) and raise them in the right order.
E38, E67, E92
Before this step:
- TW-07-1 through TW-07-3 complete
- Engine making more torque than stock (cam, heads, boost) — stock engines rarely touch these
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E38/E67 | Engine > Torque Management > General > Maximum Torque | Maximum allowed engine torque vs RPM and gear for transmission protection. Electronic Throttle fitted vehicles only. | Raise (or max out) if logs show it capping power; many tuners max these unless protecting a trans. |
| E38/E67 | Engine > Torque Management > General > Maximum Torque | Maximum allowed engine torque vs RPM while the TCC is locked. | Raise with the vs-Gear table so lockup cruise doesn't become the limiter. |
| E38/E67 | Engine > Torque Management > General > ETC Limits | Lets the ETC close the throttle to limit torque based on RPM and requested torque. | Raise the 100%-requested-torque row if the throttle is being closed at high RPM under load. |
| E92 (Gen V) | Engine > Torque Management > General (Driver Demand / Peak Torque) | Driver Demand sets how much torque the ECU thinks you want at a given pedal; if Peak Torque is exceeded, the ECU limits power by closing the throttle. | Raise Peak Torque beyond your actual output and reshape Driver Demand so requested torque never drops under commanded — do both together. |
What to log in VCM Scanner
Torque Management AdvanceIf the throttle is being closed by TM rather than spark, this is where it showsThrottle Position (Sensor)Watch for the blade closing at high RPM/load while pedal is flat — the signature of a torque ceilingDriver Demand Requested Torque vs Immediate/Actual Axle Torque (Gen V)If requested drops to or under commanded, you are demand-limited
Targets
| What | Target | When |
|---|---|---|
| No throttle closure at WOT | Blade holds commanded through redline | WOT pull, pedal flat |
| Torque model ordering (Gen V) | Peak Engine Torque > Max Engine Torque; Driver Demand Requested > Immediate/Actual Axle Torque | All operating conditions |
Do this
- Log a WOT pull watching throttle position vs pedal. If the blade closes while the pedal is flat, you are hitting a torque ceiling, not a fuel/spark problem.
- E38/E67: raise Max Engine Torque vs RPM vs Gear and Max Torque vs RPM together; check ETC TPS Max if closure persists at high requested torque.
- E92: change Driver Demand and Peak Torque as a pair — raising one without the other just moves the limiter. 'It all starts at driver demand, both it and peak Tq needed modded.'
- On stock or near-stock combos, skip this step — 'it's very rare that you'll ever see torque Management in this era of ECU limit the vehicle.'
If it isn't right yet, try this, then this
- Log throttle vs pedal at WOT to confirm a closure actually exists Worked if: Blade closes with pedal flat = torque ceiling confirmed
- Raise Max Engine Torque vs RPM vs Gear (E38/E67) or Driver Demand + Peak Torque (E92) Worked if: Blade stays open, TM advance goes to zero
- Raise ETC TPS Max at high requested torque if closure persists Worked if: No more high-RPM throttle pullback
Check before you move on
- Blade tracks pedal to redline with no TM-driven closure
- Gen V torque PIDs ordered correctly (no limiter active)
Common mistakes
- Raising Max Engine Torque without raising Peak Torque (Gen V) — delivered torque just follows it up and nothing changes
- Copying ETC/Desired Throttle Area tables between different year cals while chasing a throttle-closure problem — causes P0606
- Maxing torque tables on a stock trans 'because the internet said so' and removing the trans protection you actually wanted
- P0606 / REP after touching any ETC-area table — restore OEM tables from a stock file of your exact OS
Using EFILive? EFILive: Engine > Torque Management > General exposes the same Max Torque and ETC limit tables on E38/E67 (category-level equivalent; individual parameter paths not individually verified).
8. Transmission
08-1 4L60E/4L80E: scheduling, line pressure, shift time
Get a 4L60E or 4L80E shifting at the right RPM, at ~0.30 s per shift, with line pressure raised safely — without touching the torque management that keeps it alive.
P01, P59, E38 + T42
Before this step:
- TW-07-2 and TW-07-3 complete (TM strategy set)
- Trans fluid full, no slipping before tuning
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59/T42 | Trans > General (Force Motor Current) | Maps commanded pressure to EPC solenoid current. The high-current line above ~96 PSI dumps line pressure. | Set the Positive table's top line to 98 (not the 1245 mA line) so raising pressure can't accidentally dump it. |
| P01/P59/T42 | Trans > Shift Pressures > Upshift (Normal / Performance) | Line pressure added during each upshift vs input torque. | Add in ~2% increments until shifts are crisp; back off if harsh. Alternate method: 0 psi at 0 ft-lb column, 40–50 psi at 640 ft-lb column, interpolate, clamp max at 96. |
| P01/P59/T42 | Trans > Shift Scheduling > Normal (Part Throttle / WOT) | MPH/RPM shift points per gear. | Leave stock until gear ratio and tire size are entered via the Gear/Tire Wizard; BlueCat trans table generator can rebuild these. |
| P01/P59/T42 | Trans > Shift Timing > Upshift | Target seconds per shift; the trans adapts pressure to hit it. | Set to 0.300 s across the board for clean, firm shifts. |
What to log in VCM Scanner
Time of Latest 1-2 / 2-3 / 3-4 ShiftThe honest shift duration — target ~0.30 sLine Pressure (if available)Confirm pressure rises with the changes, not dumped by the force-motor tableTCC SlipWatch for slip during and after shifts as pressure changes
Targets
| What | Target | When |
|---|---|---|
| WOT shift time | ~0.30 s | Warm trans, adaptives settled |
| Upshift pressure increase | +2% steps (or 40–50 psi at 640 ft-lb) | Stock 4L60E; firmer for built units |
| Max line pressure | ≤96 PSI | All conditions — the force-motor table dumps above this |
Do this
- Run the Gear/Tire Wizard first — without the right ratio and tire diameter, every shift schedule is wrong.
- Fix the Force Motor Current Positive table BEFORE raising pressure: the line above ~96 PSI at ~1245 mA dumps line pressure and will burn the trans.
- Raise upshift pressure in small 2% steps; if a shift gets harsh, back that gear down one step.
- Set desired shift time to a flat 0.300 s; leave trans TM alone on a stock 4L60E.
- If you do not know your gear ratio and tire size, leave shift scheduling stock — it will still shift through all gears and lock up.
From real tunes
What a firmer street tune changed in a modified 2003 Sierra LM7 / 4L60E tune compared with a stock 2004 LM7 1500 file on the same operating system (12587603):
| Setting | Stock | Modified |
|---|---|---|
| Shift pressure, low torque | 0–11 psi | 14–25 psi (about +14 psi) |
| Shift time, low torque | 0.29 s | 0.04 s |
| Upshift torque reduction | 0% | 15% |
| High-octane spark | stock | +0.5° to +2° across most cells |
4L80E notes from real high-power builds: separator plate feed holes of 0.078 in. (light car) or 0.093 in. (heavy) for 2nd, and 0.110–0.125 in. for 3rd and 4th; a billet input shaft past about 700 hp and a forged forward hub past about 800 hp. Fluid is full when it is level with the pan rail. A 0411 computer can also run a 4L80E as a standalone transmission controller; if the computer came from a 4L60E vehicle (or the other way round), swap the transmission segment.
If it isn't right yet, try this, then this
- Gear/Tire Wizard with correct ratio and tire diameter Worked if: Shift MPH points line up with actual road speed
- Force Motor Current Positive top line → 98, then +2% upshift pressure steps Worked if: Shifts firm up without harshness
- Desired shift time → flat 0.300 s Worked if: Logged shift times sit at ~0.3 s
Check before you move on
- All WOT upshifts complete near 0.30 s with no flare
- No harsh bang on light-throttle shifts
- Line pressure confirmed rising, not dumped
Common mistakes
- Raising shift pressure without fixing the Force Motor Current table — dumps line pressure and burns the trans
- Zeroing all trans TM on a stock 4L60E for 'faster shifts' — the number-one 4L60E killer
- Setting shift time to 0.00 with adaptives still enabled — can randomly revert to ~1 s shifts
- Flare between gears that pressure doesn't fix — mechanical (clutch pack) issue, not a tune issue
Using EFILive? EFILive: Transmission > Shift Pressures / Shift Times / Force Motor Current carry the same tables (category-level equivalent; individual parameter paths not individually verified).
08-2 6L80/6L90: shift timing, pressure pattern, and adapt resets
Make the 6-speed shift on time by setting the shift-time calculation the TCM actually uses, choosing the right pressure pattern, and resetting adaptives after.
E38 + T43, E92 + T87
Before this step:
- TW-07-3 complete
- Trans mechanically healthy; note your torque converter stall and type (stock vs multi-disc)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| E92/T87 (Gen 5 6L80) | Trans > Shift Pressures > General | Selects which pressure pattern the TCM runs. Normal mode has nasty fuel cuts on Gen 5. | Gen 5 6L80 only: switch Normal → Special. Do NOT do this on Gen 4. |
| T43/T87 | Trans > Shift Timing > Upshift > Torque Adder (Normal / Special) | The shift-time calculation the ECU uses to make the shift (despite the name, it sets shift time). | Set your target shift time here; match Normal vs Special to your pressure pattern. TransGo kits suggest ~0.5 top / 0.2 bottom interpolated (halving stock). |
| T43/T87 | Trans > Shift Timing > Upshift | Initial clutch pressures the TCM uses to hit the target shift time. | Flare while still in gear = add oncoming; flare after it's in the next gear = add offgoing. |
| T43/T87 | Trans > Torque Management | TM limiters that fight stall converters and cause downshift flare. | Stall TM: add ~2000 RPM to get it out of the converter's way; TCC Limit: disable with a multi-disc converter; TM Enable Temp: 493 to kill downshift flare; Speed Control Terminate: Immediate. |
What to log in VCM Scanner
Time of Latest Shift per gearVerify the TCM is hitting your Torque Adder targetTorque Management Advance vs Spark AdvanceThe red/white swap in the log shows TM during the shift — should be a quick event, not a long smearTCC Slip / TCC Desired SlipConfirm the converter is doing what the tables command after your changes
Targets
| What | Target | When |
|---|---|---|
| Upshift time | Per Torque Adder table (e.g. ~0.2–0.5 s; TransGo suggests halving stock) | Warm, adaptives reset then relearned |
| Stall TM ceiling | Stock + ~2000 RPM | Aftermarket stall converter |
| Shift feel | No flare, no long TM smear in the log | Normal driving and WOT |
Do this
- Gen 5 6L80: switch Pressure Pattern Mode Normal → Special first, then drive — many trucks feel better from this one change alone.
- Set Torque Adder (Normal/Special) to your target shift time; remember Special vs Normal must match the pressure pattern you're running.
- After ANY trans table change: VCM Scanner → Transmission → Trans Adapt Reset / Trans Adapt Preset / Trans Fast Adapt Reset, then drive it — the TCM learns from the presets.
- Diagnose flare by type: flare in the old gear = oncoming pressure; flare after engaging the new gear = offgoing pressure.
- Leave Shift Inertia alone unless you understand it — it just changes shift times another way.
If it isn't right yet, try this, then this
- Pressure Pattern Mode → Special (Gen 5 only), drive it Worked if: Part-throttle behavior cleans up immediately
- Set Torque Adder shift-time targets, then Trans Adapt Reset + relearn drive Worked if: Logged shift times match targets, no flare
- Add oncoming (flare in old gear) or offgoing (flare in new gear) preset pressure Worked if: Specific flare disappears
Check before you move on
- Logged shift times match the Torque Adder targets
- No flare hot or cold
- TM advance is a quick blip at each shift, not a sustained pull
Common mistakes
- Switching Pressure Pattern to Special on a Gen 4 6L80 — 'If you're Gen 4 and you do this, you're going to piss the truck off'
- Resetting adaptives without setting a sane shift time first — worst flare you've ever seen, nearly undrivable
- Chasing shift feel with pressure alone while the Torque Adder target fights you — the TCM will learn the pressure back down to hit its (wrong) time target
- Paying a 'guru' who tells you to reset adaptives before every pass instead of setting shift time and inertia correctly
- Trans slips under load after pressure increases — mechanical issue, stop adding pressure
Using EFILive? EFILive: Transmission > Shift Timing / Pressures expose the same Torque Adder and oncoming/offgoing preset tables (category-level equivalent; individual parameter paths not individually verified).
08-3 TCC apply strategy and slip targets
Decide when the converter locks and how much slip you allow: zero out the factory slip allowance that eats converters, set lockup points for your stall, and keep WOT lockup off unless the combo wants it.
P01, P59, E38 + T42/T43, E92 + T87
Before this step:
- TW-08-1 or TW-08-2 complete (base shift behavior sane)
- Know your converter: stock, single-disc aftermarket, or multi-disc
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| T42/T43/T87 | Trans > Torque Converter | Target slip RPM the TCM maintains via PWM pressure — the factory never fully locks the clutch. | Zero the desired-slip and minimum-slip tables and disable DOD slip. Factory allows ~20–60 RPM of constant slip, which is what kills stock converters. |
| T42/T43/T87 | Trans > Torque Converter | When the clutch applies/releases vs speed/load; max PWM duty. | TCC duty cycle max → 100% for a firm lock (leave stock on a stock converter); set apply points above your stall's happy zone. |
| T43/T87 (6L80/90) | Trans > Torque Converter | Which gears lock under acceleration vs cruise, whether it locks at WOT, and whether it stays locked on downshifts. | Accel gear: bring lockup in under acceleration (e.g. 3rd) to kill the loose-stall feel; WOT lockup: off except twin-screw/blower combos; Unlock Pre-Down 0 = stays locked on downshifts; set a sane minimum RPM (e.g. ~1350). |
What to log in VCM Scanner
TCC SlipActual slip — the number you're trying to drive to zero (or the Gen 5 floor)TCC Desired SlipWhat the TCM is commanding — confirms your zeroed tables took effectTCC Duty CycleVerifies the clutch is being commanded firmly, not dithering
Targets
| What | Target | When |
|---|---|---|
| Cruise slip (aftermarket/multi-disc converter) | 0 RPM commanded | Steady cruise, TCC applied |
| Cruise slip (Gen 5 6L80) | ~4.5 RPM — floor you cannot remove | TCC applied |
| Factory slip you're deleting | ~20 RPM per table, up to ~60 RPM stacked (AC off + AC on) | Stock calibration |
| WOT lockup | OFF (stays unlocked at WOT) | Unless twin-screw supercharged, where it has worked well |
Do this
- Zero TCC Desired Slip (AC off, AC on), minimum slip, and disable Use DOD Slip — 'GM allows for a slip... the torque converter clutch is never 100% locked... that's the reason why GM's torque converters have these issues.'
- Set lockup apply points to suit the stall: a 3200-stall truck locking in 3rd under acceleration eliminates the loose-converter feel without the shudder of a too-early lockup.
- Leave WOT lockup off — it feels fastest unlocked; only enable it on combos that have proven it (twin-screw).
- Multi-disc converter: disable the TCC Limit; stock converter: leave the duty-cycle max alone.
- Verify in the log that commanded slip is actually 0 (or 4.5 on Gen 5) and the clutch holds — slip under load means the converter, not the tune.
If it isn't right yet, try this, then this
- Zero desired slip tables + disable DOD slip, log TCC Slip vs Desired Worked if: Commanded slip reads 0 (4.5 Gen 5) and actual follows
- Raise lockup apply speeds above the stall's shudder zone Worked if: City driving clean, cruise locks firmly
- TCC duty cycle max → 100% (built converter only) Worked if: Lockup is binary and holds under load
Check before you move on
- No shudder or stumble at lockup in normal driving
- TCC holds at cruise with commanded slip at target
- No TCC-related codes
Common mistakes
- Locking the converter too early for the stall — shudder and stumble in parking lots and city traffic
- Enabling WOT lockup on a stock or single-disc converter — burns the clutch
- Zeroing slip tables and assuming Gen 5 will hit 0 — it always calls ~4.5 RPM; that's normal
- Shudder on apply that pressure/duty changes don't fix — converter clutch material issue
Using EFILive? EFILive: Transmission > Torque Converter carries TCC desired slip, apply/release, and duty-cycle tables (category-level equivalent; individual parameter paths not individually verified).
08-4 Manual swaps: T56/TR6060 ECM settings, clutch switch, skip-shift delete
Make the ECM behave with a manual: correct OS/trans type, no rev hang, working clutch input, CAGS gone, and no auto-trans codes.
P01, P59, E38, E67
Before this step:
- Trans physically installed with working clutch hydraulics and VSS
- Base engine tune running
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01/P59 | Trans segment / full flash | Gen III PCMs have a trans segment; the manual calibration changes idle return, rev hang, and removes auto logic. | 99–02: segment swap auto→manual is common. Auto→manual segment swaps are NOT advised — flash a factory manual file with a Tech 2 / OEM tool instead. |
| E38/E67 | System / Trans type | Tells the ECM there is no TCM to talk to. | Select manual, BUT: on E38/E67 this alone does not fix rev hang or idle return — you need the manual OS. Going auto→manual on the same OS leaves a rev hang that won't return to idle until you stop. |
| P01/P59/E38 | Trans > Manual CAGS | Computer-Aided Gear Selection forces 1-4 shifts under light throttle. | Set enable to 200 MPH and disable to 201 MPH to effectively delete it (or use a plug-in eliminator). Also disable the P0803 SES in Engine Diagnostics. |
What to log in VCM Scanner
Clutch Pedal Position / Clutch SwitchConfirm the ECM sees the clutch input for fuel-cut and starter logicRPM vs Vehicle Speed on decelRev hang diagnosis — RPM should fall with the clutch in, not hang until the car stopsDTC listAuto-trans codes (P0803, gear-ratio, TCC codes) must be disabled or they set the SES light
Targets
| What | Target | When |
|---|---|---|
| Rev hang | None — RPM falls promptly with clutch in | Normal driving, warm engine |
| CAGS | Never forces 1-4 | Light-throttle 1st-gear acceleration, 15–21 MPH |
| Auto-trans DTCs | No SES light | All driving |
Do this
- Gen III: start from a factory manual OS file (Tech 2 flash or matching manual calibration) rather than segment-swapping an auto file to manual — 'there are likely thousands of things going on in the background.'
- Gen IV (E38/E67/E40): there is no trans segment and no separate TCM control in the ECM — the ECM must have the correct auto or manual OS; a manual-tune E38 cannot run a 4L60E and vice versa.
- Wire the clutch switch to the ECM and enable the clutch fuel cutoff (same area as DFCO settings) so fuel cuts on shifts with a manual.
- Delete CAGS in the tune (Trans > Manual CAGS, 200/201 MPH) or with a plug-in eliminator; if you keep an eliminator and get P0803, disable the SES enable for that code in Engine Diagnostics.
- Disable every automatic-transmission DTC (gear, TCC, shift solenoid codes) so the SES light stays off.
If it isn't right yet, try this, then this
- Flash/use a factory manual OS for your controller (not a segment swap) Worked if: Rev hang gone, idle returns normally
- Wire clutch switch + enable clutch fuel cutoff Worked if: Scanner shows clutch input changing; clean shifts
- Trans > Manual CAGS 200/201 MPH + disable P0803 SES Worked if: No forced 1-4, no SES light
Check before you move on
- No rev hang; idle returns normally at stops
- No forced 1-4 skip shift
- No auto-trans DTCs
Common mistakes
- Segment-swapping a Gen III auto file to manual and getting a 2000-RPM bounce — that's Drivetrain Abuse/TM limiters, fix with the manual OS
- Setting 'trans type = manual' on an E38 and expecting the idle/rev-hang behavior to change — it won't without the manual OS
- Leaving CAGS active and fighting the 1-4 forced shift at every light
- 2000-RPM rev bounce after an auto→manual conversion — stop and flash the proper manual OS before tuning around it
Using EFILive? EFILive: same manual-OS requirement; CAGS and clutch parameters live under Transmission > Manual (category-level equivalent; individual parameter paths not individually verified).
9. Boost, E85 & flex fuel
09-1 Boost fueling: boost enrichment tables and PE under boost
Command boost-appropriate lambda (richer than NA) with a MAP-referenced enrichment strategy that also covers part-throttle boost.
P01, P59, E38, E67gasoline|e85boosted
Before this step:
- TW-06-1 through TW-06-6 (NA WOT procedure solid)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01 | Engine > Fuel > Boost Enrichment (2/3-bar custom OS) | MAP-referenced commanded fueling table added by the HP Tuners 2/3-bar speed-density OS; sets commanded AFR in boost. | Set to your boost target lambda (e.g. EQ ~1.25-1.30 for ~11.5:1 gas), richer as MAP rises. |
| E38 | Engine > Fuel > Power Enrich (2-bar custom OS) | E38 2-bar OS adds a MAP-referenced boost enrichment table in the PE tab; helps part-throttle/medium-load boost where plain PE gates may not have tripped. | Populate with boost lambda targets; verify in the log that enrichment tracks boost. |
| E38 | Engine > Fuel > Open & Closed Loop | Blended fueling vs aircharge/pressure ratio on some Gen IV files; can be used to ramp from stoich at low load to rich in boost. | Command stoich at low aircharge, interpolate to ~12.5:1 at 2-3 psi, ~12.0 at 5 psi, ~11:1 at 8+ psi. |
What to log in VCM Scanner
MAP / BoostConfirm which enrichment row the log is actually hitting.Equivalence Ratio (Commanded)Confirm enrichment commanded richer than NA PE as boost rises.Wideband EQ/AFRVerify actual tracks the richer command in boost.Knock RetardLean + boost = knock fast; KR is the canary.
Targets
| What | Target | When |
|---|---|---|
| Target lambda in boost, gas | ~0.78-0.80 (11.5-11.8:1); turbocharged ~0.72-0.75 | pump gas, air-to-air intercooled |
| Part-throttle boost | richer than stoich as soon as boost appears (e.g. 12.5:1 at 2-3 psi) | positive-displacement blowers that boost at low throttle |
Do this
- Fit a 2/3-bar MAP sensor and matching custom OS where available; the stock 1-bar OS cannot see boost.
- Set PE gates low (throttle table toward single digits, MAP enable ~95 kPa) so part-throttle boost cannot exist without enrichment.
- Populate the MAP-referenced boost enrichment table with your boost lambda targets, richer with rising MAP.
- Log a boost pull and confirm commanded enrichment arrives before/with boost, not after.
From real tunes
Timing and air/fuel at 5,000 rpm in five real boosted LS tunes (turbo and supercharged, pump gas, two with methanol injection):
| Boost | Timing (range) | Target AFR (range) |
|---|---|---|
| None (100 kPa) | 21–28° | 12.0–12.8 |
| About 7 psi (150 kPa) | 16–20° | 11.2–12.0 |
| About 14.5 psi (200 kPa) | 13.5–15° | 11.0–11.5 |
| About 22 psi (250 kPa) | 8–11° | 11.0 |
Roughly a degree out for every psi of boost, and richer as boost climbs. Use these as a sanity check, not a target: start lower and let your logs tell you when to add timing.
If it isn't right yet, try this, then this
- Set PE gates low and flat boost EQ at your target; short pull. Worked if: Commanded and actual both rich as boost builds.
- Shape EQ richer with MAP (12.5 -> 12.0 -> 11.5 as psi climbs). Worked if: AFR stays flat at target across the boost curve.
Check before you move on
- Commanded EQ drops into the 0.72-0.80 window as MAP passes 100 kPa.
- No lean spikes on boost onset in the log.
Common mistakes
- Running a boosted combo on the stock 1-bar OS: the ECM is blind above 105 kPa and fueling goes lean.
- Setting boost fueling only for full throttle: PD blowers make boost at part throttle and will happily melt pistons there.
- Copying someone's boost EQ table without checking your own wideband: every combo's airflow model differs.
- Any lean reading under boost (leaner than ~0.85 lambda gas): lift immediately, this is how engines die.
- KR appearing with boost onset: abort the pull, add fuel and pull timing before continuing.
Using EFILive? EFILive custom OS (e.g. DSP) provides MAP-referenced boost fueling tables on supported controllers; same lambda targets.
09-2 Boost spark and IAT correction: timing that survives heat
Run conservative boost timing with an IAT safety net that pulls timing as intake temps climb, and understand what each correction does.
P01, P59, E38, E67boosted
Before this step:
- TW-09-1 (boost fueling commanded and verified)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P01 | Engine > Spark Advance > Spark Correction | Retards spark as intake air temp rises; the heat-soak safety net for WOT and boost. | Keep stock shape or start retard at ~100-115 F and get aggressive past ~130 F on boosted combos. |
| P01 | Engine > Spark Advance | Base timing; on boosted Gen III tunes run significantly less WOT timing than NA. | Start 4-6 deg below your NA WOT timing in boost cells; add back only with KR = 0. |
| E38 | Engine > Spark > Advance > Spark Correction | Gen IV equivalent IAT-based retard. | Same strategy: verify in the log how much it is pulling on hot pulls. |
What to log in VCM Scanner
IAT / IAT2 (post-blower)The temperature the correction tables actually act on.Knock RetardAbort trigger; also distinguishes real knock from IAT correction (compare KR to the IAT table value).Spark AdvanceSee final timing after IAT and knock corrections.
Targets
| What | Target | When |
|---|---|---|
| IAT retard onset | start pulling timing ~100-115 F IAT, aggressive past ~130 F | boosted street combo |
| Boost timing vs NA timing | several degrees less; only add back with zero KR and fueling on target | pump gas boost |
Do this
- Set boost timing conservatively first; a rich mixture tolerates a bit more timing, but best power on boost is leaner fueling with less timing than you think.
- Verify the IAT correction actually engages on a heat-soaked pull: log IAT, the table's retard value, and KR separately.
- If KR appears only when IAT is high, that is the correction doing its job (or real heat knock): cool the charge or add retard, do not just add timing.
- On PD blowers, log IAT2 (post-rotor); that is the air the engine actually sees.
From real tunes
Boost timing points from real builds (pump gas, most with methanol injection, so not a target for straight pump gas):
| Boost | Timing | Notes |
|---|---|---|
| 7 psi | 19° → 17° | pulled 2° and made the same power |
| 14 psi | 14° | street tune, high-10s AFR |
| 17–18 psi | about 12° | 5.3 and 4.8 turbo builds, 721 whp at 17 psi |
| 22–23 psi | 9–12° | 11.0 AFR; 740 whp at 23 psi on 9° |
Spark plugs under boost: a one-step-colder plug gapped at about 0.025 in. to start. Around 0.030 in. the spark blows out under boost. Read the ground strap: you make the same power from the top or bottom of the bend, but the top is safer.
If it isn't right yet, try this, then this
- Shift the IAT table right one column so retard starts ~40-45 C if heat soak is costing power on 98-octane, then verify no KR. Worked if: Trap/MPH recovers with KR still zero.
Check before you move on
- Zero KR on back-to-back boost pulls, including a heat-soaked one.
- You can point at the log and say how many degrees came from the IAT table vs knock.
Common mistakes
- Zeroing the IAT spark table for 'more power': 'Be careful removing the timing retard. It can cause detonation and knock retard.'
- Chasing KR that is actually the IAT correction working as designed.
- Adding boost timing because 'it didn't knock' without checking it made power.
- KR climbing pull-over-pull as IAT rises: stop, cool down, and either pull timing or add IAT retard before continuing.
- Any audible ping under boost: abort immediately.
Using EFILive? EFILive: same IAT spark correction tables in the tune tool; log IAT and KR in the scan tool.
09-3 Flex fuel sensor: hardware, wiring, and plumbing
Install a GM/Continental ethanol content sensor so the ECM knows real fuel composition instead of guessing.
P59, E38, E67e85|flex
Check first: Flex fuel on a Gen III only works on certain P59 operating systems (the flex-fuel truck OS, 12579405 and later). Check that your OS has the Flex Fuel Enable switch before you buy a sensor.
Before this step:
- Fuel system sized for E85 (~30-40% more flow than gas)
What to log in VCM Scanner
Alcohol Content (NOT Ethanol Content)VCM Scanner's working channel for sensor-reported ethanol %; the 'Ethanol Content' channel may read wrong/zero.
Targets
| What | Target | When |
|---|---|---|
| Sensor reading on pump gas | ~5-15% ethanol | key on, fuel circulating; small offsets are normal |
| Sensor reading after E85 fill | climbs toward 70-85% over a few miles of driving | fuel has mixed in the tank |
Do this
- Source a genuine GM/Continental flex fuel sensor, GM part 13577429 (SE1004), plus pigtail/harness 13352241 and a pin kit for your ECM connector.
- Plumb the sensor in the fuel feed line (3/8 in / -6AN adapters); do not restrict flow.
- Wire: signal to the ECM flex-fuel input pin, plus switched 12V and ground. P59: signal to pin 56 on the blue connector (A->pin 56, B->+12V, C->ground). E38: signal to J1 connector pin 40, next to the MAF wiring.
- Key on, verify the sensor reports frequency/content in the scanner before enabling anything in the tune.
- Take care seating the added ECM pin: bent or loose pins are a classic failure here.
If it isn't right yet, try this, then this
- Key-on, fuel pump running, read Alcohol Content. Worked if: Stable plausible % (not 0, not pegged).
- If stuck, back-probe for the sensor's frequency output (roughly 50-150 Hz range on a working sensor). Worked if: Frequency present and varies with fuel.
Check before you move on
- Scanner 'Alcohol Content' channel reports a plausible, stable ethanol % that moves after a fuel change.
- No flex-fuel DTCs with the sensor wired but the tune not yet enabled.
Common mistakes
- Logging 'Ethanol Content' instead of 'Alcohol Content' in the scanner and concluding the sensor is dead.
- Noisy 12V or poor ground causing erratic readings; run a clean switched 12V and solid ground.
- Expecting instant % changes after a fill: the ECM updates as fuel mixes and flows.
- Sensor reads 0% or pegged with known E85 in the tank: stop, check wiring and the ECM pin before enabling flex fuel in the tune.
Using EFILive? EFILive V7.5 Scan: log GM.E85R / GM.E85PCT PIDs for sensor-reported ethanol; fix wiring if the PID reads 0 with E85 in the tank.
09-4 Enabling flex fuel in the tune: stoich, PE blend, and spark adder
Turn the sensor reading into real fueling and timing changes: stoich that follows ethanol %, PE that blends gas/alcohol tables, and a cautious spark adder.
P59, E38, E67e85|flex
Before this step:
- TW-09-3 (sensor installed and reading correctly)
Where it is in VCM Editor
| Computer | Path | What it does | Typical change |
|---|---|---|---|
| P59 | Engine > Fuel > Open & Closed Loop > Flex Fuel | Master switch that lets the ECM use the sensor for fueling and timing. | Enable; also set the sensor fault/default % sensibly (factory default ~38%). |
| P59 | Engine > Fuel > Open & Closed Loop > Flex Fuel Sensor | Selects physical sensor vs virtual ethanol estimation. | Set to 'Sensor' when a real sensor is wired. |
| P59 | Engine > Fuel > General > Air Fuel Ratio | Stoichiometric AFR the ECM targets, blended by ethanol content: ~14.68 at 0% down to ~8.98 at 100%. | Copy from a factory flex-fuel bin; do not leave flat at 14.68. |
| E38 | Engine > Fuel > Power Enrich | WOT commanded fueling tables; the ECM blends between them by ethanol content (50% ethanol = halfway between the two). | Set the alcohol table to your E85 WOT target; the blend handles everything in between. |
| E38 | Engine > Spark > Advance > Spark Correction | Extra timing vs ethanol %; the multiplier table controls how quickly the adder comes in with content. | Copy factory shape from a flex-fuel file; keep the adder conservative on boosted combos. |
| E38 | Engine Diagnostics > DTCs | Sensor diagnostics; enable with MIL on second error so a failed sensor is caught. | Enable, 1-MIL on second error. |
What to log in VCM Scanner
Alcohol ContentConfirm the blend input is live and stable.STFT/LTFTShould sit near zero on any blend if the stoich table is right.Knock RetardE85 tolerates more timing, but verify rather than assume.
Targets
| What | Target | When |
|---|---|---|
| Fuel trims on any blend | near 0% | cruise, after stoich table set |
| Stoich AFR at 100% ethanol | ~9.76 (E85) / table to ~8.98 at 100% | factory flex-fuel stoich table |
| WOT lambda on E85 | ~0.80-0.85 as a starting point; E85 max-power NA guides suggest ~0.77 | tune to your combo with the wideband |
Do this
- Enable flex fuel and select the physical sensor; enable the sensor DTCs.
- Set the stoich-vs-ethanol table from a factory flex-fuel bin (0% = 14.68 down to 100% ~8.98).
- Set PE gas and alcohol tables: gas to your gas target, alcohol to your E85 target; the ECM interpolates between them.
- Set the flex-fuel spark adder conservatively (copy a factory flex-fuel file's shape); go easy on boosted engines.
- Drive through a tank change and confirm trims stay near zero and the alcohol % tracks the fill.
If it isn't right yet, try this, then this
- Enable on pump gas first; confirm alcohol % plausible and trims near zero. Worked if: Trims within a few percent, % matches the fuel in the tank.
- Fill E85, drive, confirm % climbs and trims stay near zero. Worked if: Blend works end to end; then set WOT targets.
Check before you move on
- Trims near zero on both pump gas and E85.
- WOT wideband matches the blended PE command on both fuels.
Common mistakes
- Leaving the stoich table flat at 14.68: the engine runs lean on E85 everywhere.
- Copying an aggressive factory flex spark table onto a boosted engine: 'I would keep the flex fuel spark adder table fairly low' on supercharged cars.
- Forgetting the sensor DTCs: a failed sensor with no diagnostics leaves you on the wrong stoich silently.
- Trims pegged rich/lean after enabling: stop, the stoich table or sensor input is wrong; do not WOT until trims are sane.
- Alcohol % stuck at the fault default (~38%) with a known different fuel in the tank: wiring/sensor fault, fix before tuning.
Using EFILive? EFILive: enable Multifuel and the physical sensor in the tune tool; log GM.E85R/GM.E85PCT in the scan tool.
10. Follow up
10-1 Re-log after a week of driving
Catch what moved since the tune: trims that drifted, knock that came back, and adaptives that learned around your changes — then correct the tune, not the trims.
P01, P59, E38, E67, E92
Before this step:
- All tuning phases complete; at least a week of mixed driving since the last flash
What to log in VCM Scanner
LTFT Bank 1 / Bank 2The drift detector — compare against the trims from your final tuning logSTFT Bank 1 / Bank 2Current correction; large STFT with settled LTFT = recent change (fuel, weather, leak)Knock RetardKnock that reappears after a clean tune = fuel quality, heat, or carbon — not a spark table problem yetIAT / ECTContext for knock and trim movement — heat is the usual suspectSpark AdvanceConfirm commanded timing matches the final tune (nothing pulled it back)
Targets
| What | Target | When |
|---|---|---|
| LTFT drift vs final tune log | Within ±3% of where you left them | Same fuel, similar weather, fully warm |
| Knock retard | 0° in areas that were clean at final tune | Same octane as tuned on |
Do this
- Reset fuel trims in the scanner (VCM Controls) before the re-check log, after the engine is fully warm — otherwise you're mixing a week of learned data with today's conditions.
- Compare the new log against your final tuning log, not against zero: LTFTs that walked more than ~3% mean the air model is still off somewhere or something mechanical changed.
- If WOT now runs richer than target with high positive LTFTs, suspect the 'rich after flash' effect or a fuel change — reset trims, drive 15–20 minutes without babying it, then re-log before touching tables.
- If knock reappeared in cells that were clean: check fuel octane/brand first, then IATs and heat soak, then consider pulling 1–2° in just those cells — do not globally desensitize knock sensors.
- For 6L80/6L90: check that shift times still match your Torque Adder targets — if the TCM learned pressure down, clear trans adaptives and re-evaluate.
If it isn't right yet, try this, then this
- Reset fuel trims warm, drive 15–20 min normally, re-log Worked if: Trims settle back within ±3% of final tune
- Verify fuel: same station/octane/ethanol content as tuning day Worked if: Knock and trim anomalies trace to a fuel change
- Re-apply small VE/MAF corrections only to cells that actually moved Worked if: New log matches final tune
Check before you move on
- Trims within ±3% of final tune on the same fuel
- No new knock retard
- Shift behavior unchanged from final tune
Common mistakes
- Tuning to trims that include the 'rich after flash' adder — you pull fuel for a condition that disappears, then the tune goes lean when it does
- Resetting trims and immediately logging WOT — the first drive after a flash/reset is not representative
- Chasing a 10% trim swing with VE/MAF changes when the real cause was a different gas station or ethanol content
- Knock retard appears everywhere including light load — bad fuel batch or mechanical issue; don't tune around it
Using EFILive? EFILive: same procedure — log LTFT/STFT/KR with the V2/FlashScan and compare against the final tune log (process equivalent; scanner menu names differ).
10-2 Know when to re-check: seasons, fuel, and new mods
Build the habit of scheduled re-checks — the tune is done when the conditions it was built for change, not when the laptop closes.
P01, P59, E38, E67, E92
Before this step:
- TW-10-1 complete — you have a known-good baseline log to compare against
What to log in VCM Scanner
LTFT / STFTFirst thing that moves with season or fuelEthanol Content / Alcohol Content (flex vehicles)The two PIDs won't match right after a fuel change — trims swing while the ECU figures out the new stoichKnock Retard + IATSummer heat brings back knock that winter fuel hid
Targets
| What | Target | When |
|---|---|---|
| Re-check interval | After any fuel brand/octane/ethanol change; at season change; after any mod | Ongoing ownership |
| Trim swing after fuel change | Expect large negative trims briefly — normal while ECU determines new stoich | First 1–2 drives after ethanol content change |
Do this
- Re-log (with a trim reset, warm) whenever you change gas stations, octane, or ethanol blend — even a few percent ethanol change will send trims sharply negative for a drive or two while the ECU re-determines stoich; that is normal and not a tune problem.
- At season change: summer heat and winter fuel are different tunes in practice. Log knock retard and trims on the first hot week and first cold snap; pull timing only in the cells that actually knock.
- After ANY mod (intake, exhaust, cam, converter, gears, tires): re-run the affected phases — gears/tires means TW-08-1 shift scheduling via the Gear/Tire Wizard; a converter means TW-08-2/TW-08-3; breathing mods mean fueling phases again.
- Keep every final log and the matching tune file together with a date and fuel note — the re-check is a diff against that baseline, not a fresh tune from scratch.
- If trims moved and nothing changed (same fuel, same weather, same parts): look for mechanical causes first — vacuum leak, dirty MAF, O2 sensor aging, fuel pressure — before editing tables.
If it isn't right yet, try this, then this
- Re-log warm with reset trims after any fuel or season change; compare to baseline Worked if: Deviation isolated to fuel/weather, not the tune
- Mechanical checks (vacuum leak, MAF cleanliness, fuel pressure, O2 health) if trims moved with no trigger Worked if: Root cause found without touching tables
- Small targeted corrections in only the cells that moved Worked if: New log matches baseline
Check before you move on
- Baseline log + tune file archived with date and fuel noted
- Owner knows the three triggers: fuel change, season change, new mod
Common mistakes
- Re-tuning the MAF for a trim swing caused by a different ethanol blend — the ECU was still learning the new stoich
- Ignoring the first hot-weather knock as 'bad gas' three summers in a row instead of pulling 1–2° in the hot cells
- Changing parts and only re-logging WOT — part-throttle trims and trans adaptives need the same attention
- Trims pegged at their limits (±25%) with no fuel/weather/mod explanation — mechanical fault (fuel delivery, major vacuum leak); diagnose, don't tune
Using EFILive? EFILive: same re-check discipline applies; flex-fuel alcohol PIDs logged through FlashScan (process equivalent).
Printable checklist
Every "check before you move on" item, in order, plus the scanner channel list.
Before you start
- Confirm the exact wideband input path on YOUR file before wiring; editor menus vary by OS version.
- Check the support vehicle list before buying credits: if HP Tuners does not support your controller/OS, the license is useless.
- Before any Gen III segment or OS swap, confirm the donor segments match your hardware (trans, fuel system) — mismatched segments can leave the vehicle inoperable.
- Write Entire takes several minutes and is the one that demands the battery charger from TW-00-1.
1. Set the known values
- Confirm flow units match (lb/hr vs g/s) before pasting.
- If you switch fuels later (e.g. to E85), stoich must change with it — see TW-01-7.
- Measure the tire or read its true diameter; a '33-inch' tire is rarely exactly 33.0 inches.
- Verify fan operation with the engine running and A/C on before driving; a miswired fan will not show up in the tune.
- Speed-density tuning shifts the work to the VE table; that is Phase 2+ work, not a known-values entry.
- E85 stoich values vary slightly by blend; 9.83 is a starting point, lambda is the target.
2. Start it and verify
- Channel list loads, connects, and every channel populates with live data (no blanks or flatlines).
- Slow channels (ECT, IAT) set to multi-second polling intervals; fast channels at default.
- Channel config and layout saved under a clear name.
- Histogram column axis matches the editor MAF table Hz breakpoints exactly.
- Cell hits at 5, view set to Average, closed-loop filter in place.
- A test log populates cells across the idle and cruise Hz range without DFCO contamination.
- All targets above are inside their windows at warm idle.
- No check-engine light; read DTCs in the scanner (Diagnostics > Read DTCs) and resolve any before proceeding.
- Oil pressure healthy; no loud mechanical noises.
- Both upstream O2s switching in closed loop with believable crosscounts.
- Trims on both banks within +/-10% at warm idle.
- Fuel system status reaches closed loop after warm-up.
- Trim-vs-RPM pattern identified and its cause fixed or ruled out.
- Both banks agree within a few percent at idle and cruise.
- O2 sensors switching normally with no erratic traces.
- A clean log with zero sustained knock retard across idle, cruise, and moderate load.
- Real-vs-false knock ladder understood and documented.
- Stop-if list written into the tuning notes for the rest of the walkthrough.
3. Idle
- Engine holds the commanded RPM hot in P/N without throttle help
- RPM does not hunt more than ~50 RPM at steady hot idle
- Hot idle IAC counts stable in the 50-60 window
- TPS 0% and TPS voltage under ~0.8 V
- STIT and LTIT within +/- 1.0 g/sec hot, in both P/N and in gear
- RPM holds the TW-03-1 target without the throttle
- Engine catches on start and holds the target RPM hot
- Dynamic airflow tracks commanded RPM without STIT/LTIT-style fighting
- Raising airflow too far does not produce hanging RPM (back off if it does)
- ETC throttle % can exceed the flatline zone and reaches the airflow target
- Throttle follows RPM commands smoothly with no dead spots
- Steady hot idle spark swing within +/- 2 deg
- No stumble when the PCM transitions between idle and main spark tables (they agree in the idle region)
- Spark correction at steady hot idle is small and does not sawtooth
- RPM recovers from load hits (A/C, in-gear) without stalling or long flares
- STIT hovers near 0 at steady hot idle
- LTIT settled within +/- 1.0 g/sec in P/N and in gear
- Coast-down returns to target idle without hanging or stalling
- At a stop in gear, cracker and follower airflow are zero and adaptive idle is in control
- Cold start: key-turn, no-throttle start, catches and holds
- Hot restart: catches without a long crank or stall
- A/C engagement: RPM dips and recovers without stalling
- No P0300 or false misfire codes at idle
4. Part-throttle fuel
- Scanner shows open loop for the whole log and LTFTs are flat at zero.
- No DFCO events, no COT enrichment, no PE activation in the log.
- Trim histogram is centered near zero across every hertz column you actually drive in.
- MAF curve is smooth with no cliffs between adjacent cells.
- EQ error histogram reads -1 to +1 across the driven Hz range on a warm wideband.
- Curve is smooth; no single-cell spikes left behind.
- VE error is within a couple percent everywhere you drive, on a warm engine.
- MAF fail frequency restored to stock and the MAF code cleared.
- Error histogram is tight and the coefficient calculation produced a smooth surface with no zone-boundary artifacts.
- Trims in target with everything restored - this is the actual finished state, not the test-mode state.
- No DTCs from the fail/restore cycle left active.
5. Part-throttle spark
- You can point at any moment in a log and explain the scanner's timing from the high/low tables, the learn factor, and the adders.
- KR histogram is 0-1 degrees everywhere after the final -2 degree pass.
- Low-octane table is a real fallback, not an identical copy.
- False KR gone in the treated region, real knock protection intact everywhere else.
- You can state in one sentence why the KR is false (octane test + physical cause) before any knock table is touched.
6. Wide open
- Commanded EQ visibly drops to your PE target during WOT in the log.
- PE engages promptly (no multi-second lean lag at the start of the pull).
- Actual wideband lambda/AFR matches commanded PE within ~2-3% across the pull.
- No lean spikes at PE entry (enrichment rate check).
- Zero sustained KR on a full WOT pull with fueling on target.
- You know which table actually commands your WOT timing (PE correction + base tables).
- Peak duty under ~85% with margin for hot weather/altitude.
- Fuel pressure verified steady under load.
- At least one full pull to your shift point with zero sustained KR, fueling on target, duty under ~85%.
- You know your exact abort triggers by heart before the next pull.
- Wideband tracks commanded PE within a few percent across the whole pull.
- KR stays zero as you extend to full RPM.
7. Throttle & torque management
- No ETC/REP codes after a full pedal sweep and a drive cycle
- Throttle reaches full commanded area at WOT in the log
- WOT log shows no TM advance in gear
- No abuse-mode RPM bounce on launch
- WOT shifts complete in ~0.3 s with TM advance visible during the event
- No flare, no double-bump 1-2
- Blade tracks pedal to redline with no TM-driven closure
- Gen V torque PIDs ordered correctly (no limiter active)
8. Transmission
- All WOT upshifts complete near 0.30 s with no flare
- No harsh bang on light-throttle shifts
- Line pressure confirmed rising, not dumped
- Logged shift times match the Torque Adder targets
- No flare hot or cold
- TM advance is a quick blip at each shift, not a sustained pull
- No shudder or stumble at lockup in normal driving
- TCC holds at cruise with commanded slip at target
- No TCC-related codes
- No rev hang; idle returns normally at stops
- No forced 1-4 skip shift
- No auto-trans DTCs
9. Boost, E85 & flex fuel
- Commanded EQ drops into the 0.72-0.80 window as MAP passes 100 kPa.
- No lean spikes on boost onset in the log.
- Zero KR on back-to-back boost pulls, including a heat-soaked one.
- You can point at the log and say how many degrees came from the IAT table vs knock.
- Scanner 'Alcohol Content' channel reports a plausible, stable ethanol % that moves after a fuel change.
- No flex-fuel DTCs with the sensor wired but the tune not yet enabled.
- Trims near zero on both pump gas and E85.
- WOT wideband matches the blended PE command on both fuels.
10. Follow up
- Trims within ±3% of final tune on the same fuel
- No new knock retard
- Shift behavior unchanged from final tune
- Baseline log + tune file archived with date and fuel noted
- Owner knows the three triggers: fuel change, season change, new mod
Scanner channel list
Engine RPM (SAE)Intake Manifold Absolute Pressure (SAE)Mass Airflow (SAE)Mass Airflow SensorDynamic AirflowCylinder AirmassIntake Air Temp (SAE)Engine Coolant Temp (SAE)Throttle Position (SAE)O2 Voltage B1S1 (SAE)O2 Voltage B2S1 (SAE)Short Term Fuel Trim Bank 1 (SAE)Short Term Fuel Trim Bank 2 (SAE)Long Term Fuel Trim Bank 1 (SAE)Long Term Fuel Trim Bank 2 (SAE)Fuel System #1 Status (SAE)Knock RetardTiming Advance (SAE)Engine Oil PressureInjector Pulse Width Avg. Bank 1Vehicle Speed (SAE)Equivalence Ratio Commanded (SAE)Idle Air Control PositionWB EQ Ratio 1
Sources (259)
- 67-72chevytrucks.com/vboard/showthread.php?t=792225&page=13
- docs.google.com/document/d/19t7lHtTqoFONVpYrjWpOdRZt3tRwGyCKwtQSKFaaHfc/mobilebasic
- forum.efilive.com/archive/index.php/t-28252.html
- forum.efilive.com/archive/index.php/t-7837.html
- forum.efilive.com/showthread.php?11498-Correct-IFR-tables-for-LS3-LS7-injectors-in-Gen-III
- forum.efilive.com/showthread.php?23660-Maf-scaling
- forum.hptuners.com/activity.php?s=e5e84ec1fb6fbb57e764ae56a7f98ab4
- forum.hptuners.com/showthread.php?100210
- forum.hptuners.com/showthread.php?101086-New-to-HPTuners-need-some-advice&s=e6e4e4b8b884d3
- forum.hptuners.com/showthread.php?101530-Fuel-trims-climb-then-return-to-normal-during-dri
- forum.hptuners.com/showthread.php?10567-WB-Maf-Tuning-Questions-Logs
- forum.hptuners.com/showthread.php?107464-Gen-3-VE-Tuning
- forum.hptuners.com/showthread.php?108424-New-to-Tuning-first-LS-Swap-Check-my-work-Do-I-ne
- forum.hptuners.com/showthread.php?108743-knock-retard&s=db1e956e5173427cd487b6fc5314de5b
- forum.hptuners.com/showthread.php?111529
- forum.hptuners.com/showthread.php?112114-Desensitizing-Knock-Sensors-Clarification
- forum.hptuners.com/showthread.php?112943-E38-ECM-Calibration-2007-Silverado-6-0l-New-to-Hp
- forum.hptuners.com/showthread.php?113593-Polling-rate-extremely-slow-even-with-only-3-poll
- forum.hptuners.com/showthread.php?114130-VE-tuning-Ls1
- forum.hptuners.com/showthread.php?11645-Need-help-fine-tuning-402-idle
- forum.hptuners.com/showthread.php?12788-desensitizing-the-knock-sensors
- forum.hptuners.com/showthread.php?12986-LS7-timing-table-question&s=9c2891f319ca94fbc7a350
- forum.hptuners.com/showthread.php?1311-HOT-(and-or-COLD)-PE-ENABLE-TPS-THRESHOLD-vs-RPM
- forum.hptuners.com/showthread.php?13377-Low-Timing-due-to-IAT-Modifier-table
- forum.hptuners.com/showthread.php?13712-Vacuum-leak-detection
- forum.hptuners.com/showthread.php?14118-3-bar-tune-simple-question&s=150c41e530c005bb2b174
- forum.hptuners.com/showthread.php?14819-More-knock-with-less-timing-and-always-on-the-low-
- forum.hptuners.com/showthread.php?15564-About-to-throw-in-the-towel-nailing-down-idle/page
- forum.hptuners.com/showthread.php?16422-CAGS-Delete-PO803
- forum.hptuners.com/showthread.php?17611-Resetting-Fuel-Trims
- forum.hptuners.com/showthread.php?18900-Running-Rich-Think-it-is-a-leak
- forum.hptuners.com/showthread.php?18955-IFR-adjustment-question
- forum.hptuners.com/showthread.php?19059-difference-between-write-calibration-and-write-ent
- forum.hptuners.com/showthread.php?19558-E38-Normal-Coastdown-Transition
- forum.hptuners.com/showthread.php?22950-New-cam-and-logs-please-help
- forum.hptuners.com/showthread.php?24552-Idle-Airflow-Final-Mininum-Should-it-be-tuned
- forum.hptuners.com/showthread.php?25253-Ford-Injector-Calibration-Data-amp-Tuning-Info
- forum.hptuners.com/showthread.php?25401
- forum.hptuners.com/showthread.php?26399
- forum.hptuners.com/showthread.php?27493-Got-rid-of-Knock-Retard
- forum.hptuners.com/showthread.php?29177-Poll-Do-you-desensitize-you-knock-sensors
- forum.hptuners.com/showthread.php?29585-Start-Up-problem-with-fuel-trims
- forum.hptuners.com/showthread.php?31113-MAF-calibration
- forum.hptuners.com/showthread.php?31776-Electronic-Throttle-Opening-Rate&p=236466&viewfull
- forum.hptuners.com/showthread.php?3216-Timing-High-Octane-Table
- forum.hptuners.com/showthread.php?32417-injector-duty-cycle-question
- forum.hptuners.com/showthread.php?32890-HP-Tuners-arrives-to-me-in-2-days&s=df95f0c7619030
- forum.hptuners.com/showthread.php?34253-Looking-for-a-MAF-histogram
- forum.hptuners.com/showthread.php?34827-No-Power-Enrichment-below-50-throttle
- forum.hptuners.com/showthread.php?35129-LNF-Maf-Calibrating-w-PICS
- forum.hptuners.com/showthread.php?35663-advice-on-tuning-for-my-42lb-injectors
- forum.hptuners.com/showthread.php?37197-MAF-tuning-and-Power-enrichment
- forum.hptuners.com/showthread.php?37600-Not-your-normal-torque-management-question
- forum.hptuners.com/showthread.php?3839-How-to-advance-timing
- forum.hptuners.com/showthread.php?40778-Diagnostic-Advise/page2
- forum.hptuners.com/showthread.php?41662
- forum.hptuners.com/showthread.php?43536
- forum.hptuners.com/showthread.php?44004-E92-Vats-delete-for-standalone-harness-engine-dyno
- forum.hptuners.com/showthread.php?45131-Target-lambda-for-e85-tuning-fg-xr6-turbo
- forum.hptuners.com/showthread.php?46563-Knock-Retard-Help
- forum.hptuners.com/showthread.php?47362
- forum.hptuners.com/showthread.php?47362-Flex-fuel-addition
- forum.hptuners.com/showthread.php?48010
- forum.hptuners.com/showthread.php?48168-Long-term-fuel-trim-stuck
- forum.hptuners.com/showthread.php?52280-what-parameters-control-Max-Engine-Torque-values/p
- forum.hptuners.com/showthread.php?53159-Logging-KR-what-PID-s-shoud-i-use
- forum.hptuners.com/showthread.php?53500-Supercharged-Jeep-boost-tuning
- forum.hptuners.com/showthread.php?54025-LTFT-changing-WOT-tune-over-time
- forum.hptuners.com/showthread.php?54548-GMPP-E38-crate-engine-ECU-speed-density
- forum.hptuners.com/showthread.php?55738-Can-someone-help-me-setup-a-3-0-E38-SD-VE
- forum.hptuners.com/showthread.php?5615-WTF-Min-injector-pulse
- forum.hptuners.com/showthread.php?56640-Flex-Fuel-Conversion-g8-PE-EQ-Ratio-Alcohol-table
- forum.hptuners.com/showthread.php?60204-Need-some-help-with-a-FAST-102
- forum.hptuners.com/showthread.php?61013
- forum.hptuners.com/showthread.php?61345
- forum.hptuners.com/showthread.php?62124-Ls1-Tuning-Help-High-idle-with-new-intake-and-Thro
- forum.hptuners.com/showthread.php?62355-Boost-tuning-E38-questions
- forum.hptuners.com/showthread.php?65760-e38-vats-disable
- forum.hptuners.com/showthread.php?66186-Flex-Fuel-Kit
- forum.hptuners.com/showthread.php?68473-Beginner-Questions
- forum.hptuners.com/showthread.php?70125-HPTuners-not-displaying-ethanol&p=519394&viewfull=
- forum.hptuners.com/showthread.php?70722-2017-zl1-max-and-peak-torque-line-up-no-matter-wha
- forum.hptuners.com/showthread.php?71971
- forum.hptuners.com/showthread.php?73016-99-blazer-vcm-scanner
- forum.hptuners.com/showthread.php?73999-Fuel-pressure-info-deka-80lb-rescale-or-not&s=2075
- forum.hptuners.com/showthread.php?74547-Cam-ProCharger-idle-issues
- forum.hptuners.com/showthread.php?749-V8-Spark-Advance-IAT-Correction-Add
- forum.hptuners.com/showthread.php?75253-2016-Silverado-flex-fuel-tuning
- forum.hptuners.com/showthread.php?75343-MAF-calibration-gt-help-needed
- forum.hptuners.com/showthread.php?77928-Engine-VS-trans-torque-management
- forum.hptuners.com/showthread.php?78262-segment-swap-issue
- forum.hptuners.com/showthread.php?79564-VATS-Delete-Let-s-cover-it-all-in-one-thread
- forum.hptuners.com/showthread.php?80155-Idle-Desired-Airflow-not-corresponding-with-RAF-ta
- forum.hptuners.com/showthread.php?81064-Signs-in-VCM-of-a-vacuum-exhaust-leak
- forum.hptuners.com/showthread.php?81472-2009-g8-GXP-P0606-Tuning-issue&s=e91ab8265209bd4dd
- forum.hptuners.com/showthread.php?81688-sierra-2016-fuel-flex-activation
- forum.hptuners.com/showthread.php?85832-Coyote-refuses-to-add-spark
- forum.hptuners.com/showthread.php?86065-Testing-tunes-and-LTFT-restes
- forum.hptuners.com/showthread.php?86419-Real-low-desired-idle-airflow
- forum.hptuners.com/showthread.php?86657-E38-ECU-manual-vs-automatic
- forum.hptuners.com/showthread.php?8815-Open-Loop-Maf-Tuning
- forum.hptuners.com/showthread.php?91266-differance-on-Writing-Calibration-or-Entire
- forum.hptuners.com/showthread.php?91696-Segment-swapping-E78-E67-E38-A6-to-M6-vs-Stock-OS
- forum.hptuners.com/showthread.php?92511-power-enrichment-maf-and-speed-density
- forum.hptuners.com/showthread.php?92728-Another-stalling-coming-to-idle-issue
- forum.hptuners.com/showthread.php?92789-Trimming-too-much-fuel-in-closed-loop
- forum.hptuners.com/showthread.php?92996-Commanded-EQ-Ratio
- forum.hptuners.com/showthread.php?94294-How-to-get-rid-of-knocks
- forum.hptuners.com/showthread.php?96766-99-C2500-5-7l-IAT
- forum.hptuners.com/showthread.php?98692-Torque-management-questions-E67
- forum.hptuners.com/showthread.php?98821-High-and-low-octane-tables
- forum.hptuners.com/showthread.php?9986-throttle-percentage-and-power-enrichment
- github.com/fome-tech/wiki/blob/HEAD/docs/05-Limits-And-Protections/Injector-Duty-Cut.md
- hptuners.com/articles/how-hp-tuners-credit-and-licensing-system-works/
- hptuners.com/product/pro-link-plus-internal/
- images.carid.com/hp-tuners/items/pdf/additional-vcm-enhancements.pdf
- ls1tech.com/forums/attachments/pcm-diagnostics-tuning-7/1998-trans-am-ls7-procharger-10-11
- ls1tech.com/forums/pcm-diagnostics-tuning/233945-successfully-desensitized-my-knock-sensor
- ls1tech.com/forums/texas-members/521815-32-psi-oil-pressure-help.html
- lswiring.com/blogs/bench-programming/hp-tuners-vs-efilive
- mailordertuner.com/blogs/news/data-logging-101-for-your-hptuners-mpvi3-pro-and-standard-mo
- schiller-tuning.com/articles/afr-vs-lambda-everything-about-the-lambda-air-fuel-ratio-char
- streettechmag.com/2022/10/04/how-to-unlock-a-gm-gen-v-lt-series-e92-ecm-using-hp-tuners/
- vcmperformance.com.au/blogs/news/gen-iv-e38-e67-idle-control
- www.9tperformance.com/products/ethanol-content-sensor
- www.chevyavalanchefanclub.com/cafcna/index.php?threads/hptuners-predator-or-what-potential
- www.corvetteforum.com/forums/c5-scan-and-tune/3582228-knock.html
- www.gmt400.com/threads/maf-sensor-readings.18385/
- www.hpacademy.com/courses/practical-reflash-tuning/hp-tuners-holden-hsv-r8-chevy-ss-maf-re
- www.hpacademy.com/forum/webinar-questions/show/gm-ls3hp-hp-tuners-re-flashing
- www.hpacademy.com/previous-webinars/190-simple-hp-tuners-changes/
- www.hpacademy.com/previous-webinars/217-idle-tuning-hp-tuners-gmhp-tuners/
- www.hpacademy.com/technical-articles/ls-idle-tuning-with-hp-tuners/
- www.hptuners.com/es/pub/Standalone Data Logging User Guide (Public) v3.2.11.pdf
- www.hptuners.com/product/aem-x-series-obdii-wideband-afr-controller-gauge/
- www.hptuners.eu/help/vcm_editor_parameters_gm_eng_idle_airflow.htm
- www.hptuners.eu/help/vcm_editor_parameters_gm_eng_spark_advance.htm
- www.lsxmag.com/tech-stories/flying-blind-what-to-data-log-when-tuning-a-vehicle/
- www.lsxmag.com/tech-stories/late-model-tuning-101-with-efilive/
- www.lsxmag.com/tech-stories/ls-electronic-fuel-injection-tuning-tips-with-efi-live/
- www.lsxmag.com/tech-stories/project-corn-star-tuning-an-ls-for-boost-with-hp-tuners/
- www.tahoeyukonforum.com/threads/what-do-you-consider-normal-oil-pressure.87086/
- www.theturboforums.com/info/article/hp-tuners-vcm-suite-tuning-and-review-part-two-maf-and
- www.thevettebarn.com/forums/showthread.php?t=3598
- www.youtube.com/watch?v=33Y8_5ZNZ_g
- www.youtube.com/watch?v=VvMWdN4r0Ho
- www.youtube.com/watch?v=nnjIpKbkDkQ
- youtu.be/1QIRgaGfzWk?t=135
- youtu.be/1QIRgaGfzWk?t=176
- youtu.be/1QIRgaGfzWk?t=262
- youtu.be/1QIRgaGfzWk?t=46
- youtu.be/1QIRgaGfzWk?t=98
- youtu.be/2kdB3dIIOoI?t=106
- youtu.be/2kdB3dIIOoI?t=187
- youtu.be/2kdB3dIIOoI?t=239
- youtu.be/2kdB3dIIOoI?t=248
- youtu.be/2kdB3dIIOoI?t=260
- youtu.be/2kdB3dIIOoI?t=420
- youtu.be/2kdB3dIIOoI?t=611
- youtu.be/2kdB3dIIOoI?t=695
- youtu.be/2kdB3dIIOoI?t=88
- youtu.be/33Y8_5ZNZ_g?t=1140
- youtu.be/33Y8_5ZNZ_g?t=1343
- youtu.be/33Y8_5ZNZ_g?t=1349
- youtu.be/33Y8_5ZNZ_g?t=955
- youtu.be/3qO1ZTXbIqU?t=74
- youtu.be/4SmhtMQMvRA?t=1384
- youtu.be/4SmhtMQMvRA?t=1457
- youtu.be/4SmhtMQMvRA?t=1474
- youtu.be/4SmhtMQMvRA?t=1668
- youtu.be/4SmhtMQMvRA?t=193
- youtu.be/4SmhtMQMvRA?t=2006
- youtu.be/4SmhtMQMvRA?t=2022
- youtu.be/4SmhtMQMvRA?t=205
- youtu.be/4SmhtMQMvRA?t=2193
- youtu.be/4SmhtMQMvRA?t=2235
- youtu.be/4SmhtMQMvRA?t=249
- youtu.be/4SmhtMQMvRA?t=2530
- youtu.be/4SmhtMQMvRA?t=2643
- youtu.be/4SmhtMQMvRA?t=2794
- youtu.be/4SmhtMQMvRA?t=2801
- youtu.be/4SmhtMQMvRA?t=2843
- youtu.be/4SmhtMQMvRA?t=477
- youtu.be/5A5U8mIgCU8?t=71
- youtu.be/5A5U8mIgCU8?t=75
- youtu.be/63ar6indHDI?t=121
- youtu.be/63ar6indHDI?t=134
- youtu.be/63ar6indHDI?t=288
- youtu.be/63ar6indHDI?t=352
- youtu.be/63ar6indHDI?t=440
- youtu.be/63ar6indHDI?t=495
- youtu.be/63ar6indHDI?t=566
- youtu.be/6qdSx0VITGI?t=122
- youtu.be/6qdSx0VITGI?t=21
- youtu.be/7IoWmLEmlvE?t=1000
- youtu.be/7IoWmLEmlvE?t=1128
- youtu.be/7IoWmLEmlvE?t=1196
- youtu.be/7IoWmLEmlvE?t=140
- youtu.be/7IoWmLEmlvE?t=172
- youtu.be/7IoWmLEmlvE?t=183
- youtu.be/7IoWmLEmlvE?t=211
- youtu.be/7IoWmLEmlvE?t=255
- youtu.be/7IoWmLEmlvE?t=304
- youtu.be/7IoWmLEmlvE?t=406
- youtu.be/7IoWmLEmlvE?t=568
- youtu.be/7IoWmLEmlvE?t=569
- youtu.be/7IoWmLEmlvE?t=626
- youtu.be/7IoWmLEmlvE?t=773
- youtu.be/7IoWmLEmlvE?t=887
- youtu.be/8L6mAENM1Rs?t=199
- youtu.be/8L6mAENM1Rs?t=242
- youtu.be/9ZES7-aF_8U?t=1334
- youtu.be/9ZES7-aF_8U?t=1393
- youtu.be/9ZES7-aF_8U?t=288
- youtu.be/9ZES7-aF_8U?t=532
- youtu.be/9ZES7-aF_8U?t=827
- youtu.be/AtzA01iG4HM?t=15
- youtu.be/AtzA01iG4HM?t=20
- youtu.be/AtzA01iG4HM?t=28
- youtu.be/DD9kMOHeyZU?t=1021
- youtu.be/DD9kMOHeyZU?t=1052
- youtu.be/DD9kMOHeyZU?t=1090
- youtu.be/DD9kMOHeyZU?t=410
- youtu.be/DD9kMOHeyZU?t=782
- youtu.be/apVTAoiWRlE?t=1063
- youtu.be/apVTAoiWRlE?t=112
- youtu.be/apVTAoiWRlE?t=1156
- youtu.be/apVTAoiWRlE?t=1178
- youtu.be/apVTAoiWRlE?t=1301
- youtu.be/apVTAoiWRlE?t=158
- youtu.be/apVTAoiWRlE?t=186
- youtu.be/apVTAoiWRlE?t=366
- youtu.be/apVTAoiWRlE?t=646
- youtu.be/apVTAoiWRlE?t=683
- youtu.be/apVTAoiWRlE?t=701
- youtu.be/apVTAoiWRlE?t=752
- youtu.be/apVTAoiWRlE?t=774
- youtu.be/apVTAoiWRlE?t=850
- youtu.be/apVTAoiWRlE?t=876
- youtu.be/cX0OuvgUCbQ?t=1302
- youtu.be/cX0OuvgUCbQ?t=194
- youtu.be/cX0OuvgUCbQ?t=581
- youtu.be/cXf3fnrZGwU?t=123
- youtu.be/cXf3fnrZGwU?t=125
- youtu.be/cXf3fnrZGwU?t=132
- youtu.be/cXf3fnrZGwU?t=140
- youtu.be/cXf3fnrZGwU?t=183
- youtu.be/cXf3fnrZGwU?t=209
- youtu.be/cXf3fnrZGwU?t=232
- youtu.be/cXf3fnrZGwU?t=245
- youtu.be/cXf3fnrZGwU?t=256
- youtu.be/cXf3fnrZGwU?t=273
- youtu.be/cXf3fnrZGwU?t=274
- youtu.be/cXf3fnrZGwU?t=33
- youtu.be/cXf3fnrZGwU?t=39
- youtu.be/cXf3fnrZGwU?t=60
- youtu.be/cXf3fnrZGwU?t=79
- youtu.be/cXf3fnrZGwU?t=92
- youtu.be/cXf3fnrZGwU?t=93