Understanding HP BIOS Settings

One of the most compelling features of HP platforms is the power to manipulate and change hardware configuration options in an open and adaptable manner. WMI provides a foundation for scriptable administration of operating system options that is well proven in the enterprise management community. HP client manageability leverages that foundation to provide the IT administrator with an unprecedented degree of control in managing configurations across the enterprise. As with sensor information, the mechanisms provided for collecting and manipulating hardware configuration options are designed with forward compatibility and future capabilities in mind.

The following table illustrates the inherent capability and flexibility of HP client manageability in dealing with various types of hardware configuration options.

Management Class   Description
HP_BIOSSetting   Defines the basic set of properties common to all forms of BIOS settings. All hardware configuration options supported by the platform can be surfaced by enumerating this class.
HP_BIOSString   Extension of HP_BIOSSetting to support string-based hardware configuration options. This would include such capabilities as: ownership tag, asset tracking number, and UUID.
HP_BIOSInteger   Extension of HP_BIOSSetting to support numeric hardware configuration options.
HP_BIOSEnumeration   Most hardware configuration options fall into an enumeration category. Enumerations are collections of possible values for a setting (usually expressed as human-readable text). Example enumerations would be: “On, Off” or “Enable, Disable”.
HP_BIOSOrderedList   This class extends the HP_BIOSSetting to support such hardware features as boot order.
HP_BIOSPassword   While password values are never exposed through the HP client manageability model, this class exists to help determine the existence of various password options on the client platform. This class would be queried to determine if a setup password was currently set on the platform, for example.
HP_BIOSSettingInterface   This class provides access to the WMI methods exposed by HP client manageability. This includes methods to set individual settings and reset all settings to a default state.

MOF Definition

The following is the MOF definition for the discussed classes.

#pragma namespace("\\\\.\\root\\HP\\InstrumentedBIOS");
[abstract]
class HP_BIOSSetting
{
 [read] string Name;
 [read] string Value;
 [read] string Path;
 [read] uint32 IsReadOnly;
 [read] uint32 DisplayInUI;
 [read] uint32 RequiresPhysicalPresence;
 [read] uint32 Sequence;
 [read] string Prerequisites[];
};

class HP_BIOSString : HP_BIOSSetting
{
 [read] uint32 MinLength;
 [read] uint32 MaxLength;
};

class HP_BIOSInteger : HP_BIOSSetting
{
 [read] uint32 LowerBound;
 [read] uint32 UpperBound;
 [read] uint32 IntValue;
};

class HP_BIOSEnumeration : HP_BIOSSetting
{
 [read] string CurrentValue;
 [read] uint32 Size;
 [read] string PossibleValues[];
};

class HP_BIOSOrderedList : HP_BIOSSetting
{
 [read] uint32 Size;
 [read, ArrayType("orderlist")] string Elements[];
};

class HP_BIOSPassword : HP_BIOSSetting
{
 [read] uint32 MinLength;
 [read] uint32 MaxLength;
 [read] string SupportedEncoding[];
 [read] uint32 IsSet;
};


[abstract, singleton]
class HP_BIOSSettingInterface
{
 [implemented] void SetBIOSSetting(
 [out, ValueMap {"0","1","2","3","4","5","6"}, 
 Values {"Success","Not Supported","Unspecified Error",
 "Timeout","Failed","Invalid Parameter","Access Denied"}]
 uint32 Return,
 [in] string Name,
 [in] string Value,
 [in, optional] string Password);
 [implemented] void SetSystemDefaults(
 [out: ToSubclass ToInstance,
 [out, ValueMap {"0","1","2","3","4","5","6"},
 Values {"Success","Not Supported","Unspecified Error",
 "Timeout","Failed","Invalid Parameter","Access Denied"}]
 uint32 Return,
 [in, optional] string Password);
}; 

Property details

Class property   Description
Name   This property contains the human readable name for the BIOS setting. This text should be similar to what is exposed through the F10 Computer Setup application.
Setting names are unique in nature, as this value is used to identify the entity to change or update in calls through calls to the SetBIOSSetting() method.
Value   This property contains a string representation of the intended BIOS setting. List entities are separated by commas. Enumeration selections are designated by the presence of an asterisk character (ex: “*Enable, Disable” denotes a setting is enabled in an enumeration setting.
Path   This property provides a string representation of the setting hierarchy that encapsulates this instance data. Each level of the hierarchy is separated by a backslash.
This hierarchy will usually follow the appearance and grouping of items within F10 Computer Setup.
IsReadOnly   Value indicating if this setting is supported by the interface method HP_BIOSSettingInterface.SetBIOSSetting(). A value of 1 indicates that this particular setting instance cannot be changed, otherwise the property is 0.
DisplayInUI   Flag indicating this component should be visible within a BIOS configuration user interface application. This property field is used by some utilities to filter elements that are not applicable to a given platform.
RequiresPhysicalPresence   A value of 1 indicates that attempts to modify this setting will require interactive acknowledgement during the next system startup. Otherwise the property is 0. This property is provided for future compatibility.
Sequence   This property provides an ordering sequence for the instances being enumerated through WMI. It is used in conjunction with the “Path” property to help generate UI representations of the BIOS setting data. The values are for all instances are arranged in ascending order and gaps in the sequence are acceptable. In the event that multiple setting instances share the same Sequence value, or the value is NULL, the Path and Name information is used to determine order.
Prerequisites   This property array allows the system BIOS to define prerequisite conditions that affect the use of the current instance. This property is provided for future compatibility.
MinLength   This property identifies the minimum string length allowed when modifying this BIOS setting.
MaxLength   This property defines the maximum string length in characters.
LowerBound   This property defines the lower limit when modifying this setting.
UpperBound   This property defines the upper limit when modifying this setting.
IntValue   This property contains an integer representation of the string stored in the Value base class property.
CurrentValue   This property contains the string representation of the current active state for this BIOS setting.
PossibleValues   This property contains a string array representing the possible setting states.
Elements   This property contains a string array representing the ordered list of elements. The first entry (Element[0]) represents the first item in the ordered list.
Size   The value contained in this property denotes the number of elements contained within a corresponding array property. This field is used in conjunction with either the Elements or PossibleValues array properties.
SupportedEncoding   This property contains an array of strings representing the encoding tags the BIOS supports for denoting a password parameter string. Encoding tags are used to denote the format of a password string that is being passed into the BIOS and follow the syntax <tag/>, where tag is defined by the array element entries.
IsSet   This property indicates whether a particular password setting instance is currently set (1) or blank (0).
Use this property to determine that state of a password setting, since the “Value” property for a password instance will always be blank.