The phone rang at 2:14 in the morning. A site manager, voice thin with panic, read me what his generator’s controller screen said: “SPN 157, FMI 18.” Then he asked the question I hear at least twice a year.
“Is that the part number? Do I order that?”
No. It’s better than a part number. It’s the generator telling you exactly what’s wrong, in a language nobody taught you. Learning it takes about ten minutes, and it will save you from the most expensive sentence in this business: “let’s just replace the part and see.”
Most owners treat the controller display like a clock radio. They glance at voltage, nod, walk away. That’s a waste of the best diagnostic instrument bolted to the machine.
The little screen on a Deep Sea or ComAp controller is free. No laptop, no dongle, no $300 service call. When the engine ECU throws a fault, the controller shows it — usually in plain text in the event log, and always as two numbers. I keep meeting people who paid a shop for a “diagnostic visit” to learn something that was sitting on their own display the whole time. (If you’ve never opened your controller’s event log, this controller guide walks through it. And it belongs in the same routine as the rest of your maintenance checks.)
Modern diesel engines talk on a CAN bus using a protocol called J1939. Cummins, Deutz, most electronic engines from the big manufacturers — they all speak it. Every fault arrives as two numbers.
SPN — Suspect Parameter Number. That’s the “what.” SPN 100 is engine oil pressure. SPN 110 is coolant temperature. SPN 190 is engine speed. SPN 157 is fuel rail pressure. SPN 168 is battery voltage.
You don’t memorize the list. You learn the five that matter for your engine, or you look them up in the engine manual’s code table. Thirty seconds with a PDF. That’s it.
FMI — Failure Mode Identifier. That’s the “how.” FMI 3: signal voltage too high. FMI 4: too low. FMI 5: circuit open — current below normal, a wire broken or unplugged. FMI 1: the value is below its normal range. FMI 0: above it. FMI 2: erratic — the sensor is telling lies at random.
So “SPN 157 FMI 18” reads as a sentence: fuel rail pressure, below normal, moderately severe. “My fuel pressure is low, and it’s getting serious.” That’s what the 2 a.m. screen was saying.
The customer almost ordered a $400 fuel pump. The real fault was a cracked fuel pickup tube sucking air. A new pump would have pumped air just as happily. The code told us where to look. It never said what to buy. That distinction is the whole game.
The list. One per article — this is mine:
Here’s the part the code evangelists skip. A code tells you what the ECU believes. The ECU believes its sensors. Sensors lie.
FMI 5 — circuit open. Except sometimes it’s not open, it’s corroded. High resistance reads as open to a computer. I had a coolant temperature sensor throwing FMI 3 — voltage high — on a hot afternoon. The sensor was perfect. The connector had green crust inside it. Dielectric grease, pushed home, code gone.
And the classic: a code appears out of nowhere, and the engine harness connector has backed out a millimeter from vibration. The code says “sensor fault.” The sensor is fine. Push the connector home, add a zip tie. Done. This is why the photo above matters — half of all “sensor failures” I’ve chased lived in that connector, not in the sensor.
One more: low battery voltage (SPN 168) throws phantom codes everywhere, because every sensor runs on that same supply. One weak battery, five codes, zero broken parts. If your controller is suddenly speaking in tongues, check the battery before you believe a word of it.
The display handles most real cases. Read the code, open the event log, go look at the actual thing. But there’s a class of fault where the screen goes quiet, and that’s when a handheld scan tool or a laptop earns its money: communication errors. “ECU comm lost.” No J1939 data at all.
I had a site like that once. Controller and engine ECU had stopped talking. The codes were useless — the patient can’t describe its own coma, and the codes travel on the same dead wire. Turned out the CAN twisted-pair had been pinched under a battery box, shorted to ground. A multimeter found it in ten minutes. No code would ever have found it.
This is also the one place remote monitoring genuinely earns its keep: the codes get phoned home before you drive two hours to the site. The 2 a.m. phone call becomes a text message you read at 7. I wrote about that setup here.
There’s a mechanic I know — thirty years on generators, hands like sandpaper — who says fault codes are for people who can’t hear an engine. He’s right about half of it.
On a mechanical-injection set with no ECU, he is the diagnostic tool. No argument. But on a common-rail electronic engine, refusing the codes is like refusing the dipstick. The codes don’t replace his ears. They point his ears at the right cylinder. I tell younger techs: read the code first, then listen. Not the other way around. And never only one of them.
So next time the screen flashes SPN-something, FMI-something, don’t reach for the parts catalog. Reach for the engine manual’s code table. Ten minutes of reading, and your generator stops speaking a foreign language.
It was talking to you the whole time. Talk to us if it’s still speaking gibberish after that — some of them are stubborn.
Email:[email protected]
Work:Monday to Friday,9:30-18:30