upload.bike turns indoor bike CSV files into TCX for Strava, Garmin
Connect, TrainingPeaks, and Golden Cheetah.
What is a TCX file?
TCX is Garmin's workout format: a second-by-second log of power, heart
rate, cadence, speed, and distance. Strava, Garmin Connect,
TrainingPeaks, and Golden Cheetah all take it.
Indoor bikes don't write TCX. They write CSV, and those platforms won't
read CSV. upload.bike reads the CSV and saves a TCX they'll accept.
Supported Equipment
If your bike exports a CSV with power, cadence, heart rate, and distance, it can probably be added. Already supported:
Schwinn MPower Echelon (3 firmware variants)
Stages Indoor Cycles
The Sufferfest
Wahoo SYSTM
NordicTrack Studio Cycles
PRO-FORM iFit
Don't see your bike? Email your CSV to upload.bike@gmail.com and I'll take a look.
The Physics Model: Fixing Bad Speed and Distance
Lots of indoor bikes don't measure speed and distance, they estimate it
from wheel RPM or resistance. That estimate can be way off, so your ride
lands on Strava with the wrong distance, speed, and calories.
The physics model throws out the bike's numbers and works from your power
(watts) and your weight (rider plus bike), using the same forces that
slow you down on the road:
Aerodynamic drag: ½ × Cd × A × ρ × v²
Rolling resistance: mg × Crr × cos(θ)
Drivetrain efficiency: 97% power transfer
Every second it asks the same question: at this power and this speed,
how fast are you going now? Distance just adds up from there.
See it in action
The chart below is a real 73-minute ride on a Schwinn MPower Echelon 2.
The bike logged 21.5 miles. Run the same power through the physics model
and you get 23.8 miles, about 11% more. The bike's distance drifts as the
ride goes on, and on the easy sections the console barely updates at all.
The speed numbers are where it really falls apart. The bike claims a top
speed of 78 mph with the line jumping all over the place. No one is
holding the watts it would take to go 78 mph on a trainer, so that figure
is fiction. The model puts the peak at 32 mph, which is what the power
actually supports. When the reported speed jumps around like this, it
usually means the console is guessing distance from cadence instead of
measuring it.
Drag the mass slider to see how rider weight changes the modeled speed.
Rider + bike mass:
Loading sample data...
Bike reported
Physics model
Difference
Fix Timing: Interpolation for Compatibility
Some bikes only log a point every 3, 5, or 10 seconds. The bike's screen
doesn't care, but Strava and Garmin Connect want one point per second.
Those gaps can throw off your duration, leave holes in the charts, break
segment matching, or fail the import outright.
Fix Timing (on by default) fills the gaps back to one point per second
with a cubic spline. If you were at 200W at second 0 and 210W at second
5, it draws a sensible line through seconds 1 to 4. You get a clean file
that imports cleanly.
Getting Your CSV File
Schwinn MPower Echelon
Insert a USB thumb drive into the slot at the top of the console
Do your workout
Stop pedalling
Press and hold AVG/MAX for 5 seconds
Wait for the flashing USB logo to stop, then remove the drive
The drive contains a file named something like MPower12.csv
Both export CSV. Look under workout history or activity settings for the
export option.
USB drive problems? Some Schwinn consoles choke on newer thumb drives. A
1GB drive usually works. If the USB logo won't flash or the console shuts
off, swap the drive.
Bike models and firmware versions all write CSV a bit differently. If
yours won't load, email it to
upload.bike@gmail.com and I'll
add support.
Distance looks wrong in Strava
Turn on Fix speed and distance and enter your weight. That swaps the
bike's guess for a number worked out from your power. More in the
physics model section above.