System age based on smbios

Hi,

I need to figure out the computer age in days / years (to help with lifecycle prediction, next year’s budget, etc.)
in the past I did this using the following evaluation, based on Registry:
(date (local time zone) of now - (month (first 2 of it as integer) & day_of_month (first 2 of last 5 of it) & year (last 2 of it as integer + 2000)) of (if (exist key "HKEY_LOCAL_MACHINE\HARDWARE\Description\System\" of native registry and exist value "SystemBiosDate" of key "HKEY_LOCAL_MACHINE\HARDWARE\Description\System\" of native registry) then value "SystemBiosDate" of key "HKEY_LOCAL_MACHINE\HARDWARE\Description\System\" of native registry as string else "") )
This would work fine, but when the queried system is using UEFI it does not create the registry key.
Good possible alternatives are either the “Bios” inspector:

q: bios
A: 04/17/2019
T: 0.711 ms
I: singular bios

or the SMBios object:

q: unique values whose(it != “”) of (it as string as trimmed string) of values “bios_release_date” of structures “bios_information” of smbios
A: 04/17/2019
T: 0.636 ms
I: plural string with multiplicity

both return valid information for both BIOS and UEFI machines, and are close enough to the actual purchase date to use, but they return as “Bios” type.
can I convert the Bios type to days?
I tried various “now - bios” queries, but couldn’t find one that actually worked.
any way to accomplish this?

Thanks!

q: bios
A: 04/16/2019
T: 0.509 ms
I: singular bios

Wow - my ‘new’ laptop is coming up for 2 years old :frowning:
And the answer is not too helpful either - what properties are available from the BIOS?

q: properties of type "bios"
A: date of <bios>: string
A: version of <bios>: string
A: version strings of <bios>: string
T: 0.479 ms
I: plural property

Date of - could be useful

q: date of bios
A: 04/16/2019
T: 0.246 ms
I: singular string

So the date is presented as a string - fortunately it is clearly in US format and not ambiguous, so we can parse that and turn it into an object of type ‘date’

q: (it as date) of (last 2 of first 5 of it & " " & (it as three letters) of month (first 2 of it as integer) & " " & last 4 of it ) of (date of bios)
A: Tue, 16 Apr 2019
T: 0.216 ms
I: singular date

and to get that as number of days in the past

q: ((current date - (it as date)) / day) of (last 2 of first 5 of it & " " & (it as three letters) of month (first 2 of it as integer) & " " & last 4 of it ) of (date of bios)
A: 663
T: 0.115 ms
I: singular integer
3 Likes

actually, this helps a lot!
not I just need to compare some machines to the actual purchase date (and end of warranty date…) and see if it makes sense.

Thanks!

Love this question. It looks like all of the answers so far give us the release date of the BIOS applied to the hardware. If you update your BIOS, I would expect this date to change, so I started to try to solve the Hardware Manufacture date, for the system board.

I just did some digging into my Thinkpad’s smbios with this query:
q: (name of it|"", names of values of it, values of it) of structures of smbios

It’s an interesting read.

Manufacture Date of the System Board - is nowhere to be found!
To get my manufacture date, I had to go to a Lenovo Website:

and enter my system’s serial number, which I did.

image


Looks like that March 07, 2019 date is nowhere in my SMBIOS structures.

q: (name of it|"", names of values of it, values of it) whose (item 2 of it as string contains "2019" or item 2 of it as string contains "2020") of structures of smbios
A: bios_information, vendor, 06/20/2020
A: bios_information, bios_version, 06/20/2020
A: bios_information, bios_starting_address_segment, 06/20/2020
A: bios_information, bios_release_date, 06/20/2020
A: bios_information, bios_rom_size, 06/20/2020
A: bios_information, bios_characteristics, 06/20/2020
A: bios_information, system_bios_major_release, 06/20/2020
A: bios_information, system_bios_minor_release, 06/20/2020
A: bios_information, embedded_controller_firmware_major_release, 06/20/2020
A: bios_information, embedded_controller_firmware_minor_release, 06/20/2020
A: bios_information, , 06/20/2020

Does anyone else know a trick to get the Manufacture Date of the System Board locally on the windows (or linux) box without using an external website lookup with the vendor?

1 Like

you wouldn’t believe how long i’ve been searching for an answer to this :slight_smile:
before UEFI it was simpler, although not 100% accurate but close enough.
your assumption on bios update is correct, it changes the date for most manufacturers, as you can see below:

the “System Age” is based on a registry entry in “HKEY_LOCAL_MACHINE\HARDWARE\Description\System\SystemBiosDate”, and is the most accurate I found, but again, it does not apply to machines using UEFI.
both “System Age (Based on “Bios_Release_Date” from SMBios)” and “System Age (Based on “Date of Bios”)” are giving the same results but compared to actual purchase date are inaccurate.
for example, the Lenovo X230 system was purchased about 8 years ago, but shows as about 1.5 years old…
we should also look at the most common data between different systems, like the CPU manufacture date (both Intel and AMD), if that info can be “read” it would be close enough.
the only other option I can think of is to integrate the supply chain system (like SAP) and read serial no., supply date and end of warranty and somehow inject it into BigFix (based on some unique value like computer serial) via some connector… but I really don’t see this happening any time soon :slight_smile:

1 Like

@smalul I suspect one could write a CURL style command that could run inside of a BigFix Action script that would send the serial number to the vendor website and parse the response and stick it into a client setting or local file for later reporting by a Property.

Each vendor would need it’s own web call.
Lenovo and Dell would probably be the easiest.

My hope is that somebody, somewhere knows a local computer resource for this data pull instead of hacking together a web query for the agents.

Alternatively, if you could generate a comma separated value list of all your serial numbers and dates external to BigFix, you might use the Location By wizard to make a giant property.

1 Like

I seem to recall there was a custom web report uploaded in this great community, called “Computer Browser” that could either display the warranty, or link to the warranty page of the vendor. does anyone remember that, or know of a similar / updated solution?

we do just that … using a dell api and their web site… It uses the machine’s serial number. then extracts the Ship date, Warranty and date and a final debug which picks up error messages from the web client and stores that… We then write that to a registry key and read that in an analysis…
The task is added to a new machine baseline that we throw at all machines as they come on board or you could make a it a policy…
This was written by a colleague of mine and the API key is registered to him .
Im not sure if it could be adapted to Lenovo/…
There was a simpler, older dell version that stopped working on Bigfix.me BFME_C3 Inventory
"Invoke Gather Dell Warranty - Windows"