ApexLog

← Blog·

Reading OBD data from a track day: RPM, fuel and temperatures

How to record OBD-II channels alongside GPS in RaceChrono — what hardware works, which channels you get, and what a season logbook does with them after the import.

A GPS lap trace tells you where the car was and how fast it was moving. It tells you nothing about what the car itself was doing — how hard the engine was working, how hot the coolant got by session three, or how much fuel was left when you set your best lap. All of that is sitting on the OBD-II port, and RaceChrono can record it into the same session as your laps.

This post covers the setup end to end: what hardware to buy, how to get the channels into RaceChrono, what actually lands in the file, and what a season-shaped logbook does with the data after the session. It assumes you already record GPS laps with RaceChrono; if you’re still picking a lap timer, this is the wrong post.

What OBD adds on top of GPS

With a reader paired, RaceChrono records engine channels next to every GPS sample. The ones worth having at a track day:

  • RPM — the trace that turns a speed graph into a gear-by-gear story.
  • Throttle and accelerator position — where you were flat, where you lifted, and whether the two agree.
  • Gear — on cars that report it.
  • Coolant and intake temperature — how the car copes with back-to-back sessions on a hot day.
  • Engine load — how hard the engine was actually working.
  • Fuel level — the tank percentage over the session, which matters more than it sounds (more below).
  • OBD speed — the car’s own speed reading, next to the GPS one.

One session, one file, laps and engine data together. That combination is the point — an RPM spike means little on its own, but an RPM trace pinned to a specific corner of a specific lap is something you can look at.

The hardware: an OBD-II reader over Bluetooth

RaceChrono talks to ELM327-class Bluetooth readers — the small dongles that plug into the OBD-II port under the dashboard. They range from a few euros to around a hundred, and at a track day the difference shows up as sample rate: cheap clones can be slow or drop out mid-session, while a quality reader (the OBDLink family is the usual recommendation in the RaceChrono community) polls noticeably faster and stays connected.

One mechanical detail worth knowing before you buy: the reader polls PIDs one at a time, in turn. Every extra channel you enable lowers the update rate of the others. Expect a handful of updates per second spread across your selected channels, not 25 Hz on everything — pick the channels you’ll actually look at.

The caveat: OBD coverage is per-car

The OBD-II standard defines the PIDs, but each manufacturer decides which ones the car exposes. RPM, coolant temperature and throttle are nearly universal; gear, fuel level and accelerator position are not. Before buying hardware for a specific channel, check what your car reports — a generic reader and a free OBD app will show you the list in five minutes.

And one channel people hope for that isn’t there: brake pressure is not on the generic OBD-II set. Some cars expose it through manufacturer-specific PIDs, most don’t. If braking data is what you’re after, that’s IMU/GPS territory, not OBD.

Recording: pair once, then forget it

In RaceChrono, the reader is added as another device alongside your GPS source — pair it in the settings, select the channels you want, and from then on every session records engine data automatically. There’s no separate OBD recording to start; the channels ride along with the lap recording you already do.

RaceChrono handles the polling problem for you by splitting the selection into fast and slow channels: put the ones that change every corner (RPM, throttle, accelerator position) in the fast group, and the ones that drift over minutes (coolant, intake temperature, fuel level) in the slow group, and each gets an update rate that matches how quickly it actually moves.

The data ends up in both export formats. The .rcz session bundle carries the OBD channels natively, and the CSV v3 export adds them as named columns next to the GPS samples. Either file works for the import below — if you’re choosing, the .rcz is one file with everything in it.

RaceChrono settings with an OBDLink MX+ Bluetooth reader added and enabled under OBD-II readers
The reader lives in RaceChrono's device list — paired once, on for every session after that.
RaceChrono vehicle profile fast channels dialog with accelerator position selected
Channel selection in the vehicle profile — fast channels for the signals that change every corner.

After the import: the channels on the map

Drop the file into ApexLog and the OBD channels are stored with the session, not discarded. I built ApexLog, so read the rest of this section as one option rather than the only one — but this is the part where the recording starts paying back.

In the session’s Telemetry tab, the racing line on the satellite map can be colour-graded by any recorded OBD channel — RPM, throttle, coolant temperature, fuel level — with the trace charted underneath. The lap-compare view overlays the same channels for two laps, so the throttle trace sits directly under the speed delta between them. Where the default view answers “where was I fast,” the OBD view answers “what was the car doing there”: the throttle trace through the corner you’re unsure about, the coolant temperature climbing across a twenty-minute session, the gear the car reported on the back straight.

ApexLog lap comparison: speed traces of two laps with the accelerator position channel overlaid and the time delta chart below
Two laps side by side — speed on top, the OBD accelerator trace under it, time delta at the bottom. Recorded on a slow street test loop; real track data replaces this after the next track day.

What the logbook deliberately doesn’t do is tell you why — it won’t claim the lower fuel load made you faster or the intake temps cost you a tenth. It surfaces what was recorded; the reasoning stays yours.

The fuel payoff: a setup field that fills itself

Here’s the small, concrete win that makes the OBD setup worth it even if you never open a temperature trace.

A setup card in a logbook has a fuel level field, and it’s exactly the kind of field nobody fills in from memory three days later. If your import carries the fuel_level channel, ApexLog reads the first valid sample of the session — the tank as you rolled out — and suggests it on the setup card for you. The number you’d have guessed at is already there, from the car itself.

ApexLog setup form conditions section with the fuel level field pre-filled to 47.8 percent and a 'from OBD' hint below it
The setup card's fuel field, filled from the session's first OBD sample — 47.8% as the car rolled out.

That’s the pattern OBD data is good for across a season: facts about the car’s state that evaporate by Tuesday, captured at the moment they were true. Fuel at roll-out, temperatures by session three, where you were flat and where you lifted — next to the tires, pressures and pads from the same day, in the same track day logbook.

Try it with one session

If you already have a session recorded with an OBD reader — or you set one up for your next day — the import takes a minute and the channels show up automatically:

Import a RaceChrono session with OBD data →

The RaceChrono import page covers the upload mechanics for both .rcz and CSV v3. Free during beta — one file with an RPM trace in it is enough to see whether engine data earns its place in your logbook.