ELM327 & Class 2 Serial Data

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,199
Colorado
Well the plan is to do it with an arduino so I'd like to use that. Would it be ok to plug the arduino digital pin into the obd port on my truck or would that mess something up. Its a 2000 s10 LS. The coolant temp and fuel level and probably gear indicator are all that's controlled over serial but they all come from the ecu I would assume but I want to replicate the data the ecu sends to the cluster not what goes into the ecu. I don't even know if that's the same data line that goes to the DLC, I'm pretty sure it's not.


You cannot simply connect an Arduino to a serial data bus and have it do anything. It requires more hardware and software for the Arduino.

This is my own Arduino project to connect to a J1850VPW bus...

20220301_203905.jpg

The Arduino Nano is the small board attached to the larger board.


The code I put together to run it is several hundred lines long.

There is another thread here on this website titled Arduino Chat that discusses this sort of thing.
 

Riley_UwU

Member
Oct 7, 2024
17
Madison, MS
You cannot simply connect an Arduino to a serial data bus and have it do anything. It requires more hardware and software for the Arduino.
I would say "in that case I'll only have tach and speed" but even the gear selector is done over serial. I'm lazy and mostly deal in hardware and the cluster i bought will never be used for anything other than video games again so I'll probably just tear the cluster apart, take all the chips off the board and wire all the gauges and lights up to only an arduino so I'll have full control and won't have to deal with a 25 year old barely documented data standard.
 

Riley_UwU

Member
Oct 7, 2024
17
Madison, MS
im already trying to learn LIN messages for a tesla because i bought a tesla steering wheel for a different project that failed so im using that for the wheel of the sim and i cant even figure LIN out. if i just tear into the chevy cluster and make it simple then its one less data line to not deal with.
 

Riley_UwU

Member
Oct 7, 2024
17
Madison, MS
You cannot simply connect an Arduino to a serial data bus and have it do anything. It requires more hardware and software for the Arduino.

This is my own Arduino project to connect to a J1850VPW bus...

View attachment 114658

The Arduino Nano is the small board attached to the larger board.


The code I put together to run it is several hundred lines long.

There is another thread here on this website titled Arduino Chat that discusses this sort of thing.
I just got my cluster in. It does work but my theory of just running all the gauges and LEDs with an arduino instead of serial might not work. I didn't realise that these gauges are servo motors not whatever is in the older ones and this board is alot more complex than the older ones. I really don't want to have to deal with serial data though, any idea what would be easier?
 

gigawatts

Member
Apr 30, 2022
4
Earth
@TJBaker57

I've been trying to map out a few commands my 2006 Avalanche uses and this thread has been of great assistance. That spreadsheet is awesome for quickly finding what is talking to what. I'm using ELM327 dongles (both a bluetooth one and a USB one) to log messages on the Class 2 network and I have successfully sent a few messages found here and elsewhere, such as making the car chime, door lock/unlock, gauge cluster light tests and sweeps, etc so I know my setup works.

However, what I seem to be stuck on is what exact header to set when trying to forge and send a message to the car that I've previously logged. One example, the OnStar system is capable of displaying the phone number you have verbally told it to dial on the DIC before it tries to make a connection. I have recorded a session with those message being sent (even ASCII decoded the data hex bytes to confirm it matches the number that was displayed). But while trying to re-play these OnStar to DIC messages (via ELM327 serial console), nothing is happening, and I suspect its because I'm not setting the "AT SH xx yy zz" header correctly.

Any advice on how to calculate the correct header to use while using your spreadsheet to reference and decode each raw message?
 

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,199
Colorado
That spreadsheet is awesome for quickly finding what is talking to what.


My spreadsheets are a mess :wink: I don't even know what ones are where and how many times I've copied and altered them to suit the moments needs !!

I know I shared one or more here, but I really didn't think anyone used them.




I have successfully sent a few messages found here and elsewhere, such as making the car chime, door lock/unlock, gauge cluster light tests and sweeps, etc so I know my setup works


That's a very good start right there.


One example, the OnStar system is capable of displaying the phone number you have verbally told it to dial on the DIC before it tries to make a connection


I once read somewhere a fellow had done this for fun, sending a message to the DIC.


have recorded a session with those message being sent (even ASCII decoded the data hex bytes to confirm it matches the number that was displayed). But while trying to re-play these OnStar to DIC messages (via ELM327 serial console), nothing is happening, and I suspect its because I'm not setting the "AT SH xx yy zz" header correctly.


I usually will begin such a task by just mimicking the message seen in the recorded session. Is this what you have tried?

Go ahead and post up some of the recorded session here if you can.
 

gigawatts

Member
Apr 30, 2022
4
Earth
I believe this is all of the relevant section from the raw capture. Address 97 is the OnStar module.

Code:
13:19:50.976 8A EA 97 B1 01 97 12 17 00 00 33
13:19:50.976 08 FF 58 03 E8
13:19:50.984 8A EB 60 B1 01 97 12 17 00 00 82
13:19:50.999 8A EB 97 B2 01 12 20 20 20 20 20 0B
13:19:51.008 8B EA 60 72 01 54
13:19:51.039 8A EB 97 32 01 12 20 20 20 20 20 B7
13:19:51.050 8B EA 60 72 01 54
13:19:51.055 28 FF 40 06 07 0B 0B 83
13:19:51.086 8A EB 97 B2 01 12 20 31 32 38 33 AC
13:19:51.087 8B EA 60 72 01 54
13:19:51.125 8A EB 97 32 01 12 34 35 36 37 38 6F
13:19:51.125 8B EA 60 72 01 54
13:19:51.149 8A EB 97 B2 01 12 39 30 04 20 20 EB
13:19:51.157 8B EA 60 72 01 54
13:19:51.166 88 25 29 07 00 97
13:19:51.169 8A EB 60 B3 01 97 12 01 38
13:19:51.263 08 FF 1A 03 9A
13:19:51.384 08 FF 98 03 CB
13:19:51.429 08 FF 80 03 25
13:19:51.658 88 25 29 07 00 97
13:19:51.768 8A EB 60 B3 01 97 12 06 6B
 
  • Like
Reactions: TJBaker57

TJBaker57

Original poster
Lifetime VIP Donor
Member
Aug 16, 2015
3,199
Colorado
I believe this is all of the relevant section from the raw capture. Address 97 is the OnStar module.

Code:
13:19:50.976 8A EA 97 B1 01 97 12 17 00 00 33
13:19:50.976 08 FF 58 03 E8
13:19:50.984 8A EB 60 B1 01 97 12 17 00 00 82
13:19:50.999 8A EB 97 B2 01 12 20 20 20 20 20 0B
13:19:51.008 8B EA 60 72 01 54
13:19:51.039 8A EB 97 32 01 12 20 20 20 20 20 B7
13:19:51.050 8B EA 60 72 01 54
13:19:51.055 28 FF 40 06 07 0B 0B 83
13:19:51.086 8A EB 97 B2 01 12 20 31 32 38 33 AC
13:19:51.087 8B EA 60 72 01 54
13:19:51.125 8A EB 97 32 01 12 34 35 36 37 38 6F
13:19:51.125 8B EA 60 72 01 54
13:19:51.149 8A EB 97 B2 01 12 39 30 04 20 20 EB
13:19:51.157 8B EA 60 72 01 54
13:19:51.166 88 25 29 07 00 97
13:19:51.169 8A EB 60 B3 01 97 12 01 38
13:19:51.263 08 FF 1A 03 9A
13:19:51.384 08 FF 98 03 CB
13:19:51.429 08 FF 80 03 25
13:19:51.658 88 25 29 07 00 97
13:19:51.768 8A EB 60 B3 01 97 12 06 6B


I just may have to have a look at my own 2 Onstar vehicles. Both are the older defunct systems I believe. Never had a reason to fool with them before. Will need to peek into the owners manual for instructions !
 

gigawatts

Member
Apr 30, 2022
4
Earth
Mines defunct as well, plus I took away it's antenna. To get it to show messages on the DIC, hit the call button (either on the mirror or the steering wheel), say "call number", it will respond, then you can speak a phone number. It will confirm the number by displaying it on the DIC.

My other goal of figuring out these Class 2 messages is to spoof the XM radio module. I patched into the analog audio signals between the XM module and the head unit to setup an Aux input, but have to leave the XM module powered up and connected to the Class 2 network, otherwise the head unit disables the XM input. I want to spoof the init and heartbeat messages to keep the XM input available (while ripping out the XM module) and also make use of the Artist and Track message fields to display other info. I think I've captured all of that, just have to figure out how to calculate what headers to set to send those messages.

But we'll start with the DIC messages and work from there :smile: Thanks!
 
  • Like
Reactions: TJBaker57

Forum Statistics

Threads
23,681
Posts
641,974
Members
19,138
Latest member
wentzben

Members Online