BP-4W Engine 99-00 "NB1"

Technical Library › Engine Information › MazdaUpdated Sep 2026

The 1999-2000 NB1 Miata's BP-4W is one of the friendliest engines to put on a Haltech. Nearly every factory sensor can stay, and the few that can't have simple fixes. Here's our pin-by-pin guide to what connects where and which settings matter.

BP-4W at a glance

SpecValue
LayoutInline 4-cylinder
Displacement112 ci (1839 cc)
Firing order1-3-4-2
Found in1999-2000 Mazda MX-5 Miata (NB1)
Factory ECU locationUnder the passenger-side floor panel, up against the firewall
Factory injector flow265 cc/min

If you'd rather not wire from scratch, the plug-in route is the Nexus S2/S3 NB adapter harness or the Elite 750 and 1500 NB plug-in kits. The rest of this guide is still worth reading, because it explains the settings those harnesses rely on.

Engine position: crank and cam triggers

Both triggers on the BP-4W are Hall Effect sensors, which keeps the setup simple since there's no reluctor signal to fuss with.

  • Crank: a four-tooth plate sits behind the inner crank pulley. Two of those teeth are opposite each other and slightly offset from the other pair. The sensor lives at the front of the engine, on the right side of the crank, held by one bolt.
  • Cam: the target is on the front of the intake cam gear. It has three teeth: two spaced 180 degrees apart, one of which has an extra tooth right next to it.

Both sensors share the same pin layout. The only difference is which Haltech loom you use: the crank goes to the Trigger 4-core cable, the cam to the Home 4-core.

Sensor pinJobHaltech wire
ASwitched 12V supplyRed
BSignal outYellow
CSignal groundBlue
Two common faults

The crank sensor's single mounting bolt can work loose if something knocks it, and the air gap changes with it. The cam sensor's connector is known for poor contact. If you get sync errors or random trigger faults, check both of these before you touch any settings.

Ignition

Spark comes from two dual-post coils at the back of the head, fired in wasted spark. Each coil has its igniter built in, so it wires straight to a Haltech ignition output without an external igniter module.

  • Pin A: switched 12V
  • Pin B: unused
  • Pin C: ground, to the cylinder head
  • Pin D: trigger from the ECU ignition output

In the software, choose Waste Spark mode, Constant Charge, and a Falling Edge trigger. Dwell data for these coils exists as a chart. If you need it, ask us and we'll send it over with advice for your build.

Throttle position sensor

The NB1 uses a cable throttle with a three-wire position sensor.

Sensor pin (factory color)JobHaltech connection
A (light green/white)5V reference5V+ (orange)
B (black/red)Signal groundSignal ground (black/white)
C (green/black)TPS signalA spare AVI, for example AVI-10 (white)

Load sensing: MAP and MAF

There's no factory MAP sensor on this engine. The ECU's internal MAP sensor covers naturally aspirated and mild boost builds. Once you're past what it can read, plumb in an external sensor such as a 3 bar GM MAP sensor and wire it to a spare AVI.

Most people delete the MAF on a Haltech build, but you can keep it for logging if you want. Its pins: A (black/blue) to signal ground, B (pink) is the signal and goes to a spare AVI, and C (white/red) is its 12V feed.

Temperature sensors

Coolant

The coolant sensor has three pins. Two belong to the ECU, and the third drives the dash gauge and grounds through the block. Connect pin A (signal) to a spare AVI and pin B to signal ground, and leave pin C for the gauge.

Intake air

The factory air temp sensor sits in the stock airbox. It's a two-wire sensor and polarity doesn't matter: one pin to a spare AVI, the other to signal ground. If the airbox goes or you delete the MAF, fit a replacement air temp sensor in the intake pipe, ideally close to where the MAP sensor takes its reading.

Pull-ups matter

Both temperature sensors need a pull-up to read correctly. Use an AVI that has a selectable pull-up, or add an external 1k resistor from the signal to 5V.

Idle air control

Idle speed is managed by a two-pin bypass air control valve. Pin 1 is the open signal and goes to a spare output, which the ECU duty cycles. Pin 2 takes switched 12V.

Knock sensor

The stock knock sensor is an older resonant type. It will work with an Elite 1000 or higher, but these sensors have a reputation for being unreliable and they aren't a good fit for a heavily modified engine. Wiring is simple: pin A is the knock signal, pin B is signal ground. If you get inconsistent readings, swap to a donut-style non-resonant sensor such as Haltech's genuine Bosch knock sensor. Our knock explainer covers why it's worth the effort.

Oxygen sensors

The factory narrowband sensors are fine for emissions-style closed loop, but you can't tune an engine properly with them. We strongly recommend a WB1 single-channel wideband kit, with its LSU 4.9 sensor going into the pre-cat sensor bung. A 22 mm wrench or socket gets the old one out.

VICS intake runner valve

Mazda's Variable Inertia Charging System opens a resonance chamber in the intake to change the effective runner length. The Haltech controls it with the Dual Intake Runner function and one spare output driving the solenoid. On the factory setup, the solenoid is energized below about 5200 rpm. Tune the switch point on the dyno if you've changed the cams or intake.

Vehicle speed

The speed sensor itself is a reluctor, but its signal goes to the speedometer first, which converts it to a clean digital square wave for the ECU. How you set up the SPI depends on where you tap in:

  • From the speedometer output (usual): Hall Effect, Falling edge, pull-up Disabled.
  • Straight from the sensor: Reluctor, Falling edge.

Pin 1 is the signal to any spare SPI, and pin 2 is signal ground. A good starting calibration is roughly 2780 pulses per km (about 4470 per mile). Fine-tune it against a GPS.

Alternator control

The ECU sets the charging voltage on this engine by sending the alternator a high-side duty signal. Use a spare stepper output and set both Active State and Drive Type to High. The grey/red wire (terminal D) takes that duty signal. The grey wire (terminal P) is a voltage feedback line and isn't connected to the Haltech.

Injectors

The factory injectors flow 265 cc/min, measured wide open at 100% duty. If your fuel system has a fixed regulator that isn't referenced to manifold pressure, map the injector flow against manifold pressure so fueling stays accurate as boost or vacuum changes.

You'll also need dead time data. That's the part of each injection pulse where the injector is still opening or closing and not flowing its full rate. It's plotted against battery voltage, and getting it right is what keeps idle and cruise fueling stable. See our injector dead time guide, and ask us if you need the factory dead time chart.

Base maps

Base maps exist for the Elite adapter harnesses. They must be imported into the ECU rather than just opened. Our base map basics article explains what a base map will and won't do for you.

Other Miata engines

Working on a different generation? See the NA6 B6-ZE, NA8 BP-ZE and NB2 BP-Z3 (BP-VE) guides.

NB1 Miata FAQ

Can I keep the stock crank and cam sensors?

Yes. They're Hall Effect sensors that Haltech reads directly. Just check the crank sensor bolt and the cam connector if you see trigger errors.

Do I need an external MAP sensor for a turbo NB1?

For low boost the internal sensor is fine. Once your target gets close to its limit, add an external MAP sensor so you have headroom above your peak boost.

Is the factory knock sensor usable?

It works with an Elite 1000 or higher, but we'd replace it on any serious build. A non-resonant sensor gives far more trustworthy data.