The iPod and the Penguin

Learn how to make your iPod work with your penguin.

Q. I am using Fedora Core 2 and can’t connect to my new iPod. Can you help?

A. While Linux isn’t officially supported by Apple, the iPod works well with Linux nonetheless, albeit with a minor caveat.

If you’re running a pre- 2.6 kernel, using the iPod can be as easy as plugging it in, mounting it, and downloading an application such as gtkpod( http://gtkpod.sourceforge.net/) to upload songs and playlists, and edit ID3 tags, among other tasks. In fact, if you really like Apple’s iTunes, you can also try the latest beta release of CodeWeavers’ CrossOver Office( http://www.codeweavers.com), which may allow you to run the Microsoft Windows version of iTunes on Linux.
However — and this is the caveat — if you run Fedora Core 2 or another 2.6.x- based Linux distribution, you’ll notice that your system recognizes the iPod when you plug it in, but otherwise fails to mount the device. Specifically, you should notice something similar to the following in /var/log/messages when you plug the iPod in:
sda:end_request: I/O error, dev sda, sector 39063016
Buffer I/O error on device sda, logical block 4882877
end_request: I/O error, dev sda, sector 39063016
Buffer I/O error on device sda, logical block 4882877
So what’s the problem? To Linux, the iPod looks like a removable disk drive. Regardless of whether you use USB or Firewire to connect the iPod to your computer, Linux uses SCSI emulation to access it. The first part of the problem is that the iPod reports that it has slightly more sectors than it actually has. This alone wouldn’t cause the errors shown above, but the iPod rejects all additional I/O requests if an attempt is made to access a sector that is greater than the actual number of sectors but less than the reported number of sectors. So, your machine “locks” the iPod simply by accessing a disk sector that the iPod reports as being there.( To reset the iPod, you have to unplug it.)
You may be asking yourself why are only 2.6.x based kernels affected? When you attempt to mount the iPod, the Linux kernel tries to find its partition table. For most file systems, the partition table is on the first sector of the partition. 2.6- based kernels, however, support a new type of partition table called EFI( part of the extensible firmware initiative) that’s located in the last few sectors of a partition. On the iPod, unfortunately, these last few sectors are in the space that causes the iPod to lock if accessed.
The easiest fix is to remove EFI partition support from the kernel, as you probably don’t need the feature. To disable EFI, de-select the CONFIG_EFI_PARTITION option( File systems, Partition Types, EFI GUID Partition support) and then recompile your kernel. Once you boot into this kernel, you can access and enjoy your iPod.
While detailed kernel compilations instructions are beyond the scope of this article, you can find many guides on the web, including the Kernel Building HOWTO at http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html. You can also find modified kernel RPMs for FC2 at http://mirror.linuxquestions.org/pub/lq/iPod/.
If you do choose to recompile yourself, don’t forget to select all of the options that your previously installed kernel had. Your distribution should have a copy of the configuration file that was used for the running kernel in the appropriate kernel source package. And if you know your hardware very well, you can also use the latest “Linus” kernel available from http://kernel.org.
While having to recompile the kernel on 2.6.x-based distributions is a minor inconvenience, enjoying the iPod with Linux is well worth it.
Have fun!

Jeremy Garcia is the founder and administrator of LinuxQuestions.org, a free, friendly, and active Linux community. Please send questions and feedback to jeremy@linuxquestions.org.

Comments are closed.