Adaptronic Modular RX8 ECU

Hi everyone, I’m really excited to be able to tell you about the new Adaptronic Modular RX8 ECU.

As you might know we were one of the first to have plug and play solutions for the Mazda RX8 back in 2010, and in those days we did it using the Select ECU. The Select ECUs only had 4 injector outputs, no CAN and no drive by wire so a few things were left to the factory ECU, and the P2 and secondary injectors were driven in parallel, so there were still 3 injection stages but it limited your ability to run low impedance injectors on the later stages.

Also because it left the electronic throttle to the factory ECU, this allowed you to keep the factory idle control, cruise control and traction control, but it also meant that factory ECU functions such as the oil metering pump control could reduce your throttle authority if it detects a fault. Also the factory crank angle sensor has to be used, which makes life a bit difficult for people doing 13BREW and 20B swaps.

I also wanted to do a full standalone so we can control the idle speed and idle effort; for example when people do port work on them you need to change the idle speed often, or to change the metering oil pump function.

So, the new Modular RX8 ECU is a full standalone ECU. Let’s look at what it has built-in.

For those familiar with our Modular ECUs, it’s basically an M2000 with the drive by wire upgrade, but with a few more inputs and outputs as required for this car. So it has 8 injector drivers (we use 6 for the injectors, and 2 for manifold flaps), 8 ignition drivers (we use 4, plus 2 for air pump control and 2 for fuel pump speed control), 4 auxiliary output drivers (we use 2 for auxiliary port control, one for the airblox flap and one for the purge valve control). There are an additional 8 outputs on the ECU which are dedicated functions such as fuel pump on/off, 2 thermofan speeds, A/C and the 4 outputs to drive the oil metering pump. There are also dedicated digital inputs for functions like clutch, neutral, oil pressure switch, oil level switch and coolant level switch.

The Modular ECUs also have 2 internal 4-bar MAP sensors, 2 external MAP inputs (connected to the OEM airflow and baro sensors by default), 4 temperature inputs, oil and fuel pressure inputs (although these aren’t on the car, so they’re there if you want to upgrade), 2 x pedal position inputs, 2 x external 0-5V inputs which are used for alternator monitoring, 1 x spare 0-5V input which is used for APV feedback, and 2 x analogue O2 sensor inputs.

There’s no regulator in the alternator in the RX8, and the regulation is done by the factory ECU, so our ECU does this also. It feeds the alternator current into the idle control algorithm so the ECU can open the throttle pro-actively to stabilise idle speed with respect to electrical loads like the power steering, thermofans and so on.

Idle Log

The Modular ECU platform also supports 2 CAN ports, so one of these is connected to the vehicle CAN system, and the other is spare. So normally you would select the first CAN port to be Mazda RX8 type at 500 kbps, and then the ECU does the following on the CAN bus:

CAN port selected as Mazda RX8 (500kbps, in OBD)

  • Firstly, it outputs data for the dash. This includes RPM, road speed, coolant temperature, oil pressure switch, oil level switch, radiator level switch and engine check light. The shift buzzer is built into the dash and not separately controllable, and unfortunately the oil pressure “gauge” on the dash only takes an on/off signal from the ECU. I was hoping it was a variable signal so we could fit an oil pressure sensor to the engine and then the gauge on the dash could be a real oil pressure gauge, but never mind. This also makes the electric power steering work, so that it gives more assistance when the car is stationary compared to at high road speeds.
  • Secondly, it talks to the “keyless unit”, or the immobiliser if you prefer. There are two modes you can use it in, selectable as a software setting. The first is to disable the immobiliser. The ECU will allow the engine to start, and if the immobiliser sees a transponder key the ECU keeps the immobiliser happy so that the engine keeps running and the key light doesn’t appear on the dash. So this works if you have a cut key with no transponder in it. The second way is to enable the immobiliser. If you choose to do this, then you have to teach the ECU the code from the immobiliser with a “learn” button in the software. This way the ECU will only keep the immobiliser happy if the code matches that stored in the ECU. I believe the factory ECU just doesn’t allow you to even crank the engine if the code does not match, but in our case if the ECU isn’t happy we allow the engine to start but then we stall it by doing a full fuel and ignition cut after 5 seconds. We might change this so the engine doesn’t even start in the first place but I anecdotally a sure fire way to immobilise an RX8 is to do lots of starts and only run the engine for a few seconds at a time.

Enable immobiliser

Click the learn button

  • It also reads the wheel speed data from the ABS module over CAN and uses this as the speed input to the ECU. You can disable this if you want to use a normal gearbox speed (or multiple wheel speed inputs).

The ECU also has a road speed input on an unused input pin, and a tacho output on a different unused ECU pin. The ECU also has all 3 CAS inputs available on unused pins, as the RX8 only uses a single CAS input, so you can run a JZ engine using all the CAS inputs, or run a flex fuel sensor, or a turbo speed sensor if you have a Borg Warner turbo, or a combination thereof.

Borg Warner

Flex Fuel Sensor

This flexibility means that:

  • If you wanted to, you could probably use the RX8 dash in a different car, with any Modular ECU including the M1200. You’d have to work out a way to get the fuel tank level into the dash and I don’t know if it needs any other input from any other devices but that could be an option.
  • You could use the same ECU on any engine up to 8 cylinders, direct fire, fully sequential, in an RX8, and the dash would still work. There would be some limitations, for example it would be a lot easier to use a drive by wire engine rather than changing the accelerator pedal assembly, but you could throw in an LS2 or a 2JZ and run either engine direct fire, fully sequentially. You could also use a 20B engine, either cable throttle with an idle control valve or with an electronic throttle. You can also repurpose the VFAD solenoid output as a boost control output if you have a turbocharged Renesis engine.

LS2

20B

2JZ

VFAD

  • You could also use the same ECU to drive a 13B Renesis engine in a different chassis, by connecting the gearbox sensor input into the VSS input on the ECU, and you could use the tacho output pin of the ECU to drive a factory instrument cluster or aftermarket tachometer.

Renesis Engine

The second CAN port also means that you can connect other devices, such as an aftermarket dash or wideband lambda sensor, or both. In this setup here, I’ve run two wires into the unused pins on the factory connector for the second CAN port and connected it to our Mainline dyno. I’ve enabled the Adaptronic CAN output on the ECU on the second CAN port, so that you can watch the ECU data on the dyno screen, and it can come up in plots, logs etc – you can see the throttle position, temperatures and RPM coming from the ECU here. It’s configured in the dyno settings under External Devices – and then on the ECU end you just need to select “Enable Adaptronic Output” with the default settings.

Motec PLM (1Mbps)

What’s also cool is that the Mainline dyno can emulate a Motec PLM on the same CAN bus, so it can output the wideband data from its tailpipe probe back to the ECU. In the ECU settings we select lambda sensor as being CAN, and then select the wideband over CAN to be the Motec PLM. This means we can use an external sensor on the ECU without having to mount one in the car or have a second tailpipe probe. This means you can do the fuel map lambda error overlay in the software easily which makes mapping very fast. Of course the ideal would be to mount a 5-wire in the car permanently but not every job can afford that. In the future we’ll be able to send the data from the dyno to the ECU over serial so it can just plug into the front of the ECU.

Output wideband data

The ECU also has 4 serial ports, so you can connect wideband sensors in via those, and also drive serial based dashes through these ports.

In this installation I’m using the built-in MAP sensor on an inlet runner port. Ideally you’d use both inlet runners with a T-piece, or better still, the inlet manifold. One potential downside of using the port at the bottom of the inlet manifold after the throttle body is that if your turbocharger leaks oil then a lot of oil can flow down that port because it faces downwards, whereas the nipples on the primary runners would require the oil to run uphill to get into the ECU’s MAP sensor. Also this car still had the factory airbox so I wanted to retain the vacuum control of the airbox flap.

If you do want to connect other devices to the ECU, such as oil or fuel pressure sensors, or wire in an 8 cylinder engine, remember that you can go to the wiring page in the software and see where each of the pins on the ECU actually connects internally. The base map comes with the factory wire colours and functions but you can update these based on whatever you change in your car.

The ECU also allows up to 2 x small modules to be installed. At the moment there’s not a lot of need for this, but maybe in the future you might want to add in 4 x wheel speeds connected directly rather than via CAN, or have another 6 auxiliary outputs, or another 4 analogue inputs. These small module positions each have 6 pins that come out to unused pins on the factory ECU connector.

2 small modules upgrade positions

I’ve done plenty of other videos about fuel modelling so I won’t go into it again here, but one thing I will say is that with our staged injection model you can either let the ECU work out the amount of fuel to go to each injection stage automatically, or you can specify the percentage of each stage. This is a fuel mass percentage, so with different injector sizes between primary and secondary, if you set 50% then this will correspond to different pulse durations for each stage.

Injector Primary

Injector Secondary

Injector Staging Menu

When I first ran up this naturally aspirated RX8, I discovered it was lower in power than I was expecting. This was using the default staging method of using up the primaries as much as you can up to a 2ms off time, then the P2 injectors which are also in the primary runners, until they no longer have 2ms of off time, and then finally the rest with the secondary injectors. Then I remembered something Paul Yaw told me at PRI one year, and I changed it so that 50% of the fuel went to the secondaries above the RPM at which the secondary runners open, 25% to the P2 injectors and 25% to the P1, which is easy to do in the injector staging map – and the power came straight up; I assume due to more homegenous mixture in the chamber because equal amounts came in each end. It might be worthwhile putting even more to the secondaries, eg 60% or 70% because at high RPM we have the secondary ports and the auxiliary ports open but I’ll leave that as an exercise for the tuner.

Injector Staging 2

Injector Staging 3

RX8 Base vs Factory

Stage 1 does not support cruise control or traction control via CAN.