Friday, May 2, 2008

Hot swapping PCIe based ExpressCards with PCIe to ExpressCard Drives

PCIe to ExpressCard ReaderThis is intended to address questions regarding PCIe to ExpressCard readers. The PCI-Express (PCIe) specification allows for hot-swapping of PCIe devices. Since ExpressCard is simply PCIe and USB with different connectors, it would follow that PCIe to ExpressCard adapters should inherit such behavior when installed in computers with PCIe slots. Unfortunately this isn't always the case. A system's BIOS (or firmware) and the host operating system need to treat an PCIe slot as having hot-swap capability. This behavior is taken for granted on notebook computers. When PCIe to ExpressCard drives were released, manufacturers assumed host systems would treat them the same.

Most desktop machines are not setup to hot swap on their PCIe slots. At first operating system vendors blamed BIOS makers for the problem, but recent developments seem to indicate it is not only the BIOS makers to blame. Synchrotech learned this with a desktop machine with a PCIe to ExpressCard drive (EXP54-CR-PCEIR1) installed. When the drive wouldn't hot-swap under The Windows Xp, Synchrotech was told the BIOS was to blame. However, with the release of OpenBSD 4.3, our tests showed the PCIe to ExpressCard drive could hot-swap PCIe based ExpressCards without any modifications to the system's BIOS. Our conclusion is it is a combination of both the BIOS and operating system. Synchrotech is working hard to get operating system and BIOS vendors to rectify this problem. Currrently, many systems require booting with a PCIe based ExpressCard in the ExpressCard slot in order to have the card recognized.

For More Information

Possible Work Around Procedures
  • With The Windows Xp, many end users have reported that after inserting a PCIe based ExpressCard into a PCIe to ExpressCard drive they can evoke the 'scan for new hardware' command in the 'device manager' resulting in the ExpressCard being recognized. These finding have been confirmed by Synchrotech (with the test system mentioned above). However, we also have reports of this not working with all systems.
  • With The Vista version of The Windows, Synchrotech hasn't obtained any information whether it behaves like The Windows Xp.
  • We currently have no solution for Mac OS X, although we would be happy to find a solution for PCIe based Mac desktops quickly. Because of the superior quality of Final Cut Pro and Mac OS X, we have had many video professionals wanting to use Sony/Sandisk's SxS ExpressCards with our PCIe to ExpressCard Drive.
  • For OpenBSD, upgrading to version 4.3 seems to enable PCIe to ExpressCard hot-swap.

3 comments:

xman said...

For those with Gigabyte Motherboards, this may be of interest - I could not hot swap anything on my eSATA external case connection on a Gigabyte P35-DS3P as the SATA driver did not support it.

Luckily the Gigabyte board uses a JMicron Sata2 controller for 2 of its 8 SATA slots, the 2 purple ones, and when I installed the JMicron driver (in win XP) it then did support HotSwap. The other SATA controllers are Intel Controller based.

I dont have the product this blog relates too, but have been looking into it from the POV of a person who uses the Sony SXS cards and needs them to be hot swappable.

I wont know if it works until I try it, but this may be why it sometimes works and sometimes doesnt, and is not a BIOS or Operating system thing, but a SATA driver/Controller thing.

I'd be happy to test if you send me a Card to try! ;-)

cseeman said...

You mention
"For OpenBSD, upgrading to version 4.3 seems to enable PCIe to ExpressCard hot-swap."

The Mac OS has a FreeBSD underbelly. Have you tested if this offers the same functionality as OpenBSD? If so, one could create a GUI that can send commands to terminal to allow hot swapping on the Mac.

Any thoughts on this?

Synchrotech said...

> "For OpenBSD, upgrading to version 4.3 seems to enable
> PCIe to ExpressCard hot-swap."

Actually, it's no accident OpenBSD incorporated hot-swap. Synchrotech sent a PCIe to ExpressCard reader and several PCIe based ExpressCard to the OpenBSD developers to implement it in their kernel.

We have a better account of this in this article:

Can I 'rescan' the PCI expansion slots?

> The Mac OS has a FreeBSD underbelly. Have you tested if
> this offers the same functionality as OpenBSD? If so,
> one could create a GUI that can send commands to
> terminal to allow hot swapping on the Mac.

While much of the 'userland' in Mac OS X is derived from FreeBSD, much of the kernel isn't. Furthermore, while FreeBSD, NetBSD, Darwin, and OpenBSD are all closely related, they all have separate development teams. Thus our work with the OpenBSD team to implement hot-swap for PCIe to ExpressCard readers would explicitly have to be adopted by the other projects to find their way into their kernels.

Unfortunately, many have tested for the same functionality in Mac OS X as you asked, and found such functionality lacking. Apple needs to add the capability to the kernel themselves. If the capability to force the kernel to rescan the PCIe (PCI) bus already exists in Mac OS X, then you are right in terms of implementing a command line (and corresponding GUI wrapper) call to swap cards. We aren't familiar enough with the Darwin kernel internals to speculate if this is the case. Bear in mind OpenBSD doesn't require any user interaction to hot swap.

We would be more than willing to provide Apple with the necessary hardware to implement this in their kernel.