1 Rookie

 • 

7 Posts

99

October 29th, 2025 20:41

IDRAC9 Redfish firmware install automation issue

Hello,

I am attempting to automate firmware upgrades on IDRAC9 7.x. 

7.20.30.55


I am using this document : https://developer.dell.com/apis/2978/versions/7.xx/docs/Tasks/2SimpleUpdate.md

I was able to successfully upload the firmware and see it as "available".  However when I attempt to trigger the SimpleUpdate I get an error :

JID_617869661566	Firmware Update: Generic	Failed (100%)Scheduled Start Time2025-10-29T20:16:06Actual Start TimeNot ApplicableExpiration TimeNot ApplicableActual Completion TimeNot ApplicableMessageRED023: Lifecycle Controller in use. This job will start when Lifecycle Controller is available.


When I head to Maintenance tab -> System Update and I see this message :

SUP0108: A deployment or update operation is already in progress. Wait for the operation to conclude and then re-try.


My assumption is that this is blocking my update.  After some further investigation I found that my IDRAC gets into this SUP0108 state immediately after the upload prior to the SimpleUpdate trigger.  I have been having to reboot the IDRAC to get it out of this state.

Does anyone have any idea why I'm running into this?

Thanks

3 Apprentice

 • 

1.1K Posts

November 6th, 2025 18:14

i forgot to add, have you seen this:
https://github.com/dell/iDRAC-Redfish-Scripting/actions

#iwork4Dell

Moderator

 • 

5.3K Posts

October 30th, 2025 04:09

Hello, in regard to this post, maybe you have LCC open or the server sits in the BIOS config?

We need to make sure the server is booted or at least completed the post. Also you can force remove all pending jobs if any.

SSH to iDRAC and execute "racadm jobqueue delete -i JID_CLEARALL_FORCE"

 

Let us know how it goes.

Respectfully,

 

3 Apprentice

 • 

1.1K Posts

October 30th, 2025 19:06

I've never done the redfish method before, but I have an R640 available and thought I would try this. 
I'm using windows to curl, and this is my command line:
curl -X POST "https://<IP_address>/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate" -u root:<password> --insecure --ssl-no-revoke -H "Content-Type: application/json"  -d "{\"ImageURI\": \"https://dl.dell.com/FOLDER12926931M/4/BIOS_T4VCN_WN64_2.24.0_01.EXE\"}"

what happens is:
Downloading the BIOS_T4VCN_WN64_2.24.0_01.EXE update package.
Unable to complete the job because of an internal error.
Job JID_618684503658 failed because Unable to complete the job because of an internal error.

So this is kinda odd to me. The bios is one level down from the latest, and my idrac is N-2, so not old at all. 
I also cleared the jobs before running. 
Uploading the file via idrac gui works fine as well.

Rey
#Iwork4Dell
 

(edited)

3 Apprentice

 • 

1.1K Posts

October 31st, 2025 20:04

So for anyone out there that might be interested, for my scenario, the fix was to use downloads.dell.com in my previous post instead of dl.dell.com

Rey
#Iwork4Dell

1 Rookie

 • 

7 Posts

November 5th, 2025 20:45

@DELL-Young E​ 

Hello,

Thanks for the information.  Unfortunately I have tried this without success.  Here's what has happened so far in further detail.

  1. I upgrade the firmware manually from 7.20.30.55 -> 7.20.60.50.  BIOS was unchanged from 2.1.1.
  2. I powered on server and waited for post to complete.
  3. Ran the provided job queue delete command :
  4. Reviewed status before trigger the upload
    1. Job queue :
    2. System update view :
    3. Lifecycle log :
  5. Triggered the upload and here's the updated views
    1. Job queue(No job is expected as update was not triggered I assume):
    2. System update view(Blocked after the upload):
    3. Lifestyle log(Shows the package is uploaded) :
  6. After attempting upgrade with available firmware as show by our logs: https://169.254.0.3/redfish/v1/UpdateService/FirmwareInventory/Available-25101-2.2.1.EXE
    1. Job queue :
    2. System update view :
    3. Lifestyle logs(appears job failed due to lifestyle controller is in some lock state:

It seems to me that the Lifestyle controller gets in some lock state after the upload of firmware.  Which causes the Job to trigger the update to fail.  I'm wondering if there's additional steps to be done after the upload prior to the install trigger?

1 Rookie

 • 

7 Posts

November 5th, 2025 20:47

@DELL-Rey G​ Hello,

Thanks for your reply it appears that your redfish api firmware upgrades seem to work correctly.  I've added a new comment to this thread showing what I have tried.   If you get a chance and review it I'd greatly appreciate it!

3 Apprentice

 • 

1.1K Posts

November 5th, 2025 21:09

try this before starting your process. Reboot system, during boot, press F2 when prompted, then in gui, select idrac settings, then Lifecycle controller, then set Cancel Lifecycle controller actions to Yes. Then back your way out and reboot. Then run your job.
if it still fails, can you post the commands you are running so I can try to replicate here? Oh, and system model number please

Rey
#Iwork4Dell

1 Rookie

 • 

7 Posts

November 5th, 2025 21:38

@DELL-Rey G 

I have tried your suggestion by setting Cancel Lifecycle controller actions to Yes, but got the same result.

Here's how I'm doing my upload/trigger of the upgrade:

  1. I upload the .exe file via POST to /UpdateService/FirmwareInventory that has the etag set and a files parameter.  I see that this is successful and I even query the inventory endpoint for available firmware and I see mine. :
            firmware_inventory_url = f'{self.base_url}/UpdateService/FirmwareInventory'
            
            # Pulls etag from /UpdateService/FirmwareInventory'
            etag = self.get_etag()
            
            headers = {}
           
            headers['If-Match'] = etag
            
            timeout = max(600, int(file_size_mb * 20))
            
            try:
                with open(firmware_file_path, 'rb') as firmware_file:
                    files = {
                        'file': (filename, firmware_file, 'application/octet-stream')
                    }
                    
                    headers['Accept'] = 'application/json'
                    headers['User-Agent'] = 'Dell-Redfish-Client/1.0'
                                    
                    response = self._make_request(
                        'POST',
                        firmware_inventory_url,
                        headers=headers,
                        files=files,
                        timeout=timeout
                    )​
  2. I use URL from previous step to trigger upgrade via POST  on /UpdateService/Actions/UpdateService.SimpleUpdate
            payload = {
                "ImageURI": image_uri
            }
                    
            headers = {
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            }        
            response = self._make_request(
                'POST',
                simple_update_url,
                data=json.dumps(payload),
                headers=headers
            )
PowerEdge R360

(I used code blocks to show the code I'm not sure why it's not formatted correctly)

(edited)

Moderator

 • 

5.3K Posts

November 6th, 2025 07:09

Hello, R360 would still have a valid warranty most likely, I'm assuming. You can always open a ticket for the most suitable support? https://www.dell.com/support/home/en-us  

Respectfully,

3 Apprentice

 • 

1.1K Posts

November 6th, 2025 17:56

I'm at the end of my knowledge on this, but what I see on my end is that simpleupdate is uploading the file and scheduling the update job (not running it), so when you try to kick off the job, it wont let you. 
At this point, I was having to reboot the idrac to allow me to retry the operation, so I played around and used this to clear the bios file I had uploaded, so I could run the job again.
curl -k -u <username>:<password> https://<IP_Address>/redfish/v1/UpdateService/FirmwareInventory | jq -r '.Members[]["@odata.id"]' | grep Available  ##note, I had to install jq
I was also told:

Note that SimpleUpdate using Etag (HTTP push method) is no longer supported in iDRAC10 so recommended to change your script to use MultipartUpload instead to support both iDRAC9 and 10. Plus using MultipartUpload simplifies the workflow and less script code is needed.


#iwork4Dell

(edited)

1 Rookie

 • 

7 Posts

November 6th, 2025 20:44

@DELL-Young E  @DELL-Rey G​ Thank you both very much for all the help. 

@DELL-Rey G

Your link to these scripts contained a script that does the firmware automation.  This worked for me.  Seems like they use /redfish/v1/UpdateService/MultipartUpload to upload and create the job on a single call to this instead of doing two calls:  One to upload to the inventory and one to trigger update using SimpleUpdate.

(edited)

No Events found!

Top