TJBaker57 will know where to take this from here.
Tech 2 is not going to work with anything after 2008; you need an MDI.my clone tech 2 won't connect to my other car, a 2014 full can car
Not surprising since the amount of CAN traffic is overwhelming the buffer on the ELM327; you are taking a small snapshot of a constant firehose of activity. This is why filtering the data is essential.I did the same command twice and got totally different set of stuff, and that was just engine off doing nothing.
Filter by Transmit or Receive module via the AT MT xx & AT MR xx commands, respectively, or byte filtering using the AT CRA command. Identifying the appropriate modules and/or bytes is going to take some experimentation; trial & error coupled with some fortuitous Googling.I would add the command to turn on the terminal applications display of message headers. This makes it possible to see where each message is coming from. The command is "ATH1". Send this before sending the ATMA command.
False. It will work up to 2013. Have used it on my 2011 Caprice. It's tis2000 that won't work. And since then, the online ACDelco TDS will not work at all with the Tech 2 anymore.Tech 2 is not going to work with anything after 2008; you need an MDI.
Next one, fuel level, doesn't read 100% when I fill my tank but that is the same reading given by Tech 2. One could adjust my Equation for that by reducing the divisor, 255 an appropriate amount I suppose.
Fuel Level
PID = 221155
Min = 0
Max = 100
Scale = x1
Units = Percent
Equation = A/255*100
Header = Auto
Attached below is an Excel file of PID's I have found (includes reference vehicle & source where known). Enjoy!I'm currently combining every single source of GM 22xxxx extended PIDs I can find into a master table so I can find the gaps and fill them in wherever they're covered by the ECUs I work with.
The ACTUAL, ECU-corrected (including on vehicles with dual tanks and two level senders... you can calibrate all of this in HPTuners) fuel gauge value intended for the IPC is 2212C5
Is this it?There is, I believe, another way to also get fuel level....maybe. Cannot remember if I have tried this. Sometimes I don't use a PID at all and instead send a serial data request for the value in question.
I'm 99% sure I know what this is. It's likely an older, rudimentary system similar to the dynamic PID setup you discovered a page or two ago, specifically for handling the trim table. So I suspect you would either use the fuel trim index PID and the fuel trim cell PID in combination to keep your local fuel trim table fully up to date in the scan tool, or possibly somehow write to the fuel trim index PID to tell the ECU which cell you want the fuel trim cell PID to reflect. If you have VCM Scanner from HPTuners, try having it update the ltft/stft maps (in the upper right of the screen at least on my install) while snooping what it's doing on the bus, I bet you see a lot of 221190s going by.And one more educated guess also seen buried at pcmhaking.net after ferreting it out ...
Fuel Trim Cell
PID = 221190
Scale = x1
Units =
Equation = A
Header = Auto
There's a related value of "Fuel Trim Index" seen. I will admit I don't even know what that value is. Will need to get some driving samples from Tech 2 to see if I can pin down the PID.
this "feels" like some kind of startup fuel table enrichment hack/crutch - but I have no proof of it. I'd guess they bodge the ECT value on certain startups to bump the way either cold or hot starts behave. Or possibly for use by a smart HVAC system to block it from running the heat on cold startups? I dunno, I'm spitballing here.So I thought I would go after something that I had figured would be an easy one. And it would have been had I taken it for granted that the returned value was in fact the correct one. Alas, I did not. Startup ECT (Engine Coolant Temperature). I imagined I would simply be finding an ECT reading at startup that was stored as is in another PID. Not so fast, not so fast. Had a candidate PID in mind and went out this AM to have a look at the readings. Expected to find the same values for ECT and Startup ECT while the engine was cold. Nope! Not the same. Hhrrrmm?? After literally hours of observations and calculations, permutations and combinations I came up with an equation based on the ECT (at startup) that yields a value that closely matches (so far) the value seen in my Startup ECT PID. It would appear that the PCM alters the ECT temp at startup to derive a "Startup ECT, the purpose of which I have not a clue. And there may be other factors in play as well but this is what I have observed this morning.
The value returned by this PID when lower than 113 degrees Fahrenheit is raised from the actual temperature. The value is lowered when above 113 degrees Fahrenheit.
Examples: startup at 203 degrees F And startup ECT is 180 F. Startup at 113 F and you get 113 F. Startup at 37.4 F and you get 57 F as Startup ECT. Why? Hell if I know!
So after all my figuring it turns out the value given by the PID needs no equation. Only if one wanted to calculate a startup ect would you then use "4/3*[05]+53" (where [05] is the internal torque pid for engine coolant temp) Why would anyone do this? Again, not a clue. For now I have a gauge that yields the difference between my equation and the PID value. Only good for comparison before startup of course.
Here is the actual Startup ECT from the PCM:
Name = Startup ECT
PID = 22160D
Scale = x1
Units = °F
Equation = A
Header = Auto
View attachment 90725
All I can think is - if they're actually HO2S heater status bits - you might want to read the datasheets from Bosch on the LSU 4.2 and 4.9 sensors as well as the CJ125 ASIC intended for managing their heater operation. Their warmup algorithm and operation is non trivial - you want to warm them up only after any condensation/dew has been blown off by the exhaust stream, or go slow enough that it boils off without stress fracturing the sensor element, the heater is only used when the element is not being heated sufficiently by the exhaust stream itself (so not at wide open throttle and not under certain other conditions, etc) so there are definitely conditions where you may or may not want your heaters on. This is a very common area for mistakes to be made by lower end wideband O2 sensor controllers/AFR gauges, which (along with people running fuels and oils that quickly poison the element) is a big part of why LSU sensors are a "lol, you should have been carrying a spare, didn't you know that?" part according to many WBO2/AFR gauge makers, despite lasting hundreds of thousands of miles in OEM GM vehicles.Anyone know circumstances where one O2 sensor heater would be on and the other off? Tech 2 displays two distinct HO2S commands.
I have identified 2 bits, #1 & #2 in PID 1112 that toggle with the O2 heater commands but I don't know which is which. Not sure it even matters generally. So this equation will admittedly be a little 'different'. I cannot tell which heater is which so I will configure my equation to tell if both heaters are commanded off, or both commanded on, or if any single heater is commanded on.
HO2S Heaters #1
PID = 221112
Scale = x1
Units =
Equation = Lookup(Bit(A:1)+Bit(A:2)::0='O2Htrs_OFF':1='O2Htr_ON':2='O2Htrs_ON')
Header = Auto
Additionally I have candidate "Power Enrichment" and "Loop Status" bits.
Name = Power Enrichment
PID = 221120
Scale = x1
Units =
Equation = Lookup(Bit(A:7)::0='Inactive':1='Active')
Header = Auto
Name = Loop Status
PID = 221120
Scale = x1
Units =
Equation = Lookup(Bit(A:0)::0='Open':1='Closed')
Header = Auto
Here is a screenshot just after engine shutdown...
View attachment 90743
Using pid 2215
Are you truncating or abbreviating these PIDs or is this actually what you entered? I'm guessing truncated/abbreviated but if that's what you entered, try 2212c5 or 221155.PID 12
NOW I see this, having already started my own version pages before I got to this post. :lol:Attached below is an Excel file of PID's I have found (includes reference vehicle & source where known). Enjoy!
I'd love to hear about that serial data request, my interest in this subject is mostly because I want to build a custom PCB to operate the factory gauges in my vehicles (a 79 Jeep J10, a 88 Jeep Comanche, and a 94 Safari RV based on an Isuzu NPR) directly off the class 2 serial data stream from the P01/P59 ECUs.Thanks for popping in here! Not much action lately.
All my mode/service 22 PID scans on P10 & P12 PCMs from GMT360/370s return a negative response from the PCM. So we don't have that PID, at least on the LL8 engine.
My 2005 Yukon with an LM7 does return a value for that 12C5 PID though I have not evaluated it yet in real time. I am only referring to my library files of previous pidscans here right now.
There is, I believe, another way to also get fuel level....maybe. Cannot remember if I have tried this. Sometimes I don't use a PID at all and instead send a serial data request for the value in question.
I should hopefully have a 06/07ish GMT800/900 Escalade LQ9 ECU and engine on the bench shortly to prod at and see what PIDs I find. Wish I could remember what year I pulled it from.
I can, but it's currently 3000 miles away (I'm halfway through moving cross country) and it's unlikely I'll be in a position to mess with it till next month.You should be able to grab the year from the VIN in the PCM, yes?
Is this it?
Name - Displayed Fuel Level %
Mode - 12
Formula - A/2.55
Min - 0
Max - 100
Units - Percent
Header - A982F1
Is this it?
Name - Displayed Fuel Level %
Mode - 12
Formula - A/2.55
Min - 0
Max - 100
Units - Percent
Header - A982F1
@TJBaker57[...] recently discovered an error in the "[GM]" PIDs set that came with Torque Pro.
[...]
So in the 3 different shift error PID equations change the "A/40" to "SIGNED(A)/40”.
Revised PID Spreadsheet attached (Rev 4). Corrected equations ("signed(A)/40") for Shift Error, added Mode $22 PID $1996 as "[GM] Last Shift Error".
humbly suggest adding Mode $22 PID $1996 as "[GM] Last Shift Error"
Done. Updated Rev 4 to Rev 4A.Might want to add a note:
Mode 22 PID 1996 is not supported by the P10 PCM, tested on 2 2002s, 1 2003 and 1 2005 in my arsenal.
It is supported by the 2006 P12 PCM I have.
And on P04 PCMs, it's a 2-byte (not 1-byte) reply, with a formula of "AB/51" (or thereabout, but it's close to that),
I don't expect you or anyone else to change existing spreadsheet entries, but one thing that would be useful (for future entries) for those "unknown" PIDs, in addition to the existing info on "tested vehicle", would be an example of an actual vehicle reply, preferably with OBD message headers previously enabled ("ATH1" command to scantool). That makes it easy to see, for example, how big the PID reply is (in bytes), which can help someone trying to decipher possible PID meanings.Also, feel free to suggest additional columns and/or clarifications (e.g. adding "PCM" columns).
Thanks for the Google Sheets suggestion. I had to look it up to see if it had an online version. It does, but it requires a Google account, which rules me out. Not a big problem, though, since I can read the spreadsheet, just in a program that I'm highly unfamiliar with, slowing me down.Not familiar with Gnumeric. I confirmed that the filtering works in Google Sheets.
Sorry for the confusion. "AB" is taken as shorthand to mean "A*256+B". (I find use of a 'shift' operator mostly inappropriate unless the data has bitfields.) My notation is essentially treating the "A" and "B" bytes as a single 16-bit (unsigned, unless specified otherwise) value. I use that notation all the time and thought at least some other apps did too, but I could easily be mistaken. It's just easier, especially when you get into PIDs with a 4-byte reply representing a single value ("ABCD" versus something too long to type)! But I'll try to stick to Torque Pro convention.What precisely does "AB/51" translate to? Is this some form of shorthand used in whatever software you are evaluating PIDs with?
All 2 byte responses I have seen are evaluated either with a register shift like "A<8+B" or more obviously as "A*256+B".
Although Torques equation editor will accept the notation "AB" it does not yeild a proper result.