2008-02-25:
Fixing iPod on linux read-only errors (mostly)
I tried to use my iPod on Ubuntu linux and was dismayed when banshee
(a music player that can sync with iPods) crashed on me. The error
that it gave me was about not being able to write a file in the
/media/iPod/iPod_Control path.
Sure enough, the iPod was mounted read-only. I tried to remount
it as read-write from root:
% mount -oremount,rw /media/iPod
To no avail. Still unwriteable, even as root.
I found out that linux can't handle iPods that use journaled
filesystems. I can tell that mine is journaled because there's
a .Journal file in the root directory of the iPod ("ls -a" will
show this). You can turn off the journal using a Mac:
- Connect the iPod to a Mac (feel free to quit iTunes)
- Start up "Disk Utility"
- Select the iPod (the volume, not the disk - the one that
has the same name as your iPod)
- Turn off Journaling under the File menu. On post 10.4 Macs
you need to hold down the option key when selecting the file
menu in order to see this option.
- Eject.
Now it can be read-writeable on your UNIX box, but by default it's
read-only. We need to add it to our /etc/fstab file. First figure
out what device it's attached to. Connect the iPod and run the
'df' command, looking for the iPod line, something like:
/dev/sda3 3966592 3769360 197232 96% /media/iPod
It's connected to /dev/sda3, but I suggest using a UUID instead of a
device, otherwise any other disks you attach to this USB port will
look like the iPod. The UUID specifies the iPod disk (and it will
work regardless of USB port as well). So find the UUID:
% vol_id -u /dev/sda3
47CF11D8BE990003
Your results, of course, will vary. Now I can add this line to /etc/fstab
(edit as root):
UUID=47CF11D8BE990003 /media/iPod auto rw,user,noauto 0 0
Now unmount the iPod (either using 'umount /media/iPod' as root, or
by ejecting it from your desktop).
Finally, we need to create the directory, since it won't be auto-created
anymore (as root):
% mkdir /media/iPod
Unfortunately after doing this a few times, it went back to being read-only.
By running 'dmesg' I saw this error:
[345965.968000] hfs: Filesystem was not cleanly unmounted, running fsck.hfsplus is recommended. mounting read-only.
Aha! That's what I get for unplugging my iPod before it was done unmounting.
Unfortunately to get fsck.hfsplus on your linux box you need to port it
from the Apple source.
Unfortunately this process blows. So I just hooked it back up to my Mac
and used disk utility to repair it. Anyone have a linux copy of fsck.hfsplus?
So, I connect the iPod to my Mac, open Disk Utilities and ran "repair disk"
on the iPod. It didn't actually find anything wrong, but it marked the
disk clean, and then my linux box could mount it read-write again, at
least as root.
To get around this annoyance, I converted my "Mac" iPod (HFS+) to a
"PC" iPod (VFAT32) as an experiment. Good instructions at
http://www.cavecanen.org/linux/ipod/
(remember to update the UUID and device in /etc/fstab if you do this!)
That was fun as a test, but in the end I simply installed
rockbox on the iPod.
Back to Solutions.