When the new unibody MacBook Pros (MBPs, henceforth) came out, many owners were up in arms over the fact that the new, supposedly high-end models lost SATA 2, and were only capable of 1.5 Gb/s SATA 1 speeds. Some people felt this was fair because Apple only provides SATA 1 drives, but this isn’t entirely true: some of the upgrade drives Apple offers on its online store are drives that would support 3.0 Gb/s speeds if Apple had enabled them.
A few weeks ago, Apple quietly released a firmware upgrade that enabled SATA 2 on the new MBPs. Unfortunately, something is wrong with the hardware, because now people with SATA 2 drives are having problems right and left. Apparently, the SATA bus on the MBP is unable to handle 3.0 Gb/s, and large numbers of transfer errors are occurring. SATA is designed to catch these errors, but since they’re not supposed to happen in the first place the result is not pretty. The system hangs for several seconds as the operating system deals with the errors and the data is reread. This causes the infamous Apple “spinning beach ball,” especially if a lot of processes are competing for disk access.
If I were to speculate (and what fun is a blog if you can’t do that?) I’d say that Apple’s hardware engineers used a cable that isn’t capable of reliably supporting the higher bit rate. Having opened up my MBP to upgrade the hard drive, I’m not surprised that the cable they used would have problems. It’s an unshielded ribbon cable that runs right along the case of the hard drive. It probably has all sorts of parasitic capacitances. I’m guessing their engineers tested it at 1.5 Mb/s and saw no problems, and then somebody rushed the firmware out without adequately testing it.
To make matters worse, this bit of poor hardware engineering triggers an even more egregious bit of software engineering: the ‘spindump’ process. This little piece of Mac OS X kicks on automatically whenever a process hangs, and writes a ridiculous amount of information to the disk so that Apple can diagnose the problem. Of course, if you’re already having a hang because of hard drive problems, the last thing you need is for the system to respond by spewing massive amounts of data at the disk. It’s often enough to take a minor problem and make it a major one that requires a hard shutdown of the computer. Brilliant, Apple. This is my first Apple computer since abandoning Apple in 1997 during the dark years of System 8. So far I’m regretting the decision to come back…
How to tell if you’ve got a problem: If you have a stock MBP configuration, you probably don’t have a problem. However, if you have an upgraded drive (especially one of the 7200 RPM, or solid state drives) and you’ve been having system hangs, this may be the problem. If you’re nerdy enough, you can install smartmon tools and check to see if UDMA_CRC_Error_Count is more than zero.
How to fix: Until Apple gets it’s act together and issues a firmware update (if that’s even possible) to bring it’s “pro” level computers technologically inline with last years low-end models, you’re just going to have to disable SATA 2 on your drive. Whether or not this is possible, and how to do it, will vary by manufacturer. On Seagate Momentus drives, you can short two jumper pins to force the drive to use SATA 1 speeds. Details can be found in the user guide of your specific drive.