Intel® Active Management Technology Developers Guide

ID 772055
Date 1/05/2021
Public
Document Table of Contents

Storage Redirection

When diagnosing computer issues, it is often useful to boot to a CD or USB flash drive containing recovery and diagnostic tools. In the past, using such tools required physical access to the device in question; however, with Intel® Active Management Technology (Intel® AMT) this is not the case.

With Intel® vPro™ technology, a service desk technician can use the Intel AMT storage redirection feature to employ these types of tools without leaving their desk.

From a practical stand point, the process mounts an image file on a network share to the Intel AMT device. When the session opens, read and write operations of the remote platform are then redirected to the application on the network share drive. The technician can then have the remote platform use the image file instead of the physical disk of the platform. Allowable image files are CD or DVD image files (*.iso) or floppy image files (*.img).

Using Intel AMT, the storage redirection functionality is available regardless of the boot and power state of the remote platform.

Over the years, storage redirection has used either IDE redirection (IDER) or USB redirection (USBR). IDER was the protocol used through AMT 10.x, where USBR was the protocol of choice from AMT 11 and above. For simplicity, the High-Level API (HLAPI) uses the same commands regardless of the protocol involved.

Integration of Storage Redirection

In order to integrate the storage redirection feature into an existing console, we only have a few steps in the process.

  1. Intel AMT device has met the redirection requirements
  2. Management point initiating connection to Intel AMT clients
  3. Mount the drive on the Intel AMT client by setting the redirection interface.
  4. Reboot the Intel AMT client to the appropriate interface.

Redirection Requirements

  1. Storage redirection must be enabled in the BIOS Extension (CSME or MEBX) of the Intel AMT device. The CSME contains a setting to enable or disable storage capabilities. This setting can only be changed by manually entering the MEBX and then rebooting the platform.  

    These settings must be enabled or the HLAPI will throw exceptions. These exceptions are represented by instances of the ManageabilityException class, and have the following message property: “The IDE-R interface is enabled.”

  2. The Intel AMT device contains a setting for each of the interfaces.

    In this case the interfaces can only be enabled remotely prior to establishing the storage redirection session. Enabling the interface requires administration privileges on the Intel AMT device (PT_administration Realm). This task is performed by using the SetInterfaceState method:

    amt.RedirectionIDER.SetInterfaceState(true);
    
  3. The redirection listener must be enabled for the redirection to occur.

    The redirection WS-Management interface is utilized to enable the Intel AMT redirection listener sockets. The HLAPI saves the current state of the listener before opening a SOL/storage redirection session. The listener will be enabled automatically if it is closed. After the session is closed, the HLAPI restores the listener to the state it was in before the session started.

Integration Steps

  1. Initiate the connection.

    Using the HLAPI, we can easily make the connection and authenticate with the firmware, the solution will require the use of several files; HLAPI.dll, imrsdk.dll, and IWSManClient.dll.

    This is done by creating an object for each Intel AMT device. The instance is created using the AMTInstanceFactory.Create method and the IAMTInstance interface. For example:

    using Intel.Manageability;
    using Intel.Manageability.Exceptions;
    
    ConnectionInfoEX connection =
                       new  ConnectionInfoEX(host, username, password, secure,
                       certificate, auth, proxy, redirectionProxy,
                       tcpForwarder);
     
    IAMTInstance amt = AMTInstanceFactory.CreateEX(connection);
    
  2. Mount the image file to the Intel AMT device.

    Next, we need to use the storage redirection API in order to mount the remote image for the device:

    amt.RedirectionIDER.SetInterfaceState(true);
    amt.RedirectionIDER.StartIDERCD("C:\\MYCD.iso");
    IDERState w = amt.RedirectionIDER.CurrentSessionState;
    IDERStatistics statistics = amt.RedirectionIDER.GetStatistics();
    Console.WriteLine("PacketsReceived: " + statistics.PacketsReceived);
    amt.RedirectionIDER.StopIDER();
    amt.RedirectionIDER.SetInterfaceState(false);
    amt.RedirectionIDER.Dispose();
    

     

  3. Set the boot source.

    Now that we have mounted the drive to the Intel AMT device, we need to set the boot source prior to rebooting the device to the image file. In order to do this we need to use the Boot Control API from the Intel AMT HLAPI.

    1. The first step will determine the current boot control settings:

      space

      BootSource bootSource;
      FirmwareVerbosityEnum FWVerbosity;
       
      amt.BootControl.GetCurrentSettings(out bootSource, out bootOptions, out FWVerbosity);
       
      Console.WriteLine("Current boot Options: " + bootOptions.ToString());
      Console.Write("Current boot Source: " + bootSource.Source.ToString());
      Console.WriteLine(". index: " + bootSource.Index.ToString());
      Console.WriteLine("Current Firmware Verbosity: " + FWVerbosity.ToString());
      

       

    2. Now we need to set the next SetNextBoot options to use the mounted drive:

      space

      BootCapabilities bootCapabilities = amt.BootControl.BootCapabilities;
      BootSource bootSource;
      if (bootCapabilities.IDER)
          bootSource = new BootSource(BootSourceEnum.IDERCD);
      else
          bootSource = new BootSource(BootSourceEnum.NONE);
      BootOptionsFlags flags = BootOptionsFlags.NONE;
      if (bootCapabilities.SOL)
          flags |= BootOptionsFlags.UseSOL;
      if (bootCapabilities.BiosSetup)
          flags |= BootOptionsFlags.BiosSetup;
      FirmwareVerbosityEnum FWverbosity = FirmwareVerbosityEnum.NONE;
      if (bootCapabilities.FirmwareVerbosityVerbose)
          FWverbosity = FirmwareVerbosityEnum.Verbose;
      amt.BootControl.SetNextBoot(bootSource, flags, FWverbosity);
      

       

    3. Reboot the Intel AMT device.

      Next we need to perform the actual reboot of the Intel AMT device by adding a line of code from the Power API. For example:

      amt.Power.Reset();
      
    4. Clear the next boot setting.

      As the next boot setting is still specifying the mounted iso file, we need to clear the BootControl options, for example:

      amt.BootControl.ClearBootOptions();
      

       

 

*No product or component can be absolutely secure.