I recently purchased Torque Pro and it works great with a Bluetooth OBD2 unit I purchased. Here is my question: what actual data is being sent to the Bluetooth unit? I was able to use a Bluetooth terminal program to connect to the unit, but I can't seem to get data from it consistently by sending the AT commands. I am assuming the app sends ELM AT type commands to the units. Or am I off base?
Sometimes I will get responses, other times I get confusing responses. For example, if I send AT RV (read voltage) to the unit, sometimes it gives a response of 13.6 or 13.8 V which is expected. But trying to send other commands like AT SP 0 (set protocol to automatic) just gives an OK response. And I do not get a response for a simple mode 1, PID 5 request (01 05) from which I would expect a coolant temperature value.
So are there tricks to the data to send, or am I just missing something basic? A few simple examples of what actual data gets sent out by the app would be very helpful.
Thanks.
AT commands are only used to control the ELM chip, not to send commands to the vehicle computer. When you transmit a command preceded by "AT", the ELM chip understands that is a control message for itself only. If there is no "AT" prefix, the message goes to the vehicle. In order to understand the format used to send car commands, you need to read something like the document titled "OBDII Message structure" (search for that). Typically a header is first, the message is middle (01 05), and a checksum is last. For a GM vehicle, that would be "68 6A F1 01 05 7E". The "68 6A F1" is the header. The "01 05" is the command. And the "7E" is the checksum. The vehicle ecm would respond with something like "48 6B 10 41 05 62 3E". "48 6B 10" is the return header. "41 05" is the "echo". "62" represents the data and "3E" represents the checksum. The header and echo parts are protocol/make-dependent.
The ELM chip "discovers" which protocol to use either by trial and error (auto mode) or by you telling it what protocol to use in an AT command. After the ELM chip knows the protocol, it will add the header and checksums automatically, and it will know what header to expect in the returned data. In that way, you only send the "01 05" to the ELM chip and it does the rest.
The reason the AT RV command works is because the ELM chip is reading the voltage at the OBD2 connector, not from the vehicle's ecm.
Thanks for the info. After a bit more poking around, it makes sense. The Header format is 0x68 priority, 0x6A target address, 0xF1 source address. I found an article in the June 2011 issue of Circuit Cellar that shows the protocols for OBDII. I will be using the ISO 15765-4 CAN protocol for my 2010 Prius. Thanks again for the help.