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
$ curl -k --digest -u <iRMC username>:<iRMC password> -F "file=@<BIOS file>" http://<iRMC IP address>/biosupdate
example)
$ 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>
iRMC firmware update using PowerShell
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>" -Verbose
example)
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