iPod mini SD-Card mod

Mission Description

I have an aging iPod mini (1st generation, 820-1626-A) with a 4GB harddisk. For a while I've noticed that I'm getting less and less runtime from the original battery. Mind you the playtime was never very good - the 1st gen only has ~8h of playtime! For comparison the 2nd gen iPod mini more than doubled that to ~18h.

And since I already was getting it open I though it would be a fun project to change the 4GB harddrive to solid-state. The iPod mini has a standard CF harddisk so you can easily replace it with a CF SSD device. However instead of just getting a 8GB Compact Flash device I thought I'd rather put in a CF-SDCard adapter and use a SD-Card instead. SD is cheaper than CF for the same capacity and apart from that both my digital camera and my USB stick use SD-Card.

Thanks to the wonders of China both the battery and the CF-SD adapter were soon on my doorstep. I got the SD-Card from a local vendor.

First tests were done putting the SD-Card into the adapter and the adapter into an external CF-USB reader. (The reader actually reads SD-Cards as well but not the 8GB version since it's SD-HC). The CF-adapter worked flawlessly and I had high hopes.

So I swapped the battery and replaced the HD with the CF adapter. MacOS X recognized that the drive wasn't properly initialized and offered to format it (using diskutil). At this time I didn't do that but instead went for iTunes which also recognized that the device somehow wasn't right... the restore process aborted almost immediately with error 1429.

State of the Onion

So no, at this time it doesn't work, because I can't get the iPod restored.

The whole thing is a bit weird. I can use dd to read and write blocks to the raw device (e.g. /dev/disk1) but as soon as I try to put a partition table onto the drive the problems start.

What I'm suspecting is that maybe the CF-SD adapter doesn't support a read/write mode that the iPod is using such as DMA. But that's only a wild guess.

If anyone has succeeded in doing this (maybe by using a different adapter), please let me hear from you!.

Brain Dump

Here's the partition map of the original 4GB harddisk:

$ pdisk /dev/disk2 -dump

Partition map (with 512 byte blocks) on '/dev/disk2'
 #:                type name           length   base    ( size )
 1: Apple_partition_map partition map      62 @ 1      
 2:          Apple_MDFW firmware        65536 @ 63      ( 32.0M)
 3:           Apple_HFS disk          7933880 @ 65600   (  3.8G)

Device block size=512, Number of Blocks=7999488 (3.8G)
DeviceType=0x0, DeviceId=0x0

Here's the partition map of the 8GB SD-Card plugged into the CF-USB adapter:

$ pdisk /dev/disk1 -dump

Partition map (with 512 byte blocks) on '/dev/disk1'
 #:                type name         length   base     ( size )
 1: Apple_partition_map Apple            63 @ 1       
 2:          Apple_MDFW firmware      65536 @ 64       ( 32.0M)
 3:           Apple_HFS speechless 15957568 @ 65600    (  7.6G)

Device block size=512, Number of Blocks=16023168 (7.6G)
DeviceType=0x0, DeviceId=0x0

Image original iPod disk to file:

$ dd if=/dev/disk2 of=iPodDisk.img

Restore onto SD-Card:

$ dd if=iPodDisk.img of=/dev/disk1
$ pdisk /dev/disk1 -dump

Partition map (with 512 byte blocks) on '/dev/disk1'
 #:                type name           length   base    ( size )
 1: Apple_partition_map partition map      62 @ 1      
 2:          Apple_MDFW firmware        65536 @ 63      ( 32.0M)
 3:           Apple_HFS disk          7933880 @ 65600   (  3.8G)

Device block size=512, Number of Blocks=7999488 (3.8G)
DeviceType=0x0, DeviceId=0x0

Interestingly enough, diskutil has quite a different view on things:

$ diskutil list disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *7.6 Gi     disk1

I can use pdisk /dev/disk1 to initialize a partition table and create the necessary partitions. The ptable is not persistent however and when I exit pdisk and restart it it'll just tell me again that the disk has no partition table. Using dd to get the first couple of blocks I can actually see the partition table on the device...

Photos

parts front, open heart surgery back, original parts sdhc replaced new battery fitted tools

Links

Last modified: Jul 8 2009
Copyright ©2008 Ulrich Hertlein