Go-Parts
Cart 0
Your cart is empty
Add an item to see it appear here.
Wrenchy
Go-Parts Garage
Expert guides for diagnosing, troubleshooting, and replacing auto parts Expert guides for diagnosing and replacing auto parts
Browse All Articles →
🧭 Diagnostic Flowchart 🎬 Helpful Videos 🛍️ Shop This Part

P0128 on 2016-2023 Mazda CX-9: Coolant Temperature and Thermostat Guide

The P0128 code on a 2016-2023 Mazda CX-9 almost always means the engine thermostat is stuck open and needs to be replaced. This is a common failure item. Expect to pay between $40-$100 for an aftermarket part or $100-$150 for an OEM part. It is a manageable DIY job for those comfortable with draining and refilling coolant.

17 minutes to read 2016-2023 Mazda CX-9
Most Likely Cause
Engine Thermostat Stuck Open
Difficulty
3/5
Est. Time
2 hrs
DIY Doable?
✅ Yes
Shop Labor
$200 – $450
Parts Price
$40 – $170
⚠️ Drivable, but... — Driving is generally safe, but it's not recommended for an extended period. An engine that runs too cool will have reduced fuel efficiency, increased emissions, and can lead to the formation of engine sludge over time. It will also cause the cabin heater to be ineffective.
Key Takeaways
  • P0128 on your CX-9 means the engine is warming up too slowly.
  • The most probable cause by a wide margin is a thermostat that is stuck in the open position.
  • Before replacing parts, check your coolant level. On 2016-2020 models, be aware of a known issue with cylinder head leaks causing coolant loss.
  • Replacing the thermostat is a moderately easy DIY job that also requires draining and refilling the coolant.
  • Ignoring this code will lead to poor fuel economy, poor heater performance, and potential long-term engine wear.
The trouble code P0128, defined as "Coolant Temperature Below Thermostat Regulating Temperature," means the engine's computer (PCM) has determined that the engine is not reaching its normal operating temperature within a predetermined amount of time after being started. Essentially, the engine is running too cool for too long. The PCM sets this code after comparing inputs from the Engine Coolant Temperature (ECT) sensor, the Intake Air Temperature (IAT) sensor, and the engine run time.

What's Unique About the 2016-2023 Mazda CX-9

For the 2016-2023 Mazda CX-9, the P0128 code is most frequently a straightforward thermostat failure. However, it's critical to first rule out a known issue with this engine: a coolant leak from a cracked cylinder head, which primarily affects 2016-2020 models. While a coolant leak can cause various temperature-related issues, P0128 specifically points to the engine warming up too slowly, which is classic behavior for a thermostat that is stuck open. It's important to note that a different code, P0126, is used for a similar issue on non-turbo Skyactiv engines, which have a more complex coolant control valve; the 2.5T engine in the CX-9 uses a traditional thermostat, making P0128 diagnosis more direct.

Symptoms You May Notice

  • Check Engine Light is on
  • Engine temperature gauge reads lower than normal or fluctuates, especially dropping at highway speeds
  • Heater blows lukewarm or cool air, especially in cold weather.
  • Reduced fuel economy.
  • Engine takes an unusually long time to warm up.
⚠️ Don't Waste Money on the Wrong Fix
  • Replacing the Engine Coolant Temperature (ECT) sensor when the thermostat is the actual cause. The thermostat is a mechanical part that is far more likely to fail than the electronic sensor.
  • Ignoring the P0128 code because the car seems to drive fine. This can lead to poor fuel economy, increased engine wear, and failed emissions tests.

Most Likely Causes

  1. Engine Thermostat Stuck Open 🔴 High Probability → Shop Integrated Thermostat Housing Assembly Thermostats are a common wear item designed to fail in the open position to prevent overheating. This is the most frequent cause for P0128 on most vehicles, including the CX-9. Aftermarket parts can sometimes fail prematurely or have different designs, leading to a repeat of the code or other cooling issues.
    How to confirm: Use an OBD-II scanner to monitor live coolant temperature data. If the temperature struggles to reach ~190-200°F (88-93°C) or drops significantly at highway speeds, the thermostat is likely stuck open. You can also physically remove and test the thermostat in hot water to see if it opens and closes correctly.
    Typical fix: Replace the engine coolant thermostat and gasket. Refill and bleed the cooling system with the correct type of coolant. The thermostat is located on the driver's side of the engine, and access requires removing the air intake ducting.
    Est. part cost: $40-$150
  2. Low Engine Coolant Level 🟡 Medium Probability The 2.5L Skyactiv-G Turbo engine in 2016-2020 models is known for a potential coolant leak from the cylinder head. A low coolant level can introduce air pockets into the system, causing inaccurate readings at the ECT sensor or preventing the system from reaching temperature correctly.
    How to confirm: Visually inspect the coolant reservoir and radiator (when the engine is cold). Check for signs of external leaks, particularly a sweet smell or green/blue residue around the exhaust manifold area on the back of the engine. A pressure test of the cooling system is the definitive way to find a leak.
    Typical fix: Top off the coolant and monitor the level. If it drops again, find and repair the leak. If the cylinder head is cracked, this is a major repair that may be covered under Mazda's warranty extension related to TSB 01-002/23a.
    Est. part cost: $20-$40 for coolant, potentially much higher if a leak repair is needed.
  3. Faulty Engine Coolant Temperature (ECT) Sensor ⚪ Low Probability → Shop Engine Coolant Temperature Sensor While less common than a thermostat failure, sensors can fail over time by sending inaccurate readings to the PCM. An owner on Mazdas247 noted they were planning to replace their ECT sensor along with the thermostat as a preventative measure at high mileage.
    How to confirm: With the engine cold after sitting overnight, use a scan tool to compare the ECT sensor reading to the Intake Air Temperature (IAT) sensor reading. They should be within a few degrees of each other. If the ECT reading is skewed, the sensor is likely faulty. You can also test the sensor's resistance with a multimeter; it should be around 2.2k-3.0kΩ at room temperature (20°C/68°F).
    Typical fix: Replace the ECT sensor.
    Est. part cost: $30-$80

Rare But Worth Checking

  • Cooling Fan Stuck On: → Shop Engine Cooling Fan Blade If the electric cooling fan runs constantly, even when the engine is cold, it can prevent the engine from warming up properly. This is usually caused by a failed fan control module or a short in the wiring. A manufacturer service bulletin for other Mazda models, TSB Bulletin #01-005-20-3704, notes that incorrect cylinder head temperature reporting can also affect engine cooling fan operation.
  • PCM Software Calibration Issue: On some older Mazda models, a similar code was sometimes caused by overly sensitive diagnostic parameters in the PCM, fixed by a software update. While not specifically documented for the 2016+ CX-9 with P0128, it remains a remote possibility. For instance, TSB Bulletin #01-021-13-2817B for the Mazda3 noted that a P0128:00 code could be caused by improper control logic of the PCM.

Diagnosis Steps

  1. Check for other stored DTCs. Address any other codes first.
  2. Inspect the engine coolant level in the reservoir and radiator (only when the engine is completely cool). Top off if low.
  3. Visually inspect for any signs of coolant leaks. Pay close attention to the area around the exhaust manifold and turbocharger for signs of the known cylinder head leak on 2016-2020 models.
  4. With a cold engine, use an OBD-II scanner to compare the live data from the Engine Coolant Temperature (ECT) sensor and the Intake Air Temperature (IAT) sensor. They should be within a few degrees of each other.
  5. Start the engine and monitor the ECT reading. The temperature should rise steadily to its operating point (typically 190-210°F or 88-99°C) and stabilize.
  6. If the temperature is slow to rise, or if it rises and then drops significantly when driving at highway speeds, the thermostat is almost certainly stuck open and should be replaced.
  7. If the temperature reading on the scanner is erratic or clearly incorrect despite the engine feeling warm, the ECT sensor is the likely culprit.

Parts You'll Likely Need

  • Engine Coolant Thermostat (OEM #PY8V-15-171 (for 2018+ models), P502-15-171 (for 2016-2018 models)) — This is the most common cause of P0128. It fails by sticking in the open position, preventing the engine from reaching operating temperature in the specified time.
    Trusted brands: Mazda OE, Gates, Beck Arnley
    OEM price range: $30-$150
    Aftermarket price range: $40-$100
  • Engine Coolant / Antifreeze (OEM #FL22) — The cooling system must be drained to replace the thermostat. It must be refilled with the correct type of coolant (Mazda FL22 or equivalent).
    Trusted brands: Mazda FL22, Pentofrost A3, Zerex Asian Vehicle
    OEM price range: $25-$35 per gallon
    Aftermarket price range: $20-$30 per gallon

Technical Service Bulletins (TSBs) & Recalls

  • 01-013/21 (later superseded by 01-002/23a) - While not directly for P0128, this TSB addresses a coolant leak from the cylinder head on some 2.5T engines, which is a critical related issue to check for. The TSB states cracks can be caused by exhaust manifold deformation, residual stress in the head, or external forces. The fix involves a modified cylinder head and exhaust manifold gasket.
  • TSB Bulletin #01-021-13-2817B - Although issued for the Mazda3, this bulletin highlights that some Mazda vehicles may experience a P0128:00 (Thermostat Stuck Open) concern caused by improper control logic of the PCM, requiring a software update to correct.
  • TSB Bulletin #01-005-20-3704 - This bulletin for other Mazda models mentions that a MIL on with DTC P0128 can occur where the engine temperature may be cold and report as hot or vice versa, potentially affecting fan operation.

Platform-Specific Known Issues

  • A known issue for 2016-2020 models with the 2.5L Turbo engine is a coolant leak from a cracked cylinder head near the exhaust manifold. While this often presents as coolant loss, it's an important issue to be aware of when diagnosing any cooling system problem on this vehicle. Mazda issued a warranty extension for this specific problem.

Mechanic-Grade Diagnostic Values

  • Engine Coolant Temperature (ECT) Sensor Resistance — expected: Approximately 2,200 - 3,000 Ω at 20°C (68°F) and 250 - 350 Ω at 80°C (176°F).. Failure: A reading of infinite resistance (open circuit) or zero resistance (short circuit), or a value significantly outside the expected range for a given temperature.
  • PCM Logic for P0128 Trigger — expected: Engine coolant temperature should reach a minimum threshold (typically 160-190°F or 71-88°C) within a few minutes of startup.. Failure: The PCM sets code P0128 if the ECT, as measured by the sensor, does not reach this expected temperature in the calculated time, based on factors like IAT and engine run time.

Real Owner Repair Stories

  • Mazdas247 Forum User 'arock712' (2017 Mazda CX-9 GT) — After having the engine replaced for the known coolant leak/cracked head issue, the owner heard a sound like water circulating under the passenger side dashboard when the car first starts up.
    ❌ Tried (didn't work) The dealership initially dismissed a cooling system issue, suggesting a clogged HVAC drain instead.
    ✅ What actually fixed it The issue was identified by other forum members as classic symptoms of air trapped in the cooling system (specifically the heater core) that was not properly bled after the engine replacement. The resolution is to properly bleed the cooling system to purge the trapped air.

OEM Part Supersession History

  • P502-15-171PY8V-15-171 — Mid-generation part update. The exact reason for the change is not documented, but it is common for manufacturers to refine parts for reliability or manufacturing efficiency.
    Heads up: P502-15-171 is specified for 2016-2018 models, while PY8V-15-171 is for 2018 and newer models. While they may be physically interchangeable, it is best practice to use the part number specified for the vehicle's VIN.
  • PY8V-15-171 (Turbo Engine OEM)PX8E-15-171 (Non-Turbo Engine OEM) — This is not a direct supersession but a known performance modification. The PX8E-15-171 thermostat from the naturally aspirated 2.5L engine reportedly opens at a lower temperature.
    Heads up: Using this part on a turbo engine is an intentional modification to make the engine run cooler. While some tuners recommend it for modified cars to reduce heat soak, it could potentially cause the P0128 code to set in very cold climates as the engine may warm up even slower than intended.

Model Year Variations Within This Range

  • 2016-2020: These model years are susceptible to a cracked cylinder head coolant leak near the exhaust manifold, covered by Mazda TSB 01-002-23a and a warranty extension. This must be ruled out when any cooling system issue is present.
  • 2016-2018 vs 2018-2023: The OEM thermostat part number changed mid-2018. 2016-2018 models use P502-15-171, while 2018+ models use PY8V-15-171.

Diagnostic Flowchart

Other Known Issues on This Vehicle

Issues unrelated to this code that are worth knowing about as an owner of this generation:

  • Cracked Cylinder Head Coolant Leak 🔴 High — Common on 2016-2020 models. Can occur at various mileages. A very expensive repair if not covered by warranty extension. (Ref: TSB 01-013/21 (superseded by 01-002/23))
  • Excessive Oil Consumption from Valve Stem Seals 🟠 Medium — Primarily affects certain 2021 models, triggering a low oil light before the scheduled oil change interval. Subject of a class action settlement and warranty extension. (Ref: TSB 01-003-23)
  • Leaking Turbocharger Coolant Lines 🟠 Medium — Heat cycling can cause coolant hoses connected to the turbo to degrade and leak over time. Can lead to low coolant levels and potential turbo damage if ignored.
  • Water Pump Failure 🟠 Medium — Mentioned as a potential failure point, though less common than the cylinder head issue. Can lead to overheating if it fails. (Ref: TSB 01-010/23 (notes some pumps are replaced unnecessarily))
  • Leaking Oil Control Valve (OCV) 🟡 Low — Some owners report minor oil leaks from the OCV located on the top of the engine. Generally not a severe leak but can be a nuisance.

Used vs. New Parts: Buying Guide for This Vehicle

When a used part is the smart pick: For a P0128 repair, a used part is never recommended. The primary cause is the thermostat, which is an inexpensive wear-and-tear component that should always be replaced with a new part.

OEM-only on this vehicle (don't cheap out):

  • Engine Coolant Thermostat: Strongly recommended. A video comparison showed an aftermarket Motorad thermostat having a significantly smaller valve opening than the genuine Mazda part, which could improperly restrict coolant flow and cause other temperature regulation problems.
  • Engine Coolant / Antifreeze: Strongly recommended to use Mazda FL22 or a validated equivalent. Using generic 'all makes, all models' coolant can lead to corrosion or gelling in the cooling system.

Aftermarket brands forum-validated for this vehicle:

  • For Coolant (FL22 Equivalents): Pentofrost A3, Zerex Asian Vehicle Formula, Ravenol HJC.
  • For Thermostats: While OEM is heavily preferred, forum discussions mention Gates and Stant as generally acceptable aftermarket options if OEM is unavailable. Beck/Arnley is also often cited as a quality re-packager of OEM parts.

Brands owners have reported issues with on this vehicle:

  • Motorad: At least one video documents a significant design difference in their thermostat for a similar Mazda engine, which could negatively impact performance.

Real Owner Stories

Aggregated from forums and TSBs cited above. Mileages and costs reflect what owners reported in those sources.

2016-2020 Mazda CX-9 2.5T

Symptoms: Owners reported a sweet smell or green/blue residue around the exhaust manifold area on the back of the engine, often accompanied by coolant loss.

What fixed it: Replacement of the cylinder head and exhaust manifold gasket as per TSB 01-002/23a.

Cost: $0-$10,000

Source hint: Mazdas247 Forum - Thread 'CX-9 2.5T Engine Coolant Leaking TSB'

2021 Mazda CX-9 2.5T

Symptoms: Low oil light triggers before the scheduled oil change interval.

What fixed it: Replacement of valve stem seals as part of a class action settlement and TSB 01-003-23.

Source hint: TSB 01-003-23

Frequently Asked Questions

Is the coolant leak on my 2016-2020 CX-9 related to the P0128 code?
Yes, the 2.5L Skyactiv-G Turbo engine in 2016-2020 models is prone to a cylinder head crack near the exhaust manifold. This leak can cause low coolant levels, which introduces air pockets that prevent the system from reaching the correct temperature, potentially triggering P0128.
Does Mazda have a warranty extension for the cylinder head issue on the CX-9?
Yes, Mazda issued a warranty extension related to TSB 01-002/23a (which superseded TSB 01-013/21) to cover repairs for the cracked cylinder head on affected 2.5T models.
Where is the thermostat located on the 2.5L Skyactiv-G Turbo engine?
The thermostat is located on the driver's side of the engine. Accessing it requires the removal of the air intake ducting.
Can I use any aftermarket thermostat to fix P0128 in my CX-9?
While aftermarket parts are available, they can sometimes fail prematurely or feature different designs that lead to a repeat of the P0128 code or other cooling issues. Using the correct type of coolant and a high-quality gasket is also required.
How can I tell if my P0128 code is a faulty ECT sensor or a stuck thermostat?
You can compare the Engine Coolant Temperature (ECT) and Intake Air Temperature (IAT) sensor readings after the car has sat overnight; they should be within a few degrees. If the readings are skewed, the sensor is likely faulty. If the temperature rises slowly or drops at highway speeds, the thermostat is likely stuck open.
What causes the cylinder head to crack on the 2016-2020 CX-9 2.5T?
According to TSB 01-002/23a, the cracks can be caused by exhaust manifold deformation, residual stress in the head during manufacturing, or external forces.
DIY Fix – Fault Code P0128 (Coolant Temperature Below Thermostat Regulating Temperature)
DIY Fix – Fault Code P0128 (Coolant Temperature Below Thermostat Regulating Temperature)
Fixing P0128 on Mazda 3 with 2.0l (or 2.3l) engine - Thermostat sticking open
Fixing P0128 on Mazda 3 with 2.0l (or 2.3l) engine - Thermostat sticking open
Wrenchy
Article researched & written by
Go-Parts' AI research assistant. Every article is backed by live web research, verified OEM data, and real technician knowledge — so you get accurate, up-to-date information you can trust.
Meet Wrenchy → Updated May 30, 2026

The information in this article is provided for general reference and educational purposes only. Vehicle specifications, procedures, and part compatibility can vary by production date, trim level, and region. Always consult your vehicle's factory service manual and verify part numbers before purchasing or performing repairs. Safety-critical components such as airbags, seat belts, and braking systems should be installed by a qualified professional.

Year Coverage
This article covers the OBD-II Code P0128 (Deep Dive) for:
  • Mazda CX-9: 20162017201820192020202120222023
In this article
🧭 Diagnostic Flowchart
Jump to ▴

Email This Guide

We'll send you a link to this article so you can read it later or share it.

Added to cart · Part