Skip to content

How closely does the band's footpod track the treadmill?

barban · 18 August 2026

Follow-up to Reverse-engineering the Mi Band footpod protocol. There I promised numbers; here they are.

A footpod is only as good as its speed. So the obvious question, once OmniBandBridge (OBB) could read the band’s footpod stream: how closely does that speed actually match the treadmill belt? And does a cheap band hold up against a “real” footpod?

I have both a Xiaomi Mi Band 10 (footpod mode) and an Under Armour HOVR (Atlas) in-sole pod, so I ran the same treadmill, recorded each with OBB, and compared the footpod speed to the belt’s own FTMS speed — the calibration factor = footpod speed ÷ treadmill speed. A factor of 1.00 means perfect agreement.

Both runs were walk/run interval sessions. For each I pulled the per-second samples from OBB (more on how below), split the workout into segments of constant treadmill speed, dropped anything shorter than 30 s (the ramps between speeds) and the first 5 s of each segment (the footpod lags a speed change), and computed, per segment, the mean footpod speed ÷ mean belt speed. The belt was set in mph, so the speeds land on values like 4.02 (2.5 mph) and 8.05 km/h (5.0 mph).

Footpod calibration factor vs treadmill speed: the UA HOVR Atlas drifts with pace (reads high walking, low running), while the Mi Band 10 stays flat and slightly low.

Each faint dot is one steady segment; the bold line joins each footpod’s walking and running averages. Two clearly different characters jump out:

  • The Mi Band 10 (teal) is almost perfectly flat: it reads a consistent ~1.6 % low whether you walk or run.
  • The UA HOVR Atlas (orange) drifts with pace: it reads high at a slow walk and low at a run, sloping right through 1.00 somewhere around 7 km/h.

Mi Band 10 — 25 Jul, treadmill, footpod (pebble) mode:

phase treadmill km/h mph footpod km/h factor cadence duration
walk 4.51 2.8 4.48 0.993 101 59 s
run 8.05 5.0 7.93 0.985 145 122 s
walk 4.99 3.1 5.08 1.018 114 161 s
run 8.05 5.0 7.97 0.990 146 119 s
walk 4.99 3.1 4.99 0.999 112 259 s
run 8.05 5.0 7.87 0.978 145 124 s
walk 4.96 3.1 4.79 0.966 107 574 s

UA HOVR (Atlas) — 31 Jul, same treadmill:

phase treadmill km/h mph footpod km/h factor cadence duration
walk 4.02 2.5 4.35 1.081 98 134 s
walk 4.51 2.8 4.67 1.035 102 130 s
run 8.05 5.0 7.85 0.975 150 58 s
walk 4.99 3.1 5.05 1.011 106 79 s
walk 4.67 2.9 4.72 1.011 102 228 s
run 8.05 5.0 7.81 0.970 149 59 s
walk 4.51 2.8 4.59 1.019 100 321 s
run 8.05 5.0 7.84 0.974 149 59 s
walk 4.51 2.8 4.56 1.012 100 313 s

Duration-weighted summary:

Footpod Walk Run Overall Character
Mi Band 10 0.984 0.984 0.984 flat, ~1.6 % low, pace-independent
UA HOVR (Atlas) 1.024 0.973 1.017 drifts: +8 % at 2.5 mph → −3 % at 5 mph

Both footpods land within a few percent of the belt — close enough that the raw speed is perfectly usable for a Zwift session or a treadmill run without any correction. But the shape of the small error differs, and that’s the interesting part:

  • The Mi Band behaves like a tape measure that’s uniformly a hair short. One constant (≈ ×1.016) would correct it across the whole pace range.
  • The Atlas is accurate in the mid-range but its error tilts with pace — a single constant can’t fix that; you’d need a small pace-dependent curve.

Neither is “wrong”; they just carry different systematic biases. And you only ever see that bias when you can line up footpod speed and belt speed sample-by-sample — which is exactly what OBB records.

Reproduce it on your own runs — with OBB’s AI journal

Section titled “Reproduce it on your own runs — with OBB’s AI journal”

Here’s the part I want to highlight, because it’s the whole point. I didn’t write a bespoke analysis script and wrangle CSVs by hand. OBB ships an on-device AI journal: a small local HTTP API, on your own WiFi, that exposes your workouts and their per-second samples to an AI model you choose (BYOM) — nothing leaves your phone. I pointed a model at it and asked.

If you run OBB with a treadmill that broadcasts FTMS speed, you can reproduce this whole study on your own data with a prompt like:

Using my OmniBandBridge AI journal, take my most recent treadmill workout that has both
footpod speed and treadmill (FTMS) speed.
Split it into segments of constant treadmill speed. Discard segments shorter than 30 s and
the first 5 s of every segment (the footpod lags a speed change).
For each remaining segment, report: treadmill speed (km/h and mph), mean footpod speed, the
calibration factor (footpod ÷ treadmill), cadence, and whether it's walking or running.
Then give me the duration-weighted factor for walking, for running, and overall — and tell me
whether my footpod reads consistently or drifts with pace.

The model reads the samples over the LAN, does the segmentation and the arithmetic, and hands back a table like the ones above — for your shoe, your treadmill, your stride. That’s the difference between “the app shows you charts” and “you can ask your data a question.”


Want to try it? OmniBandBridge is a free Android app — footpod mode, live RSC/FTMS/HR re-broadcast to Zwift and treadmills, personalized metabolic power, full workout export, and the local AI journal. See Getting started.