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.
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!.
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...