This blog post is not just for fun but because of a reason. I reinstalled my three Supermicro homelab servers with vSphere 7, and during setup, I noticed that ESXi shows incorrect values for the server model. What could cause this?
No, it shouldn’t be a “Super Server”, even if Supermicro servers are super for homelabs. But it should be an “SYS-300-8D” as this is the model I bought.
So how can I fix this? The short answer is: there is no fix until today, unfortunately. I tried it and asked also some fellow VMware friends, but still no success. It seems that this might a bug or something. I don’t know what values are read from ESXi to display that. And even after I changed the FRU values with the IPMICFG tool, reboot, and reinstalled the ESXi, the values were still displayed wrong. But at least I learned some new things during that troubleshooting. And I wanted to put the lessons learned into a blog post. Just in case you have similar issues, or you want to do the same things.
BIOS and IPMI upgrade first
First I did a BIOS and IPMI firmware update. You can download the update files here from Supermicro. In the top right corner, you can filter for your mainboard. First check which mainboard is installed in your server. Then you click the “Download Zip” file link (after filtering for your mainboard), accept the EULA, and proceed to the download. The upgrade is pretty simple. Log in to the IPMI web interface, click the Maintenance tab, and on the left-hand side you can spot the places where to upgrade the IPMI (firmware), and the BIOS.
If you have your ESXi host up and running, place it into maintenance mode first, because a reboot is needed, at least with the BIOS update.
The IPMI firmware can be updated without any problems, but with the BIOS you need to activate a license. Not bad, isn’t it? If there is a security issue (like it was with Meltdown and Spectre) you have to pay to upgrade. But when you do a bit of googling, you should be able to find a way to work around that license requirement.
[spoiler title=”Show spoiler”]https://peterkleissner.com/2018/05/27/reverse-engineering-supermicro-ipmi/[/spoiler]
But after updating the BIOS and IPMI firmware, ESXi still didn’t show the correct value for the server model. So what to do next?
Some of you may know the tools to configure the IPMI. Most vendors have their own tools to configure their IPMI through CLI (DELL iDRAC, HPE iLO, Supermicro, etc.). The tools are usually available for different operating systems. You can even configure the IPMI without needing to log in to it because you’re already working on the physical server and got access to the physical IPMI chip. That’s very helpful in case you screwed up something (like the wrong IPMI IP address, or a wrong password).
For Supermicro, you can download the IPMI tools here at their website. If you scroll down past the examples, you will find the download links. Or you click here for the download link. There is one catch: to download software, you have to fill a form. It’s not really a registration, as I didn’t receive any (spam) mails or had to confirm my registration. Just fill the form and you’re good to go.
For my use case here I downloaded the IPMICFG tool “For VMWare ESXi only”. You’ll get a Zip file that contains a VIB file, the release notes, the user guide, and the offline bundle. Extract the zip file, and upload the offline bundle to a datastore on your ESXi server (maybe the local /tmp folder).
You can install the offline bundle with the esxcli software command:
esxcli software vib install -d /tmp/SMC-IPMICFG-1.33.0-210528-offline_bundle.zip --no-sig-check
NOTICE: as of the time of writing this article, the filename you’ve downloaded might be another.
How to do the change
The IPMICFG tool will be installed in the following folder (just navigate into it):
You can access the help information with the following command:
As we’re looking for a way to change the FRU information (FRU = Field Replaceable Unit), we’re going to work with the following command:
./IPMICFG.esxi -fru Command: -fru Command(s): -fru info Shows information of the FRU inventory area. -fru list Shows all FRU values. -fru cthelp Shows chassis type code. -fru help Shows help of FRU Write. -fru <field> Shows FRU field value. -fru <field> <value> Writes FRU. -fru backup <file> Backs up FRU to a file <Binary format>. -fru restore <file> Restores FRU from a file <Binary format>. -fru tbackup <file> Backs up FRU to a file <Text format>. -fru trestore <file> Restores FRU from a file <Text format>. -fru ver <v1> <v2> Gets/Sets the FRU version. (<v1> and <v2> are BCD-format)
With -fru list you can list all FRU values. That’s the best point to start, so you see what you already have, and what values you may have to change.
Let’s start with an example. I wan’t to change the product name:
With ./IPMICFG.esxi -fru list you've got already all values and you know how that value is called. The name of the value is in brackets ( ). ./IPMICFG.esxi -fru PN This gives you the actual value, empty or a real value. With -fru [name] you can read the value. Let's change it now. ./IPMICFG.esxi -fru PN New-Value This will change the product name to New-Value.
You don’t need to save the configuration as you may know it from network switches. Just fire the command and that’s it. It’s directly written in the FRU area.
As mentioned above, the reason for this blog was that ESXi is not displaying the correct value for the server model. And as also mentioned, all the FRU changes didn’t solve the problem. One of three ESXi servers in my homelab shows the correct value, the others don’t.
But I’ll keep on trying. Stay tuned!