I recently bought a new gadget for my bike, a Garmin Edge 305. It’s a GPS-enabled bicycle computer, which tracks your position, speed, pulse, altitude, etc., and you can of course download the data to your computer and analyse it. You can also upload data to it, for example workout programs, courses, and more.
The sad thing is that its Linux support is currently limited. Tools such gpsbabel and gpsman claim to support the device, but I haven’t gotten it to work yet. Also, those tools are mainly for extracting GPS data, they don’t handle other data, such as pulse and laps that well.
But there is hope! I found a project called pygarmin which is a Python library for communicating with Garmin GPS devices. The library is based on Garmin’s Device Interface SDK, so it shouldn’t be too hard to make it support my GPS device. The protocol specification doesn’t seem to include all the commands that the Edge uses, but there’s an open source tool for Windows, MotionBased Agent, which should be able to download and upload data to a Garmin Edge 305, so it should be possible to find out what needs to be added to pygarmin.