Nike4All – Upload your Nike+ data to the official Nike+ website.
After a couple of days of hacking, I managed to get a way to upload the data from Nike+Ipod device to your Nikerunning account. No iTunes needed! That is quite cool considering that the Nike+ Ipod Sport kit has been out for a while (2006 according to wikipedia) and linux users had no way to sync their runs without iTunes. Until now.
Installation.
Simply download the python script from here. It’s a single file and all it requires is Python (was tested with 2.5 and 2.6 – should work also with 3.0). You can place the script wherever you want. It is suggested to save the script in /usr/bin so that you can run it without typing the path everytime.
GUI.
A graphical interface is also available, as Screenlet. Get it here.
First time run – pairing your data with your account.
1. If you don’t have one yet, create an account on the Nike+ website. You will be asked for an email address, password, personal details and, at the end, for a screenname. Just go throughout the entire registration. If you already have an account on the site, skip this step.
2. Make sure you are not logged in into your Nike+ account (hit logout).
3. Start nike4all issuing the following command:
gg@fly-home:$ nike4all.py -createAccount
Go to this URL and login whit username and password of the account you just created
Url to visit: http://www.nike.com/nikeplus/?token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&v=2
Press enter to continue only AFTER you login
4. After a few seconds you will be asked to visit a website: simply open that URL in your favourite browser and login using your credentials. Edit [28.02.11]: it seems Chrome may cause some troubles at this step. If it doesn’t work please use another browser; Firefox should do it.
5. After having done so, go back to the command line and hit Enter. The program will then say:
Congratulation, your status is now confirmed
The user <screenName> is now associated to the pin xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
Your pin was successfully saved in the configuration file
To update new files connect the iPod and use the following command:
nike4all -sync
The configuration file is in your home folder and it is called
.nike+rc
the running files you will be syncing will also be backup in the same folder
~/nike+
you can change the backup folder by editing the configuration file with your favorite text editor.
Usage.
You should already know by now.
Other than regular syncing, you can also upload specific files. Start the program without parameters to get a help message.
Caveats and technicalia.
If you already have a Nike+ account, you can still use that one. You existing data will not be lost but you may experiencing problems syncing with iTunes again in the future because your PIN was changed. Your iTunes PIN is stored on your iPod, encrypted (probably with AES CBC 128 bit) in a plist file. Maintaining the same PIN for iTunes and nike4all would require finding that password.
Please, do not use the nikerunning website with any other device that is not an iPod or a sportband. The nikerunning website is a service for Nike customer only and nike4all shall be seen as a tool that allow linux users to use this wonderful service.
License and Credits.
As usual, thanks to python and thank to Ubuntu. Nike4all was developed using only free software and it is released under GPL. If you like the software, please consider donating using the button on the right side – money will go into a research fund (the Institute of garage science).
Bugs and history.
If you find a bug, please drop me an email.
08/15/2009 – first release v0.1
Update (July/2010)
Masatoshi Kanzaki has published a similar tool to upload Nike+ Sport band data from linux! Get it on his blog.
Update (October/2010)
I uploaded the sourcecode on googlecode. Feel free to contribute or fork.
Any plans to release this for Windows?
I haven’t tried yet, but this may already work under Windows, actually.
I keep getting this error:
./nike4all.py -createAccount
Go to this URL and login whit username and password of the account you just created
Url to visit: http://www.nike.com/nikeplus/?token=************
Press enter to continue only AFTER you login
Congratulation, your status is now confirmed!
The user ******** is now associated to the pin *******************************
Traceback (most recent call last):
File “./nike4all.py”, line 518, in
if nike.savePinToFile():
AttributeError: nikeUploader instance has no attribute ‘savePinToFile’
Any hints?
There was a small bug in the new release. Thanks for pointing that out. It should work properly now. If it doesn’t please contact me via email.
-uploadFile worked like a charm anyway. I will test the fix, thanks a lot for it.
With the new version I get this error:
Traceback (most recent call last):
File “./nike4all.py”, line 531, in
if nike.saveConfigFile():
TypeError: saveConfigFile() takes exactly 3 arguments (1 given)
wow the best widget I have been waiting for!!!
after terminal nike pin association I had this error too:
Traceback (most recent call last):
File “/usr/bin/nike4all.py”, line 531, in
if nike.saveConfigFile():
TypeError: saveConfigFile() takes exactly 3 arguments (1 given)
Could you help me pleae?
Keep on going the great work!!! Bye.
Alright guys, now it should go. I was traveling and couldn’t really test it before but now works on my machine.
Wow, perfect! I’ll take it under test and will report any problem!
Thank you very much for your work!
Works excellent! Thanks for the fix.
hello, does this work for the new iphone 3gs?
I think the iphone 3gs cannot be mounted as disk in linux unless it is jailbroken. If this is really the case, then it should work with a freed iphone but one may have to specify a new path for the data.
[…] […]
Hi!
Is this script supposed to work also on Nike+ SportsBand? I don’t own an iPod so I thought the SportBand would be a good option, but booting to Windows just to sync to the Nike+ is just pain.
Can the Nike Sportband be mounted as an external disk? If yes, then it should work. May require a little tweaking though.
Hi, when i write the command:
nike4all.py -createAccount
i get: command not found. I have the file in the home directory and i cannot copy it to usr/bin
ok, my mistake, i was writting the line wrong.
Works perfectly, thanks
Awesome, simply awesome. I can now be totally free of Windows.
I wrote a Linux driver for sportband.
http://sourceforge.net/projects/comsport/
Congratulations for the wonderful idea of powering linux users to upload workouts to nike plus.
Unfortunately, I’d allways got the message:
Problem getting new pin. Did you login after creating the account?
Your temporary pin was …
I did login using the provided URL but it didn’t work.
Do you know what it could be?
Thank you.
Andre, send me an email (see the contact page) and we’ll figure it out.
The screenlet just freezes for me using Ubuntu 10.10. I can access its menu right up until the point where it says there is a new software update which could not be installed. Any ideas?