Two lights.
Eight codes.
One clear next move.
Scanned at Advance Auto with an Actron Elite AutoScanner. The reader showed 25 messages, but only 8 unique trouble codes: the scanner repeats each code across three source and status buckets. The battery light is the part that decides what you do today.
Section 01
/// READOUTThe Scan Result
The Actron listed 25 messages, which looks like 25 problems. It is not. The scanner reports the same 8 codes from two modules and several status views, so every code appears roughly three times. Here is how the 25 break down:
| Code | Meaning | System |
|---|---|---|
| P0171 | Bank 1 System Too Lean | Fuel Trim |
| P0174 | Bank 2 System Too Lean | Fuel Trim |
| P0157 | O2 Sensor Circuit Low Voltage, Bank 2 Sensor 2 | O2 Sensor |
| P0420 | Catalyst Efficiency Below Threshold, Bank 1 | Catalyst |
| P0430 | Catalyst Efficiency Below Threshold, Bank 2 | Catalyst |
| P0441 | EVAP Incorrect Purge Flow | EVAP |
| P0446 | EVAP Vent Control Circuit | EVAP |
| P0455 | EVAP Gross Leak / No Flow | EVAP |
Worth noticing: zero charging or electrical codes appeared in any of the 25 messages. That absence matters for the battery light, and it does not mean what it might seem to mean. Next section.
Section 02
/// CHARGING SYSTEMThe Battery Light Is Not a False Positive
-
The charging light is not emissions-driven. On this 2014 RX 350 it is wired to the alternator's regulator circuit, not to the OBD-II monitors. Lean codes and EVAP codes physically cannot turn it on. It is a separate system speaking for itself.
-
12.25 to 12.30 V is genuinely low. A healthy resting 12 volt battery reads 12.6 to 12.8 V. Your reading is roughly 50 to 60 percent state of charge on a car that has been sitting. The 80 to 90°F ambient does not rescue it: warm temperatures push open-circuit voltage slightly up, so the reading is if anything a touch worse than it looks.
-
The two facts corroborate each other. A light saying "not charging" plus a battery sitting at half charge is the same story told twice.
Why "no charging code" proves nothing: on this platform that lamp is typically hardwired to the regulator circuit rather than triggered by a diagnostic trouble code. A clean scan and a real charging problem can coexist. They currently do.
Section 03
/// DO THIS FIRSTThe Deciding Test
Voltage at the posts, engine running
Start the car. Put a multimeter directly on the battery posts with the engine running. One number settles the entire question of what the alternator is doing.
The alternator is charging. The light is likely a bad connection, a tired battery, or a sensor or wiring fault. Not urgent, but get the battery load-tested.
or falling
The alternator is not charging. The car is running off the battery alone and will stall, typically within 20 to 60 minutes of driving, sooner with A/C and headlights on. Do not take a long drive.
Failed voltage regulator. Overcharging cooks the battery and the electronics. Also needs immediate attention.
30-second check: serpentine belt
Look for a glazed, cracked, or loose belt, or a squeal on startup. A slipping belt is one of the most common battery-light causes and costs almost nothing to fix.
30-second check: battery terminals
Look for white or green corrosion on the terminals, or a post that wiggles by hand. Also a classic battery-light cause, also nearly free to fix.
Section 04
/// ROOT CAUSE ANALYSISEight Codes, Likely Two Causes
This is not 8 separate problems. Read together, the pattern points at two root causes, with the rest downstream. (Bank 1 and Bank 2 in these codes refer to the two cylinder banks of the 2GR-FE V6.)
EVAP purge valve, probably stuck open
P0441 + P0446 + P0455 is three faults in one system, which points at the system itself rather than three coincidences. A purge valve stuck open dumps unmetered fuel vapor and air straight into the intake, which is exactly what makes both banks read lean (P0171 and P0174 together). One valve explains four codes. And the 2GR-FE is a well documented engine: lean-on-both-banks is a genuinely common failure pattern on this engine family.
- Gas cap first. Free. A loose or cracked cap alone throws P0455. $0
- Purge valve / VSV. The prime suspect for the whole cluster. Confirm its exact location for the 2GR-FE before wrenching.
- Vent valve at the charcoal canister, if the first two check out.
Bank 2 downstream O2 sensor (P0157)
A downstream sensor stuck reading low voltage makes the computer think the catalyst is dead. So P0430 may well be a false alarm caused by P0157. Fix the sensor before anyone quotes a catalytic converter.
The rest are probably consequences
P0420 and P0430 are what long-term lean running plus a bad O2 sensor produce. And note that P0430 is the only code sitting at PENDING: the computer has not fully committed to it, a hint that it is not a hard failure.
Do not let anyone sell you catalytic converters yet. The RX 350 carries two catalytic converters and replacing them is a four-figure job. Both cat codes (P0420, P0430) have plausible upstream explanations, the P0157 sensor and the lean condition, that cost a fraction of that. Rule those out first.
Suggested order of attack
- Gas cap. Inspect the seal, reseat it firmly.
- Purge valve. Test or replace.
- Clear the codes and drive for a week.
- Re-scan. See what actually comes back.
- Chase what is left. Only then talk sensors and catalysts.
Cheap extra: clean the MAF sensor while you are in there. A dirty MAF is the other classic cause of lean-on-both-banks, and the fix is a can of MAF cleaner spray.
Section 05
/// ONE THREADA Connection Worth Flagging
Low system voltage can make sensors report garbage and set spurious codes. If the alternator has been weak for a while, some of these 8 may partly be electrical noise.
So the sequence is: fix the charging system first, clear everything, then re-scan. The list may be shorter than it looks.
Section 06
/// STILL UNKNOWNThe One Open Question
Which light came on first
Did the battery light appear before or after the check engine light? If the battery light is brand new and the CEL has been on a while, that reinforces the read that these are two separate issues that happen to share a dashboard.