ProLiant Servers (ML,DL,SL)
Showing results for 
Search instead for 
Did you mean: 

Firmware update on Linux

Go to solution
Occasional Advisor

Firmware update on Linux

I am trying to update the firmware on my ML10 Gen9. It is running Arch Linux, fully updated.

I downloaded the firmware package from the HPe website, did the sha256sum check which matched.

The instructions are wrong and make no sense, but luckily its no rocket science. I run the script as root. It dumps the following blurp. I checked the script all it does is chmod 777 on the executable and run it with some parameters. I tried running it manually and tried /h or --help. it allways outputs this blurp:

/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:42:1: warning: data definition has no type or storage class
/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:42:1: error: type defaults to ‘int’ in declaration of ‘module_init’ [-Werror=implicit-int]
/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:42:1: warning: parameter names (without types) in function declaration
/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:43:1: warning: data definition has no type or storage class
/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:43:1: error: type defaults to ‘int’ in declaration of ‘module_exit’ [-Werror=implicit-int]
/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:43:1: warning: parameter names (without types) in function declaration
/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:22:13: warning: ‘amifldrv_cleanup_module’ defined but not used [-Wunused-function]
 static void amifldrv_cleanup_module(void)
/data/software/Linuxflash_with_BATCH/.temp/amifldrv.c:14:12: warning: ‘amifldrv_init_module’ defined but not used [-Wunused-function]
 static int amifldrv_init_module(void)
cc1: some warnings being treated as errors
make[2]: *** [scripts/ /data/software/Linuxflash_with_BATCH/.temp/amifldrv.o] Error 1
make[1]: *** [Makefile:1504: _module_/data/software/Linuxflash_with_BATCH/.temp] Error 2
make: *** [Makefile:8: default] Error 2
10 - Error: Unable to load driver.


Can anyone help me make sense of this so i can upgrade to the latest firmware please?



Honored Contributor

Re: Firmware update on Linux

What firmware package did you download?

No support by private messages. Please ask the forum! 
Occasional Advisor

Re: Firmware update on Linux

@Jimmy Vance wrote:

What firmware package did you download?

Type: BIOS (Entitlement Required) - System ROM
Version: 2017.10.11(17 Oct 2017)
Operating System(s): SUSE Linux Enterprise Server 11 (AMD64/EM64T) | View all
File name: (6.9 MB)  

 The link is (not sure if it will work):

Entitlement is required to download it.

Why can't they release something that is guaranteed to work like a bootable image? This package is full of errors, the steps are full of errors. How hard can it be to just have a stand alone, working executable that reads a binary BIOS image file and flashes the firmware?

Thanks for the help though. I really hope we can get this to work.

Honored Contributor

Re: Firmware update on Linux

I don't have access to an ML10 Gen9 here, but I asked a co-worker to test on one they have.  They used the newest release v1.10 but the flash engine is the same for both versions as far as I can tell.

ML10 Gen9, OS is RedHat Enterprise Linux 7.2  64bit

Here are the steps they used.

  1. Download the zip file to a directory on a target server.
  2. Unzip to a temporary directory.  (/root/tmp/)
  3. Open " Linuxflash_with_BATCH " folder and 5 files and one directory will be displayed.
    • ROM_Flash_Utility (direcotry)
    • 1.10
    • readme.txt
    • release_note.txt
      (Note: Use flash utility on Linux 64bit kernel 2.6.x or above)
  4. Open terminal and type the following:
        "cd /root/tmp/Linuxflash_with_BATCH/ROM_Flash_Utility"
  5. Type the following:
        "chmod -R 777"
  6. Type the following:
  7. When Flash process is completed it will automatically direct back to the command line
  8. Restart system when flash complete
  9. After system restarts, verify that the ROM version is 1.10. The BIOS version displays in the BIOS setup

They had no issue running the shell script and the flash completed successfully. 


If you run the flash engine without any parameters, the following is returned

[root@ml10gen9 Linuxflash_with_BATCH]# ROM_Flash_Utility/afulnx64/afulnx_64
|                 AMI Firmware Update Utility  v5.07.01                     |
|      Copyright (C)2014 American Megatrends Inc. All Rights Reserved.      |
| Usage: afulnx_64 <ROM File Name> [Option 1] [Option 2]...                 |
|           or                                                              |
|        afulnx_64 <Input or Output File Name> <Command>                    |
|           or                                                              |
|        afulnx_64 <Command>                                                |
| ------------------------------------------------------------------------- |
| Commands:                                                                 |
|         /O - Save current ROM image to file                               |
|         /U - Display ROM File's ROMID                                     |
|         /S - Refer to Options: /S                                         |
|         /D - Verification test of given ROM File without flashing BIOS.   |
|         /A - Refer to Options: /A                                         |
|       /OAD - Refer to Options: /OAD                                       |
| /CLNEVNLOG - Refer to Options: /CLNEVNLOG                                 |
| Options:                                                                  |
|      /CMD: - Send special command to BIOS. /CMD:{xxx}           |
|     /MEUL: - Program ME Entire Firmware Block, which supports             |
|              Production.BIN and PreProduction.BIN files.                  |
|         /Q - Silent execution                                             |
|         /X - Don't Check ROM ID                                           |
|       /CAF - Compare ROM file's data with Systems is different or         |
|              not, if not then cancel related update.                      |
|         /S - Display current system's ROMID                               |
|       /JBC - Don't Check AC adapter and battery                           |
|  /HOLEOUT: - Save specific ROM Hole according to RomHole GUID.            |
|              NewRomHole1.BIN /HOLEOUT:GUID                                |
|        /SP - Preserve Setup setting.                                      |
|         /R - Preserve ALL SMBIOS structure during programming             |
|        /Rn - Preserve SMBIOS type N during programming(n=0-255)           |
|         /B - Program Boot Block                                           |
|         /P - Program Main BIOS                                            |
|         /N - Program NVRAM                                                |
|         /K - Program all non-critical blocks.                             |
|        /Kn - Program n'th non-critical block(n=0-15).                     |
|     /HOLE: - Update specific ROM Hole according to RomHole GUID.          |
|              NewRomHole1.BIN /HOLE:GUID                                   |
|         /L - Program all ROM Holes.                                       |
|        /Ln - Program n'th ROM Hole only(n=0-15).                          |
|      /ECUF - Update EC BIOS when newer version is detected.               |
|         /E - Program Embedded Controller Block                            |
|        /ME - Program ME Entire Firmware Block.                            |
|       /DSC - Flash DSC.                                                   |
|       /GBE - Flash GBE.                                                   |
|        /ME - Flash ME.                                                    |
|      /MEUF - Program ME Ignition Firmware Block.                          |
|         /A - Oem Activation file                                          |
|       /OAD - Delete Oem Activation key                                    |
| /CLNEVNLOG - Clear Event Log.                                             |
|   /CAPSULE - Override Secure Flash policy to Capsule                      |
|  /RECOVERY - Override Secure Flash policy to Recovery                     |
|        /EC - Program Embedded Controller Block. (Flash Type)              |
|    /REBOOT - Reboot after programming.                                    |
|  /SHUTDOWN - Shutdown after programming.                                  |
[root@ml10gen9 Linuxflash_with_BATCH]#



No support by private messages. Please ask the forum! 
Occasional Advisor

Re: Firmware update on Linux

Thanks again! Really appreciate your efforts to help. You are awesome :).

Basically, those are the steps I followed as well, but resulted in those errors. I am creating a CentOS 7.2 image to boot my server with and I'll try again.

 I'll let you know how that works.

Edit: A little feedback on the instructions: file is in the "Linuxflash_with_BATCH" dir, not in the "ROM_Flash_Utility" dir. So, the cd and chmod commands when followed literally, will result in an error message:

chmod: cannot access '': No such file or directory

 The command chmod needs to be given in "/root/tmp/Linuxflash_with_BATCH" because that's where that file resides.

Last but not least, chmod -R means recursive. Using recursive on a single file is useless. The notation '777' opens up the permissions and makes the file executable to the entire world (including guest/unauthenticated access). This is really bad practise. I see this same command is also used in the script on the binary flash executable. The command we want is simply:


  • chmod 750

This sets read/write permissions for 'root', and the file executable bit for the owner and group. Since the group permissions in the root home dir is 'root' as well this limits access and execute to root only. The script should also contain that command instead of '777' which should never ever be used, unless there really, really really is no other way. And even then you should think twice about it and reconsider.


Occasional Advisor

Re: Firmware update on Linux

It still doesn't work.

Installed Centos 7.2, server with GUI and backward compatibility libraries on an external disk and booted the server. Copied the zipfile, extracted it and chmod that file.

It said it coulnd't find sources, unable to load driver. Apparently it wants to compile something.

I installed the "Development Tools" group, it contains kernel headers, sources, and all tools for compiling.

Rebooted, tried again, it says the same thing.

Why it wants to compile something is beyond me. It should simply flash the BIOS, how hard can that be?

Occasional Advisor

Re: Firmware update on Linux

Can I flash this BIOS from Windows?


I can install Windows 7 on the external disk and boot from that instead?

Honored Contributor

Re: Firmware update on Linux

I just tried running the utltiy on a non ML10 and am also seeng an error as it can't find the kernel source.  I just did a minimal installation of CentOS 7.2. I'm not sure what all packaegs were installed on the co-workers system for the utility to work.  You are correct on the instructions needeing work.  I'll assume we get his package directly from AMI, but I will report this issues to the program team for this product.

I would assume there is a Windows tool to flash the BIOS, search for v1.10 as it was just released this month



No support by private messages. Please ask the forum! 
Occasional Advisor

Re: Firmware update on Linux

Thanks for your help.

I wasn't being very clear, apologies.

I meant to ask if I can flash the 1.10 BIOS from this Linux download with the Windows flash tool. I can download the Windows version from the site but I get the impression the Linux version of the BIOS is specfically for systems running Linux (not just the tool to flash it), implying it is not OS agnostic.

I am used to a BIOS/Firmware being OS agnostic, but the description leads me to believe otherwise. That's what I meant to ask.

I went through the trouble to get Windows 10 running on a new disk. After instalaltion, the screen goes black and my monitor says input 1920x1200x60hz out of range. The monitor is a Dell Ultrasharp 2410, with a native resolution of 1920x1200 60Hz (also supporting 50 and 59Hz). During the install it had a lower resolution. After reboot, it won't even give me a display in safe mode or low resolution. I've had this monitor as my main monitor for like 10 years. Never had a single problem, ever. It's been the best and my favorite monitor for a long time.

I added a low budget AMD Radeon card, which also refuses to output an image (not even BIOS becomes visible) with HDMI and DVI and VGA outputs. In the BIOS I have scan for external card enabled.

I've got all sorts of cables for HDMI, DVI and DP and converters from one to the other. What I don't have anymore is a simple VGA cable.

I'm sure you can understand I'm getting a little frustrated with HPe and this hardware. Updating a firmware should be a 1 minute job.

I've just ordered a simple VGA cable ... hopefully that will work.

Honored Contributor

Re: Firmware update on Linux

Sorry I don't have a better answer for you, and can understand your frustration.  I'm just not that familiar with this system. as it does not use the normal ProLiant tools as the system ROM is AMI and not HPE.

I was able to log into the system my co-worker was using and grab a copy of the anaconda file created during installation, here is the package list. Our time zones are very different so I can't get quick responses to my questions.

repo --name="Server-HighAvailability" --baseurl=file:///run/install/repo/addons/HighAvailability
repo --name="Server-ResilientStorage" --baseurl=file:///run/install/repo/addons/ResilientStorage


No support by private messages. Please ask the forum!