Re: Apple Ipod doesn't work with USB on linux (but works with FireWire)

From: Avi Kivity
Date: Sun Nov 07 2004 - 05:14:43 EST


Jörg Spilker wrote:

Hi,

i recently purchased a new Ipod Mini which i initially used via Firewire on my Laptop with windows.
Then i tried to change to Linux (using gtkpod for managing my playlists). Because i want to leave the
firewire cable connected to the laptop, i tried using the USB variant on Linux. My first try was with
SuSE 9.0 and a 2.4.x kernel. Unfortunately with no success. Same errors as you see here (now with
SuSE 9.2 and kernel 2.6.8).


I recently posted a patch which fixes the problem; see attached.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

As jeffmock notes in http://tinyurl.com/6lmwp, the Apple iPod lies about its
size. It hurts particularly badly in this case, since if you access the iPod
beyond its real (not advertised) size, it locks up, and as some partition
tables (EFI) are stored at the end of the device, it locks up on the instant
you plug it in.

Note that contrary to what Jeff says, the error is only one sector. Maybe he
tried to read using the block device and got bitten by readahead.

Signed-off-by: Avi Kivity <avi@xxxxxxxxxx>

--- linux-2.6.8-1.624.aviipod/drivers/usb/storage/unusual_devs.h.ipod 2004-10-29 19:25:48.884603153 +0200
+++ linux-2.6.8-1.624.aviipod/drivers/usb/storage/unusual_devs.h 2004-10-29 20:27:40.799654665 +0200
@@ -424,6 +424,13 @@
0 ),
#endif

+/* Reported by Avi Kivity <avi@xxxxxxxxxx> */
+UNUSUAL_DEV( 0x05ac, 0x1203, 0x0001, 0x0001,
+ "Apple",
+ "iPod",
+ US_SC_DEVICE, US_PR_DEVICE, NULL,
+ US_FL_FIX_CAPACITY ),
+
#ifdef CONFIG_USB_STORAGE_JUMPSHOT
UNUSUAL_DEV( 0x05dc, 0x0001, 0x0000, 0x0001,
"Lexar",