TomTomWatch

Disclaimer
Use the TomTomWatch software at own risk. Although I took all precautions and tried to write good software, the software was created based on reverse engineering and it intervenes with the file system on your watch. Be especially careful with the debug features and use them only if you exactly know what you are doing.
The software is quite technical in nature which means it might not be as user friendly as it could be. It requires a few computer skills, like installing Java.

TomTomWatch

TomTomWatch is a Java application for downloading content from the TomTom GPS watches. I created it because I do not want to use the TomTom cloud for maintaining my tracks. Anno 2023 TomTom stops their cloud service, so this software can be used to continue using the TomTom watches.

The software downloads the track files (ttbin files) from the watch. By default the ttbin files are automatically saved in a similar directory structure as TomTom MySports. It is possible to export the tracks to GPX 1.1 format. Since version 0.2 it is possible to upload track planning (routes) from GPX (route must be present as route <rte> or track <trk>). This feature has been greatly enhanced since version 1.5.

I miss the function on the TomTom Watch to log waypoints. A special feature of TomTomWatch is the logging of Waypoints when saving to GPX: when during your workout or trip you pause track logging and resume within 5 seconds (default), the GPX converter treats it as the logging of a Waypoint. If the pause is longer, the GPX converter treats it as the start of a new track segment.

20170423_102544

Download

Source is available on GitHub.

Installation and running

Prerequisite is that you have Java JRE or JDK installed on your computer. They can be downloaded from Oracle or OpenJDK. Minimum is Java 1.8/Java 8, which I use for development.

The program has been written for Windows (10 or 11 will do), though it runs under Linux or even Apple as well (not formally supported!).

  1. Unpack the binary zip in a directory of choice. This results in a directory /TomTomWatch containing following files (for version 1.15).

  2. Run makeworkingdirs.bat. This create the directories needed for execution.
    Alternatively you can use your own directory structure but you have to modify tomtomwatch.properties accrordingly.
  3. Optionally: Modify tomtomwatch.properties as it pleases you. The file is self explanatory.
  4. Start via start.bat.
    Alternatively: java -jar TomTomWatch.jar
  5. If under Windows the Serial number is shown as ‘Unknown’ (like in the image at the top of this page), use Zadig to replace the HidUsb driver by the WinUSB driver for the device ‘Workout Drive’ when the watch is attached. This solves the problem.

    Note that the original TomTom MySports software won’t communicate to the watch when changing the driver!!

User Manual

Main screen

Next image shows the main screen after startup of the software and attaching the watch. If everything goes well, the upper line (1) shows the information about the attached watch, like product ID, name, serial number, firmware version and the current time on the watch in UTC.

Next sections are shown:

  1. Watch Information
    This information is only shown when the watch is attached.
  2. Track pane
    This shows tracks/activities after downloading them from the watch. If download succeeds but nothing is shown, the watch doesn’t contain logged activities (e.g. after an erase)
  3. Track map
    When an track/activity from the Track Pane is selected, the activity
  4. Quick access
    This section contains buttons for downloading and saving files and for updating the GPS Quickfix
  5. Route pane
    Using these functions you can donwload the routes from the device, add new routes or erase routes and update the modified routes to the device
  6. Information pane
    Shows information on proceeding of functions and errors/warnings if something fails
  7. Main menu
    Main functions are under the Device menu. Additional debugging features are under the Debugging menu, but only when enabled. File menu only contains an exit function. Help only offers the About information

Tracks & GPS Quickfix

The Quick Access section (4) of the screen offers access to the most important functions.

Following buttons are available

  • Download
    This downloads the tracks/activities from the watch. The tracks are displayed in the display pane. The watch internally stores tracks in the TomTom proprietary ttbin format. These ttbin files are stored on the computer upon download (../working/ttbin).
  • Erase
    This erases all tracks from the watch.
    You can leave quite a number of logged tracks on the watch, but when you do the watch gets slower on starting an activity. Erasing solves this, but your tracks are no longer available on the watch.
  • GPS Quickfix
    This downloads the GPS quickfix file from internet and stores in on the watch. Using this feature makes the watch get a quick satellite fix when logging an activity.
  • Load TTBIN
    This allows you to load a ttbin file and show it in the Track Pane, so you can export it to GPX format.
  • Save TTBIN
    This allows you to save the ttbin for the indicated track in the Track pane to some other location
  • Save
    This allows you to save the indicated track in the Track pane as GPX file. The base directory that is chosen in ../working/gps. The filename is in the GPX File text box and is by default [activity]_[date]_description.gpx
    The activity radio buttons defines the [activity] used in the file name.
    Of course the filename can be changed upon saving.

Following checkboxes are visible

  • Download most recent
    When checked only the 3 most recent tracks are downloaded. Especially when the watch contains a lot of tracks, downloading them all takes a lot of time
  • Autosave ttbin
    When checked, upon download the raw track files (in ttbin format) as received from the watch are saved (default: ../working/ttbin)
  • Smooth
    If checked, the track is smoothed upon download using the Douglass-Peucker algorithm. If individual track points show large location error, smoothing fits a nicely smoothed curve. The amount of smoothing can be defined in the configuration file.
  • Compress
    If checked, the track is compressed upon download. Compression means omitting track points that do not add information to the track. For example if three subsequent track points are on a straight line, the middle can be omitted. Compression comes at the cost of a small error. Compression parameter (the amount of compression or allowed error) can be defined in the configuration file.

Track pane (2) and Track Map (3)

When tracks are downloaded from the watch, they are shown in the track pane.

Following information is shown in the Track pane:

  • Caching
    A small ‘v’ symbol shows if the track has been decoded and cached in memory, enabling fast rendering on the map.
  • Start date-time
    The start date-time of the activity
  • Source
    The source of the track: ‘watch’ for tracks downloaded from the watch, ‘file’ for tracks uploaded via ‘Load TTBIN’
  • Activity type
    The type under which the activity was logged on the watch
  • Distance
    The track distance in km
  • Fitness points
    Later Watch firmware versions calculate the number of TomTom ‘fitness points’ when heart rate is recorded

When a track is selected it is shown it is displayed on the map.

Main menu

TBD

Routes

TBD

Release notes

This software is maintained minimally. I replaced my TomTom Adventurer with the Garmin Fenix 7.

Version 1.15 (30-09-2025)

  • Waypoints logged are shown on the map as purple dot; start and finish as cross

Version 1.14 (29-09-2025)

  • Resolved issue of non-loading map (OSM no longer supports http, so https is the default)

Version 1.13

  • Updates & bugfixes
  • Improved uGotme GPX extensions

Version 1.12 (10-05-2024)

  • Added proxy support
  • Added a setting to disable TLS Certificate validation, in order to use the alternative Ephemeris https URLs, which don’t seem to have valid certificates. USE AT OWN RISK!!! Disabling is for all internet access!

Version 1.11

  • Added support for other Ephemeris URLs from tomtomwatch.properties (removed depenency from TomTom MySports website)

Version 1.10 (05-11-2023)

  • Several updates to the documentation on Github (FAQ)
  • Workouts available for Runner 3 and Spark 3
  • Cadence added to workouts
  • Added pace and steps to running GPX
  • Update for service termination of TomTom (config service used for ephemeris file)
  • Vulnerability fixes
  • Bug fixes

Version 1.9 (09-09-2023)

  • Solved bug in Douglas-Peucker track compression algorithm. Now the maximum compression error can be set in meters in the tomtomwatch.properties. Be sure to set it to say 0.3 or 0.4 m in existing tomtomwatch.properties files (in earlier versions it was set to 0.01).

Version 1.8 (26-08-2023)

  • Changed license to MIT license 🙂
  • Dependency version update (protobuf, json, gson; dependabot advise)
  • USB4Java update, finally!!!
  • Removed -jar-with-dependency suffix in jar file

Version 1.7 (12-04-2022)

  • Code improvements
  • GPX file name suggestions changed (cycle_20220404_description.gpx -> cycling_…)

Version 1.6 (21-12-2020)

  • Import/export of workouts from/to JSON file: allows for own workout defintion
  • Added track compression by means of Douglas-Peucker method
  • Added git version to about box
  • Added ttbin tag 0x30 (number of seconds to satellite fix)
  • Build jar file with dependencies – only the jar file is needed to execute the code
  • Improvement of communication to the watch
  • Update protobuf to 3.9.1
  • Various code improvents, bugfixes, unit tests and cosmetics

Version 1.5 (14-09-2019)

  • Upgrade usb4java from 1.2.0 to 1.3.0 which enables TomTomWatch under Windows 10 (yeah!)
  • Improved route management (Track planning on the Adventurer)
  • Strava compatibility enhancement by adding Garmin GPX extensions
  • Added OSM (with pan and zoom) next to Google Maps; added Google maps key support
  • Color per track segment
  • Added more unit tests using Mockito
  • Added dependency injection to enable unit testing (nerds know what is meant 😉
  • Several bugfixes

Version 1.4 (08-07-2018)

  • Layout made consist across Windows and Linux (a.o. by choosing other Font)
  • Possibility to download only three latest activities i.s.o. downloading all activities
  • Activities shown in reversed order (latest first)
  • Possibility to upload 7-day ahead GPS quick fix
  • Bug fixes

Version 1.3 (01-01-2018)

  • Support for the Multisports (tested and debugged)
  • Heights from Google Elevation Service for non Adventurer watches
  • Software updates now include BLE updates
  • List routes button
  • Factory reset (in debug mode)
  • Several small improvements

Version 1.2 (26-11-2017)

  • Listing of watch settings
  • Watch sync to PC clock
  • Code improvements
  • Added heart rate recovery (bpm/min, score) from TTBIN file
  • Added additional <extensions> fields to GPX trk (device, track smoothing factor, fitnesspoints) and trkseg (hr recovery, hr recovery score)
  • Added climb (cumulative hight increase) to trkpt <extensions> in the GPX
  • Added HDOP (Horizontal Dilution of Precision) to trkpt <extenions> in the GPX

Version 1.1 (30-09-2017)

  • Bug fix in firmware upgrade function. Firmware upgrade tested 🙂
  • Added watch reboot feature to debug menu
  • Added file upload feature to the debug menu
  • Added support for ttbin version 10 (since firmware 1.6.26)
  • Added tracked activity (steps, calories, distance, heartrate, sleep, etc) display
  • Added delete feature for tracked activity (delete 0x00b1nnnn files)
  • Added playlist display feature
  • Display of TomTom ‘Activity Points’ in track overview
  • Automatic detach of USB driver under Linux
  • Serial number display (does not work under windows due to bug in USB lib)
  • Several small bugs fixed

Version 1.0 

  • Technical functions in debug menu. By default not shown. Enable from properties file.
  • Firmware updating added (UNTESTED!!!)
  • Simulation mode in which the software runs on the downloaded watch data (debug function; enable from properties file)
  • Download watch data for simulation (debug function)
  • Deleting individual files (debug function)
  • Save individual files (debug function)
  • Display of device log and device update log  (debug function)
  • Code improvements
  • Code to GitHub, converted to Maven
  • Track smoothing added

Version 0.3 (21-05-2017)

  • Automatic display of last imported track
  • Display route map when selecting GPX file for route upload
  • Distance indication in list of routes on device
  • List of history (tag-value list for the last 10 activities per type; next to history summary)
  • Erasing of all history & route data
  • Route directory added to the configuration file
  • Long routes compressed to max. 500 route points (like original TomTom MySports route planning)
  • Code improvements

Version 0.2 (05-2017)

  • Upload routes from GPX (track planning)
  • Erasing routes
  • List of routes on device (ID and name)
  • Show preference file
  • List files on the device (ID and size)
  • Set Device Name
  • Save file from the watch as binary file to disk
  • List history summary (last 10 activities per type)
  • Improved error handling
  • Activities sorting
  • Upload of ttbin files from disk (for conversion to GPX format)
  • Resolved small bugs

Version 0.1 (05-2017)

  • Show watch name
  • Show watch time (UTC)
  • Download of ttbin files
  • Google maps preview
  • Automatic saving of ttbin files in a similar structure as TomTom Mysports
  • Export to GPX format
  • Erasing the ttbin files from the watch
  • Upload GPS Quickfix data
  • Configuration via tomtomwatch.properties file

Known issues

  • Wrong icon, wrong picture: I-GotU iso. TomTom 🙂
  • The software has been created for activities that contain GPS information. Other activities like workouts are not supported.
  • Serial number of watch cannot be read under Windows 7 due to a bug(?) in USB4Java lib
  • Tested on Adventurer, Runner 3 Music, Multisports Cardio
  • Watch time is displayed in UTC on the screen

Refer to the TomTomWatch Design page for the UML design of the application.

Refer to the Reverse Engineering Page for a description of the TomTom Watch interface.

Guinea pigs used for testing: Multisports Cardio, Runner 3 Music, Adventurer

Details

Hidden feature: waypoint logging

The TomTom watch itself does not allow you to log specific waypoints. This feature however was added to TomTomWatch. To log a waypoint during a track, just pause the track (pressing left on the watch) and immediately unpause (pressing right). If the pause is less than 5 seconds, TomTomWatch regards it as a waypoint when writing to GPX. If it is more than 5 seconds, TomTomWatch regards it as a real pause, and create multiple track segments when writing to GPX.

Waypoint depicted as purple dot due to short pause; mouse over shows name
Multiple track segments due to longer pause

Note that the start of the track is shown as a black cross and finish as a red cross.

Debug mode

When setting debuggingMenu=true in the tomtomwatch.properties file, an additional menu becomes enabled, allowing to perform file operations. Be warned that you might ruin your watch when using these features. Read the disclaimer above this page.

Height from Google elevation service

Apart from the Adventurer, the watches do not measure elevation. Optionally, the elevation can be requested from the Google Elevation Service. An API key from Google is required.

To enable this feature, set heightService=google and fill in the API key in heightServiceKey in the properties file tomtomwatch.properties. Next graphs show the comparison between the height as measured by the Adventurer and the height data as obtained from the Google Elevation Service. Resolution of the Adventurer is 1 m, clearly visible in the third graph.

Mountainous area
Small height changes; peeks in the Google curve correspond to forests, apparently top of the canopy, whereas I run on the ground… Small deviation of the Aventurer curve (start and end should be at the same level) due to barometric pressure difference during the trip
Flat area with a 30 m hill, apparently flattened/averaged out by Google

Heart rate sensor

The cardio watches contain a heart rate sensor.These sensors measure small differences in blood perfusion in the wrist due to the heart beat. Under some circumstances blood perfusion is too low to measure. These kind of sensors pick up other beats, like pace when cycling or running. Next graph shows the sensor measured heart beat and the heart beat measured by a chest strap during the same run. The latter is far more reliable.

Credits

The application is based on the excellent ttwatch application of Ryan Binns.

Libraries used: