Change BIOS settings on Supermicro system via a script

Solution 1:

There are two options. You can setup Remote Access in the BIOS and then use the SOL console via IPMI. You can modify settings this way using an expect script. The other is, some options are available via IPMI directly, so you could use the IPMI interface on the machine itself to change some settings (lookup ipmitool/OpenIPMI).

Some info on SOL/IPMI:

http://www.supermicro.com/products/accessories/addon/SIM.cfm

http://wiki.adamsweet.org/doku.php?id=ipmi_on_linux

Example SOL Expect script:

http://buttersideup.com/docs/howto/IPMI_on_Debian_files/solsession

Solution 2:

Supermicro uses AMI Aptio BIOS.

AMI provides SCE utility (scelnx for Linux) to change BIOS setting by scripts. Firstly you need to dump current BIOS settings to know settings UUIDs:

scelnx /b /o /s /root/settings.lst

You may change needed values right in the file (by moving * sign to the desired value) and then load file by the next command:

scelnx /b /i /s /root/settings.lst

Or you may create your own file with only necessary lines (first three lines including blank line are required):

cat > /root/settings.lst << 'EOF'
// Script File
HIICrc32=

// Enable the Rank Margining Tool
Setup Question  = Rank Margin Tool
Token =B4A  // Do NOT change this line
Offset  =1127 
Width =01 
BIOS Default  =[02]Auto
Options =[02]Auto // Move "*" to the desired Option
         [00]Disabled
         *[01]Enabled

// Adjust the MRC Serial Debug Message level
Setup Question  = Serial Debug Message Level
Token =1C // Do NOT change this line
Offset  =2D4
Width =01 
BIOS Default  =[00]Disable
Options =[00]Disable // Move "*" to the desired Option
         [01]Minimum
         [02]Normal
         *[03]Maximum

// Confirm the Pattern Length value
Setup Question  = RMT Pattern Length
Token =B4B  // Do NOT change this line
Offset  =10ED
Width =04 
BIOS Default  =7FFF
Value =7FFF

// Turn on/off Per Bit Margin option
Setup Question  = Per Bit Margin
Token =B4D  // Do NOT change this line
Offset  =113A
Width =01 
BIOS Default  =[02]Auto
Options =[02]Auto // Move "*" to the desired Option
         [00]Disable
         *[01]Enable
EOF

For other platforms you may find list of configuration utilities in Intel doc. #333845-003: https://www.intel.ru/content/dam/www/public/us/en/videos/guides/platform-trust-enabler-product-guide.pdf (pg. 12, 4.0 OEM Support Matrix)

Modern platforms also can use x-UEFI Scriptable Configuration: https://firmware.intel.com/sites/default/files/STTS001%20-%20SZ16_STTS001_102m_ENGf.pdf http://www.uefi.org/confignamespace

Tags:

Bios