Release Notes for One-Boot Flash Update Utility(OFU)
Version 14.1 Build 22

Jul 11, 2019
Copyright (c) 2019 Intel(R) Corporation.
=====================================

Contents
--------

1. Introduction
2. Supported Platforms
3. Supported Operating Systems
4. Pre-requisites
5. Installation and Un-installation
6. Usage
7. Known Issues
8. Unsupported Features
9. Change List
10. Instructions for end-user
11. Legal Information


1. Introduction
---------------
   The One-Boot Flash Update Utility is a program used for updating the system BIOS, BMC, Sensor Data Records (SDR), Field Replaceable Unit (FRU) and ME of systems.

2. Supported Platforms
--------------------------------
   Intel(R) Server Board based on Intel(R) Xeon(R) Scalable Processor Family
   Intel(R) Server Board based on 2nd Generation Intel(R) Xeon(R) Scalable Processor Family
   Intel(R) Server Board based on Intel(R) Xeon(R) Platinum 9200 Processor Family

3. Supported Operating Systems
------------------------------
   Windows* Server 2019
   Windows* Server 2016 
   Windows* Server 2012 R2 
   Windows* 10 
   RHEL* 6.8 (x64)
   RHEL* 7.3
   RHEL* 7.5
   RHEL* 7.6
   SLES* 11.4 (x64)
   SLES* 12.2
   SLES* 15
   CentOS* 7.3 (x64)
   Debian* 8.10

4. Pre-requisites
-----------------
   1. Install all the development and optional packages during RHEL* and SuSE* Operating system installation. 

   2. On RHEL*, SLES*, CentOS*, UEFI aware Linux or other Linux
      Install necessary libs if the utility fails while loading libs following Linux error message.
      64 bit libs with "x86_64" suffix for 64 bit binary.
      For example: 
      a. If the utility fails with error message
         "error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory"
         Then use "rpm -ivh xxxx.rpm" to install libstdc++ and ncurses rpms from the OS

      b. If the utility fails with error message
         "Error: /lib/ld-linux.so.2: Bad ELF interpreter: No such file or directory" 
         This indicates development and optional packages are not installed, 
         please install the necessary packages accordingly.

      c. If the utility installation fails with error message
         "depends on libncurses5 (>= 6); however: Version of libncurses5:amd64 on system is 5.9+20140913-1+deb8u2."
         This indicates libncurses version must be >= 6, please install new libncurses.
   
   3. On RHEL*, SLES*, CentOS*, UEFI aware Linux or other Linux
      1. There might be a driver conflict between internal driver and kernel. You need to start up OpenIPMI driver.
      If the utility fails with any error such as "FW interface failed" when updating BMC 
      or "terminate called after throwing an instance of 'ResultStatus' Aborted (core dumped)" when updating SDR with CFG file,
      then start up OpenIPMI driver and make sure "/dev/ipmi0" device exists.
      BMC update cannot continue if OpenIPMI driver is not started.

      For RHEL* run the below command and make sure "/dev/ipmi0" device exists.
         #modprobe ipmi_devintf or #modprobe ipmi_si
      For SLES* run the below command and make sure "/dev/ipmi0" device exists.
         #service ipmi start

      2. After enabling OpenIPMI, if utility still reports errors during BMC, FRU and SDR update, for example "Failed to write SDR file.", "SDR auto-update failed" 
      and "Error :  Error while parsing the cfg file", there might be a BMC watch dog conflict with OpenIPMI driver. 
      User needs to disable BMC watch dog, do update and enable it after update is finished.  

   4. Utility works only if it is executed with Administrator privilege on Windows* and with root privilege on Linux* OSes.

   5. Updating of BIOS, ME, FRUSDR and BMC is not supported by the utility if the BMC Firmware is in Transfer Mode.

   6. It's recommended to do a direct FRU update in EFI/WinPE before doing a FRU Resize with customized CFG file.

   7. On RHEL*, SLES*, CentOS*, UEFI aware Linux or other Linux
      For HTTP and FTP based updates please download curl package from https://curl.haxx.se/ if your system does not have curl.

5. Installation and Un-installation
-----------------------------------
Windows*
   
   Installation:
   ------------
     1. Copy the OFU zip package to local folder.
     2. Unzip to local folder (example: .\flashupdt). Go to flashupdt folder (cd Flashupdt).
     3. Go to the "Drivers\win" folder, choose x86 or x64 (depending on the operating system).
     4. Run "install.cmd" as administrator to install drivers.
     5. Go to "Win_x86" or "Win_x64" folder to execute flashupdt utility (depending on the operating system). Run flashupdt.exe as administrator.
     6. Now you can run command with options (example: "flashupdt -u /tmp/flashupdt.cfg")
     7. For HTTP and FTP based updates please download curl.exe from https://curl.haxx.se/download.html and copy to the same folder which contains flashupdt.exe.
        

   Uninstallation:
   ---------------
     1. Run uninstall.cmd to uninstall all the drivers.
     2. Delete the Flashupdt folder.

Linux*
   
   I. RPM Installation:
      -----------------
   
        1. Copy flashupdt rpm from "Linux_x64" folder (for RHEL or SLES) to local folder.
        2. If there is another version already has been installed previously, uninstall that version first before installing the new version.
        3. Install flashupdt utility by using "rpm -ivh flashupdtxx.rpm". This will install the utility in "/usr/bin/flashupdt/".
        4. On RHEL/SLES after installing the rpm close the terminal from which rpm was installed and then execute utility from a new terminal (example: "# flashupdt -u /tmp/flashupdt.cfg").
        5. For HTTP and FTP based updates please execute the utility from "/usr/bin/flashupdt/" as 'chaff2l.sh' file is needed for HTTP and FTP based updates.
     
      RPM Uninstallation:
      -------------------
        1. To uninstall the utility use "rpm -e flashupdt" command.


  II. Regular Installation:
      ---------------------
   
        1. Copy the OFU zip package (for RHEL or SLES) to local folder.
        2. Unzip to local folder (example: .\flashupdt). Go to flashupdt folder (cd flashupdt).
        3. # chmod 755 install.sh and # chmod 755 flashupdt
        4. Install the utility using the command: "#./install.sh"
        5. Go to the RHEL or SLES directory (based on operating system).
        6. # chmod 755 chaff2l.sh.
        7. Unzip the file flashupdt.zip to get flashupdt executable for Linux* OS
        8. Now you can run command with options (example: "# ./flashupdt -u /tmp/flashupdt.cfg")

      Regular Uninstallation:
      -----------------------
        1. Delete the Flashupdt folder using rm -rf Flashupdt command.

 III. DEB Installation:
      ---------------------
      1. dpkg -i xxxx.deb

      DEB Uninstallation:
      ---------------------
      1. dpkg -r flashupdt
        
6. Usage
--------
      Syntax:  flashupdt [-h] [-i]  [-u {URL or path of update package}]

      -h : (or -?) Display command line help.
      -i : Displays the current BIOS, BMC, and SDR versions of the system.
           This option can also be used in conjunction with -u to display
           the version information contained in the update package files.
      -u : Updates the BIOS, BMC and SDR as specified in the CFG file.
           The URL or path, if any, of the update package must immediately
           follow this option.  The package files can reside on a local
           drive. The current directory is used if no location is specified.
      
     -set: Sets different FRU area as below 
		 flashupdt /set "area name" "frufield" "value"
            	Were "area name" can be "product" or "chassis" depending on the FRU area to be modified.
            The following are the FRU field parameters.
            	Pn - indicates product name
            	Pver - indicates product version
            	Pnum - indicates the part number
            	Snum - indicates the serial number
            	Mn - indicates the manufacturer name
            	At - asset tag 
            	Note:  For the chassis area, the fields "at", "pn" and "pver" are not supported.

    -u fru <FRU file name>: Will do a direct update of platform specific FRU file.


7. Known Issues
---------------
  1. While using the tags "@ENV:TYPE:NAME" and "@ENVFILE:TYPE:NAME:#" make sure that the environment variable values should be greater than one character.
     If only one character is used there might be a chance of FRU getting corrupted.
  2. In Windows 7, BIOS update percentage might not be showed at the beginning of BIOS update. After a few seconds, the percentage will be showed and greater than 50%.  This is a BIOS known issue. 
  3. In Linux, OpenIPMI driver needs to be started up manually. 
  4. Utilities, SNMP-SA and IASC cannot run at the same time due to KCS port conflict. There will be an error message as below.
        "Error: Application Cannot Communicate to the BMC."
     Please do the below steps.
        a. Disable services related to SNMP-SA and IASC
        b. Enable OPENIPMI driver
        c. Execute flashupdt utility for updating BIOS/BMC/FRUSDR on the server
  5. The BMC update with force update jumper set is not supported. It is applicable only to UEFI(FWPIAUPD). 
  6. IO port access is not allowed in Linux when UEFI secure boot is enabled. Please disable UEFI secure boot in F2 menu before running utility.
  7. In Linux RHEL 7.x, BMC update might be failed intermittently due to OpenIPMI driver conflict. Please try again if it happens.
  8. Debian and SLES* 15 OS do not allow IO memory map by default. User needs to add "iomem=relaxed" to grub boot option to enable IO memory map. Otherwise some features may not work.

8. Unsupported Features
------------------------
   Utility cannot be executed successfully when UEFI secure boot is enabled under Linux because Linux closes all IO port access when UEFI secure boot is enabled. If customer wants to use it under Linux environment, please ensure UEFI secure boot is disabled in BIOS F2 menu. 


9. Change List
------------------------
   Build 22
   Fix BDBA issue by removing curl from OFU package
   
   Build 21
   Updated Curl for Linux to new version

   Build 20
   Support new SKU

   Build 19
   Rebuild for Windows

   Build 18
   Support BIOS security version check
   
   Build 17
   Add deb package for Debian

   Build 16
   Fix "Product Area" update failure when checksum is 0xC1

   Build 15
   Support new SKU

   Build 14
   Fix maximum length defect of "BMCCONFIG" command

   Build 13
   Support BBS version display

   Build 12
   Support new BMC version format
   Fix the issue of random BMC update failure

   Build 11
   Support new SKU
   Support area checksum generation for FRU update

   Build 10
   Fix the defect that asset tag can't be modified
   Support "BMCCONFIG" in CFG file
   Support new SKU

   Build 9
   a. Add "ccs" command option.
   b. Support BIOS security fix.

   Build 8
   Add USB device polling for BMC update
   Add "restore" to CFG file to restore BMC default for BMC update

   Build 7
   Fix incorrect version of "/i /u"

   Build 6
   Support a new SKU
   Update supported OS list 

   Build 5
   Improve USB failover to KCS for BMC update
   Support auto detection of FANs

   Build 4
   Add wildcard letter support in *.cfg file


10. Instructions for end-user
----------------------------
   1. After performing CFG based update using flashupdt utility, it is highly recommended to perform a power cycle. 
      Continuous updates through CFG file without power cycle / reboot in between could cause system instability.
  
   2. For CFG based update it is assumed that the HTTP/FTP server does not require any user name password. 
      In order to access password protected servers, please change the chaff2l.sh or the batch file and include the username/password. 

	The default in the .sh file -
		curl $1 -o $2 -s
	For password protected server please change the above as below -
		curl $1 --user admin:pwd -o $2 -s
		where admin & pwd are the username and password respectively


11. Legal Information
--------------------


========================================================

                               LEGAL INFORMATION

========================================================

Information in this document is provided in connection with Intel Products

and for the purpose of supporting Intel developed server boards and systems.

No license, express or implied, by estoppel or otherwise, to any intellectual 

property rights is granted by this document. Except as provided in Intel's 

Terms and Conditions of Sale for such products, Intel assumes no liability 

whatsoever, and Intel disclaims any express or implied warranty, relating to 

sale and/or use of Intel products including liability or warranties relating 

to fitness for a particular purpose, merchantability, or infringement of any 

patent, copyright or other intellectual property right. Intel Corporation may 

have patents or pending patent applications, trademarks, copyrights, or other 

intellectual property rights that relate to the presented subject matter.  

The furnishing of documents and other materials and information does not 

provide any license, express or implied, by estoppel or otherwise, to any 

such patents, trademarks, copyrights, or other intellectual property rights.  

Intel products are not intended for use in medical, life saving, or life 

sustaining applications. Intel may make changes to specifications and product 

descriptions at any time, without notice.

 

Intel is a registered trademark of Intel Corporation. 

 

*Other names and brands are the property of their respective owners.

 

Copyright (c) 2019 Intel Corporation.



(end)



