- Bluetooth connection
- Works with iPhone, Android, Windows
- FORScan-ready (HS/MS-CAN)
The AT commands that set an ELM327 up, the hex requests that ask your car for data, and the OBD2 pins those commands travel over.
Last updated September 2026Send AT commands to set the adapter up and hex OBD requests to ask the car. ATZ resets, ATE0 turns echo off, ATSP0 picks the protocol automatically, and 010C asks for engine RPM. Every command ends with a carriage return, and the > prompt means the adapter is ready.
Every ELM327 app is sending short text commands and reading the replies. You can do the same from a laptop or phone terminal, which is the quickest way to prove whether a problem sits in the app, the adapter or the car.
You need three things: an adapter that shows up as a serial port, a terminal program, and the right speed setting.
A healthy adapter answers with its version string and then a > prompt. The prompt is the adapter saying it is ready for the next command. Garbled characters instead mean the speed is wrong, so try the other common rate before suspecting the adapter.
>ATZ
ELM327 v1.5
>| Command | What it does | Typical reply |
|---|---|---|
| ATZ | Full reset, like unplugging the adapter | Version text, e.g. ELM327 v1.5 |
| ATWS | Warm start, a quicker reset | Version text |
| ATI | Print the version ID | ELM327 v2.1 |
| AT@1 | Print the device description | Maker's text |
| ATRV | Read the voltage at the port | e.g. 12.6V |
| ATE0 / ATE1 | Echo off / on | OK |
| ATL0 / ATL1 | Linefeeds off / on | OK |
| ATS0 / ATS1 | Spaces in replies off / on | OK |
| ATH0 / ATH1 | Headers off / on | OK |
| ATSP0 | Set the protocol to automatic | OK |
| ATSP6 | Force ISO 15765-4 CAN, 11-bit ID, 500 kbit/s | OK |
| ATDP / ATDPN | Describe the current protocol / give its number | AUTO, ISO 15765-4 (CAN 11/500) / A6 |
| ATST hh | Set the reply timeout | OK |
| ATD | Restore defaults | OK |
Commands are not case-sensitive and spaces are ignored. Clone chips may not answer every command; the ELM327 datasheet lists which version added each one.
AT commands configure the adapter itself, not the car. Most apps send the same short sequence on every connection, and copying it by hand teaches you what each command is for.
ATZ reset the adapter
ATE0 echo off
ATL0 linefeeds off (ATL1 turns them on)
ATS0 spaces off, for compact replies
ATH0 headers off
ATSP0 automatic protocol search
0100 first request: which PIDs are supported?Echo and linefeed settings are about tidiness. With echo on, the adapter repeats each command before replying, which helps when typing but clutters an app's parser. ATL1 adds a line feed after each carriage return, which some terminals need to show replies on separate lines.
If a command returns a question mark, the chip does not know it. Clone firmware often lacks newer commands even when its version string claims otherwise, which is the whole story behind the v1.5 vs v2.1 debate.
OBDLink MX+ |
Vgate vLinker FS USB |
Vgate vLinker MC+ |
OBDLink LX |
OBDMonster ELM327 USB |
Veepeak Mini (Android) | |
| Connection | Bluetooth | USB | Bluetooth LE | Bluetooth 3.0 | USB | Bluetooth |
| iPhone | Yes | No | Yes | No | No | No |
| Android | Yes | — | Yes | Yes | — | Yes |
| Windows | Yes | Yes | Yes | — | Yes | — |
| FORScan | Yes | Yes | Yes | — | Yes | — |
| BMW coding | Yes | — | — | — | — | — |
| Check it out | Check it out | Check it out | Check it out | Check it out | Check it out |
ATSP0 tells the adapter to try each protocol until the car answers. On most cars that takes a moment; on some older ones it can sit on SEARCHING long enough to look broken.
| ATSP | Protocol |
|---|---|
| 0 | Automatic |
| 1 | SAE J1850 PWM, 41.6 kbit/s |
| 2 | SAE J1850 VPW, 10.4 kbit/s |
| 3 | ISO 9141-2, 5-baud init |
| 4 | ISO 14230-4 KWP, 5-baud init |
| 5 | ISO 14230-4 KWP, fast init |
| 6 | ISO 15765-4 CAN, 11-bit ID, 500 kbit/s |
| 7 | ISO 15765-4 CAN, 29-bit ID, 500 kbit/s |
| 8 | ISO 15765-4 CAN, 11-bit ID, 250 kbit/s |
| 9 | ISO 15765-4 CAN, 29-bit ID, 250 kbit/s |
| A | SAE J1939 CAN, 29-bit ID, 250 kbit/s |
Once auto search succeeds, ATDPN shows the number with an A in front, meaning it was found automatically. Write that number down; next time, ATSP followed by it skips the search.
Protocols 3 to 5 begin with a slow wake-up handshake, so the first request on those cars can take a few seconds. Later requests run faster once the link is open.
The connection guide covers the fuse and fit checks in more detail.
The vLinker MC+ is compatible with the ELM327, ELM329 and STN command sets, and reaches GM single-wire CAN and Ford MS-CAN as well as the five standard protocols. It connects to iPhone, Android and Windows.
Check it outCar requests are plain hex: a mode number, then a PID. Mode 01 asks for live data, and the reply starts with 41 to confirm it.
| Request | Asks for | How to decode the reply |
|---|---|---|
| 0100 | Supported PIDs 01 to 20 | Four bytes, one bit per PID |
| 0105 | Coolant temperature | A minus 40, in °C |
| 010C | Engine RPM | (256 × A + B) ÷ 4 |
| 010D | Vehicle speed | A, in km/h |
| 0110 | Mass airflow | (256 × A + B) ÷ 100, in g/s |
| 0111 | Throttle position | A × 100 ÷ 255, in % |
>010C
41 0C 1A F8Here A is 1A and B is F8 in hex, or 26 and 248 in decimal. So (256 × 26 + 248) ÷ 4 gives 1,726 RPM. A coolant reply of 41 05 7B works the same way: 7B is 123, and 123 minus 40 is 83 °C.
Other modes cover the rest of the OBD2 menu:
Every command ends up as signals on specific pins of the 16-pin diagnostic connector. Knowing the ELM327 OBDII pin layout helps when an adapter works on one car and not another.
| Pin | Use |
|---|---|
| 2 | SAE J1850 bus positive |
| 4 | Chassis ground |
| 5 | Signal ground |
| 6 | CAN high |
| 7 | ISO 9141-2 and KWP2000 K-line |
| 10 | SAE J1850 bus negative (PWM) |
| 14 | CAN low |
| 15 | ISO 9141-2 L-line, on some cars |
| 16 | Battery positive, usually unswitched |
The remaining pins, 1, 3, 8, 9, 11, 12 and 13, are left to each car maker. Ford uses 3 and 11 for its MS-CAN network, which is why FORScan cables carry a switch, and GM uses pin 1 for single-wire CAN. Pin 16 carries battery voltage even with the key out on most cars, which is why an adapter left plugged in stays powered and why sleep modes matter.
For the Ford side of this, see the FORScan guide. For the software that sends these commands for you, the app guide lists the options by platform.
ATZ, which resets the adapter and prints its version. Follow it with ATE0 to turn echo off and ATSP0 to let the adapter find the car's protocol.
Many default to 38400 and some older units to 9600. Faster USB and Bluetooth models vary, so check the manual if 38400 gives garbage.
The chip does not recognise the command. Check the spelling, or suspect clone firmware that lacks newer commands.
The car did not answer that request. Either your car does not support that PID, or the ignition is off.
Send 0902 on a car that supports it. The reply comes back as several lines of hex that decode to the 17 characters of the VIN.