log tyre pressure/temp in Racechrono ?

Now there are different tire pressure gauges for Android, it would be ideal if Race Chrono could pair with them and display tire temperature / pressure in the race chrono and even log.

Here is two of them:





  • I can certainly see the use for these, but is there public APIs available for any of these?
  • edited October 2015
    It is funny, I was just looking into something like this.....I said, I wonder if anyone here had anything working yet?....and there is already a thread....

    Does anyone know what kind of data these put out?

    From reading the fobo web page, it seems they need to be "registered" in their app or something. But I wonder if they are using some kind of special protocol, or are they just streaming serial data?

    For 100 bucks, it is a little over my threshold for getting one for fun to mess around with....
  • I think I should just ask for the hardware and the API :)
  • I just exchanged a few emails with Fobo.....at the very least I don't think that it will work for me....as they require Bluetooth 4.0, which my DroidX does not support....:(...I don't think?....Unless the OS changes that (could fix that with a new phone...)?

    Long story short, they didn't seem to keen on sharing....but maybe you might have better luck since you are RaceChrono....and I am just a loony toon..:)
  • edited May 2018
    I ordered the TP630 set (mainly because of the smaller size of the outer sensors) mentioned here https://raspberrypi.stackexchange.com/questions/76959/how-to-decode-tpms-sensor-data-through-rpi3-bluetooth

    I'll let you know after I get the set. Reverse engineering them shouldn't be much work.

  • Reviving an old thread - so info stays in one place.

    Any updates on BT TPMS support? Sensors are now easily sub $100 and would be a great addition to RC.

  • @aol Any updates on this? I'm going to be purchasing some sensors this year and thought. Hey it would be great to have this log in Racechrono.
  • edited March 2020
    The ones I purchased did not correspond to the product images, and were very large. Decided against installing them, and therefore creating the support. I may try again, if you find a quality set and link it here.
  • I've been looking at the FOBO 2


    The previous poster had inquired about what you need in order to get it working and you said the hardware and API. Is that still the case?

    I've requested the API (not holding my breath) and if I can get it then I would buy the hardware.

    If I could get you the API is that something that is easy to add to racechrono?

    The module isn't necessarily the smallest (uses CR1632's). So on that front maybe you're looking for something smaller? Or an internal sensor?
  • Just looking for light enough not to require balancing the wheel. I'd be running them on a bike so it's more sensitive than a car. API would be great but often it's simple to reverse engineer them... but that requires some time.
  • Those are 7.6g pretty light but no idea really if that will make a difference.

    I'll be changing to slicks early this season and rebalancing anyways so not a huge concern.

    Wanna buy some and reverse engineer them :p

  • edited March 2020
    @aol on this note, how would you go about reverse engineering the sensors if I was to purchase a set? I believe this would be outside my ability, however, I have some programmer and app developer friends that might be able to help me do it if I know what to ask them to provide the information you need.
  • edited April 2020
    Hi, for my temp monitor I used 6 x Melexis MLX90614ESF-ACF-000-SP.
    I used an Arduino Nano, a HC-06 Bluetooth Transmitter/Receiver and a small dispaly.
    I'm able to connect to Racechrono and synchronize with GPS data.
    I can share some session if you like.

  • edited April 2020
    @Michael86 it would be basically using a Bluetooth LE monitor app to monitor the characteristics, and see which byte changes when pressure and/or temperature changes. I use the Nordic Semiconductor's app.

    Also if temperatures are enough, there's always RejsaRubber: https://github.com/MagnusThome/RejsaRubberTrac
  • edited April 2020

    @aol I'd really like pressures as well. What's the name of the app? In the app store there are lots of apps by Nordic semiconductor

  • @Michael86 I think it's called nRF Connect.
  • @aol thanks! I just purchased some Blu technology internal sensors to test out. They come with an app and i'm hoping to use nRF Connect to determine the settings.

    Any chance you have some materials that you could share which would indicate the first steps to doing this using the app?

  • You will get hits from Google with following key words:
    - Reverse engineering Bluetooth LE
    - Reverse engineering IoT

    This is pretty elaborate with Wireshark step and all:
  • @aol Thank you!!!! That link is exactly the sort of thing I was hoping for!

    Also, RejsaRubber looks great! Im going to check distances on my bike for placement and plan on doing that. It's more about the fun of collecting data for me then anything else. But I love it.

    Can't wait to start reverse engineering the sensors!

  • Notice that you might not need the wireshark step. A pressure sensor is propably read-only, so you should be able to do it by just monitoring with the nRF connect. Just expose the sensor to different pressures and see which byte changes.
  • edited April 2020

    @aol good point! I'll definitely keep the process incase I do a Bluetooth bulb etc at some point for other projects. It's a great write up!

  • Yep, it's very elaborate tutorial to reverse engineer anything :)
  • This would be a truly great feature, has there been any further progress?

  • Not yet on my end. I purchased my sensor just at the beginning of COVID expecting the US border to open but it's been closed so my sensor has been sitting at the mail forwarder waiting for me to grab it. The US / Canada border is set to open so I should be able to look into this over the winter though!
  • Update! – warning…long reply and feature request from AOL 

    So some great news on my end, I was able to complete my experiment (with my BLU Internal TPMS sensors) and get the results I needed to generate graphs and compare to equations that another person made for their BLU External sensors in 2018 that I found on an RV forum (thor forums). I've got a few questions / things to consider. I’ll list those first and then go into showing my data and setup.

    I used the internal BLU TPMS sensors as mentioned above.

    They output as Bluetooth Beacons and provide:

    Major: XXXXX (5 digit decimal value – id of the sensor)

    Minor: XXXXX (5 digit decimal value – pressure / temp data)

    UUID for my first one was B54ADC00-67F9-11D9-9669-0800200C9A66 which requires one formula, however, apparently the other guy had some sensors with another UUID and a different formula for temperature (multiplied by 4). My equation ended up being a bit different from his for temp but I think mine is correct as it’s got the same intercept as his and is just x-40 whereas his was something along the lines of 54/10 (but he was working in F).

    Remaining questions / discussion topics

    1) Is it common for Bluetooth beacons to have a main mac address but to then broadcast using seemly randomly generated ones?

    a. My Main one seems to be “14:99:E2:0A:A9:29” but the broadcasts always come from “98:84:XX:0A:74:66” – XX being the value that increases with each broadcast.

    2) Comment – using the android btsnoop.log file was a pain and useless for the beacon. First off, the data is not actually in the .log file. It’s in the bug report you need to generate and then unzip and it’s in a .cfa file. It works great for devices like Bluetooth headsets and controllable lights and was fun to play around with for that. But not for beacons like this – the data was just not picked up. Instead Nrfconnect works perfectly for this. I used two android devices, one for nrfconnect and the other for official app display.

    3) Final comment – I only tested one of my two sensors so far. If this is added to Racechrono as a feature I’ll probably buy some more for my spare sets of rims. If I get another UUID I’ll do another set of tests.

    Note: SensorValue is the UINT16 (Little endian) value from the minor string as explained later.

    Temperature: (for UUID: B54ADC00-67F9-11D9-9669-0800200C9A66)
    degC: T = SensorValue – 40
    degF: T = ((SensorValue - 40) * 9/5)+32

    Pressure: (Think for all UUID)
    PSI = 100/276 * SensorValue

    Test Setup:

    Used motorcycle rear tire slick
    Tire warmer
    Wheel balancer
    Variable speed buffer WITH spongy thick application of underground electrical tape. NOT normal tape. It softens the “catch”. IMPORTANT and DANGEROUS
    External temperature gun (not actually useful)
    Motion Pro Digital Pressure gauge (just for comparison / releasing pressure for next test)
    Fan – for accelerating temperature drop
    Android Phone for using nrfConnect
    Android Tablet for monitoring official app

    1) Hooked everything up and heated the tire to 95C with the tire warmer and then filled the tire to approximately 40psi.
    2) Got tablet / phone ready for logging. I also did the logs for the internal bug report / log file but as mentioned before they were useless. The useful items were nrf connect for phone and official app on tablet
    3) Removed cover
    4) Hit “Scan” on nrf connect with a -65 db filter and then gently applied the variable speed buffer to get a low speed out of the tire. I had to use the maximum setting with the small size of shaft to get the tire to spin enough to activate the sensor. (activates with motion only) - CAREFUL this can "jump" the tire and toss your setup to the floor. ie: Dangerous
    5) Had helper watch screen on official app call out the app registering the change. Recorded time, app temp (Deg C) and pressure (psi), slowed tire and verified pressure with motion pro and external temp with temp gun.
    6) Opened the nrf connect app log and screenshoted the values with the built in timestamp.
    7) Waited approx. 5 minutes between tests
    8) Let out 3-5ish psi and redid testing until low temp value hit just above room temp and pressure was low.

    After testing:
    Took “minor” values (5 decimal digits) and converted to HEX. First Byte is Temp and second Byte is Pressure.
    Ex: 23401 decimal translates to 5B69 in HEX. 5B is Temp and 69 is Pressure. Then putting the individual hex bytes into an online calculator I converted using “UINT16 – little endian) to get the value to enter into the equations above.

    Here are my graphs with the overlaid excel generated y=mx+b formulas. The one for PSI is what it gave me but I’m going to use the 100/276 for slope (m) rather than the 0.3625 it shows.

    Quick Data snap showing UUID, Major and Minor.


    Is it possible to enable RaceChrono custom section to allow you to enter the sensor “Major” decimal value to id a sensor and enter the equations for temp and pressure for addition as a custom value for overlay?

    Some sort of functionality would be great to be able to quickly swap out a front or rear tire separately and just activate the appropriate sensor that are on the car at a time. For example, I have 3 sets of rims. 1x rain set and 2x normal slicks (motorcycle). I generally replace the rear separately from the front. So if I put sensors in all my tires, it would be great to be able to quickly toggle which of the 3 fronts I have on and which of the 3 rears I have on. They all obviously have different Major ID numbers but should all have the capability of entering their own custom formula (in case UUID is different).

    Anyways, I’ll shoot you an email after this post so you can respond with any data requests or questions that you have on this.
  • @Michael86 For the time being, have you considered adding a DIY Arduino-based BLE "bridge" in between the RaceChrono app on the phone and the BLE TPMS sensors? It could for example would listen to data from the TPMS sensors, do whatever processing you need, and relay it to RaceChrono using the RaceChrono BLE DIY protocol.
    Once you figure out your use case like that it might be easier to demonstrate what changes we need to make in RaceChrono.
  • @timurrrr Thanks for the comment. My use case is simple, monitor tire pressure and temperature changes for overlaying onto the video export. I'm interested in how the tires react in different conditions when I'm out there.

    I'm hoping to avoid using any additional devices on the bike as I'm trying to "slim" it down. Having used the custom OBD feature in the app I figure it would be an easy addition as it seems very similar. Receive incoming "major id" to identify the sensor, log the "minor id" and convert to hex and then apply the equations and store the value. All that being said... I have only dabbled in coding so I really have no idea at all about how much effort it would be to include such a feature in Racechrono / how many people might actually want this feature.

    All that being said I'm interested in exploring this Arduino-based BLE "bridge" for interest. I doubt I'll have time to build / work on something for that before next fall / winter. Have too many new parts to put on the bike and a new paintjob to do.
  • Hi @Michael86, thank you for your work reverse engineering the sensors. I'm not sure I fully follow, so I have couple of questions.

    1) Do you want these sensors to be natively supported in RaceChrono, or something else?

    2) Which product is it? It's quite difficult to support these Chinese products, as you can never tell what the product really is. And if you think you can tell from the pictures, you may end up receiving something that actually looks different.

    I already got set of these: https://www.amazon.de/gp/product/B08PFSM637/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1

    3) You mention your test rig. Is it for testing the pressures and temperatures? Or do you need it in order to connect at all?

  • @aol

    Thanks for the reply. Here are my answers:

    1) I was hoping that there would be some sort of option in racechrono to add DIY sensors such as this like the custom PID option which I already use. I imagine I would just make duplicate profiles in order to have my "rain set" activated vs the "slick set" etc. Maybe there already is and I just don't know? Was really hoping that Racechrono could intercept the data without additional devices and apply the equations that are already integrated (ex: bytesToUintLe) and output the psi / temp.

    2) These are U.S.A. products by https://techbyblu.com/. That being said, they may be built in China like lots of domestic companies. I don't know. It appears that whatever tech they use is Apple though based on the Beacon info. So I imagine it's a good quality product. I would not recommend this for Chinese products.

    3) The test rig was just to increase starting temperature and starting pressure and then spinning the wheel (rather than hand) to have the beacon activate. In between each test I deflated the PSI and let the temperature cool a couple of degrees to get the change in data so I could find an equation to get the proper fit.

    It is only necessary for reverse engineering it. The beacon transmits data once the wheel is spinning. So in normal operation it just starts broadcasting data as soon as you start moving and stop transmitting once you stop. It broadcasts every 10-15 seconds or so. You don't need the official app to see the data.
Sign In or Register to comment.