Manual steps to upgrade the firmware of supermicro.

Supermicro firmware upgrade involves manual steps. These steps include creating upgrade package, modifying the script and validating the integrity of the upgrade package.
Note: Ensure that you upload the downloaded firmware upgrade package, the upgrade-script.sh, and firmware-index.xml in the same absolute path.

Prerequisites

  • Obtain the firmware upgrade file.
  • Upload the firmware file to a web server.
  • Ensure that Telco Cloud Automation has permission to access the web server location to obtain the uploaded files and packages.

Procedure

  1. Create the upgrade-script.sh. Use the below example to create the upgrade script.
    Note:
    • The example uses E810 card. To create the script for other cards, change the E810 to the card name for which you need to create the script.
    • Modify the command nvmupdaten64e with the required command based on the card type. You can get the commands in readme.txt file in upgrade package.
    datastore=$(esxcli storage filesystem list| awk '{ print $1 }' | tail -n +3 | head -n 1)
    echo $datastore
     
    cd $datastore/; rm -rf E810; ls *.gz |xargs -n1 tar -xzf
     
    cd $datastore/
     
    check_version(){
        #Dont forget the space added below
        if echo "X" | ./nvmupdaten64e | grep "Update  " ; then
            echo "Inside check_version"
            echo "./nvmupdaten64e"
            return 1
        else
                    echo "it's in else"
        return 0
       fi
    }
     
     
    e810=$(ls  | grep -nr "E810")
    if [ -z "$e810" ]
    then
          echo "Contains different card"
          exit 1
    else
          cd E810
          esx=$(ls  | grep -nr "ESXi_x64")
        if [ -n "$esx" ]
          then
            cd ESXi_x64
            echo $PWD
            nvm=$(ls  | grep -nr "nvmupdaten64e")
            echo "NVM is $nvm"
    if [[ $1 == "--check_version" ]]
            then
           check_version
            output=$?
            echo "output is $output"
           return $output
         fi
          if [[ -n "$nvm" ]]
          then
            echo "PWD is: $PWD"
            ./nvmupdaten64e -u -l -o update.xml -b -c nvmupdate.cfg
             return 0
     else
            echo "Invalid package"
            return 1
          fi
              fi
    fi
  2. Generate the checksum for the upgrade-script.sh.
  3. Generate the checksum for the downloaded firmware file.
  4. Create the firmware-index.xml. Use the below example to create the firemware index file.
    <metaList>
        <metadata>
            <url>E810_NVMUpdatePackage_v2_32_ESX.tar.gz</url>
            <checksum>fbbb201dfcc4c900e4fc5d3a6f4264110d4a32cdecec43c55d04164130b8d249</checksum>
        </metadata>
        <metadata>
            <url>upgrade-script.sh</url>
            <checksum>0faa2fb41347377ad1435911abc4eb38246a7fcf5c3cdcea3e21e34778678cac</checksum>
        </metadata>
    </metaList>
    1. url : In the first url tag, enter the name of the upgrade file.
    2. checksum : In the first checksum tag, enter the checksum generated for the upgrade package file.
    3. url : In the second url tag, enter the name of the upgrade script file.
    4. checksum : In the second checksum tag, enter the checksum generated for the upgrade script file.
  5. Generate the checksum for the firmware-index.xml file.
  6. Open Telco Cloud Automation.
  7. Navigate to Infrastructure Automation.
  8. Click Configuration and then click Host Profile.
  9. On the Host Profile page, to add new host profile, click Add.
  10. To add firmware details, click Add Firmware. Enter the following details:
    • Add the firmware name in the Name field. For Supermicro, this is a user defined field.
    • Add the identity of the firmware, that the vendor provides, in the Software field. For Supermicro, this is a user defined field.
    • Add the version of the firmware to which you want to upgrade the current firmware in the Version field.
    • Add the location of the firmware-index.xml file in the Location field.
    • Add the checksum generated for the firmware-index.xml file in the Checksum field.