RaceChrono Pro v6.1 with Tesla Model 3

Has anyone been successful in using RaceChrono Pro with a Tesla Model 3? I have installed an OBDII Interface and am using OBDLink LX. RaceChrono is connecting fine, now I would like to receive the channels for throttle position and brake pedal and RPM.
Can RaceChrono Pro autodetect these channels?

For the Torque App these channels are converted to Excel like
.Tesla Throttle Position,"Throttle", "0111","(A*100)/255","0","100","%","7e0","",""
.Tesla Brake Pedal Status,"Brake", "01AF","A","0","3","","7e0","",""
.Tesla RPM,"RPM","019B ","(A*256+B)","0","15000","RPM","7e0","",""

Any help appreciated!


  • aolaol
    edited October 2019

    These channels should work, but only the current beta version which is available for Android only. See FAQ how to join the beta group. The v6.0.11 doesn't have "OBD-II header" feature, so v6.1.0 or newer is needed.

    Add these as new custom OBD-II channels under the Vehicle Profile in settings.

    Let's take the throttle position for example (enter the values without quotes):
    - Channel: "Accelerator position"
    - PID: "0x0111" (It's in the 3rd column from your list)
    - OBD-II header: "0x7e0" (8th column)
    - Equation: "(A*100.0) / 255.0" or "(bytesToUint(raw, 0, 1) * 100.0) / 255.0" (4th column)

  • Thank you, perfect guidance, I am going test...
  • @Martin_snr did you succeed? Other people are asking about Model 3 data too :)
  • @aol I was not successful - looks like the provided torque app csv file is no longer compatible with Tesla M3 firmware 2019.32.12. There is a thread in teslaownersonline.com (diagnostic port and data access) where a xlsx file named "Model 3 CAN bus IDs and data" is shared - according to this file "Accelerator position" is 0x0108 data7 with a formula "Pedal Position % u8 SB 32 scale 0.4". I have no idea how to transform this to a valid racechrono formula...
  • Got an answer from the developer of Scan my Tesla:
    PIDs are OBD2 language commands to request certain data. Tesla does not speak it. We are just listening to whatever data passes by between the different modules. See if racechrono can get out of OBD2 mode and has a CANBUS mode, then it might work.
  • @Martin_snr RaceChrono v6.1 has an experimental CAN-Bus mode (for OBDLink readers only).
    1) Make sure you have v6.1 or later (available from beta group)
    2) Enable "Settings > Expert settings > Experimental devices"
    3) Add a CAN-Bus reader from the "+ Add other device" button
    5) Plug-in the OBDLink reader to your car, and turn on power to your car
    6) Go to your Vehicle profile in RaceChrono settings
    7) Enable the CAN-Bus "test mode"
    8) Add new CAN-Bus channel
    9) You should see the raw CAN-Bus data after entering a correct PID.

    Let me know when you get this far. Then you'll need to figure out the equations.
  • As I found the CAN-Bus data logging demo video - RaceChrono Pro v6.0 there is obviously a way for racechrono to just listen to the canbus...
  • v6.0 needed a DIY device build, but the new v6.1 works with OBDLink readers too
  • @aol Thank you, very helpful!
    I had to disable the OBDII reader first to allow OBDLink to be recognized as an additional device (I selected OBDLink LX/MX/ +Bluetooth (CAN-Bus) from the list). Now I have a connection with 0,2 kbits. Problem is just entering the PID is not enough to be able to save the channel, the field source data requires some input and I cannot select "use realtime data" (sorry, my app is in german, so not all field names might be translated correct to english)
  • aolaol
    edited October 2019

    It should need only Channel, PID, and equation. then it should let you save the new channel. Use ”raw” as the equation at first, without the quotes.

    The editor has not been tested with the new readers at all so expect ot to be clunky. This is the reason its behind expert settings. But you might get around it by saving the channel with correct PID, and then restarting the test connection.

    I will try to work on this again next week.

  • @aol
    >> It should need only Channel, PID, and equation
    Correct, my fault! I have defined 4 channels with raw as an equation. Question is now how to tell RCP the brake pedal is data3 and accelerator is data 7 on pid 0x118. The time frame is 10ms, the data 8 bytes.
    >> I will try to work on this again next week
    There is no urgency at this, racing season is over... ;-)
  • Shall I send/upload an exported log of an one minute drive with my 4 defined CANBUS channels (accelerator, brake pedal, rpm, battery level)?
  • aolaol
    edited October 2019


    I believe I have the same table of reverse engineered CAN-Bus messages as you have.

    So let's take a look at the brake pedal and accelerator, PID 0x118.

    CAN ID: "0x118": This is same as the PID in RaceChrono channel editor. Just enter 0x118 there.

    Time period: "10 ms": This tells you how often this message is transmitted. 10 ms translates to 100 Hz, 100 times a second. You can ignore this column.

    Bytes: "8": This tells you how many bites are in the messages. You can ignore this column.

    Data 3: "Brake Pedal u2 SB 19 1-BrakePress": This is the third data value (channel) within the messages within PID 0x118. The u2 tells you it is unsigned integer that is 2 bits long. SB 19 tells you it starts at bit 19. "1-BrakePress" probably means you will get value 1 when it's pressed. No idea about the possible values 2 and 3, but 0 is probably not pressed.

    As probably only values 0 and 1 are useful, I would use "bitsToUint(raw, 20, 1)" to get the value, instead of "bitsToUint(raw, 19, 2)". If you want to scale that to % to be used as "Brake position (%)" in RaceChrono, you can do "bitsToUint(raw, 20, 1) * 100.0". Then you will get 0% when pedal is not depressed, and 100% when depressed.

    Data 7: "Pedal Position % u8 SB 32 scale 0.4". We decode just like above, except for the scale. Start with "bitsToUint(raw, 32, 8)". It will probably give you values 0 when not depressed, and 255 when fully depressed as this is 8-bit value with range of 0-255. The scale 0.4 is not really exact, but is roughly equivalent with dividing with 2.55. So equation of "bitsToUint(raw, 32, 8) / 2.55" should give 0-100%.

    Let me know how this works.

    Also when trying to figure out the equations for other channels, please refer to https://racechrono.com/support/equations

  • @aol
    Thats exactly the spreadsheet I am using - and hey, it works just like you described it!
    I added the two equations from above and as a result got two working channels, one is acceleration between 0 and 100% and the other brake as 0 or 100%.

    Thanks a lot and please tell all other Tesla drivers RCP is working for them!
  • Maybe in the name of the thread the version can be changed to 6.1.3 to avoid misinterpretation...
  • I will write a tutorial article once the feature has been adequately tested, bugs fixed, and promoted from the "experimental status".
Sign In or Register to comment.