How the controller works
A variable cam system uses an oil control solenoid to move the cam relative to the crank. The Nexus pulses that solenoid, reads the cam's actual position from the cam sensor, and adjusts duty until the measured angle matches the angle you asked for. Getting it right comes down to three layers:
- The target: where you want the cam, from the Target Angle table.
- The base duty: roughly how much duty it takes to hold the cam still at that position.
- The PID controller: the corrections that close the gap between target and actual.
If the base duty is right, the PID only has small errors to fix, and the cam moves quickly and settles cleanly. The base duty table is kept per intake bank, and the exhaust cam has its own equivalent settings. For the overall function, see cam control, and check cam control wiring before you start tuning.
The basic settings
| Setting | What it does | Our advice |
|---|---|---|
| Intake Frequency | How fast the solenoid is pulsed | Lower frequencies give a wider usable duty range but can make the solenoid rattle. Higher frequencies are quieter but squeeze the usable range. Use a known value for your engine if you have one |
| Intake Duty Cycle Min | The lowest duty the controller may command | Set it where the solenoid just starts to react, so the controller doesn't waste time in a dead zone |
| Intake Duty Cycle Max | The highest duty the controller may command | Set it where more duty stops producing more movement |
| Intake Cam Direction | Whether the controller drives the cam toward advance or retard | Intake cams are almost always Advance |
| Enable Intake Overall Corr | Adds an Overall Correction table on top of the target | Turn it on while tuning so you can shift the whole map quickly |
Target Angle table
This is the tune itself: the intake cam angle you want at each operating point, mappable up to 4D. A typical pattern is less advance at low RPM for a stable idle, more advance through the midrange where it helps cylinder filling and torque, then easing back again near redline. The shape that makes the most power is different for every engine, so the only way to find it is on a dyno, sweeping cam angle at each load point and watching torque.
Finding the base duty
The Intake Base Duty Cycle table (up to 3D) holds the duty needed to keep the cam steady at its target. Here's how we fill it:
- Hold the engine at around 2000 to 3000 rpm. That makes sure there's full oil pressure to move the cam.
- Command a target angle that isn't zero.
- Watch the Cam Control Intake Bank 1 (or Bank 2) output channel as the cam moves to the target.
- Once the cam is sitting steady on target, note the duty being used and enter it into the matching Intake Base Duty Cycle table.
How to tell if it's off: too little base duty makes the cam slow to reach target, and too much makes it overshoot.
PID tuning
The PID tables control how aggressively the controller chases the target. All three can be mapped up to 3D.
- Proportional: reacts to how big the error is. More P means a faster response to a large gap.
- Integral: builds up correction over time to remove the error that P leaves behind.
- Derivative: resists fast movement, which slows the cam as it approaches the target and stops an aggressive P from overshooting.
For cam control, a sensible place to begin is an integral of around half the proportional, with a small amount of derivative to take the edge off overshoot. From there it's experimentation. Log target against actual angle, make a step change, and see whether the cam is slow, overshoots or oscillates.
Reading your logs
| Symptom | Usually |
|---|---|
| Cam lags well behind the target | Base duty too low, or proportional too small |
| Cam overshoots, then settles | Base duty too high, or not enough derivative |
| Cam hunts around the target | Proportional or integral too aggressive |
| Cam won't move at low RPM | Normal at very low oil pressure. Check the controller at a higher speed before changing the tune |
| No movement at all | Check wiring, output assignment, direction and duty limits |
Overall Correction
With Enable Intake Overall Corr ticked, this table shifts the whole target angle map up or down. It's a fast way to try, say, a few more degrees of advance everywhere and see what the dyno says, without editing every cell. Once you've found what works, fold the change back into the target table. The target scalar is another way to adjust targets.
Long term trim
Long term trim lets the ECU learn small, consistent errors in the base duty and store the correction.
- Long Term Trim Gain (up to 3D) sets how quickly it learns. A higher gain learns faster but can make the system oscillate, so keep it modest.
- Long Term Trim (up to 3D) shows what has been learned. You can set its axis values, but the axis channels are locked to match the base duty table. You can edit it by hand even while the ECU is still learning.
If the trim table keeps showing large values in one area, that's a hint to update your base duty there.
Intake cam control FAQ
Why do I need to rev the engine to set base duty?
Cam phasers are driven by oil pressure. At idle, pressure can be too low for the cam to respond properly, so the duty you'd measure there wouldn't be representative.
Should the intake cam be set to advance or retard?
Advance, on nearly every engine. Exhaust cams are the ones where direction varies, so check your engine's layout when you set those up.




