iPod / Amarok / Buffer I/O Issues

scoultas ulist at gs1.ubuntuforums.org
Fri Jun 30 19:13:11 UTC 2006


Continuing to respond to my own query...



I see the following article at Linux Magazine... it seems a 2.6 kernel,
by adding support for EFI partition support, breaks compatibility with
the iPOD hard drive.   I'm reluctant to recompile my kernel, as I've
already done this to include specific changes for my ATI Remote Wonder
- is there any alternative to this?  Article follows : 



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/.


-- 
scoultas




More information about the ubuntu-users mailing list