skip to main content

The Death Of The Nike+ SportWatch

published icon  |  category icon hardware

A friend finally convinced me to pick up running again. The last time I regularly went out for a jog was in 2017—since then, I switched running for cycling as my new job requires me to cycle about an hour as part of the daily commute. I thought my condition allowed me to quickly build up the running cycle. And it did, except that my muscles refused. Cycling and running clearly isn’t the same!

I don’t like running with a smartphone (or music). Even keys can get irritating. Yet I still wanted to have a general idea of how fast I was going and how long I should still be going. I bought a Nike+ SportWatch in 2016 to keep track of my runs and patiently build up to 10 km. Back then, it was fun to compete with colleagues on the Nike+ website, as we all planned to attend the same running competition in the fall of that year.

After recharging, my watch still works. Sort of. The GPS locks in quickly (thanks TomTom) and the live stats are still visible. However, as soon as I want to view other data on a computer, I’m out of luck: Nike pulled the plug on the SportWatch ecosystem. Gone are the servers and the syncing software. I wasn’t keen on uploading my run data to their server anyway, but the problem is even more severe. The Nike+ Connect software requires a server connection in order to upload GPS and metadata. It’s never stored locally!

The popularity spike of Strava birthed all sorts of small projects that automatically export from Nike+ to Strava. Even if I wanted to use Strava, these are useless nowadays: this exports from the https://developer.nike.com/services API, which is defunct. I only found a single GitHub project that attempts to directly pry out the data from the watch itself. Thanks to the closed-source secrets of the Nike software, Dutch university students Leendert van Duijn & Hristo Dimitrov had to listen in on the communication between OS, USB, and Nike server, using BurpSuite, TcpDump, Wireshark, pycap and pyusb. The details can be found in their paper, stored in the SportWatch hacking GitHub repository.

Their efforts paid off—sort of. They managed to identify the raw bytes that issue command such as get_info and read_eeprom, and while the former works, the latter gives a timeout here. Suppose I want to continue this hacking project. Perhaps I’ll build a Nike+ stub server to fool the old official USB drivers. There is no way to inspect the data traffic since the servers are down. That means it became very difficult to reverse-engineer the drivers and software.

I’m quite upset about this: as soon as a big company decides to shut down the software, you’re basically screwed. Nike+ SportsWatches go for like $20 on eBay now as they have become completely useless. The worst part is, the drivers still work: I managed to find an old Windows version. If the drivers fetch the data from the watch to your computer before uploading it to the server, why can’t they just dump the files locally? That would have given us a way to further automate this from there. The software has to work like this anyway! As a software developer myself, I’m ashamed about this piece of crap software. How could they put out something like this?

I think it’s quite sad that things like SyncMyTracks exist. Their motto:

With SyncMyTracks you can forget about manually import all activities from your old sports tracking application to which you currently use. The application will do it for you automatically.

Well yeah, provided my “old sports tracking application” still allows me to fetch data from the sports device in the first place! My wife once bought the hyped Pebble watch. Four years later, the company is defunct, and we had to rely on the community to cook up Rebble.io to keep the open source project alive. Even that nowadays barely works, and the Pebble was supposed to be open source.

The SportWatch hardware itself still works flawlessly—I just can’t access my data. The irony. For now, my solution is not to buy yet another watch, but to simply read out the history on the watch itself and write it down in my journal. You can still read things like average pace and distance. The geodata is lost forever.

I'm Wouter Groeneveld, a level 36 Brain Baker, and I love the smell of freshly baked thoughts (and bread) in the morning. I sometimes convince others to bake their brain (and bread) too.

If you found this article amusing and/or helpful, you can buy me a coffee - although I'm more of a tea fan myself. I also like to hear your feedback via Mastodon or e-mail. Thanks!