Page 1 of 1

BIOS Fields set to "Default string"

Posted: Mon Jun 12, 2023 6:23 pm
by ryantate13
A number of fields in my BIOS are currently set to the value "Default string". Unfortunately my employer needs the serial number of my computer to grant me access to certain resources via the Endpoint Verification Chrome extension. Can you please provide me with instructions to set the value appropriately? I was reading online that this can be accomplished via an AMI provided program but I'm hesitant to start following guides online for other manufacturers if there are potential differences with my AMR5 that I should be aware of.

Code: Select all

➜  ~ (echo 'field,value'; for f in $(find /sys/devices/virtual/dmi/id/ -type f); do printf "%s,%s\n" $(basename $f) "$(sudo cat $f | xargs)"; done) | csvq 'select * where value = "Default string"'     
+-------------------+-----------------+
|       field       |      value      |
+-------------------+-----------------+
| product_serial    | Default string  |
| product_name      | Default string  |
| chassis_vendor    | Default string  |
| chassis_asset_tag | Default string  |
| sys_vendor        | Default string  |
| product_version   | Default string  |
| board_vendor      | Default string  |
| chassis_version   | Default string  |
| chassis_serial    | Default string  |
| product_family    | Default string  |
| board_asset_tag   | Default string  |
| board_name        | Default string  |
+-------------------+-----------------+

Re: BIOS Fields set to "Default string"

Posted: Mon Jun 12, 2023 8:14 pm
by Gabe
ryantate13,

Since it's a somewhat urgent thing, it might also be a good idea to contact the company's tech at barry@minipcunion.com. I'd include the same info you stated here.

Re: BIOS Fields set to "Default string"

Posted: Mon Jun 12, 2023 8:49 pm
by pausenklaus
I have the same issue on my AM07 but haven't put much thought into it but it would be nice to have that corrected.

Re: BIOS Fields set to "Default string"

Posted: Wed Jun 14, 2023 3:22 am
by ryantate13
FYI for those coming to this post later, I accomplished what I needed by booting into the EFI shell and running a command line tool, AMIDEEFIx64.EFI. The steps I followed were before I heard back from support but they replied to my support request with some helpful information which I will include here. I recommend following their guide because what I went through was not as straightforward as it could have been.

Reply from support:
Hello Mr. Tate,

Our PC does not have a serial number. You need to write the serial number by yourself, please use the link to add the SN. It is recommended that you write it yourself. We have a tool for writing serial numbers. Here is the download link of the tool:



the instructions and methods are in the file.

Best,

Acemagician Support
What follows is the sequence of steps that I went through without the benefit of the README provided by support. I started by reading this guide which mentioned using the tool AMIDEDOS.EXE to fix the missing value(s). I still think this is an option and would have worked. What you would do is to create a freedos boot cd with this utility on it and boot into that and run it. I began my search meaning to do that and I found out that AMIDEDOS and its corresponding Windows utility, AMIDEWIN are proprietary and are given by AMI to OEMs only with a corresponding NDA. What's interesting though is that Lenovo includes it with their BIOS update packages. This guide shows their recommended way to fix an invalid BIOS value on the ThinkCentre M70s using AMIDEEFIX64.efi and theirs is the guide I ended up following. I downloaded the BIOS package with the tool from here. I didn't want to boot into a drive with their BIOS files though so I downloaded the BIOS update for the AMR5 from this post, prepared a FAT32 thumb drive with the update package and copied just the file AMIDEEFIX64.efi from the Lenovo zip into the drive. I googled around and found this user guide to understand which commands to run and this guide to using the EFI shell which I had no idea even existed prior to this but is actually a lot like a little baby Linux baked into your motherboard.

Steps:
  1. Download BIOS package for AMR5
  2. Download BIOS package for Lenovo
  3. Format a thumb drive to FAT32
  4. Copy AMR5 update package files to that drive
  5. Copy AMIDEEFIX64.efi to the drive
  6. Reboot
  7. Press F7 on boot up to select boot device and choose thumb drive
  8. Press Esc rapidly within the first 5 seconds of boot to prevent automatically launching the script to update the BIOS
  9. You are now dropped into the EFI shell with prompt Shell >
  10. Run map to list device mappings
  11. In my case the thumb drive was listed as fs1 so I ran the command fs1: to select that device. Note that ls and cd will not work until you select the device
  12. Run ls to confirm the file AMIDEEFIX64.efi is present
  13. Run AMIDEEFIX64.efi /SS to confirm the current value is set to Default string
  14. Run AMIDEEFIX64.efi /SS $YOUR_DESIRED_SERIAL to set the value to what you want it to be. For me, I had noticed that the "base board" had a serial number but the "system" did not so I used the value retrieved from running AMIDEEFIX64.efi /BS
  15. Run reset -s to shutdown the machine
  16. Power on again by pressing the power button
Shortly after rebooting I confirmed that the commands had worked by running.

Code: Select all

sudo dmidecode -t system
I then initiated a sync with the endpoint verification helper utility installed and my employer confirmed that the serial number is now being transmitted properly. The reason why I say to run the guide provided by support vs. what I went through is that I wound up updating my BIOS by mistake. There is no visual feedback to the BIOS update, no progress bar or anything so you kind of just have to let it go for a "long enough" amount of time with the screen fully blacked out (in my case I walked away for 30 minutes and came back) and then you have to pull the power cord because the power button will not reset the machine. Kind of a stressful operation. Now that I've learned a bit about EFI scripting, I'd throw an "echo starting" and "echo done" into startup.nsh at the very least just to cut down on the anxiety factor thinking you might brick your new machine.

Re: BIOS Fields set to "Default string"

Posted: Wed Jun 14, 2023 4:23 am
by ryantate13
I should probably mention, you can prepare a file on the thumb drive with BIOS field values pre-populated and run a command to update all the values at once vs. getting/setting a single field at a time.

To populate the file initially with the values that are currently on your system you'd run:

Code: Select all

AMIDEEFIX64.efi /DMS
The second argument to this command is an optional file name. The default is to create a file in the current directory called Config.dms. You can then reboot into your OS and edit the values in that file, or you can just use the edit command to launch the text editor that's baked into the EFI shell.

When you're ready, you can apply all values in the file to the BIOS by running:

Code: Select all

AMIDEEFIX64.efi Config.dms
Below is a redacted version of what the file looked like on my machine prior to making any edits. Note that the version here is for the updated BIOS, not the default that my unit shipped with.

Code: Select all

[BIOS]
Name = American Megatrends Inc.
Version = V1.14_P4C4M43_EC_0_0_59_AMI
Date = 01/06/2023

[System]
Manufacturer = Default string
Product = Default string
Version = Default string
SerialNum = Default string
UUID = REDACTED
SKUNum =  
Family = Default string

[BaseBoard]
Manufacturer = Default string
Product = Default string
Version = V00
SerialNum = REDACTED
AssetTag = Default string
LocInChassis = Default string

[BaseBoardWithHandle]
Handle = 0002
Manufacturer = Default string
Product = Default string
Version = V00
SerialNum = REDACTED
AssetTag = Default string
LocInChassis = Default string

[Chassis]
Manufacturer = Default string
ChassisType = 23
Version = Default string
SerialNum = Default string
TagNum = Default string
ChassisOEM = 00000000
ChassisHeight = 00
PowerCords = 01
ChassisSKU = Default string

[ChassisWithHandle]
Handle = 0003
Manufacturer = Default string
ChassisType = 23
Version = Default string
SerialNum = Default string
TagNum = Default string
ChassisOEM = 00000000
ChassisHeight = 00
PowerCords = 01
ChassisSKU = Default string

[Processor]
SerialNum = Unknown
AssetTag = Unknown
PartNum = Unknown

[OemString]
String = Default string

[Configuration]
String = Default string