CAN bus reader for FT86/BRZ/86/FR-S with support for RaceChrono BLE protocol

Hey folks,
I've recently created a DIY device to get more info from the car than I could via OBD.
The whole build cost me ~$50, compared to hundreds of dollars I'd pay for a comparable off-the-shelf device.

Here's an overview of the project:
And here's everything I've learned about the CAN bus for FT86 platform that's useful for RaceChrone'ing:

Here's an example of data captured by that device at T6 at Laguna Seca:

And here it is used for virtual gauges in RaceChrono:

While working on this project, I also created an Arduino library with common utilities for communication with RaceChrono over BLE, and provided a few examples how to use it:

I also found a bunch of correctness and performance issues in the arduino-CAN library, and ended up creating my own fork where I've resolved most of them:

Hope you find these repos useful!


  • Thank you for sharing your works! and how about using OBDLINK devices? Does it still send one-time data only?
  • I haven't tried OBDLink with RC v7 yet. Should I expect any improvements there?

  • There's no updates in v7.0 to "CAN-Bus using OBDLink readers". It should work just fine in general, although the vehicles it's been tested on is fairly limited.
  • Trying my hand at this. but I can't seem to get it to work. checked my wiring 10 times over used a multimeter. using the connector behind the headunit with a toyota harness.

    racechrono is able to connect with bluetooth to the device but never receives any data. have confirmed can is working with an obdlink.

    what would be the best way to troubleshoot this?

    thank you for all the information
  • @ZN6Aura Add debug logging to see if your device receives any CAN-Bus packets. If not try with or without the terminator. Check your CAN-Bus board is getting correct voltage. Check the CAN-Bus hi and lo wiring order.
  • This is what the serial monitor is showing

  • Okay so I figured it out, I ordered a 3 pack of the mcp2515 following the link in this github.

    Two of the chips are labeled 17200TW. Both of those do not work. I tested the third chip when realizing it was labeled 20239RA. And it worked on its first try...

    So for anyone else trying this out avoid the chips with 17200TW. They look identical but only one works.

    I'm sure there are probably other variations of this as I now see small differences on amazon from different sellers.

  • edited March 2021
    Sorry this happened!

    For future readers: @aol is not a maintainer for my project on GitHub.
    To save his time to work on RaceChrono improvements, just file bugs on my GitHub and I'll do my best to help you there.

    @aol FYI my build already has some debug logging to Serial built in :)
  • @timurrrr Maybe I should deprecate the source code on my repo and point to yours, as I'm updating only the protocol specs currently...
  • I'm ok with that :)

    I tried my best to make the architecture of my implementation more clear, as I found your code a bit hard to understand at first. But we need someone else to confirm whether I succeeded at that 😅

    Just want to warn you that my implementation doesn't have support for GPS. Personally I find that using an off the shelf GPS is just more convenient, as I can put it at a different location, charge its battery, etc.; but I do see that a bunch of people do DIY RC devices specifically with GPS for whatever reason.

    If someone can add GPS support behind a #ifdef as a pull request, I'll be happy to review and merge it!

Sign In or Register to comment.