FTMS Explained: How Smart Treadmills Talk to Apps
A plain-English guide to FTMS — the Bluetooth standard your smart treadmill uses to broadcast speed, incline and HR data, and accept incline commands from apps like SummitRoom and Zwift.

Every modern smart treadmill — NordicTrack, Peloton Tread, Bowflex, Sole, Echelon, and a long list of others — speaks the same Bluetooth language under the hood. That language is FTMS.
If you've ever wondered:
- Why does the SummitRoom (or Zwift) app know my treadmill's speed?
- How does the app change my incline mid-run without me touching the console?
- Why does my treadmill say "FTMS" in the manual?
This is the post for you. No EE degree required.
What FTMS stands for
Fitness Machine Service — a standardized Bluetooth Low Energy (BLE) profile published by the Bluetooth SIG. It defines exactly what data a fitness machine broadcasts, in what format, and what commands an app is allowed to send back.
Think of it like USB-C: before USB-C, every device had a different cable. Before FTMS, every treadmill brand had its own proprietary Bluetooth protocol — Peloton's app only worked with Peloton hardware, and so on.
FTMS standardized that. Today, if your treadmill advertises FTMS, any compatible app can connect to it.
What the treadmill broadcasts
Every ~250 ms while you're running, your treadmill pushes a small data packet over BLE containing some combination of:
- Speed (km/h, to one decimal)
- Average speed
- Total distance
- Inclination (% grade)
- Elevation gain
- Pace (instantaneous + average)
- Heart rate (if a HRM is paired to the treadmill)
- Cadence (steps/minute, if supported)
- Resistance level (rare on treadmills, common on bikes)
- Energy / METs
- Time elapsed + remaining time
The FTMS spec calls this the Treadmill Data Characteristic (UUID 0x2ACD). Apps read it continuously and that's how SummitRoom knows your live speed without you typing it in.
What the app can send back
Two-way is where it gets fun. The app can send commands via the Fitness Machine Control Point (UUID 0x2AD9):
- Set target speed — "Go to 12.4 km/h."
- Set target incline — "Set incline to 6%."
- Set target speed AND incline simultaneously.
- Start/Stop the belt.
- Pause / Resume.
- Spin down (calibration request).
- Target heart rate — "Auto-adjust speed to keep me at 158 bpm."
- Target power, target cadence (mostly bikes).
This is the magic behind auto-incline simulation. When you're running a route through Central Park on SummitRoom, the app reads the route's elevation profile, computes the current grade, and pushes that grade to your treadmill via the Control Point. Your treadmill physically tilts. You're climbing Cat Hill.
No console-tapping required.
How do I know if my treadmill has FTMS?
Three ways:
- Check the manual or product page. Look for "FTMS", "Bluetooth FTMS", or "Fitness Machine Service". Some brands market it as "smart workout app compatibility".
- Open SummitRoom (or Zwift) and try to connect. If the treadmill shows up in the scan list, it's FTMS.
- Use a free BLE scanner like
nRF Connect. If the treadmill advertises service UUID0x1826, that's FTMS.
Treadmills made after ~2020 almost always support it. Older treadmills (2015–2019) often have proprietary apps but no FTMS. Pre-2015 = manual mode only, sorry.
Common FTMS gotchas
A few things that trip people up:
"It connected but the app shows speed 0.0"
Usually means the treadmill is advertising FTMS but the Treadmill Data Characteristic isn't enabled. Hit Start on the treadmill console first — most treadmills only stream data while the belt is actually moving.
"I can read speed but the app can't set my incline"
The Control Point is optional in the FTMS spec. Some manufacturers ship FTMS-read-only firmware to cut testing time. Check your treadmill's docs for "FTMS Control" or "Two-way FTMS".
NordicTrack iFit treadmills are a notorious example — they read FTMS just fine but the Control Point is locked to iFit's own app. There's no workaround.
"It connects to one device at a time"
Right. BLE is a 1:1 connection. If your treadmill is paired to your watch, your phone can't connect simultaneously. Disconnect from one before opening the other.
"The connection drops mid-run"
Usually one of:
- 2.4 GHz interference from a microwave, Wi-Fi router, or even baby monitor.
- Phone went to sleep. Disable battery optimization for the running app.
- Belt friction caused a brief power dip, resetting the BLE module. Sturdier treadmills are less prone to this.
Why FTMS matters for you
If you're shopping for a treadmill in 2026 and you want it to work with any modern app — SummitRoom, Zwift, Kinomap, FulGaz, BitGym — make sure it explicitly supports two-way FTMS, not just FTMS broadcast. Read-only FTMS gives you live stats in the app but you can't get auto-incline. That's a huge feature loss for virtual route running.
If you already own a treadmill and you're not sure: try a SummitRoom Free Run (no signup needed) and see if it offers to connect via Bluetooth. If it does, you have FTMS. If incline updates automatically as you progress through the demo route, you have two-way FTMS — the good kind.
TL;DR
- FTMS = the open Bluetooth standard for fitness machines.
- It broadcasts speed/incline/HR data, and (optionally) accepts speed/incline commands.
- Most post-2020 smart treadmills support it.
- Two-way FTMS is required for auto-incline simulation during virtual route runs.
- iFit/NordicTrack treadmills technically have FTMS but lock the control point.
It's the reason your treadmill suddenly works with apps it's never heard of. And it's the technology that makes "running Cat Hill on your basement treadmill" actually feel like a hill.
Try SummitRoom yourself
Turn any treadmill into a virtual run through Disney, Boston, Pikes Peak. Free to start, no install.
▶ Try the 1-minute demo