Concept 2 SkiErg (or Indoor Rower) on TrainerRoad

Have had a play around with this on the rower, my take is that the power curve is a little steeper than in cycling. I.e. there is a bigger drop off from 20 minutes to 60 minutes than the 95% that is used in cycling. That’s a sample size of N=1 of course, but I think I’m a reasonably good subject, I spent 7 years rowing at a high university and club level. A few reasons I could think of why that might be:

  • The lower cadence in rowing leads to more muscular fatigue
  • Rowing is less efficient (you’re not applying any power during the recovery part of the stroke) and that inefficiency leads to a sharper drop off in power over time
  • Rowing uses more muscles than cycling, which allows you to generate relatively more power over shorter anaerobic efforts, but less over longer aerobic efforts
  • Could just be mental. I spent years doing 2000m and 5000m tests in rowing, very occasionally a 30 minute test, but anything longer than that was always either steady state or broken up into intervals so maybe I’m simply not used to going at my limit for 60 minutes. Whereas in cycling I do TTs, hill climbs, triathlons, etc and so am fairly accustomed to working at high percentages of threshold for longer durations

Interesting food for thought. I certainly don’t have enough experience to have an intuitive understanding of my power curve.

A quick googling and this article looks like it might have some interesting information on rowing critical power curves based on Concept 2’s record data.

Of course I am SkiErging which may also have its own differences being a weight bearing version.

That’s a nice find. I browsed through the article, but did not find any information on how to access the data (except the displayed plots). The last plot basically contains the main information, but is only for a max duration of 16 minutes.

I’m not sure if they just pulled the records from here or if they did something else. I’ve poked around a little on the Concept 2 logbook to see if I could pull anything other than the records or my own data and haven’t found it thus far.

I’ve done two “endurance” workouts now and have found them slightly harder than what I would expect for that type of workout. Some of that could be just lack of recent erging causing fatigue, or that power curve could be steeper as you said.

Tonight is “real” skiing with roller ski intervals outside with my team. I’m going to try a sweet spot workout on Friday I think.

1 Like

OK, here are some high level instructions that should work. They are far from efficient (probably don’t need the full Buster distribution nor update the whole thing in step 2 (that takes a long time)). The instructions also assume some level of proficiency at knowing how to setup a Raspberry Pi and navigate around Linux.

These instructions do NOT include the speed sensor. My hack appears to be working, but I’m not confident enough in it to share it at this time.

**Setup Insructions**
  1. Install Raspian Buster w/ desktop and recommended software
  1. Configure Raspian for internet

Put wpa_supplicant.conf file on boot drive, ensure Unix line ends



To run headless add empty file named ssh in boot drive

  1. Update distribution

sudo apt-get update
sudo apt-get dist-upgrade

  1. Get PyRow

git clone

  1. Get vpower

git clone
cd vpower
sudo pip install -r requirements.txt
cd …

  1. Get python-ant

git clone

Fix driver error via this:

Make change on line 197 or src/ant/core/ before doing the install

cd python-ant
sudo python install
cd …

  1. Make a directory to run the bridge from

Copy the following files there:,, and from PyRow
All *.py files from vpower
vpower.cfg from vpower from

Make a directory for log files.
Modify line 74 to point to the log directory created

  1. Create udev rule for Ant+ stick

SUBSYSTEM==“usb”, ATTRS{idVendor}==“0fcf”, ATTRS{idProduct}==“1008”, RUN+="/sbin/modprobe usbserial vendor=0x0fcf product=0x1008", MODE=“0666”, OWNER=“pi”, GROUP=“root”

  1. Create udev rule for C2 PM5

KERNEL==“hidraw*” SUBSYSTEM==“hidraw” MODE=“666”
KERNEL==“hiddev*” SUBSYSTEM==“usbmisc” MODE=“666”

  1. Modify update function in

Line 46, add rpm arg defaulting to 0xFF
def update(self, power, rpm=0xFF):

Line 58, send rpm argument
payload += chr(rpm)

  1. Modify to eliminate adjustments

Line 68 and 69

  1. Reboot

  2. Plug in Ant+ stick and connect PM5 to Pi

  3. RUN

sudo python

sudo may not be required if we’ve configured the USB devices correctly

  1. Start erging with power and cadence transmitted over Ant+

That is great work, and well done on the subsequent ramp test. Your “weight bearing” point about the SkiErg was also particularly insightful.

I will be working on the rower over winter as well as tackling SSB low volume on the trainer. I will be interested to observe the power curve differences between the bike and the rower. Having come off my best season road cycling I am trying to carry that form through the winter and have tried to maintain my volume of training timewise on the rower. I have therefore done more longer pieces including a HM, and quite a few hour pieces. I was surprised that I found it much easier to build up the courage to do a full-on attempt at the hour on the rower… still haven’t done that on the bike yet, preferring the 20min test outdoors and the ramp test indoors to work out FTP.
I’d love to be able to get my C2 to talk to my TR app but I understand that such a #feature-request, although on the radar, doesn’t fit strictly with the TR business model

If you have a PM5 monitor and iOS, your C2 can indeed talk to your TR app. (Maybe also true on android. Don’t know.) You just need to wirelessly connect your C2 to a CABLE, a Bluetooth/ANT device that is, confusingly, not a cable at all. You can find it here: ). Once your C2 is paired with the CABLE, your TR app will recognize it as a power meter. You can do a ramp test on your C2 and then use that FTP for all of your C2 workouts. I’ve been following TR for both my rower and my SkiErg and has had tremendous results.

1 Like

@mcneuen if you have a PM5, and you don’t have that device, will it broadcast power over ANT+? Like if I just wanted to pair it with my watch?

…Bad answer deleted… see below.

Oh no wait. I’m sorry. My answer was wrong. The power data does NOT seamlessly broadcast. There is an app at the Connect IQ store called ErgIQ that appears designed for this purpose, but the reviews are brutal. Sorry for my mistake. Deleting my wrong response now.

1 Like

I just used a helper app called RowedBiker from the App Store, running on an iphone to bridge the concept2 PM5 to TrainerRoad and sufferfest running on an iPad. Worked flawlessly.


I was looking into creating a “swimerg” out of a concept2 rower by building a modified bench i would lay on. However, got a hint from someone that the concept2 rower has a very high tension(?) where it would be too hard to pull in a swim form (similar to a Vasa) even with the lowest resistance setting. Does the SkiErg have different resistance than a rower?

This looks really good and may be exactly what I needed. Thanks for the hint!

Trying to replicate what you’re doing. I’ve connected my C2 via Bluetooth to RowedBiker. How does RoadBiker connect / sync to TrainerRoad?

Do you have a plan to convert the C2 to use two arms vs one row handle?

As of now, I don’t. I would have to build a bench that would allow a horizontal sweeping motion underneath. Or, do the upright conversion making a skierg our of the rower. That will essentially gives me the sweeping motion parallel to my body, just vertical while I’m standing.

Like this -

It’s a bit annoying. I’ve only been able to make it work across two devices. So the iPhone runs RowedBiker and then run TrainerRoad on the iPad. The iPad will see a power meter called “iPhone”

I guess I may use the Cable hardware that another person replied with above. That’ll translate the Ant+ info into BT for TrainerRoad. Is TR worth it for rowing? Or should I use another app?

I personally find it really good for rowing. Motivating and the structure really helps me out.

I’ve put in about 100 hours on the rowing erg this year, and just added he skierg as I head into my post-bike racing future.

The ranges of motion and muscle recruitment as so different from cycling that I think it’s best to go Seiler and just look at HR on the ergs. I use ErgData and let everything go to Strava, then

You can structure workouts by pace/500m and HR, but trying to futz around with the power curves to get accurate IF and TSS is more of a pain than it’s worth, in my view.

Dropping everything into a platform that would look at HR for cross training and power for cycling would probably be the more low-maintenance route. So use TR for the bike, and something else for all three together?