Custom PIDs for FRS/BRZ/GT86

So I am aware of PIDs for this car, specifically these ones:

steering angle: 0x00D0
brake pressure: 0x00D1

However trying to create a custom PID using these values, RaceChrono says that these are invalid as it's looking for a two byte value, not a single byte.

Anybody have any idea how I can use these two PIDs? Know if I put in 0x01D0 then it'll accept it but obviously it's not the right PID for the data i'm wanting to track.


  • I did not expect PIDs starting with 0x00. To allow that in RaceChrono, it will need some more programming from me...

    0x00 is really weird range. Have you tested these on Torque app or similar? Just checking that I won't do this work based on wrong information.
  • There is no officially 0x00 ServiceID known to me.
    PID 0x00 normally gives you a List of the next 32 PID´s, which were supported. Like 1101... which means, PID 1,2 & 4 are supported.
    Two bytes PID´s are also never seen by me on any ride/drive.

    But there are things like reading failures, where you have a leading zero for selecting a specific error register. Or setting testmodes like (de-)activating a fan with 00 and 01.

    Some Background:
    0x just is a prefix to make sure that this were hex values!
    00 D0 might only have leading zeros, which were placeholders for int / int16 (two bytes).
    So probably this is only a developing paradigm. Where do you got the information from, to use 0x00D0?

    0xD0 = 208
    0x00D0 = 208
    And for the nerdy ones: 208 = 11010000 ;)
    Just give it a try with D0?
  • edited June 2019
    @TriB The first byte of the PID is actually Service ID in RaceChrono and Torque. So 0x00D0 would be Service ID 0x00 and PID 0xD0, requested as "00 D0" in ELM 327. It cannot be single byte. What I think is that Toyota really uses Service ID 0x00 (with PIDS 0xD0 and 0xD1), and I'm waiting for @tanner 's confirmation for that.

    Currently RaceChrono does not allow 0x00 service ID at all, due to way the PID field is stored. I will change that if it's confirmed that this service ID is needed.
  • @aol I think it isn´t. I read several Toyota OBD-threads now and none of them refers to 0x00 as SID. Every request, even tirepressure and stuff is 0x21, like it´s described by the OBD standard.
    The only 0x00 I saw was as PID or to filter DTC (diagnostic trouble codes).

    It might be 0x0021 & 0x00D0 just as a different notation.
    Until we don´t know where tanner got his infos from, we can only guess.
  • This is where I read about it and also confirmed the brake and steering angle with somebody. I am waiting to hear back from this person regarding if the service ID is applicable or not.
  • Never mind, won't work with RaceChrono or any other app that reads PIDs. These aren't PIDs but rather a message identifier for the canbus message.
  • @tanner, thank you for the clarification. Makes sense now. RaceChrono has ability to read CAN-Bus as well, but at the moment it needs DIY electronics as there's no commercial provider for something like this:
  • edited July 2020
    I was able to read the brake pedal and clutch pedal sensors via OBD!
    Unfortunately, these only provide pressed (255) / released (0) values, i.e. no intermediate values. Better than nothing?

    To add a custom PID go to Settings, click on your FRS/BRZ/86 in the list of "Vehicle profiles".
    At the bottom, click "Add channel".
    In the "Channel editor", choose the right name for the channel, then click "Show more...".
    Type 0x7E0 as "OBD-II header", tap the checkmark on the right.
    PID: 0x221233 for brake pressed/released sensor
    PID: 0x22122F for clutch pressed/released sensor
    Don't forget to tap the checkmark on the right.
    Equation: "B / 2.55", then tap checkmark on the right.
    Don't forget to "Save"!

    While at it, I also noticed that the "Relative accelerator position" was reporting 40...41% for me when flooring the pedal, causing RaceChrono to show 97% of throttle in my onboards. Knowing that 100/255 = ~0.39, I figured that can't be a coincidence. I looked at the "live data" and realized that "floor it" gives me something like 0x67 ... 0x6D, which corresponds to 103...109. Perhaps the values above 100 are just clamped to 100 in the ECU, and are there due to imprecision in the pedal calibration?
    Anyhow, I ended up entering a "custom" PID for the accelerator pedal:
    OBD-II header: blank (default)
    PID: 0x015A
    Equation: min(A, 100)

    Channel: Brake Position (%)

    OBD-II header: 0x7B0

    PID: 0x2141

    Equation: min(100, 1.1 * max(A-10, 0))

    Explanation: the min/max trick makes sure the output is in the [0%, 100%] range. The 1.1x is a multiplier that roughly matches the scale factor I previously chose for my CAN bus reader so that 100% is reported when I'm braking really hard. The -10 offset is to compensate for the default value of 10 (I've no idea why the reported value never goes below 10).


    Having said that, OBD-II provides a much lower refresh rate than CAN, so I still recommend investing a little time into making a DIY CAN reader as documented on my GitHub:

  • Another PID I found on the ft86club forum (thanks map@!) is "fuel remaining".
    Even though there's a standard PID for that, it's known that the standard PID it fluctuates a lot and isn't very useful.

    Here's a comparison between the custom PID I found (green) and the standard one (orange) during my recent track day:

    Channel: Fuel level (L)
    OBD-II header: 0x7C0
    PID: 0x2129
    Equation: A/2
  • minor correction: a better "fuel remaining (liters)" equation would be "A * 0.5"
Sign In or Register to comment.