Resolved: DBW Idle Control and Trigger Errors on K20A + J37 TB (EMU Black)
After very long days of troubleshooting intermittent idle inconsistencies and anomalous trigger errors, I wanted to document what I found in case it helps someone else running a similar setup.
Background
Platform is a high-comp K20A running an EMU Black with a Honda J37 drive-by-wire throttle body. The goal was a stable cold start, clean afterstart behavior, and proper idle control using DBW only — no IACV, Alpha-N fueling, and all ignition-based idle corrections disabled for this test phase.
Step 1: DBW Setup Validation
To eliminate any potential issues in the DBW control path, I loaded a fresh blank base map and ran the EMU Black DBW Wizard. This auto-calibrates the throttle min/max voltages and confirms actuator function. In my case, the result was a perfect voltage sweep and blade control range, which ruled out hardware or calibration faults on the DBW side.
Step 2: Unexpected Trigger Errors
While monitoring logs during cold starts, I noticed repeated ‘unexpected missing tooth’ errors in the trigger diagnostics. This caused erratic behavior in crank sync during cranking and early idle — sometimes even disrupting idle mode activation logic.
I traced the issue to a subtle but critical misconfiguration:
In Ignition > Triggers > Primary Trigger, the Trigger Filtering was set to ‘High’.
Important Note: All K20A cam and crank sensors are Hall effect (square-wave digital) sensors. They generate clean edges and do not require signal filtering in most aftermarket ECUs.
By leaving the filter on ‘High’, the ECU was likely seeing missing valid tooth transitions, interpreting them as sync loss. This explained the missing tooth errors and intermittent idle dropout (well that’s my theory!!!)
Step 3: Filter Correction
I set both Primary and Secondary Trigger Filters to ‘None’, rebooted the ECU, and re-logged cold starts. Result:
No further missing tooth errors
Stable sync state from cranking to idle
Cleaner idle activation behavior
Current DBW Behavior
With triggers clean and DBW fully mapped:
- The engine now starts instantly on the button VERY NICE!
- DBW target tracks warmup, ASE, and idle stages smoothly
- RPM is stable within ±200–300 RPM of target (need to look into why this is happening)
- Light throttle ‘blips’ sometimes hang momentarily (likely PID over-damping or feedback scaling), but harder blips are crisp and decay predictably
I’m now ~95% happy with the overall idle and warmup behavior. Some fine-tuning remains around PID loop damping and virtual target transitions, but the core logic is solid.
Conclusion & Lessons Learned
This one came down to a misapplied trigger filter on a setup that didn’t need it. If you’re running Honda Hall sensors on EMU Black (or any standalone), don’t enable filtering unless absolutely necessary. Especially not ‘High’. The cleaner the signal, the less help the ECU needs.
It’s a small config detail that cost me hours of log review and idle control confusion. Hopefully, this saves someone else the same rabbit hole.
Forged HiComp pistons/ported head/aggresive cams K20A, DBW-only idle, EMU Black, J37 TB*