Hacking the Timex Bodylink - Part 1
I have used various heart rate monitors and GPS-based distance measuring systems as part of my running in the past. A couple of years ago, I wore a Timex Bodylink HRM and GPS system, with the data recorder, during the Big Sur Marathon. Since I’m a bit of a data junkie, I wanted to compare the race data with my previously recorded training data.
Unfortunately, the Timex Trainer software choked while downloading the 4+ hours of data. It did let me download the raw data from the recorder, though. I was hoping that someone at Timex might be able to either parse the data or provide a specification so I could process the bits myself. Other than signing up as an OEM developer, there wasn’t much in the way of software support, and no useful response from Timex with regard to either recovering the data from the binary dump (eeprom.txt) or getting a specification.
I never got around to fully decoding the raw data dump format, but thought I would share my notes for anyone who is interested in picking this up. At present, I can read the session directory, and the heart rate data. The GPS data encoding is more complicated, and may use the native encoding from the GPS chipset used by the (Garmin-manufactured) Timex GPS pod (might be SIRF).
From viewing the Timex Trainer database (Microsoft Access format):
- we can see that all HR data times are integer multiples of 2 seconds
- no HR data times are recorded on odd seconds
- HR records store prkey, sessionkey, cum_duration(int seconds), and HR
- HR only session is session_type 0, GPS only is session_type 1, combined is session_type 20
- all GPS data times are exact multiples of 3.57 seconds
- GPS records store prkey, sessionkey, cum_duration(float seconds), speed, and cum_distance
- minimum recorded distance is .001 miles
- before that cum_distance is 0>
- minimum recorded speed is 0.075
- we see cases where speed is non zero and cum_distance is 0
- we see cases where speed is zero and cum_distance is non-0
Dump header format (eeprom.bin / eeprom.txt)
- 2 bytes = 80 01 magic number?
- 3 byte offset to end of session N
- repeated for each session.
- 1st session starts at offset +240 from top of file.
Session header and trailer:
- 1 byte = session type (0 = HRM, 0×22 = GPS, 0xFF = GPS+HRM)
- 1 byte = seconds
- 1 byte = minutes
- 1 byte = hours (24 hour format)
- 1 byte = day-1 (1st = 0)
- 1 byte = month-1 (Jan = 0)
- 1 byte = year-2000 (2004 = 4)
See also: Hacking the Timex Bodylink - Part 2
Tags: running, timex, bodylink, hacking



























September 19th, 2005 at 6:43 am
I am quite new to the Timex, actually got it last week.
As I am also a bit of IT person, I am playing with the idea of playing around with the data, either already in the .mdb (have looked at them already …), eventually also in the raw format.
Anyway, they mention (at Timex) that the library logger.dll used for obtaining data from the Datarecorder is freely available at the Sourceforge and I ahve found the link pointing to that, supposedly a new version.
http://axfeeds.com/it_news/onlink.php?2136505*Timex+Data+Recorder+API**http://sourceforge.net/project/showfiles.php%3fgroup_id=130799
So, you might eventually try to upload the data (the eeprom image) back to the Datarecorder (AFAIK this should be possible, or???) and then process it with something based on the sources provided at SF …
Or, maybe the specs over there might help on decoding the eeprom image right away.
Just an idea, maybe stupid …
Good luck, anyway.
September 19th, 2005 at 8:11 am
HonzaCi — Thanks for the pointer. This is exactly what I was looking for when I was investigating my data upload problem. It looks like Timex open sourced the data recorder code this spring, but I haven’t actively worked on this since May 2004 so didn’t see it the first time around.
http://sourceforge.net/projects/tmx-dr-api/
I may have to go purchase another data recorder now and take another look. My old unit disappeared during a run a few months ago, and I’ve been debating whether to switch to a different system altogether.
If I have a chance to try the Timex logger.dll code I’ll write that up too.
January 11th, 2006 at 9:25 pm
[…] Hacking the Timex Bodylink, Part 1 […]
December 20th, 2006 at 3:47 am
So… is anyone still persevering with this or got anywhere with manipulating output from the Data Recorder?