Preferred CustomerAdditivesBlogTrack Car BuildsDealer OppurtunityContact
Home
/
Blog
/
How to Log IAT2 on a 2012 Shelby GT500 in RaceChrono
How-To Guide

How to Log IAT2 on a 2012 Shelby GT500 in RaceChrono

The PID and equation I tested on my 2012 GT500, plus the RaceChrono setup and how I checked the reading against FORScan.

Engine bay of my 2012 Shelby GT500 with the completed radiator duct and cooling upgrades.
quick overview

Log IAT2 on a 2012 Shelby GT500 in RaceChrono using the tested PID and equation, with setup steps, sensor validation, and troubleshooting.

Can you log IAT2 from a 2012 GT500 in RaceChrono?

Yes. I have IAT2 working on my 2012 Shelby GT500 in RaceChrono with an iPhone and an OBDLink MX+. I am logging the stock IAT2 sensor through the car’s stock powertrain control module (PCM). The custom OBDII PID is 0x2203CA, and the equation is bytesToUint(raw,1,1)-40. The equation returns Celsius. I have RaceChrono set to display Fahrenheit.

I wanted to record the air temperature after the intercooler alongside the rest of my track data. Once I found a value that looked right, I checked it against FORScan and unplugged the IAT2 sensor to make sure I was reading the correct signal. These are the settings I tested on my car.

Working GT500 IAT2 settings

  • Tested car: 2012 Shelby GT500
  • My setup: RaceChrono on iPhone with an OBDLink MX+
  • Channel: Custom OBDII temperature channel
  • PID: 0x2203CA, which is 2229194 in decimal
  • Equation: bytesToUint(raw,1,1)-40
  • Equation output: Degrees Celsius, with Fahrenheit selected for my display
  • PCM IDs observed in my diagnostic trace: Request on 0x7E0 and reply on 0x7E8

Jump to the RaceChrono setup or see how I verified the signal.

What do you need to log GT500 IAT2?

I use an iPhone, RaceChrono, and an OBDLink MX+ plugged into the car’s diagnostic port. Your RaceChrono setup needs to support an OBDII reader and custom channels.

For the testing, I used an OBDII splitter I bought on Amazon so I could connect FORScan and RealTerm at the same time. FORScan gave me the reference IAT2 reading while I used RealTerm and an OBDLink EX on a laptop to inspect the diagnostic traffic. You do not need to repeat that process to enter the settings above.

Why do I use two MX+ adapters with RaceChrono?

I use the same splitter for my regular RaceChrono setup. It lets me connect two OBDLink MX+ adapters, with each one doing a different job:

  • First MX+: Standard OBDII channels and the custom IAT2 channel in this article
  • Second MX+: CAN channels for brake pressure, accelerator position, and individual wheel speeds

This lets me record the engine data and those CAN channels together. The second adapter is for the extra CAN channels. You only need one MX+ for the IAT2 setup described here.

How do you add the GT500 IAT2 PID in RaceChrono?

Start with the car parked and the MX+ connected. RaceChrono’s custom OBDII channel guide explains the app’s settings. Menu wording can vary by version.

  1. Open your GT500 vehicle profile. In RaceChrono, go to Settings, then Vehicle profile. Select the profile you use for recording and confirm the MX+ receives ordinary live data.
  2. Add a custom OBDII channel. Choose a temperature channel and use IAT2 as the label or postfix.
  3. Enter the PID: 0x2203CA. RaceChrono may show 2229194 after you enter it. Both represent the same value.
  4. Enter the equation exactly: bytesToUint(raw,1,1)-40. Keep the byte positions and minus 40 as shown.
  5. Check the header if needed. My diagnostic trace used 0x7E0 for the PCM request, with replies on 0x7E8. These are CAN message IDs, separate from the PID. The screenshot below does not show a header setting.
  6. Save and test the channel. Use Test connection to check live data. Enable IAT2 among the recorded channels, record a short stationary session, and confirm it appears in the saved data.
RaceChrono IAT2 settings showing PID 2229194 and −40° with the stock GT500 sensor unplugged
My GT500 IAT2 settings in RaceChrono with the stock IAT2 sensor unplugged. The temperature byte is zero, so the equation gives −40°C, which is also −40°F, as shown here.

Why did 0x2203CA change to 2229194?

Hexadecimal and decimal are two ways to write the same number. 0x2203CA equals 2229194. RaceChrono showing the decimal number does not mean the PID changed.

Should the equation use Celsius or Fahrenheit?

Leave the equation in Celsius. I use Fahrenheit on the display, but I do not add a Fahrenheit conversion to the equation. RaceChrono handles that display conversion.

For example, a temperature byte of 0x59 is 89 in decimal. Subtracting 40 gives 49°C, which is 120.2°F. A display rounded to whole degrees shows 120°F.

RaceChrono’s equations reference explains the decoding functions if you want to see how they work.

How did I verify that this was the IAT2 signal?

I connected FORScan and RealTerm through the splitter and recorded the IAT2 reading and diagnostic traffic during the same garage test. I then compared the decoded response with FORScan.

The comparison showed 2,691 of 2,691 readings matching FORScan after rounding to whole degrees Fahrenheit. I also unplugged and reconnected the IAT2 sensor twice. Each time I unplugged it, the temperature byte dropped to zero and decoded to −40°C. Reconnecting it brought the normal reading back.

Graph comparing decoded GT500 IAT2 with FORScan during two sensor unplug and reconnect tests
The decoded response matches FORScan after rounding. The logs were aligned by 7.390 seconds, with 86 ms timestamp resolution. The two drops are the sensor unplug tests.

Open the validation graph at full size to zoom in on your phone.

That confirmed the signal and decoding during this garage test. I then confirmed that the equation works in RaceChrono. The next step is logging it through a full track session.

What is the difference between IAT1 and IAT2?

IAT stands for intake air temperature. On my supercharged GT500, IAT1 is recorded at the mass air flow (MAF) sensor in the intake before the supercharger. IAT2 is the charge air temperature after the supercharger and intercooler.

I wanted IAT2 so I could follow the temperature of the air going into the engine and see how it rises and recovers during a session. Engine coolant temperature is a separate reading, and I want to log both when checking my cooling setup.

Is this an OBDII PID or a CAN broadcast?

The request runs over CAN, but I add it in RaceChrono as a custom OBDII channel. RaceChrono requests the value and the PCM replies. I have not confirmed a periodic IAT2 broadcast that can be read without making that request.

These are the complete eight byte examples from my diagnostic trace:

  • Request on 0x7E0: 03 22 03 CA 00 00 00 00
  • Normal reply on 0x7E8: 04 62 03 CA 59 00 00 00
  • Reply with the sensor unplugged on 0x7E8: 04 62 03 CA 00 00 00 00

The temperature is at byte index 4 when counting from zero in the complete CAN payload above. The raw value RaceChrono gives the equation is a processed response. In my RaceChrono channel, the temperature comes from byte index 1. Keep that index in the working equation.

Why does RaceChrono show −40 degrees or no data?

−40° in the equation editor

If the source bytes are all zero, subtracting 40 gives −40°C, which is also −40°F. My settings screenshot was taken with the stock IAT2 sensor unplugged. Use Test connection to check the live reading with the sensor connected.

−40° while connected to the car

This was the value I saw with the sensor unplugged. Confirm you are looking at live data, check the sensor connection, and compare the reading with FORScan or another diagnostic tool. A zero filled test in the editor does not diagnose a failed sensor.

No live reading or no channel in a recording

Check the vehicle profile, MX+ connection, PID, equation, and header if your setup uses one. If ordinary OBDII channels also fail, get the reader connection working first. If IAT2 works live but is missing from a saved session, check that it is enabled for recording.

How will I use IAT2 to check my cooling upgrades?

I want to record ambient conditions, laps, and the recovery after a session so I can see how IAT2 rises and settles. Comparing similar sessions should give me a better picture of what the cooling system is doing.

I will use that data to follow the VMP intercooler and water manifold installation as part of my GT500 cooling build. I will watch engine coolant temperature separately when checking the radiator ducting. I will add track results once I have collected them.

Will this work on other GT500 model years?

I verified this on my 2012 Shelby GT500. I have not tested it across other model years or PCM calibrations. If you try it on another car, compare it with a trusted reference reading and note the model year, adapter, and RaceChrono version.

You can follow the rest of the work on my 2012 Shelby GT500 track car build page.