Custom PID clarifications (for 2013 Suzuki GSXR-1000)

edited February 29 in General

I've been working on getting PIDs from my 2013 Suzuki GSXR-1000 and am now ready to enter formulas into Racechrono and have some questions. I read a few posts but thought that it would be better to lay it out here.

Image 1:

For 1 (Default protocol), I've selected 5, since when i used a bluetooth terminal i had to specify 5.
For 2 (Init. commands), I enter: ATWM8012F1013E\nATSH8112F1\nATFI\nATSH8012F1
For 3 (Default OBD-II header): I assume I leave this blank?
For 4 (Fast Channels): Do I need to check off the PIDs in this list for my custom PIDs? ie: if I'm making a custom "Engine RPM" pid, do I need to select it here under Fast Channels? Also, what does that mean the refresh rate will be?
For 5 (slow channels): Same question as above but with "Engine Coolant" What is the refresh rate?
For 6 (Test connection): I assume this is only a debug feature and I don't need to use it?

Image 2:

"Show standard channels": assuming that i leave this unchecked since I'm not using standard OBD channels.
For 7 (Engine RPM): I've added a custom channel and selected "Engine RPM"

Image 3:

for this image, I've entered the suzuki PID 0x21 08. I then entered the bytes toUInt equation (uses two bytes). I then entered some raw data under "Source data". 0x61 08 01 17 69 A2 00 00 00 FF FF FF 00 42 F6 and the equation worked perfectly!

My question is this, what do I enter for "Source data" for when I'm using this PID on the track? And when would you check the "use live data"?

Finally, my next big question is:

0x21 08 provides ALL the pids in one go as output. If I enter all the PIDs separately, I assume it will send and receive the response for one. Then have to wait and do the next, then the next, etc. Is there a way to parse out ALL the data from sending 0x21 08 in one go to up the rate for values?

ie: I want to send 0x21 08 and get Speed, RPM, gear position and Coolant temp without resending 0x21 08 for each PID since each time all the data is included.


  • aolaol
    edited February 29
    Default OBD-II header: leave blank, if you didn't set the header in the terminal either.

    Fast channels: Check all your custom PIDs and uncheck everything else. All your PIDs come from same sentence, so setting some fast and some slow does not work.

    Slow channels: Uncheck all.

    Test connection: Just for testing your equations work. It will provide actual "Source data" for the equations.

    Show standard channels: This options shows/hides the standard channels on the list, does not affect anything else.

    Source data: This is used only to debug and test the equation. Not used outside the editor.

    Final question: As you enter ALL your custom channels with same PID, it will get a response to all of them at once. You just enter them separately as unique custom channels, but it's wise enough to parse proper value for each of them at single PID request.
  • Perfect! Thanks. I'll enter the rest and give it a rest when the snow melts... I'll send you pics of that connector shortly in the other post.

  • edited April 9
    Hello @aol I've been getting back at this and hope to hit a stretch of road soon to grab some actual data with my GoPro grabbing temps, Gear, RPM, and Speed to then overlay it to check how good the equations are! I'm excited to do this! I do have some questions though now after entering all the data and running a test with a test string.

    Test Source Data:
    0x 00 00 00 00 00 00 00 00 00 00 00 00 96 27 7E 41 00 99 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EE

    Racechrono SPEED (Position 13)
    Equation (Unit km/h): bytesToUint(raw,12,1)
    Expected response from 0x96 = 150 km/h
    Response: Solution in Racechrono calculates m/s and then multiplies by 3.6000 to obtain km/h. To fix this I divided by 3.6000. Is there a reason it uses m/s? This should be unitless so people don’t have to convert.

    Racechrono RPM (Position 14/15)
    Equation (Unit RPM): (bytesToUint(raw,13,1)*255+bytesToUint(raw,14,1))/255*100
    Expected response from 0x27 7E = 3949.41
    Response: 3900 (doesn’t carry decimals - Or will it actual show decimals when exporting data/video overlay? can you choose how many decimals to carry through and how many to show during video overlay?

    Racechrono THROTTLE POSITION (Position 16)
    Equation (Unit %): bytesToUint(raw,15,1) / 255 * 100
    Expected response from 0x41 = 25.49%
    Response = 0% (Solution divides 65/255 as 0 then multiplies by 100 resulting in 0)
    Changing equation to multiple before dividing gets 25% but still doesn’t take floating numbers into consideration.
    New Equation: bytesToUint(raw,15,1) *100 / 255
    Same comment as RPM re floating values (decimals).

    Racechrono ENGINE COOLANT TEMP (Position 18)
    Equation (Unit °C): (bytesToUint(raw,17,1)*160/255)-30
    Expected response from 0x99 = 66°C (150.8°F)
    Response: 66°C -- GREAT!

    Racechrono Gear Position Sensor (Position 23)
    Equation (Gear) bytesToUint(raw,22,1)
    Expected response from 0x05 = 5
    Response = 5 -- GREAT!

    Racechrono Secondary Throttle Position Sensor (Position 43)
    Equation (Unit %): bytesToUint(raw,42,1) / 255 * 100
    Expected response from 0xEE = 93.3%
    Response = 0% (Solution divides 238/255 as 0 then multiplies by 100 resulting in 0)
    Changing equation to multiple before dividing gets 93% but still doesn’t take floating numbers into consideration.
    New Equation: bytesToUint(raw,15,1) *100 / 255
    Same comment as RPM re floating values (decimals)

    In addition, I used "Accelerator position (%)" for this PID from the channel name. Can I create a custom channel name? If not, I assume that i check "Accelerator Position" under "Fast Channels" however, what is "Acc. Pos. E" and "Acc. Pos. F"?

    Further to that, for the gear position equation and many other options in the channel list, there is not "Fast" / "Slow" channel option for those PIDs to check off. What does that mean for that PID?

    UPDATE 1: I just noticed that I missed "Gear" under fast I've now checked that. But the question remains as to can I create a custom channel name in the PID and if yes...what does that mean for the checkbox under "Fast or Slow channels since it won't be there?"

    UPDATE 2: I just noticed that Gear wasn't there when I add one from the channel dropdown list it populates it under Fast or Slow channels. So that is great! Then the question is solely, can you add a custom channel name and associated unit.


  • aolaol
    edited April 9
    Notice 1/2 = 0 but 1/2.0 = 0.5. This is in the equation reference in website support section. I will write longer later.
  • aolaol
    edited April 10
    You can only select from predefined channel names, custom names not supported.

    The other channels in fast/slow lists are standard OBD-II channels. As this is not really OBD-II you should not select any of them. You should select only the custom ones that you've created.

    One thing I forgot about this. RaceChrono will query available PIDs through OBD-II at the beginning (PID 0x0100), and the actual data recording might not work as I expected, and I might need do a small change to my code... I might need to write a simulator to test it. Can you share your vehicle profile (so far) and email it (as .rcz) to tracks(at) ?

  • Thanks @aol I sent the email yesterday with my profile. I've added some ".0" to get more digits. Thanks for that! I would like to comment on what I believe would be a great feature (maybe I'm just missing it and it is available? I looked through the eqn ref and didn't see it).

    It would be nice to be able to specify exactly how many digits you wanted to have returned. Currently, the equations show four digits after the decimal point which for some that is great. for others I'd like to have only 2 or zero, but to carry through (see RPM example).

    RPM equation without ".0" gives 3900 with the ".0" it gives 3949.4118. What I really want to show is "3949".

    Throttle Position:
    without the ".0" gives , with the ".0" gives 25.4902%. What I really want to show is "25.5%" or "25.49%"

    Obviously this is to do with the video overlay feature and how I want it shown when I include parameters in the overlay. I love the extra digits for everything if i'm going to be exporting raw data for analysis.

    As for selecting channels, since custom PID names are not available, I assume that I can choose ANY PID that I don't need that has the SAME UNITS (example %) and it will work and for the video overlay I can then return that variable?

  • The decimal count at the editor is pretty much irrelevant. I've just decided it displays only 4 at that point, but it actually saves everything as 64-bit floating point while recording.

    The recorded data is then displayed, while recording, in analysis, and in exported video afterwards, with variable amount of decimals. The decimal count is decided by the channel type, or units to simplify it a bit. For example there's no decimals displayed for RPM.

    Yes, you should pick a channel that has the units and name you desire. Then it will be displayed correctly in the app. If there's no one with proper name, then you can choose from the generic ones like "Voltage", "Angle", "Pressure" etc. You can also also define a post fix number too, so you could have "Voltage 1", "Voltage 2" etc.
Sign In or Register to comment.