Use the ELM327 adapter to read your car's real-time RPM, speed, coolant temperature, load, intake air temperature, fault codes, and complete vehicle status at the time the fault occurred.
This app's organizational principle is simple:
A seemingly reasonable wrong number is worse than no number at all.
Diagnostic results will be interpreted with a wrench. A -40°C coolant temperature reading will be interpreted as a sensor malfunction; a "no fault codes" statement will allow someone to drive away a car that actually has a problem. Therefore, every rule here is designed to make "uncertainty" appear as uncertainty, rather than as an answer.
▍Main Features
• Six custom-drawn gauges, five styles—not just changing colors, but also the dial shape, pointers, and dynamics. Both dark and light backgrounds are supported.
• Fault codes: Mode 03 saved, Mode 07 pending confirmation, Mode 0A permanent. Each code indicates which controller reported it.
• Freeze frame: Complete vehicle status at the moment the fault is confirmed – RPM, coolant temperature, load, fuel trim. This is the only data set in the entire app showing "when a fault is occurring," and clearing the fault code will permanently destroy it. Therefore, it will ask the following questions before clearing:
• Emissions Readiness Status: Know whether the vehicle will pass inspection beforehand.
• Estimated Values: Horsepower, torque, fuel consumption, airflow, indicating whether calculated using measured MAF or Speed-Density.
• Custom PID: Write your own formulas, supporting CSV import and export.
• Acceleration Test: Timed from a standstill to the target speed.
• Diagnostic Records: Every byte traveled between the adapter and the vehicle is recorded; it can be exported if the connection fails.
▍Four Connection Methods
Bluetooth Classic (RFCOMM/SPP), Bluetooth LE (GATT UART), Wi-Fi (TCP), and a built-in Demo Simulator—you can complete all the scenes even without an adapter or a car.
▍What It Intentionally Avoids
• Won't write "This car has no fault codes" instead of "The responding controller has no fault codes".
• When two controllers give different answers to the same question, neither is used—choosing one is equivalent to random selection.
• If a calculated value is missing an input, the entire value will be displayed as unavailable; it won't be replaced with zero.
• No ads, no tracking, and no collection of personal data.
▍Open Source
The source code is on GitHub, GPL-3.0. You can compile it yourself:
https://github.com/ImL1s/telltale
The paid version on Play is functionally identical; there is no stripped-down version—it's for those who don't want to compile it themselves and those who want to support continued development.
▍What You Need
An ELM327 OBD2 adapter (Bluetooth or Wi-Fi), and a car that conforms to the OBD2 specification.
▍Disclaimer
This app is not affiliated with Ian Hawkins' Torque/Torque Pro and is not an official or derivative version of them. The OBD2 communication implementation is based on publicly available standards such as SAE J1979 and ELM327 datasheet.
ELM327 provides real-time vehicle telemetry and fault diagnosis. When uncertain, it will state "uncertain" rather than providing seemingly reasonable but incorrect figures.