It looks like PID 0xF190 and PID 0xF1A0, available on almost all ECU is the VIN number of the car.
Same comment on PID 0xDD01 on almost all ECU. This is the odometer in KM.
PID in the range 0xF100-0xF1FF look like JLR part number, but I don't know why there is multiple part numbers. I hope that one is the part number of the ECU, and that will tell me the name of the ECU. That would be very usefull
I think I am done with the extensive PID scanning on our known ECU. The google spreadsheet is up-to-date with all ECU and PID number. Now the fun part starts....
I have found this image on an old jaguar forum (not IPace related). It seems to come from an official Jaguar diagnostic tool that read the same OBD2 port.
For a single ECU (ACM in this image), there is multiple part numbers : core assembly, delivery assembly, serial number, hardware number, software number, ... This could explain why I can see multiple parts number as well when I scan all PID on a specific ECU
Now, with the latest sample data I collected this morning (ext. temp is -14c) I am 95% sure that the battery temperature can be read on the CANbus on ECU ID 7E4[7EC] (BECM), and the PID for the battery temperature are 0x492B, 0x492C, 0x492D, 0x492E, 0x492F, 0x4930. These are the 6 values for the 6 plates in the battery. The EV battery coolant outlet temperature sensor is on 7E4[7EC]:0x491B, and the EV battery coolant inlet temperature sensor is on 7E4[7EC]:0x491C. The formula for those temperature is (value-40), and the result is in deg celcius. The external ambient temperature can be read on the HVAC module 733[73B]:0x9924, and the formula is (value*0.5 -40). If you have a way to read the High Speed CANbus (pin 6/14 on the diagnostic connector), ie. TorquePro, you can read it yourself.
Now my next quest will be the Volt and Amp of each 36 cells of the battery. or 9 x 4 group of 108 pouchs.
This is planned, but I , first , need to identify ECU and PID, and this is the hard part... I have already conviced a couple of other Jag owner to buy the OVMS box, and help me on this. I can see some traction on other forum as well, but the more we are, the faster it will go.
Hi there. I'm more than happy to buy one and do what I can to help out, although I've never done anything like this before. I'd need some guidance. However, I have a problem in that I'm using the OBD port for something else. I'm working on a solution tht woild resolve that problem, but for the moment I'm a bit stuck and therefore unable to contribute. I hope to have a fix soon though.
just as an extra bit of info for you, o know for a fact that battery state of health is also available from the OBD port. I think there is a figure for each individual module, 36 different values in total.
I think this OVMS is quite convinient to hack the CANbus. I can provide some help, if you want. I have never done this before either.... The way I do it (there may be plenty of other), is that I start with a full scan for the value of all PID of a ECU. I grad those value in different situation: car off, car on, heat on, heat off, pre condition on, off, etc...when the car is on the driveway. I put all those value in a spreadsheet and I look at the values that change. Then I reprogram my OVMS box to only focus on those one, and then I do a small drive while collect the value. Once again I put those value in a graph, over time, and try to identify which one share the same bahavior with other, or I look at the global shape (ramp up, ramp down, up and down, etc...) and then I try to give a meaning, and try to infer a formula.
I am pretty sure that the 36 cells of the battery expose some values, (current, volt) but I was not able to find anything meaningful, so far.
on BECM, 487E and 4886 represent a long list of bytes, but they are all "00". I only tested them in a static way, when the car was not move. I will try to test them while I am driving.
- the PID 99BF seems to be the fan RPM. With fan on speed 1, it gives 3500, on speed 2, it gives 5500, speed 3, 6000, on speed 4, 6600, on speed 5, 6900, and speed 6 and 7, 7000. Direct value, no formula.
- PID 9854 ,9855 ,9856 ,9857 are 4 temp sensors for the four seats in the cabin, with a good guess for 9856 for the driver's seat, and 9857 for passenger's seat. Formula is (value/5-16).
- PID 981C may be the current on the heater,
- PID 9805 seems to be related to the fan rotation, but it is not the RPM. Maybe the voltage on fan ?
Hi ABD, I just purchased a Y OBD cable on Amazon. I wanted to run both ECU scan and PowerCruisControl at the same time by using 2 OBD adapters. It works but sometime I'm loosing some PID data. So if you are using the OBD port for anything else (like 12V source for a dashcam) a Y OBD calbe will work for you.
Im using the OBD port to test a piece of hardware for another company. Unfortunately it will not work if it's connected to the port at the same time as another device. There is a software solution I can use but I've committed to testing their hardware device for them so I'm kind of stuck at the moment. I already know for definite that it will hang if another device is connected at the same time.
'4903' : Cell V Max
'4904' : Cell V Min
'4905': Temp ?
'490c' : Current in (charging), at least.
'490f', Volt on Row#4
'4910': Soc Avg
'4911': Soc Min
'4913', Max Regen
'4914': SOC Max
'4918': ?? Constant in my case, in static condition
'4919', ?? Constant in my case, in static condition
'491a', ?? Constant in my case, in static condition
'a0a6', ??
'dd04', Cabin temp
'dd05', ?? Temp, sometimes ambiant temp
'dd09': Vehicle speed
If you have an OBD2 reader, you can start investigating. The OVMS box make this a little bit easier. If you know how to configure an app like TorquePro. This is feasible. I don't know how to proceed with a Windows 10 laptop.
Yes, it will work fine with the Torque app for android. Enter custom pid, ex. 22490f, equation int16(A:B)/100, OBD header 7E4. That will give you the battery voltage.
Great, thanks! I will try it out soon. What do I need to extract data with a Windows 10 laptop? For me it would be more convenient to explore the data with proper keyboard and screen.
You can set up the pids and equations in a text file and import to Torque. An other app which can do the same and is not abandon ware is ELM327 car scanner, what is important is that whatever app you prefer support custom pids. You can also visit this page, https://www.scantool.net/.
As I said I am not familliar with windows environment. Atthe very low level I know that , once your laptop is connected to the OBDII reader you can connect to it , and do a 'telnet' session, with Hayes-like command : ATZ, .... This is the lowest level possible. You can search for library in your favorite language to connect to a ELM327 device.
I was able to connect Torque to my ODB2 adapter and I can see e.g. number of GPS satellites. However, I was not able to get data from any custom PID. Above you gave example values to retrieve battery voltage. Where should I insert the mentioned header? And Torque did not accept the equation int16(A:B)/100 either. Below is the settings screen of this custom PID. What am I doing wrong?
Maybe the Torque app miss something, I have Torque Pro which allows you to specify the OBD Header, you must specify OBD header. A free alternative is Car Scanner by 0vZ which also allows you tou have custom PIDs. I haven't tested it but it looks more modern.
I installed Car Scanner app and figured out how to use the PIDs and headers. However, I tried to retrieve values for battery voltage and temperature but for both hitting test button only answers 7EC037F4911. What am I doing wrong?
Great, I got numbers out now, thanks for your help! Strangely I got 40oC for battery temperature so I had to change the formula to (A-80) to get the correct value.
Initial version (v0.0.1) of official suuport for Jaguar IPace
I have pushed my first release for the Ipace support in the OVMS firmware.
If you download the latest version from Git, you will get it.
Supported PID are located here (C++ code....) : https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/vehicle/OVMS.V3/components/vehicle_jaguaripace/src/ipace_obd_pids.h
Ok. I did it. Just picked one of these up. Not sure it's going to integrate with the other OBD device I have connected, but I decided to take a chance and try it! Thanks to everyone who has put so much effort in to this.
I haven't heard of anyone working on that car at the moment.
Thanks for the reply. Pity, but maybe in the future someone will take it on.
1
IPM
Image Processing Module
2
PAM
Parking Assist Control Module
3
TPMS
Tyre pressure Monitoring System
4
SODL
Side Object Detection Control Module - Left
5
SODR
Side Object Detection Control Module - Right
6
SASM
Steering Angle Sensing Module
7
PSCM
Power Steering Control Module
8
IC
Instrument Cluster
9
TR
Terrain Response
10
RCM
Restraints Control Module
11
BCM/GWM
Body Control Module/Gateway Module
12
HL
Headlamp Left
13
HR
Headlamp Right
14
SUMB
Suspension Control Module
15
ABS
Anti-lock Blocking System
16
ASCM
Adaptative Speed Control Module
17
OMM
Occupant Monitoring Model
18
RFA
Remote function Actuator
19
RDML
Left Rear Door Module
20
TGCM
Tailgate Controle Module
21
ESCL
Electric Steering Column Lock
22
PSM
Passenger Seat Module
23
DDM
Driver Door Module
24
PDM
Passenger Door Module
25
DSM
Driver Seat Module
26
RDMR
Right Rear Door Module
27
TS
Touchscreen
28
RVC
Rear View Camera
29
HUDCM
Headup Display Control Module
30
RICP
Rear Integrated Control Panel
31
IMC
Infotainment Master Control
32
HVAC
HVAC Control Module
33
DCDC
Direct Current to Direct Current Converter
34
WOCM
Wired Onboard Charging Module
35
TCU
Telematics Control Module
36
TCS
Transmission Control Switch
37
PCM
Powertrain Control Module
38
BECM
Battery Every Control Module
39
EV
Electric Vehicle battery
40
EPICF
Front Electric Power Inverter Converter
41
EPICR
Rear Electric Power Inverter Converter
42
BBM
Break Booster Module
43
CCM
Camera Control Module
44
PSHCM
Passenger Seat Heater Control Module
45
PSCCM
Passenger Seat Climate Control Module
46
DSHCM
Driver Seat Heater Control Module
47
RRSHCM
Rear Right Seat Heater Control Module
48
RFSHCM
Rear Left Seat Heater Control Module
49
DSCCM
Driver Seat Climate Control Module
The communications networks available on the vehicle are shown below:
I have started collecting the data on PID here : https://docs.google.com/spreadsheets/d/1wNMtpPqMAejNeOZGsPCcgau8HODROzceFcUSfk2lVz8
It looks like PID 0xF190 and PID 0xF1A0, available on almost all ECU is the VIN number of the car.
Same comment on PID 0xDD01 on almost all ECU. This is the odometer in KM.
PID in the range 0xF100-0xF1FF look like JLR part number, but I don't know why there is multiple part numbers. I hope that one is the part number of the ECU, and that will tell me the name of the ECU. That would be very usefull
I think I am done with the extensive PID scanning on our known ECU. The google spreadsheet is up-to-date with all ECU and PID number. Now the fun part starts....
I have found this image on an old jaguar forum (not IPace related). It seems to come from an official Jaguar diagnostic tool that read the same OBD2 port.
For a single ECU (ACM in this image), there is multiple part numbers : core assembly, delivery assembly, serial number, hardware number, software number, ... This could explain why I can see multiple parts number as well when I scan all PID on a specific ECU
I found this
706 - ipma
710 -
716 - sdlc
720 - ipc
726 - bcm
730 - pscm
731 - rfa
732 - gsm
733 - hvac
734 - hcm
736 - pam
737 - rcm
740 - ddm
741 - pdm
742 - drdm
743 - prdm
744 - dsm
746 - epic
747 - epicb
751 - tpm
752 - omm
753 - dcdc
754 - tcu
764 - z-flr
775 - rgtm
785 -
792 - atcm
797 - sasm
7a2 - idma
7a3 - psm
7a4 - aam
7b1 - cmr
7b2 -
7b3 - imc
7c3 - hcmb
7c4 - sodl
7c6 - sodr
7e0 - pcm
7e2 - bbm
7e4 - becm
7e5 - bccm
7e6 - abs
Now my next quest will be the Volt and Amp of each 36 cells of the battery. or 9 x 4 group of 108 pouchs.
This is awesome work dernotte! Thanks for taking it on. Would be great to get full support in OpenVMS thanks to your efforts.
This is planned, but I , first , need to identify ECU and PID, and this is the hard part... I have already conviced a couple of other Jag owner to buy the OVMS box, and help me on this. I can see some traction on other forum as well, but the more we are, the faster it will go.
Hi there. I'm more than happy to buy one and do what I can to help out, although I've never done anything like this before. I'd need some guidance. However, I have a problem in that I'm using the OBD port for something else. I'm working on a solution tht woild resolve that problem, but for the moment I'm a bit stuck and therefore unable to contribute. I hope to have a fix soon though.
just as an extra bit of info for you, o know for a fact that battery state of health is also available from the OBD port. I think there is a figure for each individual module, 36 different values in total.
I'll let you know if I can free up my OBD port.
I think this OVMS is quite convinient to hack the CANbus. I can provide some help, if you want. I have never done this before either.... The way I do it (there may be plenty of other), is that I start with a full scan for the value of all PID of a ECU. I grad those value in different situation: car off, car on, heat on, heat off, pre condition on, off, etc...when the car is on the driveway. I put all those value in a spreadsheet and I look at the values that change. Then I reprogram my OVMS box to only focus on those one, and then I do a small drive while collect the value. Once again I put those value in a graph, over time, and try to identify which one share the same bahavior with other, or I look at the global shape (ramp up, ramp down, up and down, etc...) and then I try to give a meaning, and try to infer a formula.
I am pretty sure that the 36 cells of the battery expose some values, (current, volt) but I was not able to find anything meaningful, so far.
on BECM, 487E and 4886 represent a long list of bytes, but they are all "00". I only tested them in a static way, when the car was not move. I will try to test them while I am driving.
or maybe those value are not on the CANBus but on another one: K-line, LIN, ...
Some new PIDs on HVAC ECU (733)....
- the PID 99BF seems to be the fan RPM. With fan on speed 1, it gives 3500, on speed 2, it gives 5500, speed 3, 6000, on speed 4, 6600, on speed 5, 6900, and speed 6 and 7, 7000. Direct value, no formula.
- PID 9854 ,9855 ,9856 ,9857 are 4 temp sensors for the four seats in the cabin, with a good guess for 9856 for the driver's seat, and 9857 for passenger's seat. Formula is (value/5-16).
- PID 981C may be the current on the heater,
- PID 9805 seems to be related to the fan rotation, but it is not the RPM. Maybe the voltage on fan ?
Some PIDs on the TPMS ECU (751):
Only 4 interesting PID : 3014 ,d907 ,d908 ,d909
Hi ABD, I just purchased a Y OBD cable on Amazon. I wanted to run both ECU scan and PowerCruisControl at the same time by using 2 OBD adapters. It works but sometime I'm loosing some PID data. So if you are using the OBD port for anything else (like 12V source for a dashcam) a Y OBD calbe will work for you.
Hi Kermit!
Im using the OBD port to test a piece of hardware for another company. Unfortunately it will not work if it's connected to the port at the same time as another device. There is a software solution I can use but I've committed to testing their hardware device for them so I'm kind of stuck at the moment. I already know for definite that it will hang if another device is connected at the same time.
Now I'm curious about that piece of hardware you're testing .... :-)
From a friends PCC, PCC listens to these pids:
'4903',
'4904',
'4905',
'490c',
'490f',
'4910',
'4911',
'4913',
'4914',
'4918',
'4919',
'491a',
'a0a6',
'dd04',
'dd05',
'dd09'
From what I/we know
'4903' : Cell V Max
'4904' : Cell V Min
'4905': Temp ?
'490c' : Current in (charging), at least.
'490f', Volt on Row#4
'4910': Soc Avg
'4911': Soc Min
'4913', Max Regen
'4914': SOC Max
'4918': ?? Constant in my case, in static condition
'4919', ?? Constant in my case, in static condition
'491a', ?? Constant in my case, in static condition
'a0a6', ??
'dd04', Cabin temp
'dd05', ?? Temp, sometimes ambiant temp
'dd09': Vehicle speed
'4905', used as battery temp
'490c', current in and out, (A*256 + B - 32768)/xx, xx may be between 24..40, 40 gives good result for me when doing energy calculations
'490f', divided by 108 gives average cell voltage ?
'a0a6', location? It is a multiframe message so it is hard to decode properly
'4918' - '491a', ??, static
power is '490c' x '490f'
I have an I-Pace and I would like to help. I have this OBD2 reader. Can I read the raw data with that and an Android phone or Windows 10 laptop?
If you have an OBD2 reader, you can start investigating. The OVMS box make this a little bit easier. If you know how to configure an app like TorquePro. This is feasible. I don't know how to proceed with a Windows 10 laptop.
Yes, it will work fine with the Torque app for android. Enter custom pid, ex. 22490f, equation int16(A:B)/100, OBD header 7E4. That will give you the battery voltage.
Great, thanks! I will try it out soon. What do I need to extract data with a Windows 10 laptop? For me it would be more convenient to explore the data with proper keyboard and screen.
I use Torque pro on android and save the data to google drive, then I analyze the data with python on a laptop.
The UI of Torque app is hidious and it has got quite bad reviews lately. Any other app that would do the job?
You can set up the pids and equations in a text file and import to Torque. An other app which can do the same and is not abandon ware is ELM327 car scanner, what is important is that whatever app you prefer support custom pids. You can also visit this page, https://www.scantool.net/.
What is your programming skillset ?
As I said I am not familliar with windows environment. Atthe very low level I know that , once your laptop is connected to the OBDII reader you can connect to it , and do a 'telnet' session, with Hayes-like command : ATZ, .... This is the lowest level possible. You can search for library in your favorite language to connect to a ELM327 device.
I was able to connect Torque to my ODB2 adapter and I can see e.g. number of GPS satellites. However, I was not able to get data from any custom PID. Above you gave example values to retrieve battery voltage. Where should I insert the mentioned header? And Torque did not accept the equation int16(A:B)/100 either. Below is the settings screen of this custom PID. What am I doing wrong?
Maybe the Torque app miss something, I have Torque Pro which allows you to specify the OBD Header, you must specify OBD header. A free alternative is Car Scanner by 0vZ which also allows you tou have custom PIDs. I haven't tested it but it looks more modern.
I installed Car Scanner app and figured out how to use the PIDs and headers. However, I tried to retrieve values for battery voltage and temperature but for both hitting test button only answers 7EC037F4911. What am I doing wrong?
Did you put 22 (Mode) before the PID, if you ask for PID 4905 on header 7E4, you must write 224905 for pid and 7e4 for header.
I added 22 before PID, but still now luck. Is it always 22 or is there other modes for some of the PIDs?
Can you see something wrong with below two examples?
On the first one, rewrite formula to (A*256+B)/100
On the second one the PID is not valid, try 224905
Great, I got numbers out now, thanks for your help! Strangely I got 40oC for battery temperature so I had to change the formula to (A-80) to get the correct value.
Good :) Formula for battery temperature is A/2-40
Great, thanks! How do you figure out the correct formulas? I didn't find them from the mentioned Google sheet. Also is it always mode 22 for all PIDs?
Finding the right formula is a tricky part but most one byte temperatures are A/2-40 or A-40.
OBD-II is for ICE cars (emission tests), since we are electric most codes are custom and start with 22.
What is the correct formula for SoC average (PID 4910)? Is it 100/255*A? (ref. OBD-II PIDs - Wikipedia)
'4903' : Cell V Max, (A*256+B)/1000
'4904' : Cell V Min, (A*256+B)/1000
'4905': Max battery temp (use pid 4906, 4907 for min and average), A/2-40
'490c' : Current flow HV battery, (A*256+B-32768)/40
'490f': HV battery voltage, (256*A+B)/100
'4910': Soc Avg, (256*A+B)/100
'4911': Soc Min, (256*A+B)/100
'4913', Max Regen, (256*A+B)/100
'4914': SOC Max, (256*A+B)/100
'4918': SOH Avg, A/2
'4919', SOH Max, A/2
'491a', SOH Min, A/2
'a0a6', Location
'dd04', Cabin temp, A-40
'dd05', Ambient Temp, A-40. Better to use PID 9924 on ECU 733, A/2-40
'dd09': Vehicle speed, A
Please note: SOC is true battery SOC, battery is never charged beyond 96-97% (cell voltage=4.15volts). Severe degradation would occur at 4.3 volts.
SOH is bogus, it is not a good measurement of State-Of-Health. Normal values for my car are 90 to 96.
I have pushed my first release for the Ipace support in the OVMS firmware.
If you download the latest version from Git, you will get it.
Supported PID are located here (C++ code....) : https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/vehicle/OVMS.V3/components/vehicle_jaguaripace/src/ipace_obd_pids.h
Ok. I did it. Just picked one of these up. Not sure it's going to integrate with the other OBD device I have connected, but I decided to take a chance and try it! Thanks to everyone who has put so much effort in to this.