Saturday, August 8, 2009

Adding an eSATA Port To My Thinkpad: How I Did It And Why


A few weeks ago I came up with the idea of dual booting my T500 Thinkpad with the existing Vista OS and Windows 7 using an eSATA external drive. eSATA offered the best price/performance ratio because it connects strait into your machine's SATA controller which is far faster than USB. And of course, 3.5" desktop drives still offer the best dollar per gigabyte ratio and outperform 2.5" laptop drives at the same price. Since current thinkpads don't offer an eSATA port I decided to buy an expresscard SATA controller to connect my enclosure.

To my surprise, I later found out that this configuration was not recognized by the BIOS which thus thwarted my plans for a dual boot. I did some research and apparently only a hand full of Asus and HP laptops support this feature (recognizing a second SATA controller in the BIOS) - along with all macbooks (any surprises there?).

I was still compelled to find a way to make this work. I came up with a few options:

1) Create a boot partition and load up a Unix shell using grub with the SATA drivers compiled into the kernel and then try some hacking with the "kexec" call to try to chain load an OS of my choice (Almost sure this wouldn't work and it would take me forever to figure this out)

2) Buy a docking station for my thinkpad which offers easy access to a SATA port somewhere which I could mod into an eSATA port ($$$!)

3) Open up my thinkpad and look for a spare SATA header and get crafty with a soldering iron. (Yikes! I wasn't seriously considering this one)

It seemed like it would be a toss up between options 1 and 2 but then I saw this little gem on ebay...

The ultrabay SATA adapter is a modular piece that can replace your CD/DVD drive. In my case I used it as an extension of the internal SATA port. I dug around and it seems like I'm not the first to have thought of this, as something similar has been done on a mac mini.

I already had a eSATA bracket that was included with my external enclosure and thanks to that guide, I was able to find the rare gender-changer adapter that I needed to complete the mod from cpustuffs.

Now before I go any further... I take no responsibility for any losses or damages that may occur from following the information on this blog! If you attempt any of the procedures here you do so at your own risk, if you break something its your fault. Not mine.

So here's the basic idea before I did any cutting:


After cutting (thanks for the dremel Tai!):




So now for the moment of truth!

Plugged it in, checked my list of bootable devices (hit F12 during the thinkpad splashscreen)...

My external drive showed up! Success? Well... not quite.

I will now list off the host of problems and disappointments that I encountered after this point.


1) It doesn't always show up in the BIOS.

It may take a reboot or two before it does. I have the same problem with my USB drive which I used to boot the Windows 7 RC install disc. Which leads me to the other problem I encountered.

2) Windows 7 fails to install on it.

After booting off of my USB drive with the Windows 7 RC installation files, I get to the menu to choose what drive to install it on; whenever I try to choose one of the drives partitioned on my external HDD, it returns these errors:

Failed to format the selected partition. [Error: 0x80070057]

This is despite having already selected a formatted NTFS partition. So I decided to delete my partitions on that disk and just have unallocated space and see how it dealt with that:

Failed to create a new partition on the selected unused space. [Error:0x80042453]

Great. Just great.

3) It takes FOREVER for windows to boot with the drive plugged in, or if I plug the drive in while in Windows, it hangs my computer for about 2 minutes before finding it!

Apparently there are some issues here with hot-plugging? I don't know. As far as I know, if you have an AHCI compatable SATA controller then this should not be issue. It should be noted however that when the drive is finally detected in Windows, and when you are using it in Windows, it's pretty blazing fast. Infact, I can even unplug it and re-plug it in afterwards and it seems to work fine! Just have to get past the strange detection issues...

Despite this being a failure, I decided to benchmark the performance of my internal 2.5" drive (5400 RPM, 80 GB) vs the eSATA drive (7200 RPM, 1TB Western digital Black) (when it was working).



As you can see, there is a lot of untapped potential here. It's a shame really.

So why did this not work? I have no idea, it's beyond my scope of knowledge and I don't feel like learning the entire SATA/AHCI specification just to find out (if anyone does have knowledge on this subject, then please feel free to post a comment). In theory it should have worked. I'm afraid only the Lenovo engineers behind the T-series platform can answer these questions.

I do not recommend that anyone try this unless they know where this went wrong and how to make it work with stability.

So I will conclude with this: Lenovo, please offer a real eSATA port on your next T-series.