Was this article helpful?
ELM327 AT commands: the reference every owner eventually needs
The commands your app sends before it shows you a single number. Knowing a handful of them turns a connection problem from a mystery into a diagnosis.
An ELM327 adapter is a translator. On one side it speaks the vehicle’s OBD-II protocol; on the other it presents a simple text interface over a serial connection.
Commands prefixed with AT configure the adapter itself. Everything else is passed to the vehicle.
Related: how to choose an ELM327 adapter and ELM327 not connecting to phone.
The ones worth knowing
| Command | What it does |
|---|---|
ATZ | Full reset. Returns the version string |
ATI | Identify — returns the version without resetting |
ATE0 | Echo off. Apps set this so replies are not duplicated |
ATL0 | Linefeeds off |
ATH1 / ATH0 | Headers on/off — headers show which module replied |
ATSP0 | Set protocol to automatic |
ATDP | Describe the protocol currently in use |
ATRV | Read voltage at the connector |
ATS0 | Spaces off, for compact replies |
ATST | Set timeout |
ATWS | Warm start — softer than ATZ |
Your app sends most of these automatically at connection time.
The two that solve real problems
ATRV — read voltage
Returns the voltage measured at the OBD connector.
This is genuinely useful and completely independent of the vehicle answering anything. It tells you:
- Whether the connector has power at all. No voltage means a fuse: OBD port with no power.
- Battery condition, roughly. Under 12 V at rest is a weak battery.
- Charging voltage with the engine running.
If an adapter connects to your phone but the vehicle does not answer, ATRV is the first thing to check. Power present but no response is a protocol problem; no power is a fuse problem.
ATDP — describe protocol
Returns which of the OBD-II protocols the adapter negotiated: ISO 15765-4 CAN, ISO 9141-2, KWP2000, or one of the SAE J1850 variants.
Useful when connection is unreliable. Automatic detection occasionally settles on the wrong protocol, and setting it explicitly with ATSP followed by the number fixes it.
OBD-II protocols explained and K-line and ISO 9141 legacy diagnostics.
Version strings and clones
ATI returns something like ELM327 v1.5 or ELM327 v2.1.
Treat that string with suspicion. Clone adapters routinely report version numbers their firmware does not actually implement. A device claiming v2.1 while behaving like a partial v1.4 implementation is common.
The practical consequence is missing functionality that the version string promised.
How to spot a fake ELM327 clone adapter and STN chipsets versus ELM327 clones.
Headers, and why they matter on multi-module vehicles
With ATH1, each reply includes the header identifying which module sent it.
On a vehicle where several modules answer the same request — common on larger cars — that is how you tell responses apart. Without headers, the replies arrive interleaved and indistinguishable.
Most apps handle this internally, but it explains why a raw terminal session can look like nonsense.
The transport reality
Worth restating, because it is the most common purchasing mistake.
ELM327 communication runs over a serial connection, which on Bluetooth means the Serial Port Profile — Bluetooth Classic.
BLE does not provide SPP. A BLE-only adapter pairs with a phone and then cannot carry the protocol. Buying one is the single most common way to end up with an adapter that appears to work and does nothing.
OBD adapter: WiFi vs Bluetooth vs BLE.
Should you type these yourself?
Mostly not. A good app handles initialisation, protocol selection and header management without you thinking about it.
But knowing what the app is doing turns “it will not connect” into a sequence you can reason about:
- Does the adapter respond to
ATIat all? If not, the problem is the adapter or the phone connection. - Does
ATRVreturn a plausible voltage? If not, check the connector’s fuse. - Does
ATDPreturn a protocol? If not, the vehicle is not answering. - Do actual data requests return values?
Each step narrows the problem to a different part of the chain.
Try it on the free tier of the app — pair an ELM327 adapter over Bluetooth Classic. When a connection misbehaves, working through those four checks in order finds the cause far faster than reconnecting repeatedly.
Comments …
Loading…