defaults on macOS Can Break Otherwise Usable plist Files

Today I learned that the defaults(1) command on macOS can break otherwise-parsable plist files.

I found this when trying to change selectedThrottleIndex in the Arq config (~/Library/Arq/config/app_config.plist) to adjust a bandwidth usage setting. I didn’t have access to the GUI, wanted to change things from CLI, and whoops! After changing this things broke.

Consider this… First I read out the setting with defaults read ~/Library/Arq/config/app_config.plist selectedThrottleIndex, then set it with defaults write ~/Library/Arq/config/app_config.plist selectedThrottleIndex 2, then read it again to verify the change. All looked good, so I figured I was done and I let things bake.

Upon getting physical access to the machine and launching the GUI, I found that Arq was no longer activated, needed my license info again, and then (uggh!) had lost my configuration. This was fixed by first restoring the whole of ~/Library/Arq from Time Machine, launching Arq, browsing to the backup destination, and clearing it’s cache. After rescanning the destination all was good.

So, why did it happen? Well, it turns out that Arq uses a headerless XML-ish text file with the suffix .plist. Even though it’s not in the same format as plutil(1) outputs, defaults(1) will still read it and modify it… But the resulting file is a plist binary! It seems that Arq only likes to parse its format (note: I did not exhaustively test this — plutil(1)‘s xml1 format may work), so upon seeing the binary version it the program presumed no config and started over. Whoops! Interestingly, the defaults(1), plutil(1), and pl(1) commands will all happily parse the Arq format file.

Note that after launching Arq with the broken config and re-adding the license, restoring just the app_config.plist file didn’t make things better, which is why I jumped right to restoring the whole ~/Library/Arq directory. There must be some config caching somewhere or so…

Garmin Edge 130 (vs Edge 520) First Impressions

IMG_0027.jpg

Back in 2011, when I was thinking about trying Lumberjack 100 for the first time, I bought a Garmin Edge 500 so I could log data and use heart rate zones for training. This worked out very well, and over the years I’ve iterated through of other Garmin units, including the Edge 510, 520, and now the new Edge 130. After years of acquiring increasingly complex units I recently switched to the less-featured unit (the Edge 130), finding that it covers everything I need, with some nice upsides over the 520. It’s a great computer for my mixed mountain / gravel / dirt / road riding, including the same, basic, line-following breadcrump route support that’s gotten me through self-navigated events like Barry-Roubaix and Marji Gesick.

First, the upsides. This unit has a higher resolution black and white screen which looks remarkably good in direct sunlight; much better than the color 520. The unit itself is quite a bit smaller (41 x 63 x 16 mm) than the Edge 520 (49 x 73 x 21 mm) which fits better on my stem mounts. I think the all-dark-grey color of the housing blends in with a bike better. The unit also feels like it responds faster to button presses. While this may just be the faster-updating display, it’s nicer when flipping through data pages.

Now, the downsides. While there are fewer features (no base map, can’t have as many data fields on screen at once — all well covered elsewhere), none affect my general use of the unit, but are worth mentioning. All are as of v2.20 firmware, and the software quirks will be changed:

  1. Zones (heart rate and power) must be defined using Garmin Connect; they cannot be configured in the unit itself.
  2. It is not possible to rename sensors. This means I can’t name a bike’s speed/cadence senors after the bike, which can make things a bit confusing if I have multiple sensors active in an area and I want to be sure the unit is currently listening to the right one.
  3. The rubber cover for the microUSB connector feels a little flimsy. It effectively rotates on a small piece of rubber and as someone who plugs in my Garmin after every use I have concerns for how long it’ll last.
  4. Some of the fonts seem a bit small, leaving a bunch of extra white space (particularly Heading as seen above). They are still readable, just small.
  5. The unit prompts for ride type (Mountain, Road, etc) after each ride. You can’t select a ride type by default, although it does default to the last option. (Just something more to choose when saving.)

Outside of the display and size, the biggest difference between the 130 and 520 is the data fields each can display. While both units will record from the usual speed/power/heart rate sensors, they vary quite a bit in what each will display. Here are the data fields that the 130 and 520 will display (some names edited from official Edge 130 documentation so they’d align with the Edge 520 names):

Battery Level · Battery Status · Beam Angle Status · Cadence · Cadence – Avg. · Cadence – Lap · Calories · Dist. – Lap · Dist. to Dest. · Dist. to Next · Distance · ETA at Destination · ETA at Next · Elevation · Grade · HR – %Max. · HR – Avg. · HR – Lap · HR Zone · Heading · Heart Rate · Laps · Location at Dest. · Location at Next · Odometer · Power – 3s Avg. · Power – Avg. · Power – Lap · Power – Max. · Power – kJ · Power Zone · Speed · Speed – Avg. · Speed – Lap · Speed – Max. · Sunrise · Sunset · Time · Time – Avg. Lap · Time – Elapsed · Time – Lap · Time of Day · Time to Dest. · Time to Next · Total Ascent · Total Descent

Here’s the additional fields the Edge 520 will display:

Balance · Balance – 10s Avg. · Balance – 30s Avg. · Balance – 3s Avg. · Balance – Avg. · Balance – Lap · Course Pt. Dist. · Dist. – Last Lap · Dist. to Go · Front Gear · GPS Accuracy · GPS Signal Strength · Gear Battery · Gear Combo · Gear Ratio · Gears · HR – %HRR · HR – Last Lap · HR Graph · HR to Go · Light Mode · Lights Connected · PCO · PCO – Avg. · PCO – Lap · Pedal Smoothness · Power · Power – %FTP · Power – 10s Avg. · Power – 30s Avg. · Power – IF · Power – Last Lap · Power – NP · Power – NP Lap · Power – NP Last Lap · Power – TSS · Power – watts/kg · Power Phase – L. · Power Phase – L. Avg. · Power Phase – L. Lap · Power Phase – L. Peak · Power Phase – L. Peak Avg. · Power Phase – L. Peak Lap · Power Phase – R. · Power Phase – R. Avg. · Power Phase – R. Lap · Power Phase – R. Peak · Power Phase – R. Peak Avg. · Power Phase – R. Peak Lap · Rear Gear · Reps to Go · Target Power · Temperature · Torque Effectiveness · Trainer Resistance · VS – 30s Avg. · Workout Step

Most of these are around in-depth training with power, leg balance, support for electronic shifting, and other metrics that I don’t use. Therefore, nothing is lost moving away from the 520. Temperature — which is still recorded — is the only one that might be handy, but in my experience Garmin’s temperature readings seemed to be a bit off and didn’t really map to how it feels, and I definitely didn’t need it as an on-device data point during rides. (See the Edge 130 Manual Appendix and Edge 520 Manual Appendix for more information on what each field means.)

All said, I’ve had no problem configuring the Edge 130 to display the same screens as my Edge 520, resulting in the same functionality. Even nicer, on the 130 I can choose to not show the elevation chart; something that I’ve never found myself using and had to flip past on previous units. Here’s how I have the different display pages set up:

Page 1: / Six Fields: Timer, Speed, Distance, Time of Day, HR Zone, Heading

Page 2: / Four Fields: HR Zone, Cadence, Timer, Heading

Page 3 / Three Fields: Timer, Time of Day, Sunset

Page 4 / Map: No Fields (Map only, shows breadcrumb / loaded course.)

Thus far I’m happy with the unit; happy enough that I’ve sold my Edge 520.

For more specifics on the Edge 130, please check out both the excellent Garmin Edge 130 In-Depot Review by DC Rainmaker and the Garmin Edge 130 product page.

Titanium Frame Caused Garmin Speed Sensor Issues?

IMG_8944.jpg

For a couple of years my main XC bike (2014 Salsa El Mariachi Ti) has had issues with my Garmin bike computers (Edge 510, 520, and 130) pausing mid-ride when I wasn’t actually stopped. This shows up as the head unit briefly flipping to a paused symbol (⏸), before returning to recording. Post-ride, when reviewing data in rubiTrack, the red callouts on the route indicate the pause locations and show they’d last for a couple of seconds. While I couldn’t reliably reproduce the pauses, they seemed to happen whenever I’d stop pedaling. It seemed to be more common when on tight/twisty trails where GPS positioning is spotty, but it’d also happen while moving at 10-20 MPH on straight, clear-sky areas. It almost seemed like the Garmin was choosing to pause when I stopped pedaling, an indicator that maybe the computer wasn’t aware the speed sensor was still moving.

On all of my bikes I have the Garmin Bike Speed Sensor fit around the rear hub and computer set to autopause when stopped, but the problem only happened on the El Mariachi Ti. It did not happen when using the older Garmin GSC 10 magnet/reed switch speed sensor which mounts to a chainstay. It also doesn’t happen on either of the steel (El Mariachi SS or Vaya) or carbon fiber (Mukluk or Camber) bikes, so I accepted it and figured the problem to be the wheel speed sensor. After acquiring an Edge 130 bundle I tried the new wheel speed sensor, but the problem persisted and got me thinking…

The solution ended up being simple: move the speed sensor to the front wheel. On an A/B test at River Bends Park where I did one lap with the sensor on the rear wheel, then another two with it on the front, the issue didn’t stopped appearing when the sensor was on the front.

Thinking it through I can only conclude that the problem was caused by the frame material. The sensor is detected by the head unit and seems to work fine the time, but perhaps the signal is sufficiently degraded that connectivity is sometimes lost. I suspect that then the unit falls back to pausing based on GPS signal + pedaling.

garmin_speed_sensor_el_mariachi_ti_rear_wheel.png

Sensor on Rear Wheel (Problems)

garmin_speed_sensor_el_mariachi_ti_front_wheel.png

Sensor on Front Wheel (Problem Solved)

A Surprising Little Pump

Wanting to reduce the size of the tools carried on the Vaya I went looking for a new pump, and what I found surprised me: the diminutive Mobo Pocket Air Pump (4″). Despite being marketed by a company that seems otherwise known for low-cost and kid-branded recumbents, this seems to be a quality pump for MTB and gravel road emergency use.

Looking for a small emergency pump my primary requirements were functionality and size, followed by the amount of time it’d take to inflate a tire. I have tubeless setups on all my bikes, which tends to be pretty reliable. Flats are pretty rare, so when they do happen I’m okay with taking my time installing and inflating a tube. Being something that’ll be packed away for non-routine use I’d prefer the emergency gear to be small and reasonably light. The Mobo pump seemed like it might be too cheap to work well, but just about $20 (via Amazon) I figured I’d give it a go.

Ideally I’d like to be able to fit a tube, multi-tool (including chain tool), pump, and a car key inside of a small seat bag. With this pump I think I’m on the way, as it had no problems fitting into a slightly-older, small-sized Timbuk2 saddle bag along side a Crankbrothers M17 multi-tool, with plenty of room to spare. Along with a bottle cage mount it ships with a nice brass Presta to Schrader adapter and sports ball inflation needle. The inclusion of an adapter is good, because the pump itself is Schrader-only. Thankfully packing either the stock adapter or an aluminum one into the bag isn’t a big deal.

Inside the expectedly cheesy (but well packed) box is a solid-feeling pump that measures in at 3-7/8″ long, 7/8″ diameter at the body, and 1-1/2″ across the pump head. At 56g it’s lighter than a 16g CO2 cartridge, and right about the same size as a cartridge + valve head. Somewhat to my surprise it has a very nice, light, smooth pumping action and check valve sound. Basic tests in my basement showed to work reasonably well.

My first test was inflating a 700 x 35-43c Kenda tube from flat to shape, as one would do before fitting it into a tire. This took 42 pumps — none of which required any notable effort — and took well under a minute. The second test was inflating the front wheel from my Specialized Camber, a 30mm internal width rim fitted with a 29 x 2.3 Specialized Purgatory tire, from atmospheric pressure. After pumping for four minutes the tire had 22 PSI, which is my normal front tire pressure for rocky trails. Finally, the third test was re-inflating the Vaya’s front wheel — a WTB KOM i23 rim and 700 x 38c Specialized Trigger tire set up tubeless — from atmospheric pressure to 43 PSI. This took a total of around six minutes, with some pauses sprinkled in as my arm got tired. Nearing the final pressure the pump got fairly hard to press, leading me to believe that the claimed 100 PSI maximum is probably more a technical than functional limit. Getting a wheel to 100 PSI with this pump would be… a challenge.

Sure, four minutes for an MTB wheel and six minutes for my road bike is a while, and the low volume won’t be re-seating any tubeless tires, but as an emergency pump this should be fine to get one rolling again. While some folks prefer CO2, as a one-shot item I’d want to carry a pump as a backup… Being small enough to tuck in a saddle bag with other parts, and right about the same size and weight as a CO2 cartridge, but multi-use. It’s what I plan to pack into a seat bag on future rides. While I hope it works when I need it — and seems like it will — needing to use a pump in the middle of a ride is something no one wants.

What’s In My Pack? (2018 Edition)

Back in 2012 I wrote What Do I Carry When Riding My Bicycle? to show what I carry to be prepared for long mountain bike rides with a pack. Six years and some refinement and reduction later, it’s time for an update.

I like to do longer — but single day — rides, summer and winter, on any kind of MTB from XC to trail to fat bikes. My gear tends to stay the same for everything from an endurance race to a long day on dirt roads linking together parks, back country rides during a road trip to the typical after-work roll around a suburban park. None of these require the bike packer-level of supplies, but feeling assured that a surprise situation will be manageable does require a bit of planning. Since water and primary food (typically ERG! Energy bars and Infinit Nutrition mix) varies by ride I won’t be covering it here, but my pack and pockets have plenty of room for extra drink mix and food.

Almost everything I carry is because it was needed at some point in the past, and I like knowing that my gear is consistent between rides. When doing MTB rides I almost always wear a pack, only leaving it behind during shorter races where I’m trying to be competitive or rides where I’m okay with walking out should something happen.

My current pack is an Osprey SYNCRO 10 in Velocity Green color, M/L size. This is a high vis yellow/green that I chose because it both helps me be seen and it stays cool in the sun. Having a thin metal frame and mesh back keeps the pack away from my body which keeps me cooler in summer avoids a sweaty back in winter. A replacement badge from the Sport model Road ID is slipped over the elastic on the upper part of the left strap near my head, providing easily-visible identification and emergency contact info.

While many folks are moving to frame bags and waist packs, I’ve stuck to a pack because it allows me to carry a lot of water, easily transition gear between bikes, and it doesn’t rub on the frame. Frame packs seem like a great option and work out well for many folks, but as of now they just aren’t for me.

Here’s the two setups, summer and winter, tiered to show how things are packed:

Default / Summer MTB Pack:

  • 6″ x 5″ Nylon Zippered Pouch (Amazon Link)
    • Cable (Zip) Ties: 4x each thin/short and wide/long.
    • Nitrile Gloves: 2x, in small plastic bag.
    • Spare Derailleur Hanger(s): One for each bike style.
    • Cash: 1x $20, 1x $10, 2x $5, 3x $1, in small plastic bag.
    • Glue-Type Patch Kit: In plastic storage box.
      • Tick Key
      • Quick Links: 3x 11 speed, 1x 10 speed, 1x 9 speed, 1 link single speed chain.
      • Folded Paper Towel: Prevents rattling and rubbing, for cleaning tube before patching.
    • Presta to Schrader Adapter
  • Lezyne Sport Drive HP Pump
    • 4′ of 3″ wide black Gaffer Tape: Wrapped around pump body.
  • Tools in Cotton Sock: Prevents rattling and rubbing, doubles as rag.
  • Spare Tube(s) in Cotton Sock / Rag: Prevents rubbing, doubles as rag.
    • Q-Tubes Super Light: 29 x 1.9″-2.3″ for XC/trail bikes, 26 x 2.4″-2.7″ for fat bike.
  • LOKSAK aLOKSAK: 4″ x 7″
    • Phone: Google Pixel 2
    • Driver’s License / Credit Card
    • Toilet Paper
  • Fox 40 Micro Whistle: Pealess, won’t freeze in winter.
  • CamelBak Antidote Reservoir: 3L, aka bladder.
  • Emergency Food in Plastic Zip Top Bag, about 500 calories.
  • House/Car Keys

Winter-Time Changes from Default:

  • No bladder for water; it freezes. Insulated bottles on bike instead.
  • Remove derailleur hanger and tubes for summer bikes.
  • Mylar Emergency Blanket
  • Little Hotties Adhesive Toe Warmers (2x)
  • Extra gloves, head covering, and jacket, depending on conditions, planned length and effort of ride, location, etc.

This all has worked out well for me, being able to handle situations from cut tire sidewalls to puncture flats, broken chains and derailleurs to detached front brake cables.

Pogie Retention: ODI Aluminum End Plugs and Nylon Spacer

Over the years I’ve gone through a few different iterations of bar end plugs for the elastic found inside of pogies such as Moose Mitts and Relevate Designs’ Williwaws. While many of these pogies can be used with the elastic wrapped around the grip, I find this a bit uncomfortable and these iterations happened as I tried to get to something better. Previously attempts were a couple variations on road-type screw-tight bar end plugs with a stack of washers, but after one of these became stuck in my carbon bars during a crash on ice I went looking for something simpler and more robust. I also wanted to avoid the thin washers, as a glancing blow from one during a fall could easily result in a cut.

Shown above is my latest attempt, made from two off-the-shelf parts:

  1. ODI Aluminum End Plugs (Amazon: $15.67)
  2. .531 x .870 x 3/16 Nylon Flat Washers (Lowes: $1.28, P/N 423512, Photo)

This setup meets the following requirements and should be an improvement on previous designs:

  • Easily removable, such as with a screw to tighten / remove.
  • Resistant to being driven into the bar or bending during a crash or bike falling over in the wind.
  • Must not have a sharp or narrow edge that could cut the rider.
  • Compatible with a variety of bar wall thickness; including thick-walled carbon bars such as the Salsa Salt Flat.

To put it all together I disassembled the ODI plug (photo), slipped the nylon washer over the body of the plug (photo), reassembled the plug, then inserted the plug into the bar and and tightened it down like normal. The washer is perfectly sized to set in the recess in the bar end plug while spacing it out from the end of the grip/bar. This ensures there’s a slight gap left for the elastic (photo), keeps the plug from hammering in during a crash, and the rounded bar edges of the plug should minimize injury. It’s also just large enough that it cannot slip past the expander wedge of the bar end plug, which should make removal extremely simple.

Prior to this I’d tried the ODI plugs without a nylon spacer, leaving them set a little ways out from the bar (photo), but whenever the bar end hit the ground during a fall they’d push in and trap the elastic. An alternative would be the Relevate Designs Pogie Bar End Plugs, but at $10 (plus shipping) per pair they aren’t much cheaper and won’t as easily be removable. Being all plastic and press-fit they seem more likely to pull out or be damaged during a crash.

TrainerRoad PowerMatch: Disabled

After getting the CycleOps Hammer smart trainer I’ve been experimenting with how it, my Stages power meter on the Salsa Vaya, and the TrainerRoad PowerMatch function work together. In short, PowerMatch is designed for those who have a power meter on their bike and want to ensure that the resistance and workouts are consistent indoors (with the smart trainer) and out (with just the power meter). While I only use power data for training indoors during the winter (never for outdoor training), I do like to look it over after outdoors rides and thus want to be sure the two are as in line as possible.

To automatically handle differences in power meters, TrainerRoad’s PowerMatch calculates the offset between the power meter and smart trainer, then adjusts the resistance every 10 seconds to accommodate the difference. On its face this makes sense to me, but whenever I’d enable it the resistance would get bit surge-y feeling during harder efforts leading me to think something wasn’t quite right. I suspect this is because of the Stages being single-leg, I likely have a bit of an imbalance between legs, and my recent rides in TrainerRoad have shorter efforts than the sustained stuff that single-leg meters are best at. So, I started to think about if something else was right for me.

In TrainerRoad, on the Power Meter settings, there is a toggle to use the meter for cadence only. In the Smart Trainer setting the options for PowerMatch are Auto, Disabled, or a Manual offset. This results in the following scenarios:

Power Meter Normal, PowerMatch Auto: Displayed power is from meter, with this data used by PowerMatch to determine resistance. Occasional surging feeling, but overall good. While riding it appeared that power data jumped around.

Power Meter Normal, PowerMatch Disabled: Displayed power is from meter, resistance set by trainer’s internal meter. Displayed power data appeared low (5-10W) when holding an interval steady.

Power Meter Cadence Only, Power Match Disabled: Displayed power is from trainer, resistance set by trainer’s internal meter. Feels smooth (no surging) but seemed marginally easier than with PowerMatch.

Power Meter Normal, Power Match Manual: Displayed power is from meter, resistance set by trainer offset adding/subtracting manual value; no automatic adjustment of offset done.

With Power Meter Normal, Power Match Manual looking most like what I wanted, I set out to determine the offset between my Stages meter and the CycleOps Hammer. To do this I first ensured the Stages and Hammer were calibrated. TrainerRoad was set to have PowerMatch disabled and the Stages meter to Use Cadence Only. My Garmin Edge 520 recorded power from the Stages meter and TrainerRoad recorded the Hammer’s data. I then rode a custom TrainerRoad workout that has a warmup, then a series of 1 minute intervals at 60%, 70%, 80%, 90%, 100%, and 110% of FTP with 30 second 50% rests between in Erg mode so  trainer resistance adjusted automatically. After this I did a 30 minute Free Ride where I shifted to adjust speed (and thus power), trying to get a good mix of steady state and short/hard intervals, under different situations, to get sane date to compare. To cut down on data misalignment both of these rides were non-stop spins without pausing, doing my best to start and stop the Garmin along with the TrainerRoad workout.

Both of these sets of data were then compared in DC Rainmaker‘s Analyzer tool, with the results visible here:

Comparing the two, I see two notable things, both most visible in the 30 Minute Freeride:

  1. Sudden transitions decreasing power show 0 values when measured by the Hammer, but still some power with the Stages.
  2. Hammer seemed to measure higher, with the variance becoming greater as power output became higher.

I don’t believe the sudden transitions are a concern nor really something that can be accommodated for, and I don’t think they’ll be a problem for the normal Erg mode workouts where the main desire is to have the trainer providing resistance. This is likely a simple side effect of the large flywheel in the trainer taking a while to slow.

For the scaling disparity between the Stages and Hammer, maybe there’s something there… I’m tending to think that the Stages is reading higher on very hard efforts because with these I’m more apt to be standing and shoving down on the pedals versus a smooth spin. Perhaps this is throwing off the strain gauge? Let’s see…

Here’s how the average powers worked out:

Workout Meter Average Power Weighted Average Power
Custom Test Stages 173.50 191.70
Hammer 174.77 194.20
Free Ride 30 Stages 209.87 228.25
Hammer 211.03 234.05

 

Since I’m trying to compare power meters themselves, I’m looking at Average Power. (I don’t want to use Weighted Average, because this gives increasing priority to greater power outputs, since they are harder on one’s body. For example, it’s a way of reflecting how 300 W feels more than 2x as hard as 150 W.)

Across these two rides the two meters are within ~1 W of each other. While I originally went into this investigation looking to see how much of an offset I’d have to set up in Power Match Manual, I’m now thinking that the Hammer is close enough to the Stages to simply use Power Meter Cadence Only, PowerMatch Disabled. It’s possible this could skew a bit more as I do higher power efforts, but I think this will probably still be within sane ranges. It’s rare that I’ll see the 100W difference like in the high power effort of the Free Ride 30 test (700-800 W range), most things will be in the 200W-300W steady state range where alignment seems sane.

This will cut down on the surging that seems to be coming from the single-leg power meter, still provide sufficient correlation between indoor and outdoor efforts, all while having the benefits of an Erg mode smart trainer.

It’d be nice if TrainerRoad offered some sort of percentage correction, but perhaps this is why PowerMatch instead does a frequent reassessment and is turned on my default; better to check the offset and correct vs. attempting to figure out a scale. Being able to see how PowerMatch is working internally would be nice, but I’m not sure this would add any real value to the product.

2017-2018 Trainer Setup: CycleOps Hammer

For winter 2017-2018 I’ve put together a revamped, and much improved, trainer setup in my basement. Since the last setup with a Kurt Kinetic Road Machine things have been changed pretty significantly. I had previously set things up in front of a CRT HDTV which I’d previously used as a gaming / home theater setup but over the years I didn’t really use it for anything other than movies while on the trainer and basement music; just kind of a waste. This fall I sold the CRT HDTV and stands, picked up a cheap LCD TV (with built-in Netflix and Amazon apps), and put the whole setup on a metal stand in front of the trainer.

The result is a nice setup where a movie plays at eyes-on-the-road level and TrainerRoad is just a glance below. A CycleOps Hammer smart trainer provides resistance when riding, a nice step up from using a power meter, fluid trainer, and shifting to reach power targets. Four speakers (plus two over the workbench) are connected to a home theater receiver / amp, making for great audio from movies, or music via the AppleTV (and iTunes), although I tend to have subtitles on while watching movies to keep the audio at a reasonable level. A squirrel cage fan blows from a distance to keep me cool while riding. To ensure good ANT+ connectivity I’ve located the Garmin USB adaptor to a table next to the bike where it has a short path to the trainer, power meter, and my heart rate strap.

Since I have a Stages power meter on the Vaya, I have the option of using TrainerRoad’s PowerMatch. This uses the on-bike power meter and adjusts the smart trainer so that everything matches. I understand how this will benefit those wanting the same power numbers indoors and out (since no two units match exactly), but I’m still undecided if it’s a good setup for me. I’ll be working that out over the next few rides.

So far this setup is working out very nicely. While expensive initially (almost the cost of a bike) I vastly prefer the feel of a direct drive smart trainer to the fluid trainer with power meter. Both are effective, but I’m really enjoying not having to shift and chase power targets. Both Kristen (she also bought a Hammer) and I are following TrainerRoad plans over the winter, and as it moves into more over-under workouts, especially those with very short high intensity intervals, having a smart trainer is a huge bonus. It’s very difficult to effect radical changes in power and stay on target when shifting and matching speed to a power target. A smart trainer eliminates that need.

Wahoo KICKR Customer Service Disappointment

Planning to follow a TrainerRoad plan with Kristen all winter, and a little irked at the quirkyness of shifting to hit power targets on my current setup, I became interested in a smart trainer. My buddy Mike let me borrow his Wahoo KICKR, something I’d been itching to try after hearing so many good reviews of them. In short, I really liked the experience and was quite impressed by how much easier it made riding indoors. I focused more on putting out effort and selecting my cadence and less on staying on target, and large swings (say, over/unders) were MUCH easier to do when I didn’t have to seek the moving power target. I really wanted one. A few days later I noticed that Wahoo was selling NOS (new old stock) 2016 model for $899, which seemed perfect! The $1199 retail price is a bit more than I can afford, but this was doable for both Kristen and I. Orders were placed and we got ready to sell our fluid trainers.

Not hearing anything on the order after four days we sent notes to Wahoo’s customer service department. The responses indicated the units had accidentally been oversold, so we were offered refurbished 2016 units for $100 less. Having the same warranty and being even cheaper, that sounded great! We both accepted the offer and waited. A day later we were informed that the warehouse had found more stock of the new 2016 units and those were on the way, with the refurb offer rescinded. Not as good of a deal, but still, great! Because of this back and forth Melinda, the customer service person, tossed in a 142×12 Thru Axle Adapter for me and a TICKR X Heart Rate Monitor for Kristen; both things we could use and a really nice gesture.

Unfortunately, when the KICKRs arrived, we found that Wahoo had screwed up. These were not new units, nor refurbished, but instead returns which likely hadn’t been opened since the customers packed them up. Mine was scraped and the end caps were chewed up as if the previous owner didn’t clamp it down properly and had the bike come off while riding. The cassette was slightly greasy, it had a bunch of non-Wahoo stuff (Garmin manual and packaging, Monoprice packaging) in the box, and fine plastic dust from the expanded foam packaging was spread all over, including in the resistance unit. Kristen’s was arguably worse, with a heavily scuffed flywheel area (as if the owner had it resting against something), an empty through axle adapter box, and the previous owner’s personal info: the RMA from Clever Training and — inexplicably — a copy of his vehicle inspection report from Volkswagen Credit.

My KICKR:

 
  

Kristen’s KICKR:

IMG_4727.JPG IMG_4728.JPG IMG_4742.JPG
IMG_4730.JPG IMG_4743.JPG IMG_E4729.JPG

Separately we both immediately contacted Wahoo, but being Saturday didn’t hear back until Monday afternoon. (They’re open M-F, 10am – 7pm, and email responses seem to take about a day.) The first responses offered $100 refunds claiming the units were refurbished. After pushing back indicating that they are simply used and don’t seem like it’d be up to their standards, the refund offer was upped to $200 with the opportunity to test them out before accepting. While $699 is an even better price, neither of us were keen on paying so much for used trainers with plastic dust in sensitive electronics.

Since it’s often easier to work things out over the phone I decided to call Wahoo. I spoke with Micah, who explained that the original customer service person I’d contacted via email, Melinda, was best suited to help me. (I got the impression she’s a lead or manager.) Indicating that what I really wanted was a new trainer, and that I was hoping they could sort this all out, he informed me that the 2016 units are gone, so that’s no longer possible, but he’d get in touch with Melinda and let her know that we had talked. A short while later I heard back from Melinda, offering to return the used trainer and give a 10% discount on a new 2017 KICKR. I replied asking for the RMA, declining to purchase the 2017 model. (In the mean time Kristen had called and set up an RMA for hers, but did not receive a discount offer.)

I understand that things go wrong with warehousing and shipping, especially when winter (trainer time!) is coupled with the busy holiday season, but I can’t help but be left quite soured by this experience. Almost two weeks after making the purchase, with time sunk into a back and forth via email and visiting FedEx, we’re both back where we started… without smart trainers. And waiting on refunds.

Good thing we’ve still got fluid trainers to ride… Because the CycleOps Hammers that we ordered are still en route.

(SOLD!) For Sale: 2014 Trek Cali Carbon SLX

After going back and forth on it for a year, Kristen has decided to sell her very-upgraded 2014 Trek Cali Carbon SLX. It’s an outstanding bike, perfect for Michigan XC single track, but it’s just not being ridden, so it’s time to let it go. It was originally listed for sale in 2016, but after pulling it off the market and fitting a carbon fiber fork and 34t chainring it was only ridden a handful of times, so now it’s back up for sale.

This bike is a 2014 Trek Cali Carbon SLX (details on Trek’s site here), but it’s had quite a few upgrades from when she originally bought it new. Size small, the bike has been fitted with a 170mm SRAM X9 (direct mount capable) crank, converted to a SRAM 1×11 setup (34t x 10-42) w/XD driver, and now sports the matching Trek carbon fiber fork. It comes with the original Fox suspension fork, with crown races installed on both, so swapping between forks takes just a couple of minutes with 4mm and 5mm hex wrenches.

Frame: 2014 Trek Cali Carbon SLX, Small
Suspension Fork: Fox F29 RLC, G2 Offset (Only a handful of rides since being rebuilt by RBS.)
Rigid Fork: Bontrager Bowie, Matching Colors and G2 Offset
Brakes: Shimano XT M785
Crankset: SRAM X9 (Hollow, Direct Mount Capable)
Shifter/Derailleur: SRAM GX (1×11)
Cassette: SRAM XG-1150 (10-42)
Chain: SRAM PC-X1
Wheels: DT Swiss X1800 (DT350 Hubs, Straightpull Spokes, tubeless ready, upgraded to XD driver, decals removed.)
Tires: Schwalbe Racing Ralph Snakeskin 2.35″ (Front), Specialized Fast Trak GRID 2.25″ (Rear), Set Up Tubeless
Bar/Stem/Seatpost: Bontrager Racelite
Saddle: Specialized Henge

The complete bike as pictured above — without the cheap demo platform pedals — weighs a light 20.74 pounds.

Click here for photos both from 2016 when it was originally listed for sale, and now. Here’s the current photos (high res):

Asking price is US$2000 US$1600 SOLD with both forks. (MSRP, as 2×10 without carbon fork was $3870.)

Bike is located in the Warren / Troy / Shelby Township / Rochester / Utica area and is available for demo rides at any local trails, including River Bends and Stony Creek.

Please email steve@nuxx.net if you are interested.