ELM327 & Class 2 Serial Data

AmpOverload

Member
Jul 10, 2023
148
USA
I believe there is a message running on the network since the instrument cluster has the coolant temperature gauge.
Then you should see a "49 10 10" somewhere in your scans, assuming they cover a long-enough time period. (Things like ECT and transmission fluid temperature will not be seen very often since they obviously don't change as fast as something like engine speed.)

Where can I find the detailed info on all of the bytes of the serial commands? I found this website but it is not so detailed (or I don't understand this info enough).
That website you linked to is a good starting place, but your question is too vague to answer. There are way too many cases of "serial commands" to give you a sensible, succinct reply. Are you interested in sending commands to make queries of well-documented, non-manufacturer-specific vehicle parameters (e.g. engine coolant temperature, mass air flow, etc)? If so, then you want Mode/Service $01 and should probably start by reading SAE J1979. If you mean something else, please clarify.

OK, an update -I finally found the messages 68 49 10 10 XX CS. Thanks!
Excellent! (I had already composed the above reply before I saw this post of yours, so I went ahead and included that reply anyway.)
 

santon

Member
Jun 3, 2020
113
Israel
Are you interested in sending commands to make queries of well-documented, non-manufacturer-specific vehicle parameters (e.g. engine coolant temperature, mass air flow, etc)? If so, then you want Mode/Service $01 and should probably start by reading SAE J1979. If you mean something else, please clarify.
Yes, I meant the document that I could use as a "dictionary" to interpret the commands that I get from the vehicle network and create my own commands to the car. It seems that SAE J1979 is such a document. Thanks a lot.
 

azswiss

Member
May 23, 2021
979
Tempe, AZ
Some additional reading material - J2178: Class B Data Communication Network Messages
Part 1: Detailed Header Formats and Physical Address Assignments
Part 2: Data Parameter Definitions
Part 3: Frame IDs for Single-Byte Forms of Headers
Part 4: Message Definitions for Three Byte Headers
 

Attachments

  • SAE-J2178-1-1999.pdf
    237.2 KB · Views: 10
  • SAE-J2178-2-1999.pdf
    379.4 KB · Views: 8
  • SAE-J2178-3-1999.pdf
    806.2 KB · Views: 6
  • SAE-J2178-4-1999.pdf
    198.6 KB · Views: 8

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,028
Colorado
OK, an update -I finally found the messages 68 49 10 10 XX CS. Thanks!

I was getting ready to post up a reply and I see @AmpOverload and @azswiss took up the reins and jumped in and you have it already solved! I am not really surprised at that. Anyway, Here is a screenshot from that same data file I used just recently showing Engine Coolant Temperature messages...


Screenshot_20240429-141920_aGrep.jpg
 

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,028
Colorado
Where can I find the detailed info on all of the bytes of the serial commands? I found this website but it is not so detailed (or I don't understand this info enough).


I think my journey into this arena began with that website / document many years ago.


I am building a small setup with an OLED display - a gear position indicator. Attached is the picture of the setup. Here is the video of the gear indicator in action. The final version will be smaller, and I am going to put a display in some visible place on the dash.

I for one would be very interested in details of your project. Particularly with the circuitry and Arduino code. I cobbled together both circuitry and code snippets from many sources for my J1850 project. Not having any formal training in programming or electronics resulted in me spending a lot of time getting something that works! Perhaps if you have the time you could post over in the Arduino Chat thread??

https://gmtnation.com/forums/threads/arduino-chat.22775/
 

bryanbc

Member
May 20, 2024
2
California
Hi all,

I am new here, I have a 2005 GMC Sierra and a 2004 GMC Yukon Xl. With the heat starting to move in I wanted to be able to control my AC remotely, as I’m installing remote start in the future. While I could hardwire the HVAC to turn on I want a bit of a more elegant solution. I found this thread and I think tapping into the serial data and sending a command through there will be the perfect solution. I could wire in with an Arduino and have my alarm fob send commands through the auxillary outputs. Or through my phone Hopefully I can program the heated seats as well in the winter, as well as the folding mirrors. Basically I want to give it the functions that the newer 2007 and up have. I think the member iddqd had a similar goal.

I bought an OBD adapter from QUALLY on Amazon, unfortunately I get an Unknown Driver message and my dash and radio turn off, so I’m guessing the serial port gets shorted out on the adapter. It worked fine the first time with but I couldn’t establish a connection with the Serial Bluetooth Terminal.

Backstory aside, any recommendations on an ODB bluetooth scanner that can send commands and receive data? And any recommendations on communicating with it on windows or Mac?
 

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,028
Colorado
any recommendations on an ODB bluetooth scanner that can send commands and receive data?


I have good luck with devices from Veepeak which I usually buy on Amazon.

The device you bought 'should' be capable of doing the same things.

What app(s) have you tried with your device?

unfortunately I get an Unknown Driver message

This much sounds like your device is interfering with the serial data network. Perhaps it is defective. I assume you only get the "Unknown Driver" message while the device is plugged into the DLC?

I think tapping into the serial data and sending a command through there will be the perfect solution.

Easier said than done I'm afraid. Any module you wish to command via serial data needs to have been designed and programmed to respond to such message/commands. In the case of the HVAC control module pretty much all the operational switches/buttons are integral to the module itself and thus have no need to monitor and react/respond to serial messages.

An exception is my 2002 Trailblazer. It has steering wheel switches for the HVAC fan speed and drivers temperature settings. These steering wheel switches wire to the BCM and thus the BCM must send messages to the HVAC module to adjust these two parameters.

Even so, there is no ON/OFF or Mode switching available on the steering wheel so the best I could do is adjust the fan speed or drivers temperature settings.

Then also is the range of a bluetooth connection. Just about 30' is all I could expect.

Now I suppose I could use a WiFi OBD adapter that could give me better range. And I could build an Arduino project to recieve serial data messages and code that to provide switch outputs that I might then be able (possibly) to tie-in in parallel to the HVAC modules switches.

But all that is getting pretty extreme.
 
  • Like
Reactions: bryanbc

bryanbc

Member
May 20, 2024
2
California
I have good luck with devices from Veepeak which I usually buy on Amazon.

The device you bought 'should' be capable of doing the same things.

What app(s) have you tried with your device?
Will try that brand, thank you. I tried Car Scanner ELM OBD2, DashOBD, and Torque. It worked well the first time on most apps when I tried it, except for the transmission temperature which was stuck at -40F, at least on my Yukon. I didn’t get to test it on my Sierra as the scanner stopped working by the time I got to it. All the apps seemed to work fine, DashOBD needed PID’s so I was going to research them. I do want to get the transmission temperature on my radio screen with DashOBD.
This much sounds like your device is interfering with the serial data network. Perhaps it is defective. I assume you only get the "Unknown Driver" message while the device is plugged into the DLC?
Yeah I believe it is defective, it would return back to normal when I turned it off or took it out of the OBD port. Except that the PASSlock light was stuck on until I restarted the truck, this happened on both my Yukon and Sierra. May upload a video if interested. Did verify it wasn’t my port being broken with another wired OBD scanner I’ve had for years.
An exception is my 2002 Trailblazer. It has steering wheel switches for the HVAC fan speed and drivers temperature settings. These steering wheel switches wire to the BCM and thus the BCM must send messages to the HVAC module to adjust these two parameters.
I believe that was the only year too haha, I think 2003 and on the buttons were the same on the trailblazers and the full size trucks.

Now I suppose I could use a WiFi OBD adapter that could give me better range. And I could build an Arduino project to recieve serial data messages and code that to provide switch outputs that I might then be able (possibly) to tie-in in parallel to the HVAC modules switches.
Interesting wifi could be an option. Yeah my original plan was to have an alarm system with auxiliary outputs and wire one to an Arduino, so I wouldn’t have to mess with attaching a SIM card, yet, maybe in the future.

Easier said than done I'm afraid. Any module you wish to command via serial data needs to have been designed and programmed to respond to such message/commands. In the case of the HVAC control module pretty much all the operational switches/buttons are integral to the module itself and thus have no need to monitor and react/respond to serial messages.
I see, I do wonder if the temperature sensor above the drivers seat is connected through the serial data. And I know that there is at least one thing connected with the rest of the system.
Not sure if you have played with it but switching the odometer to metric also switches the HVAC to Celsius. It could be that that is the only things that it scans for.

Either way will play around with it once it comes in. I have been reading up on the documents and excel sheets you and others have posted on this thread.
Thank you!
 

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,028
Colorado
It worked well the first time on most apps when I tried it


There is a quirk of many of these devices in the details of how the device determines which protocol to use when connected to a vehicle. Often the device will default to using the protocol it last used succesfully. This can lead to the device using an incorrect protocol.

I have had this happen where I had previously used the device on a CANBUS ISO 15765-4 vehicle and then tried to connect to a SAE J1850 VPW vehicle and experienced a failure to connect to an ECU. The device reports a connection but no communication is possible due to an incorrect protocol.

This is a good reason to setup vehicle specific profiles in your apps and select the specific OBD protocol for that vehicle.

transmission temperature which was stuck at -40F


At least in Torque Pro there are like 3 variations of transmission fluid temperature. These are found in the extended GM PID set which users must load in the app.

I do wonder if the temperature sensor above the drivers seat is connected through the serial data

As far as I know the temperature sensors are directly wired to the HVAC module. As such there is no need for serial data messages there.

Practically ALL sensors use SI units natively. So temperatures are reported in Celsius. Scantools and display systems can be set to convert to Fahrenheit.

have been reading up on the documents and excel sheets you and others have posted

The real key to getting traction in understanding the serial data messages is the SAE J2178 specification. That and a large amount of free time :wink:
 

yoterone

Member
Jun 4, 2024
2
Washington
Not sure where to post my question as this is my first post here but here it goes...

I'm trying to find out some information on a specific message on the class 2 bus. I'm looking for the message that tells all the modules that the TCCM is all good and functioning normally.

A little background: 05 Tahoe with a NP246 to NP241C swap. Out with AutoTrak and in with manual shift transfer case. I also removed the TCCM and associated t-case switch. I knew there would be a DIC message to Service 4WD. I want to be able to spoof the TCCM. I have an Adafruit Feather 328P and SparkFun OBD2 to UART sending and receiving messages on the class 2 bus to monitor torque convertor lockup. So the parts are there to spoof the TCCM, just need the message and header if that style of message even uses one. Any help would be appreciated!
 

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,028
Colorado
looking for the message that tells all the modules that the TCCM is all good and functioning normally.


As you might know, all factory modules on a class 2 serial data bus are required to send a "State of Health" message no less than every 2 seconds.

Shall I assume this is what you are looking for?

That SOH message is not the only messaging the TCCM does.

It also reports about the current mode of operation it is in (2 High, 4 High, 4 Lo, Nuetral). The PCM acknowledges these messages so I would assume the PCM uses this information somehow.

If the information from the TCCM is considered "critical data" you may get a communications error code from the PCM.

Other messaging occurs between the IPC and the TCCM.

Here is a sample of messages sent by a TCCM in a 2005 Yukon, 5.3 LM7.

The logfile is filtered to show only messages sent by the TCCM.

The second highlighted item is the SOH message: "08FF1A03". The last byte shown in each message is a checksum byte. Note the approximate 2 second repetition of this message.

Screenshot_20240904-224904_aGrep.jpg
 

yoterone

Member
Jun 4, 2024
2
Washington
Thank you TJBaker57! I think that is the message I am seeking! I'm looking to send that message on the bus every few seconds to spoof an operational TCCM. Is 1A 03 the data and 08 FF the header? Reason I ask is the current arduino code I have running on my Tahoe has to set the header before it sends the message. Below is a snippet of code from my TCC lockup indicator..

myELM327.sendCommand("ATSH6C10F1"); // $6C,$10,$F1,$22,$PID-hsb,$PID-lsb,$01
delay(250);

myELM327.sendCommand("22199101"); // Request TCC slip speed PID
delay(250);

Each command has to begin with AT as far as I'm aware. Is the message all inclusive? Meaning is it sent as is since it's a SOH message meant for every module?
 

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,028
Colorado
You may already know this but it is worth reiterating.

Lines that begin with "AT" are strictly for configuration of the ELM type device, they are not put out on the vehicle data bus at all.

The GM serial data bus uses the 3 byte header form of the SAE J1850 VPW specification.

As you say, the header must be set separately with the "SH" instruction. (ATSHxxyyzz)

Your 3 byte header for a SOH message from a TCCM is "08FF1A" so the configuration message to the ELM type device is "ATSH08FF1A".

The data byte(s) for the SOH message is simply "03".

Your ELM type device will add the checksum byte automatically.

The specification is clear in that the message is required to be sent every 2 seconds.

Modules that require data from a TCCM may still set trouble codes if certain TCCM specific data is not broadcast on the vehicle data bus.
 

Forum Statistics

Threads
23,583
Posts
640,843
Members
18,919
Latest member
vickes

Members Online