🅭

eSATA port-multiplier only shows up as a single disk in Windows 10

I recently got an eSATA port-multiplier capable external multi-bay disk enclosure. (A big box full of hard disks.) I intended to use this in a dual-booting setup with Linux and Windows having access to separate disks inside the enclosure. Surprisingly, Linux was much happier about this arrangement than Windows 10.

Over the last few months, I’ve witnessed an extinction-level mass die-off of all my hard disks at home. Most of these disks were several years old, but it has still been inconvenient that so many disks went at the same time.

Rather than filling up my PC tower with a growing number of disks, I got an Icy Box 4-bay external hard disk enclosure with eSATA-300 and USB 3.0 to house my new disks. USB 3.0 would technically be faster, but I wanted to connect it with eSATA as this would make my PC consider them to be internal disks rather than external removable disks. This difference changes how a few the disks can be used in Windows.

A regular SATA connection only supports connecting to one disk at a time. For a single eSATA connection to hook up with a multi-disk enclosure, the SATA controller in the enclosure, as well as the SATA controller in your PC, must support SATA port-multiplying.

Using a port-multiplier, your PC’s SATA controller can instruct the enclosure to let it read and write to the correct disk in the enclosure.

I installed the new disks and connected the disk enclosure over eSATA. First I booted up in Linux because I wasn’t sure if Linux even supported port multipliers. It worked flawlessly without any additional configuration or setup required.

I then booted into Windows, and noticed that all my new disks also showed up in the boot menu. It seemed like even the SATA driver in the BIOS worked with the port multiplier. However, in Windows 10 I could only see the top-most disk in the enclosure. The other disks didn’t show up in either the Device Manager nor in Disk Management utility.

After doing some more research, I learned that Microsoft’s Standard SATA AHCI Controller driver supposedly supports modern and legacy port-multipliers (CBS and FIS/FBS), yet it doesn’t seem to want to talk to my Asmedia ASM1061 controller. Based on a search for ASM1061 on Amazon, it looks like this is a common SATA controller that’s found in a lot of products. Yet, Windows couldn’t talk to it properly. I found a driver from Asmedia, but it performed no differently than the default driver.

I then installed a StarTech PEXESATA2 PCIe with a Sil3132 SATA controller instead. This controller is found in fewer products than the ASM1061, but it also looked like a popular controller.

I thought that may be this less popular controller would have poorer support in Linux. Unfortunately, the computer refused to boot if I’d anything plugged into the eSATA port on this card. The boot process got stuck somewhere in the pre-flight check (prior to the ‘BIOS beep.’) Hotplugging the eSATA connection after bootup worked just as great with this Silicon Image controller as did the Asmedia controller. Windows was again a different matter.

Windows Update fetched the Silicon Image Sil 3132 SoftRaid 5 Controller driver, but even so, the controller had the exact same problem as the built-in SATA controller: only the first disk showed up anywhere in Windows.

I then tried on a different PC with an entirely different mainboard and SATA controller, but the results where exactly the same.

There seems to be a problem with the Windows 10 kernel itself, but it’s hard to say for sure. When writing this article, I was able to consult the Linux Kernel’s source code to confirm how port-multipliers was supposed to work. The Windows kernel on the other hand, is a black box and no one truly knows what goes on inside.

I did find it quite surprising to see better hardware support from the Linux kernel than from Windows. Being a long-time user of Linux, this isn’t how things have been in the past. This is the third time in just a couple of months where things I expect to work in Windows didn’t but to my surprise, I found it worked perfectly in Linux with no additional troubleshooting or configuration.

My own personal experience of this issue just added this up as yet another strike against any cable connector that isn’t part of the USB standard. We only need one connector. All hail USB!

For a bit of variation, I don’t have a solution to offer for this problem. It seems to be a general problem with Windows 10’s handling of eSATA port-multipliers. For a bit of a laugh, I booted from a Windows 10 installation media and found that it supported listing and installing to any disk connected through the same eSATA port-multiplier. In summary, it seems to be non-functional so use another connector if you intend to use eSATA enclosure with Windows 10. USB 3.0 should yield higher performance and seems to be better supported.