enginelama

Five protocols, one port

manual 03 · 12 jul 2026

Every car built for the American market since 1996 has the same sixteen-pin trapezoid socket under the dash, in roughly the same place, carrying the same standard fault codes. It's a genuine triumph of regulation — before it, every manufacturer had its own connector, its own codes, and its own expensive tool, which is exactly as user-hostile as it sounds. The law fixed the socket and the vocabulary. What it conspicuously did not fix, for a long time, was the language spoken through it.

the five dialects

The standard permitted several electrical signalling protocols, and manufacturers naturally picked whichever they'd already invested in. SAE J1850 PWM ran in Fords; J1850 VPW in General Motors. ISO 9141-2 was the European and Asian mainstay, a slow serial line that famously needed a five-baud wake-up ritual to get the car's attention. ISO 14230 (KWP2000) refined it. And ISO 15765 (CAN) — fast, robust, designed for cars talking to themselves — eventually won, and was mandated for all cars sold in the US from 2008. So the port your adapter plugs into might be speaking any of five dialects depending on the car's age and birthplace.

One standard socket, five permitted languages — and the one that won the same trapezoid since 1996 — under every dash, same spot J1850 PWM the Fords J1850 VPW General Motors ISO 9141-2 Europe & Asia — five-baud wake-up KWP2000 the refinement CAN mandatory from 2008
the law fixed the socket and the vocabulary; the wiring behind it stayed a matter of opinion for a decade

what auto-detect actually does

When the bay sends ATSP0 during setup, it's telling the adapter: work it out yourself. The adapter then tries each protocol in turn — sending a probe, listening for a coherent answer, moving on if the line stays silent or garbled. That's the pause you sometimes see, and the reason old adapters print SEARCHING... before answering the first question. Once it succeeds, the protocol is remembered for the session and everything afterwards is quick. It's also why a first read can occasionally fail and a retry works — a probe landed while the car's bus was busy talking to itself.

ATSP0: the adapter knocks on every door until one answers adapter SEARCHING... PWM VPW 9141 KWP CAN "yes?" ATSP0 = work it out yourself · the door that answers is remembered for the rest of the session
the pause before your first answer, drawn: four silent doors, one that says "yes?", and no knocking after that

why this matters for the parser

The dialects leak upward into the replies, which is the sort of thing you only discover by reading real ones. A CAN car answers a fault-code request with a byte saying how many codes follow; older protocols dive straight into the codes. Long answers on CAN arrive as multiple numbered frames that must be stitched together. And the adapters themselves interject: banner lines, prompt characters, echoes of your own command if echo-off didn't take. A parser that only ever saw one car's replies breaks on the next one — which is why the one in this page is built from canned replies of every shape, and tested against them, before it ever meets your car. The port is standard; the conversation, gloriously, still isn't.