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
- What is OBD2?
- The ELM327 Mini β Hardware Overview
- OBD2 Protocols Overview
- Car vs Bike β Which Protocol?
- CAN Bus Protocol Explained
- All AT Commands Reference
- Setting Up Serial Debug Assistant
- Step-by-Step Debugging Guide
- OBD2 PID Commands
- Mode / PID Command Structure
- Decoding Responses
- Building a Single Debug Command
- Troubleshooting
π OBD-II DIAGNOSTIC TOOL
π Open OBD-II ScannerWhat 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
| Property | Value |
|---|---|
| Chip | ELM327 v1.5 / v2.1 (clone) |
| Bluetooth | SPP (Serial Port Profile) |
| Baud Rate | 38400 bps (default) |
| Voltage Input | 12V from OBD2 Pin 16 |
| Operating Temp | -40Β°C to +85Β°C |
| Protocols | All 5 OBD2 protocols |
| Pairing PIN | 1234 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.
| Protocol | Code | Description | Vehicles |
|---|---|---|---|
| SAE J1850 PWM | 1 | Pulse Width Modulation, 41.6 kbps | Ford (1996β2007) |
| SAE J1850 VPW | 2 | Variable Pulse Width, 10.4 kbps | GM, Chrysler |
| ISO 9141-2 | 3 | K-Line serial, 10.4 kbps | European, Asian cars (Older) |
| ISO 14230-4 (KWP2000) | 4 & 5 | Keyword Protocol 2000 | European, Hyundai, Kia |
| ISO 15765-4 (CAN) | 6, 7, 8, 9 | CAN Bus β Most modern vehicles | All 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:
| Manufacturer | Protocol Used |
|---|---|
| Yamaha (2006+) | ISO 9141 / CAN |
| Honda (2009+) | ISO 9141 / ISO 15765 |
| BMW Motorrad | CAN Bus (ISO 15765) |
| KTM (2014+) | CAN Bus |
| Kawasaki | ISO 9141 |
| Ducati | CAN Bus |
| Royal Enfield (2020+) | CAN Bus / Proprietary |
| Bajaj | Proprietary (limited OBD) |
| Hero / TVS | Limited 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)
| ID | Direction | Description |
|---|---|---|
0x7DF | Tester β ECU | Functional broadcast (all ECUs listen) |
0x7E0 | Tester β ECU 1 | Physical address to Engine ECU |
0x7E8 | ECU 1 β Tester | Response from Engine ECU |
0x7E1 | Tester β ECU 2 | Transmission ECU |
0x7E9 | ECU 2 β Tester | Response 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-Protocol | Baud Rate | ID Length | Code |
|---|---|---|---|
| ISO 15765-4 11-bit 500K | 500 kbps | 11-bit | ATSP6 |
| ISO 15765-4 29-bit 500K | 500 kbps | 29-bit | ATSP7 |
| ISO 15765-4 11-bit 250K | 250 kbps | 11-bit | ATSP8 |
| ISO 15765-4 29-bit 250K | 250 kbps | 29-bit | ATSP9 |
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
| Command | Description | Example Response |
|---|---|---|
ATZ | Reset all settings to default | ELM327 v1.5 |
ATD | Set all to defaults (keeps baud rate) | OK |
ATWS | Warm start (like ATZ but faster) | ELM327 v1.5 |
ATI | Print version ID | ELM327 v1.5 |
AT@1 | Display device description | OBDII to RS232 Interpreter |
AT@2 | Display device identifier | <identifier string> |
Echo and Output Formatting
| Command | Description | Default |
|---|---|---|
ATE0 | Echo OFF (recommended) | Echo ON |
ATE1 | Echo ON | β |
ATL0 | Linefeeds OFF | β |
ATL1 | Linefeeds ON | β |
ATH0 | Headers OFF (hide CAN IDs) | Headers OFF |
ATH1 | Headers ON (show CAN IDs) | β |
ATS0 | Spaces OFF in response bytes | Spaces ON |
ATS1 | Spaces ON between response bytes | β |
ATSP | Print spaces (between bytes) | β |
Timing Commands
| Command | Description |
|---|---|
ATAT0 | Adaptive timing OFF |
ATAT1 | Adaptive timing ON (recommended) |
ATAT2 | Aggressive adaptive timing |
ATST XX | Set timeout to XX Γ 4ms (e.g., ATST FF = 1020ms) |
ATSTH XX | Set timeout high byte |
Protocol Commands
| Command | Description |
|---|---|
ATSP0 | Auto-detect protocol |
ATSP1 | SAE J1850 PWM |
ATSP2 | SAE J1850 VPW |
ATSP3 | ISO 9141-2 |
ATSP4 | ISO 14230-4 KWP (5-baud init) |
ATSP5 | ISO 14230-4 KWP (fast init) |
ATSP6 | ISO 15765-4 CAN 11-bit 500K |
ATSP7 | ISO 15765-4 CAN 29-bit 500K |
ATSP8 | ISO 15765-4 CAN 11-bit 250K |
ATSP9 | ISO 15765-4 CAN 29-bit 250K |
ATSPA | SAE J1939 CAN 29-bit 250K |
ATDP | Describe current protocol |
ATDPN | Describe protocol by number |
ATPC | Protocol close |
Advanced / Monitoring Commands
| Command | Description |
|---|---|
ATMA | Monitor all messages on bus |
ATMT XX | Monitor for transmitter XX |
ATMR XX | Monitor for receiver XX |
ATCRA | Clear receive address filter |
ATCRA XXX | Set receive address filter |
ATCSM0 | CAN silent monitoring OFF |
ATCSM1 | CAN silent monitoring ON |
ATBI | Bypass init sequence |
ATIGN | Read ignition voltage |
ATRV | Read voltage (battery) |
ATPPS | Print all programmable parameters |
Setting Up Serial Debug Assistant
Step 1 β Pair the ELM327 via Bluetooth
- Plug the ELM327 Mini into the OBD2 port of your vehicle (ignition ON or engine running)
- The red LED on the adapter should illuminate
- On Windows: Settings β Bluetooth & devices β Add device
- Look for
OBDII,ELM327, orV-LINKin the list - Enter pairing PIN:
1234(or try0000) - After pairing, a virtual COM port is created (e.g., COM4, COM5, COM6)
Step 2 β Find the COM Port Number
- Right-click Start β Device Manager
- Expand Ports (COM & LPT)
- 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:
| Setting | Value |
|---|---|
| COM Port | Your COM port (e.g., COM4) |
| Baud Rate | 38400 |
| Data Bits | 8 |
| Parity | None |
| Stop Bits | 1 |
| Flow Control | None |
| Send Format | ASCII Text |
| Line Ending | \r (Carriage Return) |
β οΈ Critical: ELM327 uses Carriage Return (\r) as command terminator, NOT newline (\n). Ensure your Serial Debug Assistant appends\rto 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 see0.0VorNO 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 seeNO DATAorUNABLE 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 HereBefore 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 / Mode | Meaning | Example | What it Returns |
|---|---|---|---|
01 | Show current data / live sensor data | 010C | Current ECU values like RPM, speed, coolant temp, throttle, etc. |
02 | Show freeze frame data | 020C | Sensor snapshot captured when a fault code was stored |
03 | Read stored DTCs | 03 | Diagnostic Trouble Codes currently stored in ECU memory |
04 | Clear stored DTCs and reset monitors | 04 | Clears trouble codes and readiness data |
07 | Read pending DTCs | 07 | Faults detected but not yet matured into stored codes |
09 | Vehicle information | 0902 | VIN, ECU name, calibration IDs, and similar info |
π‘ Important: In a command like010C, the first byte01is the mode/service and the second byte0Cis the PID (parameter ID). So01 0Cliterally 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
| Mode | Purpose | When to Use |
|---|---|---|
01 | Current live data | Use while engine is running to see real-time values changing live |
02 | Freeze-frame data | Use after a fault to see the sensor values captured at the moment the DTC was recorded |
Example:010Cgives the current RPM.020Casks for the RPM stored in freeze frame when the ECU captured a fault snapshot.
Common PID / Sub-Command Examples
| Full Command | Mode | PID / Sub-command | Description | Typical Formula |
|---|---|---|---|---|
0105 | 01 | 05 | Current coolant temperature | A - 40 |
010C | 01 | 0C | Current engine RPM | (256A + B) / 4 |
010D | 01 | 0D | Current vehicle speed | A |
0111 | 01 | 11 | Current throttle position | A Γ 100 / 255 |
012F | 01 | 2F | Current fuel level | A Γ 100 / 255 |
0205 | 02 | 05 | Freeze-frame coolant temperature | A - 40 |
020C | 02 | 0C | Freeze-frame engine RPM | (256A + B) / 4 |
020D | 02 | 0D | Freeze-frame vehicle speed | A |
0902 | 09 | 02 | Vehicle Identification Number (VIN) | ASCII decode |
Mode 01 β Current Live Data
| Command | PID | Description | Formula | Unit |
|---|---|---|---|---|
0100 | 00 | Supported PIDs 01β20 | Bitmask | β |
0101 | 01 | Monitor status since DTCs cleared | Bitmask | β |
0104 | 04 | Calculated engine load | A Γ 100/255 | % |
0105 | 05 | Engine coolant temperature | A β 40 | Β°C |
010A | 0A | Fuel pressure | A Γ 3 | kPa |
010B | 0B | Intake manifold pressure | A | kPa |
010C | 0C | Engine RPM | (256A + B) / 4 | RPM |
010D | 0D | Vehicle speed | A | km/h |
010E | 0E | Timing advance | A/2 β 64 | Β° |
010F | 0F | Intake air temperature | A β 40 | Β°C |
0110 | 10 | MAF air flow rate | (256A + B) / 100 | g/s |
0111 | 11 | Throttle position | A Γ 100/255 | % |
011F | 1F | Run time since engine start | 256A + B | seconds |
012F | 2F | Fuel tank level input | A Γ 100/255 | % |
0133 | 33 | Barometric pressure | A | kPa |
015C | 5C | Engine oil temperature | A β 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
| Command | Description |
|---|---|
0902 | VIN (Vehicle Identification Number) |
090A | ECU 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:
- CAN ID:
7E8β Engine ECU responding β - Length:
04β 4 bytes follow - Mode:
41β Mode 01 response β - PID:
0Cβ RPM confirmed β - Data:
1A= 26 decimal,F8= 248 decimal
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:
- Data byte A:
3C= 60 decimal
Formula: Speed = A
Speed = 60 km/h
Decoding Coolant Temperature (PID 0x05)
Raw Response:
7E8 03 41 05 7B
Parsing:
- Data byte A:
7B= 123 decimal
Formula: Temperature = A β 40
Temperature = 123 β 40 = 83Β°C
Decoding Throttle Position (PID 0x11)
Raw Response:
7E8 03 41 11 64
Parsing:
- Data byte A:
64= 100 decimal
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:
- Battery: 12.4V β
- RPM: (256Γ26 + 248) / 4 = 1726 RPM
- Speed: 0 km/h (vehicle stationary)
- Coolant: 123 β 40 = 83Β°C
- Throttle: (25 Γ 100) / 255 = 9.8% (slight idle throttle)
- Fuel: (160 Γ 100) / 255 = 62.7%
- DTCs: None stored β
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
NO DATA on OBD commands | Wrong protocol / ECU not responding | Try ATSP0 to auto-detect; ensure ignition is ON |
UNABLE TO CONNECT | Protocol mismatch or no response | Try ATZ, then manually set protocol with ATSP1βATSP9 |
BUS INIT: ERROR | K-Line init failed | Vehicle may use CAN; try ATSP6 |
? response | Unknown AT command | Check command spelling β no spaces within command |
| No response at all | COM port wrong or baud rate mismatch | Check Device Manager; try baud 9600 or 115200 |
ELM327 not showing in Bluetooth | Adapter not powered | Ignition must be ON (or ACC position) when pairing |
Voltage shows 0.0V | Bad OBD port connection | Re-seat the adapter; check OBD port fuse (usually fuse box) |
| DTC clear doesn't work | Some ECUs require physical address | Try 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