===========================================================
                  USH FIRMWARE UPGRADE
===========================================================


================
DESCRIPTION
================

This directory contains the files necessary to update the USH (Unified
Security Hub) firmware.

The USHUPGRADE.EXE and USHUPGRADE64.EXE are windows based utilities that
will update the USH firmware with the corresponding files contained in this directory.
The USHUPGRADE.EXE is a 32bit Windows application and should be used on a
32bit Windows XP or Vista OS.  The USHUPGRADE64.EXE is a 64bit Windows application
and should be used on a 64bit Windows XP or Vista OS.

The USH firmware consists of three parts: SBI, BCM and PBA.

SBI (Secure Boot Image): The SBI is executed on power up.  It verifies 
that the BCM image is valid.  It the BCM is valid the SBI will execute the
BCM image.

BCM (Broadcom firmware image): The is the main USH firmware image, that controls
all security functions.

PBA (PreBoot Authentication library image):  This is a library used by the BIOS PBA
to communicate with the USH Credential Vault (CV).


================
FUNCTIONALITY
================

When upgrading the USH firmware all other communication with the USH should be stopped
to prevent interference with the firmware upgrade.  To accomplish this, the USHUPGRADE
(or USHUPGRADE64) will first terminate all tasks that can communicate with the USH.

If TPM is enabled via BIOS (enabled\activated), the USHUPGRADE will update the
USH firmware via TPM (LPC).  The USHUPGRADE will use the FWUPGRDTOOL.EXE to
update the SBI and BCM firmware via TPM.

If TPM is NOT enabled via BIOS (enabled\deactivated or disabled\deactivated),
the USHUPGRADE will update the USH SBI and BCM firmware via CV (USB).

The PBA image will always be updated via CV (USB).

The USHUPGRADE utility can be used as an interactive GUI utility or a
command line utility.

The USHUPGRADE utility will return a status indicating the status of the
upgrade operation.  The return codes are listed below.


================
REQUIREMENTS
================

The Dell Driver Pack must be installed in order for the USHUPGRADE to
communicate with the USH.

The USHUPGRADE is not a stand alone application.  It requires all files
contained in the firmware directory to update the USH firmware.
The files USHUPGRADE uses depend on the particular system.

The USHUPGRADE can only be run by a user with Administrator privileges.

NOTE: If running from Vista with User Account Control (UAC) enabled,
the USHUPGRADE must be run as an Administrator.


================
GETTING STARTED
================

GUI:

From windows explorer, double click on USHUPGRADE.EXE on a 32bit Windows XP or
Vista OS to open the application.  On a 64bit Windows XP or Vista OS, double
click on USHUPGRADE64.EXE to open the application.

Once the USHUPGRADE is open, press the Start button to begin the firmware
update procedure.  Once the procedure has started, do not interrupt the process.
The USHUPGRADE utility will query the USH to determine the correct firmware files
to install.


Command Line:

From the command prompt, go to the firmware directory.  Call USHUPGRADE on a 32bit
Windows XP or Vista OS and USHUPGRADE64 on a 64bit Windows XP or Vista OS.  If
USHUPGRADE is called with no arguments, the utility will open in interactive GUI mode.

USHUPGRADE arguments:
-h or -?:         This will display a list of the USHUPGRADE syntax.
-bat:             This will run the USHUPGRADE in batch mode.  No user interaction is required.
-top <password>:  This argument is used to enter the TPM owner password for the TPM authentication
                  if a TPM owner was created. If a TPM owner was created and this argument is
                  not used, the user will be prompted to enter the TPM owner password.


================
WARNINGS
================

Anti-Hammering:

The USH has an anti-hammering security feature that only allows so many number of resets to occur
during a power up session.  The anti-hammering security feature also only allows so many
flash writes within a given period of time.

The USHUPGRADE utilities are subject to these restrictions.  To minimize the possibility
of the anti-hammering to interrupt the firmware upgrade process, the USHUPGRADE will check
the anti-hammering status prior to beginning the upgrade process.  The USHUPGRADE will only
allow the upgrade to begin if the anti-hammering counters are cleared.  If anti-hammering
counters are not cleared, you must restart your system and try again.

NOTE: If USHUPGRADE fails to upgrade the firmware for any reason, restart the system and try again.
If USHUPGRADE fails again, power cycle the system and try again.


================
RETURN CODES
================

0x00  USH_RC_SUCCESS
      Succeeded
0x01  USH_RC_SUCCESS_RESET
      Succeeded, must restart the system for the firmware to take affect
0x02  USH_RC_CANCELED
      Operation canceled
0x03  USH_RC_INVALID_PARAMETER
      Invalid argument
0x04  USH_RC_MISSING_PARAMETER
      Argument missing parameter
0x05  USH_RC_INIT_CHK_ERR
      Failed anti-hammering pre-check, restart system and try again
0x06  USH_RC_FILE_ERR
      Missing file
0x07  USH_RC_ERROR
      Generic error
0x08  USH_RC_NOUSH_ERR
      Did not detect USH
0x09  USH_RC_AUTH_ERR
      Authentication error
0x0a  USH_RC_TPM_ERR
      TPM error
0x0b  USH_RC_AH_ERR
      Anti-hammering error
0x0c  USH_RC_TASK_ERR
      Could not terminate necessary tasks
0x0d  USH_RC_DLL_ERR
      DLL mismatch
0x0e  USH_RC_LOADSBI_ERR
      Could not load SBI (running from Bootstrap)
0x0f  USH_RC_CHIP_ID_ERR
      Unknown chip ID
0x10  USH_RC_PBA_ERR
      Failed to load PBA
0x11  USH_RC_CLR_SCD_ERR
      Failed to clear SCD
0x12  USH_RC_RESET_ERR
      Reset returned error
0x13  USH_RC_NUM_ERR
      USH failed to numerate
0x14  USH_RC_BCM_ERR
      Failed to update BCM
0x15  USH_RC_MISSING_DLL
      Missing TPM DLL
0x16  USH_RC_MISSING_DRV
      Missing TPM Driver

