Nokia N810: The ‘partition bug’

Are you a new user of Nokia’s N810 and have you ever wondered why after a bit of use, your internal memory card seems to behave a bit oddly, like not allowing some things, e.g.:

mimir:/media/mmc2$ ls
ls: Cannot stat 'My downloads': Input/output error

If you have, you should check the disk partitioning on your device:

mimir:/media/mmc2$ sudo sfdisk -l
Disk /dev/mmcblk0: 61440 cylinders, 4 heads, 16 sectors/track
Units = cylinders of 32768 bytes, blocks of 1024 bytes, counting from 9

Device           Boot   Start    End     #cyls      #blocks      Id     System 
/dev/mmcblk0p1          0+       62719   62720-     200732       b      W95 FAT32
[...]

As you (might) see: the partition is actually larger than the drive proper. So, to fix this:

  1. Back up your data. Just mount the device and copy everything off it. Some files might give problems because they’re already in the wrong part of the drive. Tough luck.
  2. Assuming you haven’t already connected in via USB to do the backup, connect it.
  3. Throw a partitioning tool of your choice at the USB Mass Storage device that represents your N810’s memory card.
  4. Delete the old partition, and create a new one in the free space.
  5. If your partitioner barks around saying something about the bad partition, go ahead and zero the first 512 of the device:
    sudo dd if=/dev/zero of=/dev/sdX bs=512 count=1
    (X being the appropriate character for your drive – check dmesg if unsure)
  6. Create a new file system on the partition:
    mkfs -f vfat /dev/sdX1
    (Take not of the “1” (number one) after sdX – you need to specify it.)
  7. Copy back your backup.
  8. Power cycle the N810.

Should help.

Kudos to KotCzarny of #maemo fame.