Wednesday, August 28, 2013

Linux - making an old ipod touch work

Ok, this was one of my toughest Linux projects yet.  I inherited 2 original ipod touch devices from the kids.  They still work like new.  As you know, you can't buy a music amplifier without an ipod dock, and it sucks trying to just use an audio cable.  The dock provides power, and allows a remote control.

So, if you want to use these things, it is best to dig up an old ipod that still works.  Let the kids have the new fancy ipods!

So, after much horrible hand-wringing and cursing, I have found that you first have to make sure the ipod works by hooking it up to an old windose machine and itunes.  You don't have to do this if everything is working, and do not do it especially if you like the music on the one you dug out of the trash.  The itunes always wants to wipe it out.  However, I wanted to load the new firmware on one of them, but this meant wiping everything out.  The other one I left alone, since it had good music.

So, get gtkpod and ifuse.  Hook the ipod up, and it mounts automatically in a rather useless manner (camera only).  But, make a directory, and use the ifuse mount command.  (look it up!).

Then, amazingly enough, everything shows up, including all the music.  Go down the directories, and find all the mp3's listed (the directory names are too long to type!).  The titles have all been shortened to 4 letters, but these are good mp3's, and they are scattered in a bunch of directories.  The internal database makes sense of it, and therein lies the tale.

Copy up all the music.  You can never do this with itunes.

Now comes the nasty part, if you want to use gtkpod, and load more music on it.  As we know, our dear friends at our favourite stagnant company don't like people screwing around with things, so they lock us out.  If you love them, you should never have read this (or anything for that matter).  They lock you out with the database key.  So I tried countless times to sync the ipod, and it always failed.  The touch is especially locked.

So, find the serial number of the device by looking at dmesg when you plugged it in.  It is very long.  Then run  --
ipod-read-sysinfo-extended 49ddcab17d746a516f5f1a25c9f86c64adab09aa /media/iphone

where that long number is your actual serial number.  This puts a sysinfo file in your ipod, and can be seen under itunes-control/device, or something like that.

Not enough!  Then take that serial number over to get a Hashinfo file, and put it in the same place.  gtkpod should now work.

Don't forget to close with fusermount -u /media/iphone or you will be rebooting a lot.

No comments: