CAN PIDs for 997.2
#1
CAN PIDs for 997.2
with additional time on my hands I started to tinker with reading vehicle data from the CAN bus.
The PIDs used by Porsche are not being disclosed by Porsche, so I wanted to start a thread where everyone who reverse-engineers a PID can add it here.
I hope that this is the start of a growing PID library
Most of the values below come from here: https://forum.autosportlabs.com/view...b9a4292b7c4b88 with a few added that I figured out on my own
************** RPM ***************
PID 578 / 0x242 (Hex) RPM
((Byte 3 * 256) + Byte 2) / 4
************** Coolant temp ***************
PID 581 / 0x245 (Hex) Engine temp (coolant)
The data (x) is in byte 1 (I start counting at 0)
Temp (C) = (x – 64 ) * 3/4
Temp (F) = (x – 64) * 27/20 + 32
************** Oil temp ***************
PID 1089 / 0x441 (Hex) Engine oil temp
The data (x) is in byte 5 (I start counting at 0)
Temp (C) = x - 60
Temp (F) = (x – 60) * 9/5 + 32
************** Sport / SportPlus Mode ***************
PID 0x308 Sport / SportPlus mode
both off: 80, 00, FF, 00, 8D, 00, 00, 10
SportPlus: A0, 80, FF, 00, 8D, 00, 00, 10
Sport: A0, 00, FF, 00, 8D, 00, 00, 10
************** PASM ***************
PID 0x442 PASM
suspension soft: A2, 00, 00, 00
suspension Sport: B3, 00, 00, 00
************** Vehicle Speed ***************
PID 1100 / 0x44C (Hex) Vehicle Speed (kph)??
((Byte 2 * 256) + Byte 1) / 100 - Reads ~2.75 kph when stopped - speedo speed?
************** Steering Angle ***************
PID 194 Steering Angle
Bytes 0 & 1, little endian, signed, X 0.045 (seems to mirror the E46 M3 config; multiplier needs to be tested)
PID 194 Steering rate of change
Bytes 2 & 3, little endian, signed, X 0.045 (multiplier needs to be tested)
************** Vehicle Speed ***************
PID 330 Vehicle Speed (kph)
((Byte 3 * 256) + Byte 2) / 100 - tracks to GPS speed
************** Throttle Position ***************
PID 578 TPS (%) - Actual (e.g., if you have cruise control on; may also show throttle moderation by stability control)
Byte 5 / 255
PID 582 Pedal value (%) - Throttle requested by gas pedal
Byte 3 / 255
************** Wheel Speeds ***************
PID 586 Individual wheel speeds
LF (Bytes 0,1), RF (Bytes 2,3), LR (Bytes 4,5), RR (Bytes 6,7) = ((Odd Byte * 256) + Even Byte)/100 (little endian)
The PIDs used by Porsche are not being disclosed by Porsche, so I wanted to start a thread where everyone who reverse-engineers a PID can add it here.
I hope that this is the start of a growing PID library
Most of the values below come from here: https://forum.autosportlabs.com/view...b9a4292b7c4b88 with a few added that I figured out on my own
************** RPM ***************
PID 578 / 0x242 (Hex) RPM
((Byte 3 * 256) + Byte 2) / 4
************** Coolant temp ***************
PID 581 / 0x245 (Hex) Engine temp (coolant)
The data (x) is in byte 1 (I start counting at 0)
Temp (C) = (x – 64 ) * 3/4
Temp (F) = (x – 64) * 27/20 + 32
************** Oil temp ***************
PID 1089 / 0x441 (Hex) Engine oil temp
The data (x) is in byte 5 (I start counting at 0)
Temp (C) = x - 60
Temp (F) = (x – 60) * 9/5 + 32
************** Sport / SportPlus Mode ***************
PID 0x308 Sport / SportPlus mode
both off: 80, 00, FF, 00, 8D, 00, 00, 10
SportPlus: A0, 80, FF, 00, 8D, 00, 00, 10
Sport: A0, 00, FF, 00, 8D, 00, 00, 10
************** PASM ***************
PID 0x442 PASM
suspension soft: A2, 00, 00, 00
suspension Sport: B3, 00, 00, 00
************** Vehicle Speed ***************
PID 1100 / 0x44C (Hex) Vehicle Speed (kph)??
((Byte 2 * 256) + Byte 1) / 100 - Reads ~2.75 kph when stopped - speedo speed?
************** Steering Angle ***************
PID 194 Steering Angle
Bytes 0 & 1, little endian, signed, X 0.045 (seems to mirror the E46 M3 config; multiplier needs to be tested)
PID 194 Steering rate of change
Bytes 2 & 3, little endian, signed, X 0.045 (multiplier needs to be tested)
************** Vehicle Speed ***************
PID 330 Vehicle Speed (kph)
((Byte 3 * 256) + Byte 2) / 100 - tracks to GPS speed
************** Throttle Position ***************
PID 578 TPS (%) - Actual (e.g., if you have cruise control on; may also show throttle moderation by stability control)
Byte 5 / 255
PID 582 Pedal value (%) - Throttle requested by gas pedal
Byte 3 / 255
************** Wheel Speeds ***************
PID 586 Individual wheel speeds
LF (Bytes 0,1), RF (Bytes 2,3), LR (Bytes 4,5), RR (Bytes 6,7) = ((Odd Byte * 256) + Even Byte)/100 (little endian)
The following 2 users liked this post by Hatzenbach:
NoTurboRequired (02-28-2022),
ylk1 (03-28-2024)
#2
Hi,
I am playing with getting various metrics over OBD2 PIDs. I have a 2010 997.2 C2S, and here's a table of which OBD2 commands my car responds to over ELM327 via a commodity Bluetooth OBD2 adapter talking to an iPhone.
So yeah, it doesn't handle some basic desirable things like Oil Temp. I will now look at seeing if I can send CAN commands over ELM to get this info, but I am a complete newbie in this area.
I am playing with getting various metrics over OBD2 PIDs. I have a 2010 997.2 C2S, and here's a table of which OBD2 commands my car responds to over ELM327 via a commodity Bluetooth OBD2 adapter talking to an iPhone.
So yeah, it doesn't handle some basic desirable things like Oil Temp. I will now look at seeing if I can send CAN commands over ELM to get this info, but I am a complete newbie in this area.
#3
Here is a new mystery I am trying to solve:
I am trying to grab the time from the CAN bus
I found CAN-Id 0x301 seems to have the time, but it's a bit strange
if we're start counting at 0, then
byte 4 has the hour
byte 5 has the minutes
byte 6 has the second
example 0x00 0x00 0x00 0x00 0x11 0x36 0x15 = 17:54:21 = 5:54:21 PM
so far so good, what puzzles me is that for every digit it goes like that
0x00 = 0
0x10 = 1
0x20 = 2
....
0xF0 = 15
0x10 = 16
....
for the numbers 1 to 15 the lower bit comes first and then the higher bit
but for numbers higher than 15 it's back to higher bit first and then lower bit
this means that 0x10 can both be 01 and 16
does anyone have a good explanation for that?
************************
Nevermind, the problem was between the seat and the keyboard
I am trying to grab the time from the CAN bus
I found CAN-Id 0x301 seems to have the time, but it's a bit strange
if we're start counting at 0, then
byte 4 has the hour
byte 5 has the minutes
byte 6 has the second
example 0x00 0x00 0x00 0x00 0x11 0x36 0x15 = 17:54:21 = 5:54:21 PM
so far so good, what puzzles me is that for every digit it goes like that
0x00 = 0
0x10 = 1
0x20 = 2
....
0xF0 = 15
0x10 = 16
....
for the numbers 1 to 15 the lower bit comes first and then the higher bit
but for numbers higher than 15 it's back to higher bit first and then lower bit
this means that 0x10 can both be 01 and 16
does anyone have a good explanation for that?
************************
Nevermind, the problem was between the seat and the keyboard
Last edited by Hatzenbach; 03-01-2022 at 01:42 PM.
#4
No help from here. But working on getting the reverse camera working reliably with the 9xx system it was found the CANBus had unusual formats that were different between MT and PDK as well as 2009 vs later models. Cabs were also different per my recollection. MT vs PDK could be due to the extra TCU residing on the bus. I don't know about the rest.
#5
OK, here's the next one I found:
CAN-Id 0x301 seems to have the time
if we're start counting the first set of bytes at 0, then
byte 4 has the hour
byte 5 has the minutes
byte 6 has the second
example 0x00 0x00 0x00 0x00 0x11 0x36 0x15 = 17:54:21 = 5:54:21 PM
HOWEVER, (courtesy of CAN gateways) this Can-Id is not available on the main CAN bus (by the fuse box). I found it on the CAN wires that go to the Sport Chrono clock
CAN-Id 0x301 seems to have the time
if we're start counting the first set of bytes at 0, then
byte 4 has the hour
byte 5 has the minutes
byte 6 has the second
example 0x00 0x00 0x00 0x00 0x11 0x36 0x15 = 17:54:21 = 5:54:21 PM
HOWEVER, (courtesy of CAN gateways) this Can-Id is not available on the main CAN bus (by the fuse box). I found it on the CAN wires that go to the Sport Chrono clock
Last edited by Hatzenbach; 03-01-2022 at 01:47 PM.
The following users liked this post:
Wayne Smith (03-01-2022)
#6
and something new I just found out yesterday
************** Sport / SportPlus Mode ***************
PID 0x308 Sport / SportPlus mode
both off (lights off): 80, 00, FF, 00, 8D, 00, 00, 10
both off (lights on): 80, 08, FF, 00, 8D, 00, 00, 10
SportPlus (lights off): A0, 80, FF, 00, 8D, 00, 00, 10
SportPlus (lights on): A0, 88, FF, 00, 8D, 00, 00, 10
Sport(lights off): A0, 00, FF, 00, 8D, 00, 00, 10
Sport(lights on): A0, 08, FF, 00, 8D, 00, 00, 10
How to determine if the headlights are on:
PID 0x308
if 2nd byte ends with "0" headlights are off
if 2nd byte ends with "8" headlights are on
************** Sport / SportPlus Mode ***************
PID 0x308 Sport / SportPlus mode
both off (lights off): 80, 00, FF, 00, 8D, 00, 00, 10
both off (lights on): 80, 08, FF, 00, 8D, 00, 00, 10
SportPlus (lights off): A0, 80, FF, 00, 8D, 00, 00, 10
SportPlus (lights on): A0, 88, FF, 00, 8D, 00, 00, 10
Sport(lights off): A0, 00, FF, 00, 8D, 00, 00, 10
Sport(lights on): A0, 08, FF, 00, 8D, 00, 00, 10
How to determine if the headlights are on:
PID 0x308
if 2nd byte ends with "0" headlights are off
if 2nd byte ends with "8" headlights are on
#7
I have a canalyzer and do can for a living if you guys need any help. Also, done some stuff with can/arduino, can/pie, etc. I created an entire dbc for an e46 M3 that can be read in to the aim system.
Last edited by wilhit10; 01-19-2023 at 07:31 PM.
The following 3 users liked this post by wilhit10:
Trending Topics
#8
#9
#10
For example, I searched about for a GT4 DBC and didn't find one. The only ones I saw were proprietary and encrypted for specific data loggers. It doesn't make sense to me why things would be this way. What in your opinion is the reason DBC's are not more widely avaliable?
#11
Hello Everyone. I am new to Rennlist but I ran across this older post that that looks to be very helpful.
I have been experementing with OBDII data and using "01- Show Current Data" service to request Hex "0C" Engine Speed from my 2015 Boxster and it seems to work. I see that Hatzenbach has been able to get some really interesting data such as sport mode and accessory status using PID requests. My question is, are you getting this data from the OBDII diagnostic connector and are you using the OBDII service request data command to get this information or are you listening to a different Can Bus for this information? I noticed that his PID 578 / 0x242 (Hex) is a different PID address than what I see on PID 12 /0xOC (Hex) for engine RPM. Any information or feedback you could give would be greatly appreciated!
I have been experementing with OBDII data and using "01- Show Current Data" service to request Hex "0C" Engine Speed from my 2015 Boxster and it seems to work. I see that Hatzenbach has been able to get some really interesting data such as sport mode and accessory status using PID requests. My question is, are you getting this data from the OBDII diagnostic connector and are you using the OBDII service request data command to get this information or are you listening to a different Can Bus for this information? I noticed that his PID 578 / 0x242 (Hex) is a different PID address than what I see on PID 12 /0xOC (Hex) for engine RPM. Any information or feedback you could give would be greatly appreciated!
The following users liked this post:
lordvonpineapple (07-16-2023)
The following users liked this post:
JasonRussell (07-17-2023)
#13
Hello Everyone. I am new to Rennlist but I ran across this older post that that looks to be very helpful.
I have been experementing with OBDII data and using "01- Show Current Data" service to request Hex "0C" Engine Speed from my 2015 Boxster and it seems to work. I see that Hatzenbach has been able to get some really interesting data such as sport mode and accessory status using PID requests. My question is, are you getting this data from the OBDII diagnostic connector and are you using the OBDII service request data command to get this information or are you listening to a different Can Bus for this information? I noticed that his PID 578 / 0x242 (Hex) is a different PID address than what I see on PID 12 /0xOC (Hex) for engine RPM. Any information or feedback you could give would be greatly appreciated!
I have been experementing with OBDII data and using "01- Show Current Data" service to request Hex "0C" Engine Speed from my 2015 Boxster and it seems to work. I see that Hatzenbach has been able to get some really interesting data such as sport mode and accessory status using PID requests. My question is, are you getting this data from the OBDII diagnostic connector and are you using the OBDII service request data command to get this information or are you listening to a different Can Bus for this information? I noticed that his PID 578 / 0x242 (Hex) is a different PID address than what I see on PID 12 /0xOC (Hex) for engine RPM. Any information or feedback you could give would be greatly appreciated!
but my understanding is that these PiD are dependent which ECU (Bosch Motronic) is being used, even a 997.2 GT3 has different PIDs than my 997.2 C4S
can you educate me about the “show data request” ?
The following users liked this post:
JasonRussell (07-17-2023)
#14
Yes, you can get a lot of stuff through the ODBII connector, but it requires custom PIDs that need to be sent to custom CAN addresses. Therefore you need to set up the ELM327 for protocol, headers, receive and send address and flow control. These are different settings to a normal ELM327 for sending/receiving standard PIDs. So it will depend on what level of tools / software you are working with whether you will be able to do this. I am working at the custom software / app level, and my iPhone app can initialise and switch between standard ODBII and then to the Porsche protocol (at least for the Siemens ECU in my Porsche 997.2 C2S) and back whenever I want to access data that Porsche (or the standard) doesn't provide over standard ODBII PIDs. i.e. My phone app can successfully read my car's 6 OverRev ranges via the OBDII port via a commodity Bluetooth adapter without any other software, tools or cables.
The following 2 users liked this post by lordvonpineapple:
Hatzenbach (07-17-2023),
JasonRussell (07-17-2023)
#15
I haven't looked at how to decode the response messages for any of these though.
My car doesn't not respond to Oil Temp over the standard ODBII PID (boo!) but Oil Temperature is available on the custom Porsche protocol via request message '21 32'.
The following 2 users liked this post by lordvonpineapple:
JasonRussell (07-17-2023),
LucV (07-16-2023)