Loading...
 

How to Read TCCM Codes (4WD)

Good news :-) You can pull TCCM codes with a fairly inexpensive scanner.

NOTE that this works on our trailblazer. From all the reading i did this should work for anyone. As all with the internet, proceed at your own devices!

If you do this or expand on it (reading values from sensors etc) please let everyone know!

To do this you need a scanner which lets you send a message by manually typing in the message. There are several of these out there, no idea which is better, worse, or the same. if you have the scantool, you need software to control it. There are free versions out there, though i opted to pay to get something which works with less hassle. The scantool.net scanner with Scan XL pro SW is on sale for $149 (not sure how often they run sales, or if this is an all the time price)

I went with the ODBLink Scan Tool from scantool.net with the scanXL Pro SW with the GM package add on since we have 3 GM vehicles.

so in summary you need a computer based scanner and software that lets you send messages manually (sometimes called terminal mode)

I figured out the messages to send to get codes from the TCCM on an 02 trailblazer, should be the same for all years.

this seems complicated, though just about anyone can do this. quite frankly you can just send the messages I listed and not delve into the details of what it all means :-)

the messages are in Hexadecimal, don't let that scare you :-)

I started to tool, selected ODB-II->connect and followed the instructions, then selected the "tool" tab and clicked on "ODB-II terminal", select "custom send tab", check the box "enable ODB-II terminal" in the top left. now you are ready to send messages!

quick example:

with the 4WD service light on:
send message: 6C 1A F1 19 C2 ff 00
Received: $6C $F1 $1A $59 $43 $79 $93 $6A

the $43 $79 is the code, and the $93 is the status indicating the code is turning on the 4WD service light

code list:
$43 $00 = C0300
$43 $05 = C0 305
$43 $06 = C0306
$43 $21 = C0321
$43 $27 = C0327
$43 $59 = C0359
$43 $74 = C0374
$43 $79 = C0379 ***** the code indicated in the message above
$45 $50 = C0550
$87 $70 = B0770
$87 $75 = B0775
$87 $80 = B0780
$87 $85 = B0785
$87 $90 = B0790
$A7 $25 = B2725
$D3 $01 = U1301

here are the messages I figured out that seem useful:

message: 6C 1A F1 14 - turn off 4WD service light (clears codes)
message: 6C 1A F1 19 D2 ff 00 - return current and pending codes
message: 6C 1A F1 19 c2 ff 00 - returns current code
message: 6C 1A F1 19 ff ff 00 - return all code status (what I prefer)

you can stop here or get into the details:

each group of 2 below is what is called a "byte"

the address of the TCCCM is 1A
the address of the scantool is F1

$6C $1A $F1 $19 $C2 $FF $00
$GG $HH $JJ $KK $LL $MM $NN <- use these to look through the list
GG - 6C = node to node GM message
HH - 1A = address of scanner
JJ - F1 = address of TCCM
KK - 19 = what kind of request (19) Request Diagnostic Trouble Codes
by Status (14) to clear codes
LL - C2 = what data you want to get. (C2) return current codes (D2)
return current and pending codes (FF) everything
MM - FF = (FF) send to all groups (not sure why 40 chassis doesn't
work)
NN - 00 = extra padding, leave at 00

The response should be formatted as follows:
Byte1 Byte2 byte3 Byte4 Byte5 Byte6 Byte7 Byte8

sample response:
$6C $F1 $1A $59 $43 $79 $93 $6A
$PP $QQ $RR $SS $XZ $ZZ $YY $VV <- use these to look through the list
below

Byte1 - PP - 6C - same as the first byte you sent
Byte2 - QQ - F1 - address of the scan tool (indicates the recipient)
Byte3 - RR - 1A - address of the TCCM module (indicates the originator)
Byte4 - SS - 59 - will be the byte4 you sent with 40 added to it
Byte5 - XZ - 43 - first part of code
Byte6 - ZZ - 79 - second part of code
Byte7 - YY - 93 - status (01) good, no issue (93) current code causing service light to illuminate (11) not sure, seemed to be associated to the last code raised, though I'm not sure
Byte8 - VV - 6A - check sum (ignore this, it is used to make sure the message made it without loosing data)

so bytes 4 and 5 have the code, to decipher:

$43 $79 <- from recceived message
$XZ $ZZ <- use this to decode based on the list below

the X is the first part of the code
4 = C0
8 = B0
A = B2
D = U1

ZZZ = code

for complete code put together XZZZ

so the $43 $79 is:

4 = C0
ZZZ = 379

code = C0379

if you get 00 00 for a code, then it is the end of the list - 00 00 is not a code, but an indicator teh end of the code list.

the status of this code (YY) in the example is 93 which seems to indicate the current fault. if you see 01 then that code is not currently active

examples:

no 4WD service light:
send message: 6C 1A F1 19 c2 ff 00 - returns current code
response: $6C $F1 $1A $59 >>$00 $00<< $93 $BB 00 00 means no code

after turning on the 4WD service light response:
send message: 6C 1A F1 19 c2 ff 00 - returns current code
Received: $6C $F1 $1A $59 $43 $79 $93 $6A 93 — indicates current code (43 79) with a status of 93 which seems to be the current code lighting the 4WD service light
Received : $6C $F1 $1A $59 $00 $00 $93 $BB — 00 00 indicates end of list

send message 6C 1A F1 19 ff ff 00 - return all code status - 01 in before last means all is well. in this example the before last byte is 01 for all the entries except the last which has code 00 00 indicating the end of the list, therefor there are no codes present.

as a neat aside - I believe these to be every possible code that can be generated!

Received OBD-II message: $6C $F1 $1A $59 $43 $00 $01 $86
Received OBD-II message: $6C $F1 $1A $59 $43 $05 $01 $E7
Received OBD-II message: $6C $F1 $1A $59 $43 $06 $01 $33
Received OBD-II message: $6C $F1 $1A $59 $43 $21 $01 $BF
Received OBD-II message: $6C $F1 $1A $59 $43 $27 $01 $0A
Received OBD-II message: $6C $F1 $1A $59 $43 $59 $01 $CE
Received OBD-II message: $6C $F1 $1A $59 $43 $74 $01 $80
Received OBD-II message: $6C $F1 $1A $59 $43 $79 $01 $BB
Received OBD-II message: $6C $F1 $1A $59 $45 $50 $01 $DD
Received OBD-II message: $6C $F1 $1A $59 $87 $70 $01 $0B
Received OBD-II message: $6C $F1 $1A $59 $87 $75 $01 $6A
Received OBD-II message: $6C $F1 $1A $59 $87 $80 $01 $E9
Received OBD-II message: $6C $F1 $1A $59 $87 $85 $01 $88
Received OBD-II message: $6C $F1 $1A $59 $87 $90 $01 $5D
Received OBD-II message: $6C $F1 $1A $59 $A7 $25 $01 $04
Received OBD-II message: $6C $F1 $1A $59 $D3 $01 $01 $12
Received OBD-II message: $6C $F1 $1A $59 $00 $00 $93 $BB


here are the messages I figured out that seem useful:

message: 6C 1A F1 14 - turn off 4WD service light (clears codes)
message: 6C 1A F1 19 D2 ff 00 - return current and pending codes
message: 6C 1A F1 19 c2 ff 00 - returns current code
message: 6C 1A F1 19 ff ff 00 - return all code status (what I prefer)