47 posts / 0 new
Last post
Abu Dhabi Dude
Jaguar I-Pace

Is anyone working on a version of this for the I-Pace? Looks like a really good tool. I would love to be able to use this with my car.

markwj
markwj's picture
I haven't heard of anyone

I haven't heard of anyone working on that car at the moment.

Abu Dhabi Dude
Thanks for the reply. Pity,

Thanks for the reply. Pity, but maybe in the future someone will take it on.

dernotte
List of ECU in the IPace

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

dernotte
List of "Bus" in the IPace

The communications networks available on the vehicle are shown below:

  • High Speed (HS) CAN chassis systems bus
  • HS CAN body systems bus
  • HS CAN Human Machine Interface (HMI) systems bus
  • HS CAN power mode zero systems bus
  • Flexray
  • Local Interconnect Network (LIN)
  • Private bus
dernotte
PID List

I have started collecting the data on PID here : https://docs.google.com/spreadsheets/d/1wNMtpPqMAejNeOZGsPCcgau8HODROzceFcUSfk2lVz8

dernotte
It looks like PID 0xF190 and

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

dernotte
I think I am done with the

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

 

dernotte
ECU Name

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

dernotte
Now, with the latest sample
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.
 
Abu Dhabi Dude
This is awesome work dernotte

This is awesome work dernotte! Thanks for taking it on. Would be great to get full support in OpenVMS thanks to your efforts. 

dernotte
This is planned, but I ,

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.

Abu Dhabi Dude
Hi there. I'm more than happy

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. 

dernotte
help

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.

dernotte
I am pretty sure that the 36

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.

dernotte
or maybe those value are not

or maybe those value are not on the CANBus but on another one: K-line, LIN, ...

dernotte
PID on HVAC

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 ?

dernotte
PID on TPMS

Some PIDs on the TPMS ECU (751):

  • 0x2076, 0x2077, 0x2078, 0x2079 are the pressure for the four wheels in kPa, just like the value in the API
  • PID 0x2A0A, 0x2A0B, 0x2A0c, 0x2A0D are the temperature of the tire. Formula is (value-50)
dernotte
PIDs on the PSCM module

Some PIDs on the PSCM (730) module (Steering wheel):

Only 4 interesting PID : 3014 ,d907 ,d908 ,d909
  • PID D909 seems to be the angle of the steering wheel. 2 bytes, signed value. Positive on the left, negative of the right. (A/10), in degree.
  • PID D908 seems to be the driver's torque on the steering wheel. 2 bytes, signed value.
  • I guess D907 should be the car's torque on the steering wheel, and I don't know what is the other one (3014).
Kermit68
OBD Y cable

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.

Abu Dhabi Dude
Hi Kermit!

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. 

Kermit68
Now I'm curious about that

Now I'm curious about that piece of hardware you're testing .... :-)

Maxwell_400
OBD Y cable

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'

dernotte
From what I/we know

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

Maxwell_400
'4905', used as battery temp

'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'

 

pekkak
How to extract data with an OBD2 reader

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?

dernotte
If you have an OBD2 reader,

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.

Maxwell_400
Yes, it will work fine with

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.

 

pekkak
Great, thanks! I will try it

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.

Maxwell_400
I use python. 

I use Torque pro on android and save the data to google drive, then I analyze the data with python on a laptop.

 

 

pekkak
Torque app

The UI of Torque app is hidious and it has got quite bad reviews lately. Any other app that would do the job?

Maxwell_400
OBD II app

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/.

 

 

dernotte
Programming skillset

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.

pekkak
I was able to connect Torque

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?

Maxwell_400
Torque app

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.

 

pekkak
I installed Car Scanner app

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?

Maxwell_400
Did you put 22 (Mode) before

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.

 

pekkak
 

 

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?

Maxwell_400
On the first one, rewrite

On the first one, rewrite formula to (A*256+B)/100

On the second one the PID is not valid, try 224905

pekkak
Works now

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.

Maxwell_400
Good :) Formula for battery

Good :) Formula for battery temperature is A/2-40

 

pekkak
Formulas?

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?

Maxwell_400
Finding the right formula is

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.

 

pekkak
What is the correct formula

What is the correct formula for SoC average (PID 4910)? Is it 100/255*A?  (ref. OBD-II PIDs - Wikipedia)

Maxwell_400
 '4903' : Cell V Max, (A*256

 '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.

 

 

dernotte
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

Abu Dhabi Dude
Ok. I did it. Just picked one

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.

Log in or register to post comments