RaceChronoDiyBleDevice/can_db/ft86.md

3.9 KiB

FT86 cars (2013-2020 Subaru BRZ, Toyota 86, Scion FR-S)

Connections

The CAN bus is readily available on pins 6 and 14 of the OBD-II port, which means you can just use an OBDLink MX+ with RaceChrono to read data from the CAN bus :-)

If you still want to use a DIY device, I applaud you. You can use the OBD-II port, or you can make use of a hidden connector behind the infotainment head unit for a completely hidden setup. See this page for more pointers on how to make a harness with CAN H/L pins for that connector. Then all you need to do is to put another JST connector on the other end of that harness, and plug it into the DIY CAN bus reader documented in this project.

Here are CAN IDs and RaceChrono equations for data channels that should be enough for most people:

Channel name CAN ID Equation Notes
Accelerator position (%) 320 A/2.55
Brake position (%) 209 min(C / 0.7, 100) The 0.7 divider seems to be a good value to get 100% at pressure slightly higher than those you're likely to use on the track for cars with no aero. You can use 0.8 or 0.9 if you see 100% too often.
Brake pressure 209 C * 128
Coolant temperature 864 D - 40
Engine RPM 320 bitsToUIntLe(raw, 16, 14)
Engine oil temperature 864 C - 40
Speed 209 bytesToIntLe(raw, 0, 2) * 0.015694 May want to check the multiplier against an external GPS aevice
Steering angle 208 bytesToIntLe(raw, 0, 2) * -0.1 Positive value = turning left. You can remove the - if you prefer it the other way around.

Advanced CAN IDs

Below is a table with a few more data channels that might be useful for more detailed analysis. When adding more channels, be aware that it will increase the file size of your RaceChrono sessions, and might negatively affect the update rate of the more essential channels, due to limited Bluetooth bandwidth. However, the communication protocol in RaceChrono is smart enough to optimize Bluetooth usage if multiple channels share the same CAN ID. As a general rule, if a new channel has the same CAN ID as an existing channel (such as "Throttle position" using the same CAN ID 320 as "Accelerator position"), then adding it should not affect the update rates. Adding a channel based on a new CAN ID (such as "Wheel speed FL") will likely negatively affect the update rates of all other channels.

Channel name CAN ID Equation Notes
Clutch position 320 B & 0x80 / 1.28 Only 0% and "not 0%", unfortunately.
Gear 321 (G & 0xf) * (1 - (min(G & 0xf, 7)) / 7) Car calculates it based on speed, RPM and clutch position. It's pretty slow. I really doubt it's worth wasting one CAN ID for this channel. It's not that hard to see which gear you're in based on speed and RPM in data.
Lateral acceleration 208 bytesToIntLe(raw, 6, 1) * 0.2 Data is noisy.
Longitudinal acceleration 208 bytesToIntLe(raw, 7, 1) * -0.1 Data is noisy.
Combined acceleration 208 sqrt(pow2(bytesToIntLe(raw, 6, 1) * 0.2) + pow2(bytesToIntLe(raw, 7, 1) * 0.1))
Throttle position 320 G / 2.55 This is the throttle valve, not pedal.
Wheel speed FL 212 bytesToIntLe(raw, 0, 2) * 0.015694 Use same multiplier as for "Speed".
Wheel speed FR 212 bytesToIntLe(raw, 2, 2) * 0.015694 Use same multiplier as for "Speed".
Wheel speed RL 212 bytesToIntLe(raw, 4, 2) * 0.015694 Use same multiplier as for "Speed".
Wheel speed RR 212 bytesToIntLe(raw, 6, 2) * 0.015694 Use same multiplier as for "Speed".
Yaw rate 208 bytesToIntLe(raw, 2, 2) * -0.286478897

If you found this page useful, consider donating so I can buy beer/boba:

paypal