How would you go about reverse engineering a set of binary data pulled from a device?

binary, binary-data, reverse-engineering

Solution

I had the same problem and initially found this project at Google Code that aims to complete a cross-platform version of tools for the Garmin devices ... see: http://code.google.com/p/garmintools/. There's a link on the front page of that project to the protocols you need, which Garmin was thoughtful enough to release publically.

And here's a direct link to the Garmin I/O specification: http://www.garmin.com/support/pdf/IOSDK.zip

Problem

A friend of mine brought up this questiont he other day, he's recently bought a garmin heart rate moniter device which keeps track of his heart rate and allows him to upload his heart rate stats for a day to his computer. The only problem is there are no linux drivers for the garmin USB device, he's managed to interpret some of the data, such as the model number and his user details and has identified that there are some binary datatables essentially which we assume represent a series of recordings of his heart rate and the time the recording was taken. Where does one start when reverse engineering data when you know nothing about the structure?

Original source