Comparing the Garmin ForeRunner 310XT and Edge 500

In July, 2009 I started using a Garmin Forerunner 310XT
T to keep track of my workouts. At first I just used the running features of the device, but shortly after I started using it for my cycling workouts as well. Previously I had been using a Polar system for cycling data capture, and soon I found the ForeRunner 310XT to be a better solution by far than the Polar one (see my previous review of the ForeRunner 310XT for more details).

Garmin Edge 500, Garmin ForeRunner 310XT and CycleOps PowerTap CPU
Garmin Edge 500, Garmin ForeRunner 310XT and CycleOps PowerTap CPU

Starting in February, 2010, I added a power meter to my cycling gadget list, and the ForeRunner proved a great partner to cycling with power, especially when compared to the PowerTap CPU unit that came with the power meter. I found the ForeRunner easy to use, accurate, and the integration with both Garmin Connect and the software solutions from TrainingPeaks more useful and easier to use than the other options.

In June, 2010, I rode the wonderful Ride the Rockies event in Colorado and used the ForeRunner 310XT to track the entire week of riding. One problem I discovered in an event like this is that the ForeRunner did not have enough onboard memory to store the entire week’s worth of riding. I discovered this before the trip and so I lugged a small netbook around with my camping gear just so I could download data after the rides. Not quite the best way to unplug on a holiday.

When Garmin announced the Garmin Edge 500 Cycling GPS
it looked like a great solution for use on my bike. Since it was cycling specific, it had a few more features designed for cycling, whereas the ForeRunner 310XT was definitely intended to be used for multi-sport activities. Since I’m always in need of a new gadget to play with, I went ahead and bought one and started using it for cycling in August, 2010.

I’ve found it to be as good as promised, but there still are times when the ForeRunner 310XT is a better choice. In the rest of this post, I’ll show you the various differences between the two devices and how one might be better than the other depending upon your circumstances.

Memory Capacity

As the memory limitation of the ForeRunner 310XT was the first thing that made me interested in the Edge 500, it’s good to start here. In my use, I’ve found the ForeRunner only has enough onboard memory to store between 24 and 36 hours of workouts – certainly not enough for a week long cycling tour. Garmin doesn’t provide specifications on how much actually memory is installed on this device, so it is a bit of a mystery to the actual capacity.

Meanwhile, the Edge 500 has 56.4 MB of flash based storage, at least according to my Mac’s view of it. I’ve got every cycling workout since I started using the Edge still stored on it – about 50 hours worth so far – and the device still has 48.7 MB of storage free! This is an amazing amount of usable storage and means even the most active cyclists will find they have room for months of data without issue. No need to take a laptop with you on holiday!

Advantage: Edge 500, handily.

Data Transfer

The data transfer mechanism is very different in the two devices. The ForeRunner 310XT uses a wireless ANT+ based data transfer mechanism, while the Edge 500 appears as a simple USB flash drive to your computer.

To exchange data between your computer and your ForeRunner 310XT you have to use a ANT+ dongle provided by Garmin that connects to your computer’s USB port along with a software application that provides drivers for the dongle. It works, and depending upon your computer configuration it is easily a setup-once-and-forget operation. You don’t need to plug in any more wires, and you just bring your ForeRunner 310XT within a few feet of the dongle and you are good to go.

In practice, though, this approach was not perfect. I found during my cycling holiday that a cheap netbook did not have enough CPU performance to reliably handle the data transfer job if it was not plugged into A/C power. That was a surprise and made downloading data from the ForeRunner a hassle during my trip, since I did not frequently have access to A/C power while camping out.

By comparison, the Edge 500 requires you to use a USB cable to physically plug the Edge 500 unit directly to a USB port on your computer. The Edge then shows up as USB flash disk, so once you are done you have to eject the device to prevent your computer from complaining.

Because the Edge 500 uses a direct USB connection, it is much more reliable and faster to do any data transfer than the ForeRunner 310XT. The USB cable is not really any more or less hassle than the ANT+ dongle, so you aren’t gaining a lot of advantage by having a wireless based data transfer mechanism.

Advantage: Edge 500, but just so.


Directly related to the data transfer mechanism is how the devices are charged. Both devices can be charged via a USB connection to a computer, or using a USB to A/C adaptor, which Garmin provides.

The primary difference here is that the ForeRunner 310XT requires a large binder-like clip that grabs onto the unit and touches two electrical connectors on the rear of the unit. Meanwhile, the Edge 500 simply uses the same USB connection for data transfer. This means a lot less bulk when traveling.

Garmin provides an excellent A/C adaptor system that includes several international wall-plug adaptors as part of their standard kit for both devices, so you’re set for all kinds of power scenarios.

Advantage: Edge 500.

Battery Life

How about battery life? Garmin says the ForeRunner 310XT’s battery life is up to 20 hours, and the Edge 500’s is up to 18 hours. In my experience these estimates are spot on. Both units battery life means you can get a few days worth of use before you need to recharge, but if you are traveling you should plan on bringing a charging solution with you.

The Edge 500 clearly consumes more power than the ForeRunner 310XT, and given that, Garmin provided more software features to help. The Edge 500 is very quick to auto power-off if it is not receiving any data, and this helps avoid unnecessary battery consumption if you’ve stopped to take a long break or after finishing a ride.

Advantage: ForeRunner 310XT, but just so.


The display on each device is similar, but there are numerous small differences.

The ForeRunner’s display is covered in glass – which I dropped and broke once, resulting in an expensive repair bill – while the Edge’s display feels like a type of plastic, but I’m not 100% positive on that.

Display Comparison of Edge 500 and ForeRunner 310XT
Display Comparison of Edge 500 and ForeRunner 310XT

Both units provide a high-contrast, easy to read display, with an optional backlight. Both units are exceptionally easy to see in outdoor light, although they are both prone to glare if the sun hits them at just the right angle – just like every other cycling computer I’ve ever used.

Each unit provides multiple pages of data, and multiple data items per page. The ForeRunner limits you to 4 data fields maximum per page, with 4 total pages, plus a workout specific page. Since the ForeRunner 310XT is a multi-sport device, each sport setting has its own independent set of customizable pages and data fields.

The Edge 500’s display is slightly taller than the ForeRunner’s, and as such you can have up to 8 data fields per page. This also means that for those pages with few fields, you can make certain key data items very large and easy to read. The Edge 500 limits you to 3 pages of data, with one additional page for workouts.

Advantage: neither. Both devices are champs with slight benefits to their intended audience.


Another software feature that is different between the two units is the Workouts feature. Both units have the ability to program complex workouts with a variety of steps, targets, repeats, etc. Both let you create courses to follow, and set alerts for time, distance, calories, or heart rate; the Edge 500 also adds support for cadence and power alerts.

The ForeRunner 310XT, however, has a great shortcut for creating interval workouts. With a quick, easy-to-use 2-page setting wizard, you can select intervals that are time or distance based, along with recoveries, and then choose the number of repetitions and if you want warm-up and cool-down intervals added. For a lot of workouts, this is all you need.

Programming the more advanced workouts in either device is not very difficult, but it’s enough steps that many people will just avoid doing it altogether. Programming these workouts is easier if you use Garmin Training Center and then download the workout to the device, but this software isn’t the best quality itself and I find myself just programming the workouts directly on the devices.

Advantage: ForeRunner 310XT.

Mounting Options

The ForeRunner 310XT is a sports watch, but there are a few different bike mounting options available as well. I’ve found when doing multi-sport activities it’s better to just leave it on your wrist, but when primarily biking, having it mounted on the bike was a better option.

ForeRunner 310XT Quick Release Kit
ForeRunner 310XT Quick Release Kit

The bike mount option I used for the ForRunner 310XT is the Garmin Quick Release Kit. This kit replaces the watch strap of the ForeRunner with one that includes a mounting bracket that then snaps into place on an adaptor that mounts directly to your bike with twist-ties. The replacement watch strap wasn’t as comfortable as the original strap that came with the ForeRunner, and it increased the width of the device slightly, but overall this is a very good mounting solution.

Garmin also sells a Forerunner Bicycle Mount Kitfor ForeRunner devices that lets strap the device to the mount directly. I haven’t used this option, but it’s a convenient way of solving the mounting problem as well.

Edge 500 with Quarter Turn Mounting Kit
Edge 500 with Quarter Turn Mounting Kit

The mounting solution for the Edge 500 is similar to the Quick Release Kit option for the ForeRunner, but attaches to the bike in a very different way. The mounting bracket itself uses high-quality bands (ethylene propylene diene monomer, a synthetic rubber!) of various sizes to secure the mounting bracket to the bike. The Edge 500 comes with a handful of different size bands and two mounting brackets, so you can easily attach it to multiple bikes. Moving a bracket to a different bike takes just seconds, but you can always buy another quarter turn bike mount kitif two mounts are not enough.

Edge 500 Bike Mount
Edge 500 Bike Mount

The design of this mounting system is simple and elegant. The bands are extremely strong and pliable enough that stretching them to secure the mounting bracket is trivial. The back of the mounting bracket rests on either your bicycle stem or handlebars using a rubber piece that keeps it from moving. Once it’s attached with the bands, the mount just isn’t going to go anywhere.  The Edge 500 slides into the bracket quickly and once its turned, it also isn’t going to fly off, even on the bumpiest of routes.

Edge 500 Bike Mount using the ForeRunner 310XT's Mount
Edge 500 Bike Mount using the ForeRunner 310XT's Mount

One nice surprise is that the quarter-turn mounting bracket design is the same between the ForeRunner 310XT’s Quick Release Kit and the Edge 500’s mounting brackets. On my road bike, I’m actually using the bracket that came with the ForeRunner’s kit instead of the Edge 500’s rubber band brackets – but only because it was already attached. There is a small screw in this mounting bracket that lets you change the orientation of the attached device, and this is one difference between the two different devices. It only takes a couple of seconds to change this, and chances are good you won’t be going back and forth between the two devices if you happen to have both (I only use the ForeRunner 310XT with its original wrist strap after buying the Edge 500).

forerunner 310xt bicycle mount
ForeRunner 310XT Bicycle Mount

The quarter-turn quick release mounting design is a great solution for putting either of these devices on your bike. It allows them to be installed and removed in about a second without having to fuss with any tools. I especially like to take off the devices whenever at a rest stop – a $200+ bike gadget that’s so easily pocketed is going to be tempting for the unscrupulous out there.

Advantage: neither, both have excellent, and compatible, options.

Training with Power

Both devices have great support for receiving data from any ANT+ enabled power meter. Over time, the firmware has been updated on both and support for showing more power data has been added. As of version 3.00 on the ForeRunner 310XT, and 2.40 on the Edge 500, the following power-related data fields are available:

  • Power (current power measurement)
  • Power – % FTP
  • Power – 30s Avg
  • Power – 3s Avg (my personal favorite)
  • Power – Avg
  • Power – kilojoules
  • Power – Lap
  • Power – Max
  • Power Zone (current power measurement)

I tend to ride with my display set to show the 3-second average power, the cadence and the current lap time. This keeps me focused on what matters most during training, but hides all the other data that might be distracting, but it ultimately depends upon what kind of ride I am doing at the time.

If you are interested in training with power, but don’t yet know much about it, start by reading Training and Racing with a Power Meter. Training with power is great fun, but the bottom line is that you either need to be analytical (okay, a bit of a geek), or have a coach that uses your power data to keep track of your progress. Otherwise, you aren’t likely to realize the benefits of the tool.

Advantage: both devices are equally capable.

Bottom Line

Both devices are excellent at what they do, and either is a powerful training companion. If you are just a bicyclist, and do no multi-sport activities, then the Edge 500 is the right choice for you. If you are into multi-sport, the ForeRunner 310XT is all that you will need, but the Edge 500 does have a few advantages, such as the large memory capacity.

The Edge 500 is also a little bit cheaper than the ForeRunner 310XT, especially if you already own a compatible heart-rate monitor or power meter.

Garmin Connect screen shot
Garmin Connect screen shot

A lot of folks are buying Garmin sports devices these days so that they can upload and share their data using Garmin’s excellent Connect website. If you haven’t tried Garmin Connect, go there and give it a shot. It’s worth the price of admission and continues to get better as Garmin adds features, albeit rather slowly.

Looking Back on a Old Project

In 2000 I began work on a client application for the ICB chat system. At the time, the best client for the system was the old-school UNIX client that worked using a terminal interface. For things like chat, terminal interfaces are fantastic but at some point they began to stop keeping pace with the rest of technology. For example, a common activity in any chat system is the sharing of URLs for other users to view. Most terminal applications at the time (many of the Linux-based terminal applications have since improved upon this) did not support this, so users were forced to cut & paste URLs – not a fun process.

By 2000, I had been developing with Java full-time professionally for just over a year, with exposure to the language off and on since it was originally released. I wanted to improve upon the existing Java clients out there, while at the same time making an excuse to learn Java’s Swing API (their new and robust graphical user interface API).

Another key was a Java core technology known as Java Web Start. This technology allowed the automatic download, configuration, and updating of Java applications (versus applets) directly from the web. For the users, this means the application can run locally on their computer without being stuck inside the web browser only – generally, a very poor performing approach. For the developer (me!) it meant a more robust run-time environment with automatic support for browser integration, making it easy to launch URLs in whatever browser the user has available. This last point was key – with Java Web Start you don’t have to code command-line sequences to launch a browser, you just use a built-in API and it just happens.

The initial development of my client, which I named IcyBee, took a few months of my spare time. A small number of users immediately switched to it and began offering feedback and that, coupled with my own desires, led to several periods of feature creep over the next few years. Support for graphical emoticons, UTF-7 text encoding (the ICB protocol was designed in ’89 and hasn’t changed since, and thus it uses 7-bit US-ASCII only!), and URL shrinking were among the most notable features added.

The initial development was done using the Java 1.3 platform, but by the time the most stable version was released in September of ’04, Java 1.4 was the minimum requirement. Until January 3, 2009, version 0.92 remained stable and under constant use. While the user base is extremely small, any software product that manages to go over 4 years without a change and still remain useful day-to-day is impressive to me – even more so given I knew of the warts and bugs lurking about in the product.

Fast forward to late ’08 and the holiday break. I felt like doing some coding that was not related to work (programmers really do like to code for fun…) and there were a few bugs in IcyBee that needed fixing. I really had only two goals for the new version: update the code to use the Java 1.5 platform as a minimum and fix a few miscellaneous bugs that had never been published in a version.

Part of converting to the Java 1.5 platform meant changing the code to use the new coding constructs that were available. This was not necessary, but rather simplified many parts of the code and allowed me to address several warnings my editing system. During this conversion process I realized just how much more I had learned about Java development since the original effort. By itself, this is no surprise – good engineers of any sort look back on what they’ve done and typically think about how they would do it differently (even it was a smashing success!) based upon what they have learned since then.

Since I originally wrote IcyBee I had been through 3 commercial software projects that all used Java. One of those was a Swing GUI application, and clearly I wrote IcyBee’s UI before that experience. Another project was a massive multi-tiered application with a web UI. This project greatly enhanced my knowledge of design patterns in the Java space. The original coding of Icybee also took place before I had read the Effective Java book, and few of the techniques preached by that text were in the project.

Somewhat surprisingly, I am still quite content with the overall design of the application and its class framework. If I were writing a new chat client today, even in a different language, I would use the same design pattern again. This is rather typical of good design patterns – they’re applicable to several different kinds of problems that share common characteristics and tend to be robust for the long-term.

The Swing UI in IcyBee is the worst part of the application. I had not yet had vetting experience from my day job in that technology so just getting something functional was all I was really concerned with. If I were coding this application today the approach I would take in the UI implementation would be completely different. The end result for the users would in return be tighter, faster and more visually appealing. I’d likely even take advantage of some custom graphic design work and avoid using the rather stale Swing UI graphics that reeks of circa-2000 computing.

There’s a lot left to do to IcyBee to make it “complete” and yet I realized that’s just the perfectionist streak talking. IcyBee has been stable for a long, long time, and users aren’t demanding new features. More spit & polish would really be for my own benefit and not so much for the users. There is always the temptation to keep improving upon projects like this given that they are excellent résumé fodder, but at some point you have to let go and focus your energies on other things. There are simply other projects with broader user bases that would be much more beneficial for me to spend my time on.

On January 3, 2009 I released a new version of IcyBee and labeled it 1.0-stable. The next day I decided to fix another long standing bug with the URL shortening feature that had been broken because TinyURL has started to suck. Luckily, a new service called is available and provides a wonderful REST/JSON API. On January 4, 2009 1.01-stable was released. I hope this version lasts another 4+ years like 0.92 did.