Concept 2 SkiErg (or Indoor Rower) on TrainerRoad

Last winter I asked if anyone had used TR and applied it to nordic skiing. In that thread I had mentioned possibly getting a SkiErg in the future.

At the end of the ski season I did end up buying a Concept 2 SkiErg. I’ve got 165 km on it sporadically over the spring and summer. Now that my last big summer event is over, I’ll be turning my attention over to the American Birkebiener.

To that end, I also let my recovery week be my nerd week and used a few reference pages on the internet to get a C2 PM5 (the erg computer) to broadcast power on Ant+ using a Raspberry Pi and then extended it a little bit further to broadcast speed as well.

So as my first post Marji Gesick workout, I did West Vidette -1 on my SkiErg on TrainerRoad. I’m going to need to adjust my FTP though as my SkiErg FTP is definitely NOT as high as my bike FTP.

Its definitely at the proof of concept stage here, but it worked surprisingly well. I’ll still likely be doing plenty of skiing out side as technique is a huge component as well, but this will give me some focused ski specific strength numbers to work off.

Workout on TR


Interesting idea. Have you tried doing a ski specific ramp test to set your zones? I have thought about this before for an indoor rower but wasn’t sure how it would play out in reality.

This is so cool! I would love to connect my ski-erg to TrainerRoad. Where did you read about how to do it?


agree awesome stuff! please share any resources you found during your nerd week :slight_smile:

Did you need an ant+ stick for the pi?

I’ve done power zone workouts on my concept2 rowing erg but never broadcasted them to TR.

@stickmandj - I have not yet tried a specific FTP test exactly. I have done a couple of 1k and 5k TTs in the past that were a reasonable approximation of a 20 minute test. 10 min easy warm up, 1k TT (<4 minutes), 10 minutes easy, 5k TT (~22 minutes), lay on the concrete basement floor and try not to die. I may try a ramp test this evening…

@matthewbartlett, @renschler - This is the primary resource that I used.


Unfortunately for me it did not work out of the box. I’m not certain if it was the Pi Zero I tried to use initially (now running on a 3b+) or something else. The image was also with an Italian keyboard setting and I didn’t work too hard to fix the keyboard so I could try to troubleshoot the application.

In the end I followed the instructions to install all of the prerequisites, and then had to do additional troubleshooting as not everything seemed to be compatible anymore and the instructions are somewhat incomplete. After that I modified it a bit to get cadence added to the power message and implemented a speed sensor message.

I will try to get things a little more stable and make sure my speed sensor is actually working correctly and then I could post up some updated instructions to help others out.


First time doing a ramp test that wasn’t erg mode. I first bumped my FTP manually down to 190 based on one of those 5k TT’s mentioned previously. Failed at the math bit though and it really should have been 182…

Anyhow, did the ramp test which was just loads of fun. It definitely takes more concentration not in Erg mode. I was also making a few quick adjustments to the damper along the way to up the resistance towards the end. Good times. Thankfully I have a chair in there now so I didn’t have to lay on the concrete floor when I was done.

And my SkiErg FTP? 182.

Ramp Test


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?