iPod meets Linux

After I updated the firmware of my iPod Photo yesterday (1.1), Linux didn’t recognize it anymore. To connect it to Linux the first time some weeks ago I already had to patch the kernel. But I don’t want to patch the kernel everytime I update the firmware, so I took a deeper look at what’s going on.
As the result here is the ultimate patch for all the iPod models up to now! (It has been included in kernel 2.6.12 and later.) Just insert the following lines (or which of them are not already there) into drivers/usb/storage/unusual_devs.h in your kernel sources:

UNUSUAL_DEV( 0x05ac, 0x1202, 0x0000, 0x9999,
     "Apple",
     "iPod",
     US_SC_DEVICE, US_PR_DEVICE, NULL,
     US_FL_FIX_CAPACITY ),

UNUSUAL_DEV( 0x05ac, 0x1203, 0x0000, 0x9999,
     "Apple",
     "iPod",
     US_SC_DEVICE, US_PR_DEVICE, NULL,
     US_FL_FIX_CAPACITY ),

UNUSUAL_DEV( 0x05ac, 0x1204, 0x0000, 0x9999,
     "Apple",
     "iPod",
     US_SC_DEVICE, US_PR_DEVICE, NULL,
     US_FL_FIX_CAPACITY ),

UNUSUAL_DEV( 0x05ac, 0x1205, 0x0000, 0x9999,
     "Apple",
     "iPod",
     US_SC_DEVICE, US_PR_DEVICE, NULL,
     US_FL_FIX_CAPACITY ),

If you are using a standard kernel of a distribution, you can easily compile only the usb-storage module without compiling anything else. For SuSE it works similar to this (don’t cut & paste, just to get the idea):

  • install kernel sources
  • cd /usr/src/linux/
  • edit drivers/usb/storage/unusual_devs.h
  • zcat /boot/symvers-….gz > Module.symvers
  • make cloneconfig
  • make modules_prepare
  • make SUBDIRS=drivers/usb/storage modules
  • cp drivers/usb/storage/usb-storage.ko /lib/modules/2.6.x-override-default/
  • depmod -a
  • reload the module

If the patch is not working for you and you have an iPod purchased after January 2005, send me a copy of /proc/bus/usb/devices and I will update the patch. My address is: sven-ipod_at_anderson.de

Keywords: linux iPod mini photo shuffle USB problem connect not recognized patch kernel Buffer I/O error on device sda2 suse 9.0 9.1 9.2 9.3

5 thoughts on “iPod meets Linux

  1. Wouldn’t it be nice to use the special model type instead of just “iPod”? Or even more funny: Name it iRiver, Rio, Archos and so on depending on the weekday.

  2. Unfortunately the strings in this file are only used, if the device doesn’t provide its own name. The iPod does, so this string is never used. But of course you could write a usb driver patch, to make this possible.

  3. THANKS!!!!!!!!!!!

    Thats it!!

    many many thanks for this good work.

    You saved my day.

  4. From ChangeLog-2.6.12:

    Sven Anderson:
        [PATCH] USB: clean up all iPod models in unusual_devs.h

    Cool. My first official kernel patch.

Leave a Reply

Your email address will not be published. Required fields are marked *