The Role of Adapters in Data Recovery


Traditionally, adapters are used for conversion between different types of physical interfaces for storage devices that operate using the same communication protocol. This type of adapter is called a passive adapter. For example there are many types of interfaces (such as IDE, SATA, mSATA, micro SATA, 2.5" IDE, etc.) that are used only by ATA storage devices, so converting between them is an easy task with the help of a passive adapter. This works well because both the host and the storage device are still using the same ATA protocol, so all the adapter is really converting is the physical interface through which they communicate. Since a passive adapter doesn't have any active components on it, it is not involved into the communication protocol, so all commands sent by the host are received by the storage device exactly as they were sent, whether they are standard or vendor specific commands.

An active adapter is necessary when the controller and the storage device use different communication protocols. Unfortunately such adapters are severely limited when used for data recovery purposes. There are consumer-level adapters available in some cases (for example SATA to USB bays), however such adapters only have a small set of commands that they can resolve and then translate to the other protocol. Active adapters receive a command from the host via its protocol, translate that command to a corresponding command within the device's protocol, send that command to the device, and whenever a response is received, translate and send that response back to the host. As you can see, in this case it is the adapter that decides which particular commands are going to be used, meaning that the capabilities of the host to control the device are rather limited.

The designer of any active adapter is usually using a very limited translation dictionary to convert one communication protocol to another, since active adapters are built primarily for average consumers to work with healthy storage devices. Such a dictionary only covers a standard hardcoded procedure of device initialization (to identify a storage device and translate its identification parameters from one protocol to another), standard read/write commands, and a device reset, which is also hardcoded into just one procedure selected by the designer of the active adapter. No matter what type of command or reset/initialization sequence is being used by the host, the adapter will only "understand" the general type of request that the host is trying to make and then use its hardcoded variant of that request. The main goal of any data recovery tool is to use a variety of resets, initialization procedures, and commands to keep a storage device alive while gaining access to data, so in most cases, using an active adapter will not yield a good result, since that is precisely the kind of control it is taking away from the host.

As soon as we need to use any vendor specific commands, or even just uncommon standard commands, as we would often have to do in data recovery, the adapter will not recognize them and it will not work. What will happen at that point will depend on the design of the adapter; most active adapters simply ignore any commands they can't recognize and reply with an OK on behalf of the storage device, even though the command never actually made it across. Because the adapter must successfully resolve commands in order to convert them, read instabilities can cause further problems and data loss. Unstable storage devices can deviate from expected communication standards, and such deviations can cause the adapter to fail to resolve some commands, even if they are common commands which are a part of the adapter's translation dictionary. These reasons are why there are no cross-protocol adapters that will work well for data recovery purposes and professional data recovery tools are built specifically to work with each particular protocol.

The newest PCIe storage devices fall into a category of their own. In all other storage devices, the basic architecture involves going from the host to the storage controller and then to the storage device. Most hardware data recovery tools are essentially proprietary storage controllers taking direct control over the storage device. The new PCIe storage devices don't have an external controller at all - they go directly from the host to the storage device, which contains a built-in controller. As such, there is no room for a third party storage controller to fit in, meaning that there is effectively no way to directly control the storage built into the PCIe storage device. Any adapter aiming to convert such a device to a common communication protocol like USB or ATA would have to emulate the host, which means a host computer would need to be built into such an active adapter. This is an even more complex design task than converting between two different protocols, so it would have all the aforementioned limitations of an active adapter. Also, such an adapter would never work with all PCIe storage devices, since some of them use only proprietary communication methods between the host and the storage device.