This post is about the Rabbit ECU piggy-back install for the Commodore/Chev SS L98 engine with CAN bus. The Rabbit ECU takes full control of fuel and timing by way of a separate injector and igniter wiring harness. The OEM connectors and removed and cable-tied back to the OEM harness.
There are a few wire splices still needed (13 at the moment) for sensors and CAN. The nice part about piggy-backing into a CAN system is that there is less need for direct wiring. Information such as coolant and air temperature, vehicle speed and other OBD data is available from the CAN bus.
For example, in this install there is no wiring into the coolant and air temperature circuits. The primary load source is probably better hard-wired for redundancy. See below, hard-wired circuits (where you need to splice) are in orange, piggy-back harness is blue.
Injection and Ignition
The firing order of the L98 in this install is 1-8-7-2-6-5-4-3. You can see from the wiring diagram above that the ignition is wasted spark with firing order (1,6) – (5,8) – (4,7) – (2,3). Injection is semi-sequential with firing order (1,7) – (2,8) – (4,6) – (3,5). Each injector pair injection ends just before inlet valve opening, or 180 crank degrees advanced from that point.
Beating the OBD
Firing up the above system is likely to set a check-engine light within seconds! Right away the OEM ECU will detect that the injectors and igniters are disconnected.
Fortunately the issue is pretty simple to solve. The ECU is expecting to see current flow through the injectors when they are switched on, and putting a 27 ohm 1/2W resistor in the disconnected OEM injector connector is all you need to do. For the igniters, the ECU is looking to see some resistance to ground, and 330 ohm 1/4W is fine to spoof the ECU into thinking all is well.
At this point, you can clear the OBD codes using a smart-phone app like DashCommand and the ELM327 dongle.
Done! Engine starts, no codes everbody is happy. For a few days…
Beating the OBD – round 2
OK the OBD might be easy to beat for hardware issues but is a lot more clever around how the car runs, exhaust emissions and catalytic converter operation. The Rabbit ECU runs closed loop by monitoring engine exhaust oxygen sensors left and right banks, and does a good job in keeping the oxygen sensors doing pretty much what they would be doing should the OEM ECU still be controlling the injectors.
The problem is, there will always be times when the OEM ECU thinks that the AFR measured by the oxygen sensors is a little different than what it should be, and will make updates to its own long term trim (LTT) tables to ‘remember’ that for the next drive cycle. Eventually the LTT tables will drift too far from normal and a bank LTT too rich or too lean fault code will be set.
This problem is not so easy to solve, because the LTT tables are internal to the OEM ECU and aren’t normally shown on the CAN bus. But you can see the values in DashCommand or by using any other scan tool.
So the solution in this case is for the piggy-back rabbit ECU to pretend to be a scan tool, and request the LTT information over CAN and simulate what the oxygen sensor output SHOULD be for those values. In this way, the Rabbit ECU is basically telling the OEM what it wants to hear, and everybody is happy.
These methods work well for Commodore SS L98 ’09 and stops the annoying chiming and display of the check engine lamp. You can read more about the Rabbit ECU Project here.
To see the how the Rabbit ECU with Arduino Due controller runs the Chevrolet L98 check out this 0 – 100 video.