O2 sensor heater malfunction
The oxygen sensor’s heater circuit did not respond as commanded, the pattern of an open or short.
- Manufacturer
- Honda
- Platform
- PGM-FI (Keihin, Renesas M32R)
- Models
- CBR600RR
- Years
- 2003-2022
- Subsystem
- O2 sensor heater
- FI-light blink
- 2 long, 3 short
- Hex
- 0x2301
Confirmed. Confirmed: how the ECU detects this was traced in the firmware and matches the standard Honda meaning of the code.
What it means
The oxygen sensor has a small heater so it reaches operating temperature quickly. The ECU drives that heater and checks the circuit. When it stays open or shorted, this code sets and the sensor is slow to start working.
Conditions
Detection conditions
- The ECU drives the oxygen-sensor heater and checks the circuit responds.
Sets the fault when
- The heater circuit stays open or shorted long enough to count.
Clears the fault when
- Fix the underlying problem, then clear the stored codes with a diagnostic tool or the manufacturer’s reset procedure. If the fault is still present, the code returns the next time the ECU detects it.
Parts involved
- Oxygen sensor heater element and its wiring
Symptoms & likely causes
Possible symptoms
- FI (check-engine) light on
- Oxygen sensor slow to warm up, so closed-loop starts late
Likely causes
- Open or shorted heater element
- Heater wiring or connector fault
- Blown heater fuse (if fitted)
Diagnostic guidance
Measure the heater resistance and check its power and ground circuit for opens and shorts.
How the ECU decides
A simplified view of the logic behind this code: a short C snippet with a plain-English summary. It shows the real decision the ECU makes without the low-level detail.
For an output like an injector, coil, or sensor heater, the ECU switches the circuit on and checks that it actually responded. If the circuit is open or shorted for long enough, it sets the code and stops driving that output.
// Command the output on, then confirm the circuit responded.
turn_on(output);
if (circuit_response(output) == BAD) { // open or short
bad_count++;
if (bad_count >= limit)
set_fault();
}
When the ECU confirms a fault, it saves the code and turns on the FI (check-engine) light. For a serious fault it also runs the engine on safe default values (limp-home) so you can still ride, with the light on.
// Once a fault is confirmed, remember it and warn the rider.
if (fault_confirmed) {
store_code(code); // kept until the codes are cleared
fi_light = ON;
if (fault_is_serious)
limp_home = ON; // safe defaults so you can ride home
}
Related codes
Questions about code 23-01
- What does Honda code 23-01 mean?
- The oxygen sensor’s heater circuit did not respond as commanded, the pattern of an open or short.
- Which motorcycles does code 23-01 apply to?
- It is documented here for the Honda CBR600RR (2003-2022). Other Honda models may use the same display code with a different meaning, so confirm against your model.
- Can I still ride with code 23-01?
- It depends on the fault. Code 23-01 relates to the O2 sensor heater. If the bike runs poorly or a safety-related system is affected, avoid riding until it is checked. The FI light stays on until the fault is fixed and the codes are cleared.
- What should I check first for code 23-01?
- Measure the heater resistance and check its power and ground circuit for opens and shorts.
Sources
Every technical claim on this page traces to the research below. Source labels are sanitized; no local research paths are exposed.
- firmware
2005-2006 Honda CBR600RR ECU firmware
Factory PGM-FI firmware for the 2005-2006 CBR600RR. Primary source of truth.
- analysis
Firmware fault-code table extraction
Reads the list of codes the ECU can store directly out of each firmware.
- reference
HondaECU project (open-source Honda ECU tool)
Community reference mapping Honda PGM-FI codes to their meanings.
- analysis
CBR600RR ECU reverse-engineering analysis
Independent analysis of how the ECU detects, stores, and reports faults.