The iPod Touch is unlike any previous iPods, but is very similar to the iPhone. It's basically an iPhone without the phone, camera, or bluetooth. That doesn't sound like it leaves much, but what it leaves is high-resolution video iPod functionality, plus wi-fi networking, built on top of a miniature Mac OS X complete with web browser, email client, and other programs.
Apple's firmware doesn't allow adding apps that aren't already there, other than using web apps designed for the iPhone/iTouch platform. (A new firmware version coming soon will open this up a bit, but not by much.) However, people have figured out ways of fixing ("jailbreaking") the firmware to allow installing third-party apps, and there's even a de-facto standard packaging/installing system to make it easy to get and install programs.
A Linux guy gets started with iPod Touch
Of course, my first hurdle was that the box says "requires Mac OS X or Windows XP or Vista", and I run Linux exclusively. Having already found some information online about using the iPhone and iPod Touch with Ubuntu, I didn't see that as a big problem until I turned on the thing and got only a solid image that I later learned meant "plug this into iTunes". The Touch won't do anything until it's activated with the iTunes program. I tried messing with a Linux program for hacking into the iPhone/iTouch (xpwn), but didn't get very far even after finding firmware images to download.
So I realized I really had to use the iTunes program to get the Touch running. That's OK, I thought, Wine should be mature enough by now to handle it. And indeed I found some instructions for getting iTunes to run on Wine. Of course, those instructions were for iTunes 7.3 rather than the latest 7.6 (at least there was a link to earlier versions), and left out some important links to supplemental DLLs (not to mention that it talked about an earlier version of Wine than I had, and the version I had wasn't the latest version). After trying two different versions of iTunes on two versions of Wine (I never did try the latest version), I did manage to get the program running. Very slowly. But it still didn't do anything with the iPod. I finally learned that even the latest version of Wine (1.0-RC-something) doesn't have the necessary USB support to talk to the iPod.
So I finally gave up, and installed iTunes on duriyah's Windows XP machine. I was quite impressed with the functionality the program appears to have, but all I cared about was activating the iPod, which I managed to do without having to sign up for anything.
That left me with an iPod Touch that I could use for a lot of things, including web and mail and YouTube and Google Maps and weather and a calculator and notes, but not for music or movies unless I wanted to be tied to the Windows machine. Since I couldn't put any music on it yet, the first music I played was from YouTube: Oingo Boingo's "Dead Man's Party" video.
Next I realized that plugging the iPod Touch into the Linux machine didn't properly enable charging. Apparently, unlike previous iPods, Apple requires some weird USB handshaking to happen in order to charge the iPhone and iPod Touch. I had to add a kernel module to make it work; I expect that this module will be integrated into standard Linux kernels in the future. (It's also a little strange that plugging the iPod Touch in makes Ubuntu think I've plugged in a camera.) Anyway, I ended up buying a power adaper so I can charge from wall power.
Jailbreak for the good stuff
Non-Touch iPods have had direct Linux support for years, but as I said before, this one's different. There's some ongoing effort to add better support to the standard Linux programs, but for now the instructions say "start with a jailbroken iPod." I tried that Linux program for doing it, but it's still in early development, I didn't entirely understand yet what needed to happen, and I'd already given up on the no-Windows-at-all route for getting started. So I used "ZiPhone" on the Windows machine to open the iPod to further fun. After that I didn't need Windows anymore.
Besides "jailbreaking" the iPod/iPhone, ZiPhone installs a couple extra things on the iPod/iPhone -- some BSD Unix utilities for working with the underlying OS, ssh for accessing the iPod/iPhone over the network (which is the current way to get music onto this iPod from Linux), and most visibly, the Installer app. Installer is the gateway to just about everything else; there's a whole ecosystem built up of third-party applications built for the iPhone and iPod Touch to be installed with Installer. One can add arbitrary repositories of applications to get, in a way reminiscent of the Linux "apt" or "yum" systems, so there are many different sources of programs easily accessible.
Some added applications
Of course, some things needed to be installed to do minor fixes to the system, like putting all these applications on the larger part of the available storage space, or fixing backspace in the Unix shell. But others are far more interesting.
Many of the interesting add-on applications use iPhone features that the iPod Touch doesn't have, but most work on both.
Some of those I've installed are oriented toward giving functionality that doesn't require a network connection:
- A dictionary program
- An e-book reader
- A sketch program (shake to erase, like an Etch-A-Sketch! It can also email your sketches.)
- A player for Infocom games (I now have Hitchhiker's Guide and Zork!)
- Various HP calculators (more advanced than the simple built-in calculator)
- A periodic-table viewer
- A moon phase viewer
- A units converter
- A magic 8-ball (shake to get a new answer)
- A text editor
- A local file browser for viewing files that have been copied to the iPod
- A tool to allow playing audio and video files that have been copied to the iPod without being entered into the database
- A password saver
- A Terminal program for typing commands on an internal shell, (or even using ssh to access another machine!)
And others use the wireless network connection, when it's there:
- A program to synch the Touches internal calendar with my Google calendar
- A Last.fm scrobbler/player (scrobbling all my music playing even when I'm offline when it's played)
- A podcast downloader
- A Livejournal posting program
- An RSS feed reader
- An IRC client
I even have a Ruby interpreter on there (and could add Perl and possibly Java).
There are some IM programs too, but I haven't quite figured out the right one yet. And there's supposedly an internet radio player, but it crashes whenever I try to use it. If I bought a $50 microphone/headset interface I could add a VoIP program and be able to use it for phone calls after all.
There are also two different offline wikipedia programs, that rely on a dump of the entire wikipedia database saved on the iPod. The only trouble is that the database dump takes 2-3 GB of the available 8GB, and creating that dump in the proper format isn't necessarily straightforward yet. I'll get to that soon.
So then I finally got Amarok sending music to the iPod. Only trouble is that cover art didn't get sent to the iPod without some contortions -- including downgrading to a version of Amarok that ironically doesn't seem to get cover art from Amazon properly. This is more of a packaging issue than anything,
Apparently there's a program dedicated to getting cover art
Finally, this thing has a high-res (163 dpi!) 480x320 screen (3:2 aspect ratio) for playing videos, and I've managed to get mencoder to re-encode videos for playing on it (I tweaked the encoding command to always give me videos at 320 pixels high and the appropriate width for that height, changing "scale=320:240" in the script to "scale=-3:320"). The player gives the option of zooming to full-height or full-width. Soon I'll probably buy a cable to connect the iPod to a TV monitor for playing on a big screen; unfortunately cables made for older iPods won't work.
So yeah, quite the fun toy here.....