A hell of a release
It’s an app and firmware release that marks a serious milestone. It almost seems the amount of thought, discussion and teeth gnashing that preceded it might have consumed more energy than it took to actually make it! Granted – all of that planning and analysis plays into building it correctly the first time, but as humans it just doesn’t feel that way, right?
That big feature is RaceCapture’s new direct CAN mapping system – and by extension, a completely revamped and overhauled OBDII engine. What’s in it for you? It’ll be much easier to map data from any system, from getting proprietary data from OEM ECUs to streaming data from CAN enabled sensors.
We’ll dig in and explain the details. But first, let’s have our dessert:
New dashboard screens
This one is simple to explain: the new RaceCapture app has 3 new dashboard screen layouts, plus the ability to select which screens are active. It’s been a much requested feature, and we’re pretty excited for you to try it!
New Direct CAN mapping
At a high level, CAN mapping takes the data coming from your CAN bus enabled ECU, sensor networks and other devices and transforms them into human-readable telemetry channels.
Example: Your ECU may send RPM, TPS and Engine Temp in an 8 byte CAN message like this:
[0x0A, 0xA0, 0x7F, 0xBD, 0x00, 0x00, 0x00, 0x00]
And what the ECU is really saying is:
- Engine is running at 2720 RPM
- Throttle position is 50%
- Engine Temperature is 189F
Not super obvious, right? Being able to translate this low level CAN bus data into real-world values is critical for race car data systems, and so far, RaceCapture has been delivering the goods… but with a bit of pain.
So much friendlier
Up until now, our CAN mapping scheme was in the form a Lua script. While being immensely powerful, allowing any formula or logic to be applied to the CAN data, it’s not particularly friendly to those who aren’t familiar with scripting languages. Over time we’ve made this easier by providing some copy/paste CAN mappings, which helped quite a bit.
With this latest release, direct CAN mapping is now a first-class feature of the RaceCapture system, and is available for RaceCapture/Pro MK3,MK2, RaceCapture/Apex and the plug-and-play RaceCapture/Track.
How’s it better? We’ve provided a much easier to use, touch oriented interface to set up CAN channels – right from your phone or tablet, and wirelessly connected to your RaceCapture system. Map CAN channels from your driver’s seat or standing by the engine bay – and leave that laptop shut and safely at home.
Lua’s still there
For 99% of cases, the direct CAN mapping will handle the job. For the 1% of cases where you need to apply custom logic or formulas, the Lua scripting capabilities in RaceCapture/Pro and RaceCapture/Apex provides the escape-hatch to handle any kind of data you can throw at it.
Those of you familiar with the in’s and out’s of CAN data mapping will be able to dig in right away, no documentation needed. If you need a primer or a guide on how to get started, we’ve updated our CAN bus integration guide to get you going with the basic concepts.
Just like buying a Miller welder won’t imbue you with the ability to throw down perfect beads, nor does buying a KitchenAid mixer turn you into the next cake master, having this powerful new capability in RaceCapture may leave you needing some help. No problem – we’ll do what we can by enhancing our online guides and providing a dedicated section of the forums to discuss CAN mappings. And most importantly, in the next app release we’ll have a preset capability that will let you instantly configure many ECUs and sensors, all at the touch of a button.
Until now, we supported a range of standard OBDII PIDs, which provided essential channels like TPS, RPM, Engine Temperature and others. Tantalizingly out of reach was the ability to map what is called “Enhanced Data Mode” often known as mode 22 PID requests.
We have that covered now. With the new OBDII channel capability, you can still easily select one of the SAE standard presets, but you can also map any custom OEM PID – and there’s a lot out there based on existing research into reverse-engineering OEM PIDs on Ford, BMW, Subaru BRZ/Toyota 86 and other platforms. We’ve spun up a new part of our forum to spur the conversation around OEM specific PID support – expect a lot of activity there!
OBDII performance enhancements
I always have a tinge of sadness when I think about OBDII – even with the modern, faster CAN-OBDII interfaces. Why? it’s design is inherently slow. It was never meant to be a high performance data-logging interface, but rather intended for periodic use with a scan tool.
What makes it slow? The request / reply protocol OBDII prescribes. The behavior is universal, and every OBDII-compliant ECU operates in this manner:
- Data system to ECU: “hey, send me RPM”
- ECU to data system: “ok, here’s the RPM value”
- Data system to ECU: “hey, send me throttle position”
- ECU to data system: “ok, here’s the throttle position value”
- Data system to ECU: “hey, send me engine temperature”
- ECU to data system: “ok, here’s the engine temperature value”
…and so on. Where the direct CAN mapping scheme described earlier acts upon a one-way firehose of broadcasted data – with RaceCapture greedily mapping telemetry channels as the data shows up – OBDII requires asking for channels one-at-a-time.
Given those limitations, we have a few things that make our OBDII interface as fast as possible:
- We use a powerful 32 bit ARM processor in RaceCapture that interacts with your car’s ECU directly, minimizing the lag between querying for an OBDII channel and processing the reply. Indeed – our code is running right down at the metal, and it kicks ass over the performance you’d see with your typical OBDII dongle.
- And now, a shiny new priority scheduler optimizes all of your OBDII channels. Here’s how it works:
Prioritizing OBDII queries
Let’s say there’s 3 channels you want from OBDII: RPM, TPS and EngineTemp. Since RPM and TPS are fast-changing channels, you set their rate to 25Hz. EngineTemp changes much more slowly, so you set that to 1Hz.
RaceCapture will now automatically schedule OBDII channels based on their configured rate – optimizing the OBDII schedule so the higher rate channels are queried more often than slower channels. In the above example:
- RPM and TPS are queried at the same rate (round-robin querying)
- EngineTemp is queried at 1/25 the rate as RPM and TPS.
This way we maximize the update rate we can get for RPM and TPS at 25Hz, minimizing the lag on the RaceCapture dashboard as well as in your data stream.
In this release we have the following channel capabilities on CAN and OBDII mappings:
- RaceCapture/Pro MK2, MK3 and RaceCapture/Apex: 10 OBDII channels, 100 CAN mappings;
- RaceCapture/Track 5 OBDII channels, 5 CAN mappings
We’re going to add more capacity for channels in the 2.12.0 firmware, specifically for RaceCapture/Track. Turns out there’s some wasteful memory management around the core libraries we’re relying upon, so in the next firmware release we’ll work to improve those available channels significantly.
Get it today
The RaceCapture app is available on all major platforms:
- Windows / OSX
- Google Play
- Amazon App Store
- Apple iOS (The 1.9.1 iOS release is delayed due to some issues around changes in Apple developer tools.)
Upgrading your firmware is easy:
- This update will reset your unit to factory defaults. So first, make sure you back up your current RaceCapture configuration!
- Connect to your RaceCapture device with the RaceCapture app
- Read the configuration under Setup
- Save your configuration to a file
- Download new firmware for your RaceCapture device, and unzip the contents.
- Update your device’s firmware using the firmware update page under Setup
- Also see our handy firmware upgrade how-to video
- Restore your RaceCapture settings from the configuration file you saved above
- Load the saved configuration file
- Write it back to RaceCapture
Got any questions, ideas or thoughts? Hop onto our forum and join the conversation. We’d be happy to help you out!
Full Change Log
There’s a few more important changes you’ll find in this update – see the full change log here:
==1.9.1== * Update OpenSSL to conform with Google Play requirements ==1.9.0== * Setup: Add direct CAN channel mapping capabilities (Requires firmware > 2.11.0) * Setup: Add OBDII custom mapping capabilities (Requires firmware > 2.11.0) * Dasboard: add ability to customize what dashboard screens are visible * Dashboard: add new round dashboard gauge variations (2x, 3x, 8x gauge layouts) * Setup: Add fractional pulse-per-revolution timer options of 1/4, 1/3 and 1/2 * Setup: Add RaceCapture/Pro MK3 and RaceCapture/Apex to startup wizard page * SessionRecording: Stop session recording if new channels are added in configuration while recording is active * Analysis: prevent import errors in some cases where it attempts to add a duplicate datapoint column * Analysis: prevent error if remembered channel selection doesn't exist in datastore * Analysis: prevent silent failure/hang if analysis fails to import * Analysis: pafely handle channel names starting with a digit * Analysis: prevent exceptions when a non-existant channel is selected * Setup: wifi configuration disables password field if encryption setting is 'none' * Setup: imported WiFi configuration is marked as stale so entire configuration is written to RaceCapture * Setup: validate wifi AP password is minimum 8 characters * Global: Ensure tab key moves to next form field
= 2.11.0 = * Fixed Backwards X/Y IMU channel for RaceCapture/Track * Make precision on gyro channels (yaw / pitch / roll ) zero position * Final updates / bug fixes on OBDII channel mapping = 2.11.0 RC1 = * RCP MK3 support * direct CAN mapping support * OBDII PID mapping support * Predictive timer requires high quality GPS data