Engine at a glance
The BP-Z3 is the variable valve timing version of Mazda's 1.8 liter BP four-cylinder, fitted to the NB2 MX-5 Miata (2000-2005, depending on market). You can pick it out quickly by the S-VT control solenoid sitting on the intake side of the valve cover. Compared with the earlier NB1 engine, Mazda raised compression from 9.5:1 to 10.0:1. In Australia the MX-5 SP version came with a factory turbocharger.
| Spec | Value |
|---|---|
| Layout | Inline 4 |
| Displacement | 112 ci (1839 cc) |
| Firing order | 1-3-4-2 |
| Compression | 10.0:1 |
| Factory injector flow | 265 cc/min |
| OEM ECU location | Under the passenger-side floor panel, up against the firewall |
If your NB2 is going on a Haltech, the easiest route is a plug-in adaptor such as the Elite 1000/1500 NB Miata adaptor or the Elite 750 NB version. Haltech has built base maps for those adaptor harnesses. Import the map into the ECU rather than opening it as a file. Our base map basics guide explains what a base map will and won't do for you.
Trigger system
Both the crank and cam sensors are three-wire Hall effect types, which makes them easy on any Haltech ECU.
- Crank: the reluctor is a plate bolted behind the inner crank pulley with four teeth. Two of them, opposite each other, are slightly offset. The sensor sits at the front of the engine, right side of the crank, held by a single bolt.
- Cam: the target is on the back of the intake cam with three teeth. Two sit 180 degrees apart, and one of those has an extra tooth close beside it. The sensor lives on top of the intake cam cover, toward the rear.
| Sensor pin | Function | Crank (Trigger 4-core) | Cam (Home 4-core) |
|---|---|---|---|
| A | Switched 12 V feed | Red | Red |
| B | Output signal | Yellow | Yellow |
| C | Sensor ground | Blue | Blue |
The single bolt can work loose if the sensor gets knocked, which changes the air gap. If you have an intermittent sync loss or a stumble that comes and goes, put a wrench on it first. Our trigger systems explainer covers the diagnosis in more depth.
Ignition
The NB2 runs wasted spark. There are two coil packs, each sitting directly on a plug with a short lead to its partner cylinder: the coil on cylinder 4 also fires cylinder 1, and the coil on cylinder 2 also fires cylinder 3. The igniters are built into the coils, so they wire straight to Haltech ignition outputs.
In the software, set the ignition mode to Waste Spark, the drive to Constant Charge, and the trigger edge to Falling. Set dwell to suit the coil, and confirm timing with a light once it runs. See dwell time for how the table works.
| Coil pin | What it connects to |
|---|---|
| A | Haltech ignition output |
| B | Ground at the cylinder head |
| C | Switched 12 V |
Sensors
Throttle position
The NB2 uses a cable throttle with a three-wire TPS. The factory colors are light green/white for 5 V, black/red for sensor ground, and green/black for the signal. On a Haltech harness that's the orange 5 V wire, the black/white signal ground, and a spare analog input (for example AVI-10, white) for the signal.
Manifold pressure
There's no factory MAP sensor, because the stock ECU used a MAF. Plumb a vacuum line to the Haltech's onboard MAP sensor, or for higher boost fit an external sensor such as the 5 bar TI MAP sensor on a spare AVI.
Coolant temperature
The coolant sensor has three pins. Two belong to the ECU: A is the signal to a spare AVI and B is sensor ground. Pin C feeds the dash gauge and grounds through the block, so leave it for the gauge. Use an AVI with a switchable pull-up turned on. If your input doesn't have one, add a 1k ohm pull-up resistor to 5 V.
Intake air temperature
The factory IAT is in the airbox. It's a two-wire, non-polarized sensor: one side to a spare AVI, the other to sensor ground, with the same pull-up rule as the coolant sensor. If you delete the airbox or MAF, fit a new air temp sensor in the intake tract, as close as you can to where the MAP signal is taken.
MAF
Most Haltech installs delete it, but you can keep it: pin A (black/blue) to sensor ground, pin B (pink) is the signal to a spare AVI, and pin C (white/red) is 12 V.
Knock
The stock knock sensor is an older resonant design. An Elite 1000 or higher can read it, but these sensors aren't reliable enough for a heavily modified engine. If knock readings look suspect, swap to a donut-style broadband sensor like the genuine Bosch knock sensor. Wiring is simple: pin A to a knock input, pin B to sensor ground.
Oxygen sensors
The factory sensors are narrowband and are only useful for emissions-style closed-loop. For real tuning you need a wideband. We strongly suggest a Haltech WB1 kit, with its LSU 4.9 sensor going in the pre-cat position. The old sensor comes out with a 22 mm socket or wrench.
Actuators
| Device | How it works | Haltech hookup |
|---|---|---|
| Idle valve (BAC) | Two-pin bypass air valve, duty controlled | Pin 1 to a spare output, pin 2 to switched 12 V |
| S-VT solenoid | Continuously variable intake cam timing | One spare output plus switched 12 V; set up with Cam Control |
| VTCS valve | Secondary throttle plates near the intake valves that close for cold start and idle to add tumble | A generic output, with switched 12 V on the other pin |
| Alternator | Needs a high-side duty signal to set charge voltage | Pin D (grey/red) from a spare stepper output, with Active State and Drive Type both set to High. Pin P (grey) is a voltage feedback line |
A few notes on those. Not every NB2 variant has S-VT, so check before you plan outputs. The system is the cam sensor at the rear of the cover, the solenoid at the front top of the intake side, and the phaser on the nose of the intake cam. For VTCS, the factory logic closes the plates on a cold start (below about 140°F, 60°C) and at idle (throttle under 1%). Many people delete it, but it's easy to keep with a generic output.
Vehicle speed
The speed sensor on the transmission is a reluctor type, but on the NB2 its signal goes to the speedometer first, and the cluster sends a converted square-wave signal on to the ECU. So there are two ways to wire it:
- From the factory ECU wire (after the cluster): set the SPI to Hall Effect, Falling edge, pull-up Disabled.
- Straight from the sensor: set it to Reluctor, Falling edge. Pin 1 is the signal to a spare SPI, pin 2 is sensor ground.
A starting calibration is around 2780 pulses per kilometer, which works out to roughly 4470 pulses per mile. Check it against GPS and adjust for your tire size. More on setup in vehicle speed sensors.
Injectors
Stock injectors flow 265 cc/min at 100% duty. That's fine for a stock or mildly built engine, but most turbo builds outgrow them. Two things to get right whatever you run:
- Flow vs manifold pressure. If the fuel pressure regulator isn't referenced to manifold pressure (common on returnless systems), the pressure across the injector changes with boost and vacuum. Map the flow over manifold pressure so the ECU accounts for it.
- Dead time. Every injector loses a little time opening and closing, and flows less than full rate during those moments. Accurate dead time data is what keeps idle and cruise fueling stable when battery voltage moves.
NB2 FAQ
Can I use the stock knock sensor with a Haltech?
Yes on an Elite 1000 or above, but treat it with suspicion on a modified engine. A modern non-resonant sensor gives much more trustworthy data.
Do I need an external MAP sensor for a turbo NB2?
Only if you'll run more boost than the onboard sensor can read. Choose the sensor range with headroom above your highest target.
Is there a base map?
Yes, for the Elite plug-in adaptors. Treat it as a start-up point, not a finished tune. Book a free consultation if you'd like us to look over your setup.




