Battery voltage: the four places your car reports it
The battery posts, the adapter's pin 16 reading, OBD-II PID 0x42 and the engine computer's own figure: what each measures and why they disagree.
Put a meter on the battery and it says 12.6. The phone says 12.3. Start the engine and the phone says 14.1 while the cluster seems happy. Which one is right? Usually all of them, because they are not measuring the same thing in the same place. A car can report its battery voltage in four different places, and each has its own wiring between it and the battery, its own accuracy and its own blind spots. Knowing which one you are looking at is most of the job.
What the numbers mean
Before the four places, the targets. These are for an ordinary 12 volt lead-acid starter battery, from published battery-maker and battery-testing guidance:
| Condition | What to expect |
|---|---|
| Resting, fully charged | 12.6 V or higher (Interstate); 12.65 V at 100 percent (Battery University) |
| Resting, half charged | about 12.24 V (Battery University) |
| Resting, flat | 11.9 V or below is considered dead (Interstate); 11.89 V at 0 percent (Battery University) |
| Engine running, charging | 13.7 to 14.7 V (Interstate) |
| Load test, standing in for cranking | stays above 9.6 V at half the CCA rating for 15 seconds (Discover Battery) |
Three cautions come with that table. A resting reading needs rest: Battery University says manufacturers recommend 24 hours for lead-acid, with four hours as a minimum, and its table is for a battery at 26 °C. A battery that has just been charged or driven shows an inflated surface charge for a while. And Interstate notes that if the running voltage stays under 13 volts, you could have a bad alternator or battery, so a low running number is a reason to test both, not a verdict on either.
Place one: the battery posts
The battery's own terminals are the truth everything else is compared with. A decent multimeter on the posts, with the car asleep, gives you the resting number. With the engine idling, it gives you what the charging system is actually delivering to the battery. When the other three readings disagree with each other, this is the tiebreaker. It is also the only one of the four you can trust for a cranking or load test, because the dip lasts a second or two.
Place two: the adapter's own reading at pin 16
Pin 16 of the 16-pin diagnostic socket carries battery voltage. The example circuit in the ELM327 datasheet takes its power from pins 16 and 5, and the chip can measure what arrives there with the command AT RV. That is a hardware reading inside the adapter. It does not ask the car anything, so it works on any car with power at pin 16, whatever protocol the car speaks and even if the car never answers.
The ELM327 datasheet is honest about its limits. The input goes through a resistor divider into the chip's converter, the result is rounded to one decimal place, and the uncalibrated accuracy is typically about 2 percent. On a 12.6 volt battery, 2 percent is about a quarter of a volt either way, which on Battery University's table is the gap between a full battery and one at 75 percent. The fix is built in: measure the battery with a trusted meter and send AT CV with that figure, and the adapter calibrates itself.
Clones are another matter. On my own E39, one clone adapter answered AT RV with a clean "5.1V" while the engine was running and charging. The text was fine; the measurement was not. Its voltage sense is mis-scaled, and no app can know the true voltage from that number alone.
Place three: OBD-II PID 0x42, control module voltage
Service 01 PID 0x42 is Control module voltage. It is the engine computer's own figure for the supply it is running on, sent back as two bytes, with volts equal to (256A + B) / 1000. Because it comes from the car's computer rather than the adapter, a cheap adapter's bad divider cannot spoil it.
The catch is that a car only answers if its engine computer supports it. The car tells you which PIDs it has in a bitmask at connect, and the MS43 engine computer in my E39 does not include 0x42. On cars like that, the adapter's pin 16 reading is the only OBD-side number there is.
Place four: the engine computer's own measuring data
BMW engine computers of the K-line era measure battery voltage for their own use and keep it in their own measuring data, alongside values such as temperatures and engine speed. That data is not part of OBD-II, so a generic adapter never asks for it. The MasterLink is built to ask the engine computer directly for it on K-line BMWs.
I have to be straight about where that stands. The read is built for several BMW engine computers, but the scaling for most of them was worked out away from the car, and none has yet been checked against a multimeter on a real car. Until it has, the app treats that number as provisional and only shows it if it falls in a physically sensible range. When it is proven, it will be the best of the four for watching charging on those cars, because it is the figure the engine computer itself is working with.
Why the four disagree
- Different places on the wiring. The posts, the diagnostic socket and the engine computer's supply are at different points on the car's wiring, and current flowing through a wire costs a little voltage along the way. A difference of a few tenths between them is not, by itself, a fault.
- Different instruments. An uncalibrated ELM327 is typically within about 2 percent and shows one decimal. PID 0x42 is reported in thousandths of a volt, but that is resolution, not proof of accuracy.
- Different moments. A meter reads continuously. An app samples. A crank dip or a brief charging sag can fall between samples.
- Surface charge and state. A battery just off the charger or a drive reads high for a while, which is why the resting numbers above need hours of rest.
What The Analogue shows, and how it decides
With a Bluetooth adapter, the app asks for PID 0x42 first. If the engine computer says it does not support it, the app stops asking that car and reads the adapter's AT RV instead. It refreshes battery voltage every other polling round and only displays a reading between 6 and 17 volts, so a garbled reply never becomes a number on your screen.
For clones like mine that read low by a fixed ratio, the app can correct the divider. Once it has at least three consistent AT RV readings with the engine running, it assumes the alternator is charging at 14.0 volts and scales every reading from that adapter to match, and it writes the raw figure and the scale to the debug log. Be clear about what that means: a corrected clone is anchored to an assumed charging voltage, so it shows you movement and resting levels well, but it cannot prove your alternator is charging properly. A genuine adapter reads true volts and is never scaled. For a charging-system or cranking diagnosis, put a meter on the posts.
Questions owners ask
What should my car battery read with the engine off and with it running?
Interstate Batteries says a charged car battery should measure 12.6 volts or higher and is considered dead at 11.9 volts or below. With the engine running it should rise to somewhere between 13.7 and 14.7 volts. Battery University adds that a resting reading is only meaningful after the battery has sat, ideally 24 hours and at least four.
Why does my OBD adapter show a different battery voltage from my multimeter?
The adapter measures the voltage arriving at pin 16 of the diagnostic socket, not at the battery posts, and the ELM327 datasheet gives its uncalibrated accuracy as typically about 2 percent. On a 12.6 volt battery that is a quarter of a volt either way. The ELM327 also has a calibration command, AT CV, so the reading can be matched to a trusted meter.
What is OBD-II PID 0x42?
Service 01 PID 0x42 is Control module voltage: the engine computer's own figure for the voltage it is running on. It comes back as two bytes, and the value in volts is (256A + B) / 1000. Not every engine computer supports it, and the one in my E39 does not list it among its supported PIDs.
What voltage should a battery hold while cranking?
A load test stands in for cranking. Discover Battery's procedure applies a load of half the battery's CCA rating for 15 seconds, and the voltage should stay above 9.6 volts. If it falls below, recharge and test again, and replace the battery if it fails a second time.
Can an app check my battery while the engine cranks?
Not reliably. A crank lasts a second or two, and a live-data app reading voltage every second or two can miss the lowest point entirely. For a cranking or load test, use a meter or a load tester on the battery itself.
Sources
- ELM327 datasheet (Elm Electronics): AT RV, input divider, 2 percent accuracy, AT CV calibration, power from OBD pins 16 and 5
- Wikipedia: OBD-II PIDs (service 01 PID 0x42, control module voltage)
- Wikipedia: On-board diagnostics (J1962 connector, pin 16 battery voltage)
- Interstate Batteries: FAQs (charged, dead and engine-running voltages)
- Battery University BU-903: How to measure state of charge (rest time, open-circuit voltage table, surface charge)
- Discover Battery: Load testing your battery (half CCA for 15 seconds, 9.6 volts)