OBD2 Bluetooth ELM327 β€” Complete AT Command Guide

Using Serial Debug Assistant on Windows

Device: OBD2 Scanner Bluetooth ELM327 (Mini)
Interface: Windows Serial Debug Assistant
Standard: SAE J1979 / ISO 15765 / ISO 9141 / SAE J1850

πŸ“‹ Table of Contents

  1. What is OBD2?
  2. The ELM327 Mini β€” Hardware Overview
  3. OBD2 Protocols Overview
  4. Car vs Bike β€” Which Protocol?
  5. CAN Bus Protocol Explained
  6. All AT Commands Reference
  7. Setting Up Serial Debug Assistant
  8. Step-by-Step Debugging Guide
  9. OBD2 PID Commands
  10. Mode / PID Command Structure
  11. Decoding Responses
  12. Building a Single Debug Command
  13. Troubleshooting

🌐 OBD-II DIAGNOSTIC TOOL

πŸ”— Open OBD-II Scanner

What is OBD2?

OBD2 (On-Board Diagnostics, Version 2) is a standardized system built into all cars (1996+) and most motorcycles (2003+) that exposes the vehicle's internal sensors, ECU data, and diagnostic trouble codes (DTCs) through a standard 16-pin connector.

The ELM327 chip acts as a translator between the vehicle's proprietary protocol (CAN, ISO, VPW, PWM) and a simple human-readable AT command interface over Bluetooth serial.

[Your Laptop] <--Bluetooth Serial--> [ELM327 Mini] <--OBD2 Wire--> [Vehicle ECU]

The ELM327 Mini β€” Hardware Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          ELM327 Mini Bluetooth OBD2          β”‚
β”‚                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚ ELM327   β”‚   β”‚Bluetooth β”‚                 β”‚
β”‚  β”‚  Chip    │───│  Module  β”‚                 β”‚
β”‚  β”‚ (Parser) β”‚   β”‚ HC-05/06 β”‚                 β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       β”‚                                      β”‚          LED Indicators 
β”‚  β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚          πŸ”΄ Power       
β”‚  β”‚        OBD2 16-Pin Connector          β”‚   β”‚          🟒 Connected   
β”‚  β”‚  Pin 4: Chassis Ground                β”‚   β”‚          πŸ”΅ Activity    
β”‚  β”‚  Pin 5: Signal Ground                 β”‚   β”‚        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚  β”‚  Pin 6: CAN High (ISO 15765-4)        β”‚   β”‚
β”‚  β”‚  Pin 7: K-Line (ISO 9141-2)           β”‚   β”‚
β”‚  β”‚  Pin 14: CAN Low (ISO 15765-4)        β”‚   β”‚
β”‚  β”‚  Pin 15: L-Line (ISO 9141-2)          β”‚   β”‚
β”‚  β”‚  Pin 16: Battery (+12V)               β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Specifications

PropertyValue
ChipELM327 v1.5 / v2.1 (clone)
BluetoothSPP (Serial Port Profile)
Baud Rate38400 bps (default)
Voltage Input12V from OBD2 Pin 16
Operating Temp-40Β°C to +85Β°C
ProtocolsAll 5 OBD2 protocols
Pairing PIN1234 or 0000

Important Notes About Mini ELM327

⚠️ Clone Warning: Most "Mini" ELM327 adapters sold cheaply are clones of the original Elm Electronics chip. They work for basic OBD2 reading but may:
- Report firmware version incorrectly (e.g., says v2.1 but behaves like v1.5)
- Have limited AT command support
- Fail on some advanced CAN protocols
- Drop connections intermittently

OBD2 Protocols Overview

OBD2 is a standard interface but supports 5 different underlying communication protocols depending on the vehicle manufacturer and year.

ProtocolCodeDescriptionVehicles
SAE J1850 PWM1Pulse Width Modulation, 41.6 kbpsFord (1996–2007)
SAE J1850 VPW2Variable Pulse Width, 10.4 kbpsGM, Chrysler
ISO 9141-23K-Line serial, 10.4 kbpsEuropean, Asian cars (Older)
ISO 14230-4 (KWP2000)4 & 5Keyword Protocol 2000European, Hyundai, Kia
ISO 15765-4 (CAN)6, 7, 8, 9CAN Bus β€” Most modern vehiclesAll cars 2008+, Many 2003+

Quick Selection Guide

Your car is:
β”œβ”€β”€ Made after 2008?          β†’ Almost certainly CAN (Protocol 6)
β”œβ”€β”€ Ford (1996–2007)?         β†’ J1850 PWM (Protocol 1)
β”œβ”€β”€ GM/Chrysler (1996–2007)?  β†’ J1850 VPW (Protocol 2)
β”œβ”€β”€ European/Asian (pre-2008)?β†’ ISO 9141-2 or KWP2000 (Protocol 3/4/5)
└── Not sure?                 β†’ Use ATSP0 (Auto-detect)

Car vs Bike β€” Which Protocol?

Cars (Automobiles)

Standard: SAE J1979 / ISO 15765-4 (CAN Bus)

All cars sold in the USA from 2008 (and many from 2003) are required by law to use CAN Bus (ISO 15765-4). Older vehicles use the protocol in the table above based on manufacturer.

Motorcycles / Bikes

Standard: ISO 11898 (CAN Bus) or ISO 9141 (K-Line)

Motorcycles are not required by the same OBD2 mandate as cars. However:

ManufacturerProtocol Used
Yamaha (2006+)ISO 9141 / CAN
Honda (2009+)ISO 9141 / ISO 15765
BMW MotorradCAN Bus (ISO 15765)
KTM (2014+)CAN Bus
KawasakiISO 9141
DucatiCAN Bus
Royal Enfield (2020+)CAN Bus / Proprietary
BajajProprietary (limited OBD)
Hero / TVSLimited OBD2 / Proprietary
πŸ’‘ Indian Bikes Note: BS6-compliant motorcycles (2020+) in India are required to have OBD2 under BS6 Phase 2 norms. Older BS4 bikes may have a diagnostic connector but use proprietary protocols β€” not standard OBD2.

CAN Bus Protocol Explained

CAN (Controller Area Network) is the most common modern vehicle protocol. Understanding it helps decode responses.

CAN Frame Structure

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”
β”‚ SOF    β”‚  CAN ID  β”‚ DLC β”‚        Data           β”‚ CRC β”‚
β”‚ 1 bit  β”‚ 11 bits  β”‚4bit β”‚   Up to 8 bytes       β”‚     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜

OBD2 CAN IDs (Standard 11-bit)

IDDirectionDescription
0x7DFTester β†’ ECUFunctional broadcast (all ECUs listen)
0x7E0Tester β†’ ECU 1Physical address to Engine ECU
0x7E8ECU 1 β†’ TesterResponse from Engine ECU
0x7E1Tester β†’ ECU 2Transmission ECU
0x7E9ECU 2 β†’ TesterResponse from Transmission ECU

OBD2 CAN Message Format

When you send 010D (vehicle speed), this is what happens at the CAN level:

REQUEST  (Tester β†’ ECU via 0x7DF):
  Byte 0: 02       = 2 data bytes follow
  Byte 1: 01       = Mode 01 (current data)
  Byte 2: 0D       = PID 0x0D (vehicle speed)
  Bytes 3-7: 00 00 00 00 00  (padding)

RESPONSE (ECU β†’ Tester via 0x7E8):
  Byte 0: 03       = 3 data bytes follow
  Byte 1: 41       = 0x40 + Mode (0x01) = positive response
  Byte 2: 0D       = PID echoed back
  Byte 3: XX       = Actual speed value

ISO 15765-4 CAN Variants

Sub-ProtocolBaud RateID LengthCode
ISO 15765-4 11-bit 500K500 kbps11-bitATSP6
ISO 15765-4 29-bit 500K500 kbps29-bitATSP7
ISO 15765-4 11-bit 250K250 kbps11-bitATSP8
ISO 15765-4 29-bit 250K250 kbps29-bitATSP9
Most modern cars use ATSP6 (11-bit CAN at 500K). When in doubt, use ATSP0 (auto-detect).

All AT Commands Reference

AT Commands are sent directly to the ELM327 chip (not to the vehicle). They configure the adapter's behavior.

General / Reset Commands

CommandDescriptionExample Response
ATZReset all settings to defaultELM327 v1.5
ATDSet all to defaults (keeps baud rate)OK
ATWSWarm start (like ATZ but faster)ELM327 v1.5
ATIPrint version IDELM327 v1.5
AT@1Display device descriptionOBDII to RS232 Interpreter
AT@2Display device identifier<identifier string>

Echo and Output Formatting

CommandDescriptionDefault
ATE0Echo OFF (recommended)Echo ON
ATE1Echo ONβ€”
ATL0Linefeeds OFFβ€”
ATL1Linefeeds ONβ€”
ATH0Headers OFF (hide CAN IDs)Headers OFF
ATH1Headers ON (show CAN IDs)β€”
ATS0Spaces OFF in response bytesSpaces ON
ATS1Spaces ON between response bytesβ€”
ATSPPrint spaces (between bytes)β€”

Timing Commands

CommandDescription
ATAT0Adaptive timing OFF
ATAT1Adaptive timing ON (recommended)
ATAT2Aggressive adaptive timing
ATST XXSet timeout to XX Γ— 4ms (e.g., ATST FF = 1020ms)
ATSTH XXSet timeout high byte

Protocol Commands

CommandDescription
ATSP0Auto-detect protocol
ATSP1SAE J1850 PWM
ATSP2SAE J1850 VPW
ATSP3ISO 9141-2
ATSP4ISO 14230-4 KWP (5-baud init)
ATSP5ISO 14230-4 KWP (fast init)
ATSP6ISO 15765-4 CAN 11-bit 500K
ATSP7ISO 15765-4 CAN 29-bit 500K
ATSP8ISO 15765-4 CAN 11-bit 250K
ATSP9ISO 15765-4 CAN 29-bit 250K
ATSPASAE J1939 CAN 29-bit 250K
ATDPDescribe current protocol
ATDPNDescribe protocol by number
ATPCProtocol close

Advanced / Monitoring Commands

CommandDescription
ATMAMonitor all messages on bus
ATMT XXMonitor for transmitter XX
ATMR XXMonitor for receiver XX
ATCRAClear receive address filter
ATCRA XXXSet receive address filter
ATCSM0CAN silent monitoring OFF
ATCSM1CAN silent monitoring ON
ATBIBypass init sequence
ATIGNRead ignition voltage
ATRVRead voltage (battery)
ATPPSPrint all programmable parameters

Setting Up Serial Debug Assistant

Step 1 β€” Pair the ELM327 via Bluetooth

  1. Plug the ELM327 Mini into the OBD2 port of your vehicle (ignition ON or engine running)
  2. The red LED on the adapter should illuminate
  3. On Windows: Settings β†’ Bluetooth & devices β†’ Add device
  4. Look for OBDII, ELM327, or V-LINK in the list
  5. Enter pairing PIN: 1234 (or try 0000)
  6. After pairing, a virtual COM port is created (e.g., COM4, COM5, COM6)

Step 2 β€” Find the COM Port Number

  1. Right-click Start β†’ Device Manager
  2. Expand Ports (COM & LPT)
  3. Look for Standard Serial over Bluetooth link (COMX) β€” note the higher-numbered COM port (outgoing)
Example:
  Standard Serial over Bluetooth link (COM4)   ← Use this one (outgoing)
  Standard Serial over Bluetooth link (COM5)   ← Incoming (don't use)

Step 3 β€” Configure Serial Debug Assistant

Open Serial Debug Assistant and configure:

SettingValue
COM PortYour COM port (e.g., COM4)
Baud Rate38400
Data Bits8
ParityNone
Stop Bits1
Flow ControlNone
Send FormatASCII Text
Line Ending\r (Carriage Return)
⚠️ Critical: ELM327 uses Carriage Return (\r) as command terminator, NOT newline (\n). Ensure your Serial Debug Assistant appends \r to each sent command.

Step-by-Step Debugging Guide

Follow this exact sequence every time you start a debugging session.


πŸ”Œ Phase 1 β€” Connection & Reset

Command 1: Reset the ELM327

Send:    ATZ
Wait:    1–2 seconds
Receive: ELM327 v1.5
         >

The > prompt means the ELM327 is ready.


Command 2: Turn Echo OFF

Send:    ATE0
Receive: OK
         >

With echo off, the adapter won't repeat your commands back β€” cleaner output.


Command 3: Turn Headers ON (to see CAN IDs)

Send:    ATH1
Receive: OK
         >

Command 4: Enable Adaptive Timing

Send:    ATAT1
Receive: OK
         >

πŸ” Phase 2 β€” Protocol Detection

Command 5: Auto-detect Protocol

Send:    ATSP0
Receive: OK
         >

Command 6: Check What Protocol Was Detected

Send:    ATDP
Receive: AUTO, ISO 15765-4 (CAN 11/500)
         >

This tells you the vehicle is using CAN Bus at 11-bit 500K β€” the most common modern standard.


Command 7: Read Battery Voltage (confirm connection is live)

Send:    ATRV
Receive: 12.4V
         >
If you see 0.0V or NO DATA, the adapter is not connected properly to the vehicle.

πŸš— Phase 3 β€” Vehicle Communication Test

Command 8: Request Supported PIDs (Mode 01, PID 00)

Send:    0100
Receive: 7E8 06 41 00 BE 3F A8 13
         >
This is the most important test command. If you get a response, the vehicle ECU is communicating. If you see NO DATA or UNABLE TO CONNECT, see the Troubleshooting section.

πŸ“Š Phase 4 β€” Read Live Data

Command 9: Read Engine RPM

Send:    010C
Receive: 7E8 04 41 0C 1A F8
         >

Command 10: Read Vehicle Speed

Send:    010D
Receive: 7E8 03 41 0D 3C
         >

Command 11: Read Engine Coolant Temperature

Send:    0105
Receive: 7E8 03 41 05 7B
         >

Command 12: Read Throttle Position

Send:    0111
Receive: 7E8 03 41 11 64
         >

πŸ”΄ Phase 5 β€” Read Diagnostic Trouble Codes (DTCs)

Command 13: Check for DTCs (Mode 03)

Send:    03
Receive: 7E8 06 43 01 P0300 00 00
         >

Or if no faults:

Receive: 7E8 02 43 00

Command 14: Clear DTCs (Mode 04) ⚠️ Use with caution!

Send:    04
Receive: 7E8 01 44
         >
⚠️ Warning: Clearing DTCs also resets all readiness monitors. The vehicle may fail an emissions test until all monitors complete their drive cycles.
Search Engine Fault Codes Here

OBD2 PID Commands

More Info Here

Before looking at individual commands like 010C, it helps to understand the service mode and the PID / sub-command structure:

01 0C
β”‚  └── PID / sub-command = 0C (Engine RPM)
└───── Service mode      = 01 (Show current live data)
Service / ModeMeaningExampleWhat it Returns
01Show current data / live sensor data010CCurrent ECU values like RPM, speed, coolant temp, throttle, etc.
02Show freeze frame data020CSensor snapshot captured when a fault code was stored
03Read stored DTCs03Diagnostic Trouble Codes currently stored in ECU memory
04Clear stored DTCs and reset monitors04Clears trouble codes and readiness data
07Read pending DTCs07Faults detected but not yet matured into stored codes
09Vehicle information0902VIN, ECU name, calibration IDs, and similar info
πŸ’‘ Important: In a command like 010C, the first byte 01 is the mode/service and the second byte 0C is the PID (parameter ID). So 01 0C literally means: β€œIn Mode 01, give me PID 0C.”

How to Read OBD Command Structure

Command format:
[Mode] [PID]

Examples:
01 0C  β†’ Mode 01 + PID 0C = Current Engine RPM
01 0D  β†’ Mode 01 + PID 0D = Current Vehicle Speed
01 05  β†’ Mode 01 + PID 05 = Current Coolant Temperature
02 0C  β†’ Mode 02 + PID 0C = Freeze-frame RPM
09 02  β†’ Mode 09 + PID 02 = VIN

When the ECU replies, it usually adds 0x40 to the requested mode to indicate a positive response:

Request:   01 0C
Response:  41 0C 1A F8

01  β†’ requested mode = current data
41  β†’ positive response to mode 01
0C  β†’ echoed PID
1A F8 β†’ actual data bytes

Mode 01 vs Mode 02

ModePurposeWhen to Use
01Current live dataUse while engine is running to see real-time values changing live
02Freeze-frame dataUse after a fault to see the sensor values captured at the moment the DTC was recorded
Example: 010C gives the current RPM. 020C asks for the RPM stored in freeze frame when the ECU captured a fault snapshot.

Common PID / Sub-Command Examples

Full CommandModePID / Sub-commandDescriptionTypical Formula
01050105Current coolant temperatureA - 40
010C010CCurrent engine RPM(256A + B) / 4
010D010DCurrent vehicle speedA
01110111Current throttle positionA Γ— 100 / 255
012F012FCurrent fuel levelA Γ— 100 / 255
02050205Freeze-frame coolant temperatureA - 40
020C020CFreeze-frame engine RPM(256A + B) / 4
020D020DFreeze-frame vehicle speedA
09020902Vehicle Identification Number (VIN)ASCII decode

Mode 01 β€” Current Live Data

CommandPIDDescriptionFormulaUnit
010000Supported PIDs 01–20Bitmaskβ€”
010101Monitor status since DTCs clearedBitmaskβ€”
010404Calculated engine loadA Γ— 100/255%
010505Engine coolant temperatureA βˆ’ 40Β°C
010A0AFuel pressureA Γ— 3kPa
010B0BIntake manifold pressureAkPa
010C0CEngine RPM(256A + B) / 4RPM
010D0DVehicle speedAkm/h
010E0ETiming advanceA/2 βˆ’ 64Β°
010F0FIntake air temperatureA βˆ’ 40Β°C
011010MAF air flow rate(256A + B) / 100g/s
011111Throttle positionA Γ— 100/255%
011F1FRun time since engine start256A + Bseconds
012F2FFuel tank level inputA Γ— 100/255%
013333Barometric pressureAkPa
015C5CEngine oil temperatureA βˆ’ 40Β°C

Mode 03 β€” Diagnostic Trouble Codes

Send:    03
Purpose: Read stored DTCs

Mode 04 β€” Clear DTCs

Send:    04
Purpose: Clear DTCs and reset readiness monitors

Mode 09 β€” Vehicle Information

CommandDescription
0902VIN (Vehicle Identification Number)
090AECU name

Decoding Responses

Response Format with Headers ON (ATH1)

7E8  03  41  0D  3C
 β”‚    β”‚   β”‚   β”‚   └── Data byte A (value = 0x3C = 60 decimal)
 β”‚    β”‚   β”‚   └─────── PID echoed (0x0D = Vehicle Speed)
 β”‚    β”‚   └─────────── Response mode (0x41 = 0x40 + Mode 01)
 β”‚    └─────────────── Number of data bytes that follow (3)
 └──────────────────── CAN ID of responding ECU (0x7E8 = Engine ECU)

Decoding Engine RPM (PID 0x0C)

Raw Response:

7E8 04 41 0C 1A F8

Parsing:

Formula: RPM = (256 Γ— A + B) / 4

RPM = (256 Γ— 26 + 248) / 4
    = (6656 + 248) / 4
    = 6904 / 4
    = 1726 RPM

Decoding Vehicle Speed (PID 0x0D)

Raw Response:

7E8 03 41 0D 3C

Parsing:

Formula: Speed = A

Speed = 60 km/h

Decoding Coolant Temperature (PID 0x05)

Raw Response:

7E8 03 41 05 7B

Parsing:

Formula: Temperature = A βˆ’ 40

Temperature = 123 βˆ’ 40 = 83Β°C

Decoding Throttle Position (PID 0x11)

Raw Response:

7E8 03 41 11 64

Parsing:

Formula: Throttle = A Γ— 100 / 255

Throttle = 100 Γ— 100 / 255 = 39.2%

Decoding a DTC (Mode 03 Response)

Raw Response:

7E8 06 43 02 P0 30 0 P0 13 0

Simplified DTC format:

43           = Mode 03 response
02           = 2 DTCs stored
03 00        = DTC #1 β†’ P0300
01 30        = DTC #2 β†’ P0130

DTC Character Mapping:

Byte high nibble β†’ First character:
  0x0X = P0 (Powertrain, generic)
  0x1X = P1 (Powertrain, manufacturer-specific)
  0x2X = P2 (Powertrain, generic)
  0x3X = P3 (Powertrain, manufacturer)
  0x4X = C0 (Chassis)
  0x8X = B0 (Body)
  0xCX = U0 (Network)

So P0300 = Powertrain, Generic, Code 300 = Random/Multiple Cylinder Misfire Detected


Building a Single Debug Command

To quickly diagnose a vehicle with one "master sequence," paste these commands in order into Serial Debug Assistant:

ATZ
ATE0
ATH1
ATAT1
ATSP0
ATRV
0100
010C
010D
0105
0111
012F
03

What Each Line Does

ATZ     β†’ Reset ELM327, confirm firmware version
ATE0    β†’ Disable echo for clean output
ATH1    β†’ Show CAN IDs so you can see which ECU responds
ATAT1   β†’ Adaptive timing for reliable communication
ATSP0   β†’ Auto-detect vehicle protocol
ATRV    β†’ Confirm battery voltage (12V+ = ignition on)
0100    β†’ Test ECU communication + get supported PIDs
010C    β†’ Live engine RPM
010D    β†’ Live vehicle speed
0105    β†’ Engine coolant temperature
0111    β†’ Throttle position percentage
012F    β†’ Fuel level percentage
03      β†’ Read all stored fault codes

Expected Full Session Output

ATZ
ELM327 v1.5

ATE0
OK

ATH1
OK

ATAT1
OK

ATSP0
OK

ATRV
12.4V

0100
7E8 06 41 00 BE 3F A8 13

010C
7E8 04 41 0C 1A F8

010D
7E8 03 41 0D 00

0105
7E8 03 41 05 7B

0111
7E8 03 41 11 19

012F
7E8 03 41 2F A0

03
7E8 02 43 00

>

Decoded Results:


Troubleshooting

ProblemCauseFix
NO DATA on OBD commandsWrong protocol / ECU not respondingTry ATSP0 to auto-detect; ensure ignition is ON
UNABLE TO CONNECTProtocol mismatch or no responseTry ATZ, then manually set protocol with ATSP1–ATSP9
BUS INIT: ERRORK-Line init failedVehicle may use CAN; try ATSP6
? responseUnknown AT commandCheck command spelling β€” no spaces within command
No response at allCOM port wrong or baud rate mismatchCheck Device Manager; try baud 9600 or 115200
ELM327 not showing in BluetoothAdapter not poweredIgnition must be ON (or ACC position) when pairing
Voltage shows 0.0VBad OBD port connectionRe-seat the adapter; check OBD port fuse (usually fuse box)
DTC clear doesn't workSome ECUs require physical addressTry ATSH 7E0 then send 04

Quick Reference Card

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              ELM327 Quick Reference                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ATZ          β”‚ Reset adapter                            β”‚
β”‚ ATE0         β”‚ Echo off                                 β”‚
β”‚ ATH1         β”‚ Show headers                             β”‚
β”‚ ATSP0        β”‚ Auto protocol detect                     β”‚
β”‚ ATRV         β”‚ Battery voltage                          β”‚
β”‚ ATDP         β”‚ Show current protocol                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 0100         β”‚ Supported PIDs + ECU test                β”‚
β”‚ 010C         β”‚ RPM β†’ (256A+B)/4                         β”‚
β”‚ 010D         β”‚ Speed β†’ A (km/h)                         β”‚
β”‚ 0105         β”‚ Coolant temp β†’ Aβˆ’40 (Β°C)                 β”‚
β”‚ 0111         β”‚ Throttle β†’ AΓ—100/255 (%)                 β”‚
β”‚ 012F         β”‚ Fuel level β†’ AΓ—100/255 (%)               β”‚
β”‚ 03           β”‚ Read DTCs                                β”‚
β”‚ 04           β”‚ Clear DTCs                               β”‚
β”‚ 0902         β”‚ Read VIN                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
COM Settings: 38400 baud, 8N1, No flow control, CR terminator

Document prepared for ELM327 Mini Bluetooth OBD2 Scanner β€” Windows Serial Debug Assistant usage

Protocol References: SAE J1979, ISO 15765-4, ISO 9141-2, ISO 14230-4, SAE J1850