There is a HTTP interface in iRMC for system BIOS and iRMC firmware updates. That means you can send firmware images to iRMC remotely to flash BIOS and iRMC. What you need is just to do a HTTP POST to /irmcupdate or /biosupdate with an update image.
Here are some examples using curl or PowerShell. In the examples, I used PRIMERGY BX2580 M1 BIOS and iRMC images for my PRIMERGY BX2580 M1 server. You can download BIOS and iRMC firmware files from Fujitsu download site
- BIOS update using curl
$ curl -k --digest -u <iRMC username>:<iRMC password> -F "file=@<BIOS file>" http://<iRMC IP address>/biosupdateexample)
$ curl -k --digest -u admin:admin -F "file=@D3321-A1.UPC" http://192.168.10.21/biosupdate
The above command stages the BIOS file to iRMC. If the server is powered off, then iRMC powers it on and starts BIOS flash. If it is not powered off, BIOS flash will be started after you shut down the OS.
To check the update status, you can do a HTTP GET to /biosprogress. It will return the status in XML.
example)$ curl -k --digest -u admin:admin http://192.168.10.21/biosprogress <?xml version="1.0" encoding="UTF-8"?> <Status> <Value>8</Value> <Severity>Information</Severity> <Message>FLASH programming in progress 33 Percent</Message> </Status>
PS> $username="<iRMC username>" PS> $password=ConvertTo-SecureString "<iRMC password>" -AsPlainText -Force PS> $credential = New-Object System.Management.Automation.PSCredential $username, $password PS> Invoke-WebRequest -Uri "http://<iRMC IP address>/irmcupdate?flashSelect=255" -Method Post -Credential $credential -InFile "<iRMC firmware image>" -Verboseexample)
PS> $username="admin" PS> $password=ConvertTo-SecureString "admin" -AsPlainText -Force PS> $credential = New-Object System.Management.Automation.PSCredential $username, $password PS> Invoke-WebRequest -Uri "http://192.168.10.21/irmcupdate?flashSelect=255" -Method Post -Credential $credential -InFile "C:\FW\BX2580M1_0824F.BIN" -Verbose
An iRMC firmware update does not require a system reboot. It will be updated while the OS is running.
To check the update status, send a HTTP GET request to /irmcprogress. It will return the status in XML.
example)PS> $username="admin" PS> $password=ConvertTo-SecureString "admin" -AsPlainText -Force PS> $credential = New-Object System.Management.Automation.PSCredential $username, $password PS> [xml]$response = Invoke-WebRequest -Uri "http://192.168.10.21/irmcprogress" -Method Get -Credential $credential -Verbose PS> $response.status |fl Value : 8 Severity : Information Message : FLASH programming in progress 48 Percent