Apple TV 250GB Hard Drive Upgrade

From Mac Guides

Jump to: navigation, search
This article or section is based on a forum post written by Paduck.


Contents

Summary

A few months ago, I got a 40GB Apple TV from eBay for $60 to put the kids' videos on. It worked great, but the hard drive was too small to store all the videos I wanted on it. I wasn't keen on streaming and don't have my iMac on all the time. Since my Apple TV isn't under warranty, there was no obstacle to doing the upgrade. I took the plunge and upgraded the hard drive on my Apple TV to 250GB since Microcenter was running a special on the 250GB Western Digital Scorpio drive for $90 (the largest drive available that would work in the Apple TV at the time). I did a hybrid installation using suggestions from several web pages. The upgrade went very well, I rebooted, did a factory restore, upgraded to Apple TV v2.2 of the software and resynced everything. Works great!

I have subsequently applied upgrades through Apple TV v2.3.1 of the software without incident.

My goal was to reliably do the upgrade without having to wait forever to copy blank data from the 40GB hard drive I had in the Apple TV. It seemed unnecessary to waste time or disk space on that. A review of the available references I found on the web seemed to indicate that just copying the EFI and Apple_Recovery partitions from the Apple TV would be sufficient. To be on the safe side, I wanted to make disk images of those two partitions as well. I also had some reservations because there seemed to be an indication in forums and web pages that doing the upgrade using a PowerPC instead of an Intel Mac might be problematic. It turned out not to be.

NOTE: Without a doubt, the procedure described below will void your Apple warranty. The results have been positive for many people, but you proceed at your own risk.

Equipment

Apple TV 40GB; Western Digital 250GB 2.5 inch IDE hard drive (WD2500BEVE); i-Connect 3-in-1 USB drive adaptor, 8GB USB keydrive, TORX-8 and TORX-10 screwdrivers, and a G5 iMac.

NOTE: Western Digital now makes a 320GB 2.5 inch IDE hard drive (WD3200BEVE) if you need even more space.

Be aware that the Apple TV requires a 2.5 inch IDE hard drive for a straight replacement of the internal drive. SATA hard drives will not work without additional hardware like an IDE-SATA convertor that will have difficulty fitting inside an unaltered Apple TV case.

The Plan

  1. Pull the Apple TV original hard drive
  2. Copy the EFI and RECOVERY partitions to DMG files on the USB keydrive
  3. Properly format and install appropriate partitions onto the new 250GB drive
  4. Install the 250GB into the Apple TV
  5. Connect and update Apple TV software
  6. Sync everything in iTunes onto the Apple TV (approximately 60GB)
  7. Store original 40GB Apple TV drive

Instructions

The Engadget instructions for taking apart the Apple TV are very good and they have nice pictures. So, I had no trouble pulling the drive.

Once I had the drive, I wanted to connect it with minimal chance of corruption to the iMac, so I booted into single-user mode. Unfortunately, the diskutil command wasn't available there, so I rebooted. This had the unfortunate effect of putting copies of Spotlight indexes in my OSBoot partition and Media partitions on my original drive. I deleted them (the Engadget instructions were helpful there), but I'll note it here for everyone's benefit - everything didn't go 100% according to plan, but it all worked out. I probably should have put a utility on my Mac that turned off Spotlight. Still, no harm seems to have been done, although I was very concerned for awhile.

Once I rebooted my Mac from single-user mode, I went straight into the Terminal and got a listing of all the disks. Note that my Apple TV ended up being /dev/disk1 and the USB drive where I wanted to store my disk images was /dev/disk2. The USB disk is called "paul".

Below, Courier font for everything in the Terminal. Bold for what I actually typed in.

 Last login: Sat Oct 25 20:40:28 on console
 [iMacG5:~] paul% diskutil list
 /dev/disk0
 #: TYPE NAME SIZE IDENTIFIER
 0: Apple_partition_scheme *232.9 Gi disk0
 1: Apple_partition_map 31.5 Ki disk0s1
 2: Apple_HFS Macintosh HD 232.8 Gi disk0s3
 /dev/disk1
 #: TYPE NAME SIZE IDENTIFIER
 0: GUID_partition_scheme *37.3 Gi disk1
 1: EFI 34.0 Mi disk1s1
 2: Apple_Recovery 400.0 Mi disk1s2
 3: Apple_HFS OSBoot 900.0 Mi disk1s3
 4: Apple_HFS Media 35.8 Gi disk1s4
 /dev/disk2
 #: TYPE NAME SIZE IDENTIFIER
 0: FDisk_partition_scheme *7.5 Gi disk2
 1: Apple_HFS paul 7.5 Gi disk2s1

after identifying all the disks, I plotted out my commands on paper first. I started out using the AwkwardTV instructions to make copies of the EFI and Apple_Recovery partitions. AwkwardTV used the "sudo" command to preface every other command. It is unclear to me if this is necessary, but I used it and it worked. Someone who understands Unix a little better can explain whether or not it is redundant. Note that I use the full disk name for my USB keydrive "/Volumes/paul/". According to AwkwardTV, my Apple_Recovery partition should be 419430400 bytes. Mine was actually 419405824. This had be concerned as well, but again, all seems to work in the end.

 [iMacG5:~] paul% sudo diskutil unmountDisk /dev/disk1
 Unmount of all volumes on disk1 was successful
 [iMacG5:~] paul% sudo dd if=/dev/disk1s1 of=/Volumes/paul/efi.dmg bs=1m
 34+0 records in
 34+0 records out
 35651584 bytes transferred in 14.665292 secs (2431018 bytes/sec)
 [iMacG5:~] paul% sudo dd if=/dev/disk1s2 of=/Volumes/paul/recovery.dmg bs=1m
 399+1 records in
 399+1 records out
 419405824 bytes transferred in 175.350872 secs (2391809 bytes/sec)

At this point, I ejected the original Apple TV 40GB drive.

 [iMacG5:~] paul% diskutil eject disk1
 Disk disk1 ejected

Then I added the new, blank, 250GB Western Digital drive. Continuing on with the AwkwardTV instructions, I found that the command "gpt destroy /dev/disk1" didn't take as the drive appears unformatted. Again a little concerning, but I just moved on to the next command which was basically to initialize the disk.

 [iMacG5:~] paul% diskutil list
 /dev/disk0
 #: TYPE NAME SIZE IDENTIFIER
 0: Apple_partition_scheme *232.9 Gi disk0
 1: Apple_partition_map 31.5 Ki disk0s1
 2: Apple_HFS Macintosh HD 232.8 Gi disk0s3
 /dev/disk1
 #: TYPE NAME SIZE IDENTIFIER
 0: *232.9 Gi disk1
 /dev/disk2
 #: TYPE NAME SIZE IDENTIFIER
 0: FDisk_partition_scheme *7.5 Gi disk2
 1: Apple_HFS paul 7.5 Gi disk2s1
 [iMacG5:~] paul% diskutil unmountDisk /dev/disk1
 Unmount of all volumes on disk1 was successful
 [iMacG5:~] paul% sudo gpt create /dev/disk1

With a successfully created disk, now was the time to add the partitions. I used AwkwardTV's MacOS 10.5 instructions:

Adding the EFI partition (note, AwkwardTV recommended unmounting the disk before almost every command).

 [iMacG5:~] paul% diskutil unmountDisk /dev/disk1
 Unmount of all volumes on disk1 was successful
 [iMacG5:~] paul% sudo gpt add -b 40 -i 1 -s 69632 -t efi /dev/disk1
 /dev/disk1s1 added

Adding the Apple_Recovery partition (I do not know why it has the strange name beginning with "5265636F-")

 [iMacG5:~] paul% diskutil unmountDisk /dev/disk1
 Unmount of all volumes on disk1 was successful
 [iMacG5:~] paul% sudo gpt add -b 69672 -i 2 -s 819200 -t 5265636F-7665-11AA-AA11-00306543ECAC /dev/disk1
 /dev/disk1s2 added

Create the OSBoot Partition:

 [iMacG5:~] paul% diskutil unmountDisk /dev/disk1
 Unmount of all volumes on disk1 was successful
 [iMacG5:~] paul% sudo gpt add -b 888872 -i 3 -s 1843200 -t hfs /dev/disk1
 /dev/disk1s3 added

Now a little more tricky, create the Media partition. To find out the right numbers to plug in for the appropriate size, you have to take a look at the disk. Note that the two key numbers in the final "gpt" command are in the start and size columns (2732072 and 485665063). Depending on the size of your hard drive, these numbers may be different.

 [iMacG5:~] paul% diskutil unmountDisk /dev/disk1
 Unmount of all volumes on disk1 was successful
 [iMacG5:~] paul% sudo gpt show /dev/disk1
 start size index contents
 0 1 PMBR
 1 1 Pri GPT header
 2 32 Pri GPT table
 34 6 
 40 69632 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
 69672 819200 2 GPT part - 5265636F-7665-11AA-AA11-00306543ECAC
 888872 1843200 3 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
 2732072 485665063 
 488397135 32 Sec GPT table
 488397167 1 Sec GPT header
 [iMacG5:~] paul% diskutil unmountDisk /dev/disk1
 Unmount of all volumes on disk1 was successful
 [iMacG5:~] paul% gpt add -b 2732072 -i 4 -s 485665063 -t hfs /dev/disk1
 /dev/disk1s4 added

Now it's time to copy my disk images for the EFI and Apple_Recovery partitions onto the new Apple TV drive. Note that I am putting in the full name of the disk drive they reside on "/Volumes/paul/".

 [iMacG5:~] paul% sudo dd if=/Volumes/paul/efi.dmg of=/dev/disk1s1 bs=1m
 34+0 records in
 34+0 records out
 35651584 bytes transferred in 7.474555 secs (4769727 bytes/sec)
 [iMacG5:~] paul% sudo dd if=/Volumes/paul/recovery.dmg of=/dev/disk1s2 bs=1m
 399+1 records in
 399+1 records out
 419405824 bytes transferred in 75.162186 secs (5580011 bytes/sec)
 [iMacG5:~] paul% diskutil list
 /dev/disk0
 #: TYPE NAME SIZE IDENTIFIER
 0: Apple_partition_scheme *232.9 Gi disk0
 1: Apple_partition_map 31.5 Ki disk0s1
 2: Apple_HFS Macintosh HD 232.8 Gi disk0s3
 /dev/disk1
 #: TYPE NAME SIZE IDENTIFIER
 0: GUID_partition_scheme *232.9 Gi disk1
 1: EFI 34.0 Mi disk1s1
 2: Apple_Recovery 400.0 Mi disk1s2
 3: Apple_HFS 900.0 Mi disk1s3
 4: Apple_HFS 231.6 Gi disk1s4
 /dev/disk2
 #: TYPE NAME SIZE IDENTIFIER
 0: FDisk_partition_scheme *7.5 Gi disk2
 1: Apple_HFS paul 7.5 Gi disk2s1

Now at this point, AwkwardTV says that you are done. I know that I have blank OSBoot and Media partitions, because I just created them from scratch. However, I went ahead and followed Waroth.K's instructions to remove the partitions and put them back on. I'm thinking that this might be redundant. Perhaps the configuration statements below can be simply replace AwkwardTV's partition creation statements? I'm unclear. Doing it twice didn't harm anything though. I'd be interested in other people's thoughts about this.

 [iMacG5:~] paul% diskutil eject disk1
 Disk disk1 ejected
 [iMacG5:~] paul% gpt remove -i 4 disk1
 disk1s4 removed
 [iMacG5:~] paul% diskutil eject disk1
 Disk disk1 ejected
 [iMacG5:~] paul% gpt show disk1
 start size index contents
 0 1 PMBR
 1 1 Pri GPT header
 2 32 Pri GPT table
 34 6 
 40 69632 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
 69672 819200 2 GPT part - 5265636F-7665-11AA-AA11-00306543ECAC
 888872 1843200 3 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
 2732072 485665063 
 488397135 32 Sec GPT table
 488397167 1 Sec GPT header
 [iMacG5:~] paul% diskutil eject disk1
 Disk disk1 ejected
 [iMacG5:~] paul% gpt add -b 2732072 -i 4 -t hfs /dev/disk1
 /dev/disk1s4 added
 [iMacG5:~] paul% diskutil eject disk1
 Disk disk1 ejected
 [iMacG5:~] paul% newfs_hfs -J -v Media /dev/disk1s4
 Initialized /dev/rdisk1s4 as a 232 GB HFS Plus volume with a 24576k journal
 [iMacG5:~] paul% diskutil list
 /dev/disk0
 #: TYPE NAME SIZE IDENTIFIER
 0: Apple_partition_scheme *232.9 Gi disk0
 1: Apple_partition_map 31.5 Ki disk0s1
 2: Apple_HFS Macintosh HD 232.8 Gi disk0s3
 /dev/disk1
 #: TYPE NAME SIZE IDENTIFIER
 0: GUID_partition_scheme *232.9 Gi disk1
 1: EFI 34.0 Mi disk1s1
 2: Apple_Recovery 400.0 Mi disk1s2
 3: Apple_HFS 900.0 Mi disk1s3
 4: Apple_HFS 231.6 Gi disk1s4
 /dev/disk2
 #: TYPE NAME SIZE IDENTIFIER
 0: FDisk_partition_scheme *7.5 Gi disk2
 1: Apple_HFS paul 7.5 Gi disk2s1
 [iMacG5:~] paul% diskutil eject disk1
 Disk disk1 ejected
 [iMacG5:~] paul% 

This is the point where I put the drive back into the Apple TV and rebooted. It asked for a factory restore, which I approved. Then I configured it, downloaded v2.2 of the software (my Apple TV has 1.0 native), and synced everything over ethernet.

The end result, after about four hours of work (mostly syncing) is a 231GB Apple TV with about 60GB of content installed. Total cost was $125 if you include the SATA/IDE adapter ($20) and a set of screwdrivers from Radio Shack ($15). I used a USB keydrive to store the disk images on, but I have subsequently copied them off to my hard drive for safe keeping. With the initial investment of $60 for the Apple TV, I am one very happy customer.

Links

Engadget "How to Upgrade the Drive in your Apple TV" - http://img.engadget.com/2007/03/23/how-to-upgrade-the-drive-in-your-apple-tv/

Awkwardtv.org "Hard Drive Upgrade Tutorial" - http://wiki.awkwardtv.org/wiki/Prepare_a_Hard_Drive#Preparing_the_partition_table

Waroth.K in the AppleTVHack's Forums - http://appletvhacks.net/forums/viewtopic.php?f=5&t=66#p188

Original MacRumors Forum Posting of this tutorial with discussion - http://forums.macrumors.com/showthread.php?t=589208