Bug 6554

Summary: SMBIOS Strings need to be populated
Product: [Hardware Platforms] MinnowBoard MAX Firmware Reporter: Darren Hart <dvhart>
Component: minnowmax-edk2Assignee: John 'Warthog9' Hawley <warthog9>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: Medium+ CC: brendan.le.foll, david.wei, henry.bruce, mang.guo, michael.p.krau, sjolley.yp.pm, warthog9
Version: unspecified   
Target Milestone: Production Release   
Hardware: MinnowBoard Max   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: Don't know
Attachments:
Description Flags
*****SMBIOS dump*******
none
SMBIOS test image
none
Test image none

Description Darren Hart 2014-07-18 18:25:58 UTC
The current SMBIOS strings have default data in them and need to be updated to reflect the MinnowBoard-Max specifically.

For example:

Base Board Information
        Manufacturer: Intel Corp.
        Product Name: NOTEBOOK
        Version: REV A
        Serial Number: To be filled by O.E.M
        Asset Tag: To be filled by O.E.M
...
Chassis Information
        Manufacturer: Intel Corp.
        Type: Hand Held

There are many other instances throughout the SMBIOS strings.
Comment 1 Darren Hart 2014-08-06 21:23:40 UTC
I'm bumping up this priority as there are now sites publishing information about the board using bad information from the DMI strings, indicating that the manufacturer is Intel and that it is a NOTEBOOK.

Tim, please move the bug to Accepted indicating you acknowledge the bug, priority, and target milestone.

As a medium+, this bug should be considered a blocker to production release.
Comment 2 Darren Hart 2014-08-07 00:51:20 UTC
For example:
Base Board Information
        Manufacturer: CircuitCo
        Product Name: MinnowBoard-Max
        Version: REV A1
        Serial Number: To be filled by O.E.M
        Asset Tag: To be filled by O.E.M

On these latter two - technically CircuitCo should fill those in. The Version: REV A1 is also problematic. How would the firmware team advise we proceed with those?

There is no Chassis, is that a required set of fields?
Comment 3 He, Tim 2014-08-07 07:00:56 UTC
I think Chassis is not required.  For serial number and asset tag, can we give CircuitCo a tool under uefi shell to fill them ?
Comment 4 Darren Hart 2014-08-07 14:55:25 UTC
Perhaps - but would that be overwritten in the field when a user flashes their firmware? Sounds like this needs some specific storage or the flash tool needs to know how to maintain it.
Comment 5 Darren Hart 2014-08-07 23:35:48 UTC
Dave Anders to investigate options and make a recommendation. Some consensus around using the Realtek Ethernet Address (MAC) for the serial number.

The hardware revision should also be readable through SMBIOS. Additional storage is available in the MAC/PHY for example.
Comment 6 Darren Hart 2014-08-07 23:36:42 UTC
Assigned to David and marked as NEEDINFO to make next steps obvious.
Comment 7 Henry Bruce 2014-09-23 18:09:25 UTC
Other platforms have meaningful values for such strings. E.g. for product name
Galileo  = "Galileo".  
Galileo 2  = "GalileoGen2".  
Moon Island 2.0  = "Crosshill".  
MinnowBoard  = "MinnowBoard".

I am worried that if this is not addressed soon, ISVs will be forced to go with current settings and will not want them to be changed from their "meaningless" values. As an example I am working with the Intel Mesh team on an IoT project who use the product name to detect platform type for platform specific operations (e.g. GPIO control).

Maybe we could agree on meaningful names before release so ISVs can be ready?

What specifics do I need to provide to elevate defect from "Need Info" status?
Comment 8 David Anders 2014-09-23 18:16:54 UTC
i was not aware this was a blocking item.

Darren/michael, what info do we need to finish this up?
Comment 9 Michael Krau 2014-09-25 17:00:53 UTC
I think we need the official name:

MinnowBoardMAX? MinnowBoard-MAX? MB-MAX?

Also an agreement on the Serial number and Asset tag?

Serial Number = MAC Address?  (I thought we agreed earlier)
Asset Tag?

It is really a matter of getting the fields defined, and then populating them.
Comment 10 David Anders 2014-09-25 17:03:44 UTC
michael,

so how is all this info getting populated? is this something that we need to flash during validation/post-production?

Dave
Comment 11 Michael Krau 2014-09-25 18:20:05 UTC
The most seamless mechanism, would be as follows:

For Name, that can be hard coded in the firmware (no matter how many MinnowBoard MAXes that are built, they are still MAXes).

The S/N:  If we use the MAC address, then that is already programmed on the line.  The firmware reads that at the time of the first boot (we even report it in one of the setup screens).  When we boot the first time, we can capture the MAC address, and populate the data then

For Asset Tag:  This one I am not sure, as I am not completely familiar with the uniqueness and granularity of the data.  This will require some discussion to determine the requirement (uniqueness of data, etc) and how to meet that requirement.  This may be something that has to go into one of the secondary storage spaces on the Board (the Network EEProm, the SPD EEPROM - in some unused, non-restricted locations).
Comment 12 David Anders 2014-09-25 18:22:31 UTC
does the asset tag need to be populated? i.e. can it be blank?

can we add a bios setup option so that someone can add their own asset tag?
Comment 13 Michael Krau 2014-09-25 18:28:13 UTC
Yes, the Firmware (setup) can do that (technically possible, with caveats), but where should the data be stored?

If it is in an UEFI Non-Volatile Memory Variable, it will be in the flash, which is OK, until someone does a firmware update and erases the variables (losing the data).  I am not sure if that is acceptable.

For any other NV space on the platform, the firmware has only read algorithms, so it becomes a development effort to create a new feature in the code to enable the write fo the data into the proper storage device.
Comment 14 David Anders 2014-09-25 18:35:23 UTC
michael,

a quick google search seems to indicate that the location and asset tags are intended to be configurable by the user and not fixed. 

http://www.cs.waikato.ac.nz/~dbaird/work/2013/06/24/setting-the-dell-service-tag-after-motherboard-replacement/

my suggestion is set the asset tag to some arbatrary value ("ABC123456789") as the default and have it available in the setup menu. i highly doubt these will be used specifically for the max, but there is always the potentional....

Dave
Comment 15 Michael Krau 2014-09-25 23:31:12 UTC
The following values:

Manufacturer: Circuitco
Product Name: MinnowBoard MAX
Serial Number: <MAC Address>
Asset Tag: <none>

Chassis Manufacturer: Circuitco 
Chassis type: Board

Where:
   <none> is a null value
   <MAC Address> - the MAC Address assigned to the on board LAN NIC.
Comment 16 Darren Hart 2014-11-06 23:02:21 UTC
This appears to have all the necessary information, assigning to Tim He for implementation.
Comment 17 David_Wei 2014-11-07 03:00:55 UTC
Created attachment 2233 [details]
*****SMBIOS dump*******

Hi Darren,

I just dumped the SMBIOS (see attachement) and compared with your request. The "serial number" of "Base Board Information" is already set to be MAC address. And some "manufacturer" have been changed to be "Circuitco". I think the remaining gaps are 
(1) "Vendor" field of "BIOS Information" should be changed to "Circuitco";
(2) "Chassis Types:" field of "System Enclosure" should be changed to "Board";

By the way, Do you also prefer us to change "serial number" field of "System Enclosure" to be MAC address? Or you do not care about this "serial number"? 


$Structure Type: Base Board Information
Format part Len : 17
Structure Handle: 1
Manufacturer: Circuitco
ProductName: MinnowBoard MAX
Version: REV A
SerialNumber: 001320FE300F

$Structure Type: System Enclosure
Format part Len : 24
Structure Handle: 2
Manufacturer: Circuitco
Type: 11
System Enclosure or Chassis Types:  Hand Held
Version: To be filled by O.E.M
SerialNumber: To be filled by O.E.M

$Structure Type: BIOS Information
Format part Len : 24
Structure Handle: 0
Vendor: Intel Corp.
Comment 18 David_Wei 2014-11-07 03:44:04 UTC
Hi Darren,

Sorry that I forgot to highlight that attached SMBIOS dump is not from 0.74 binary. It is dumped from our latest BIOS. The latest BIOS has partially fixed SMBIOS issue, but it still cannot 100% meet your request. The gaps I listed above are the gaps, from my understanding, between our latest BIOS and your request. Very appreciate if you could confirm. 

Hope a complete fix would be available in next release (maybe 0.75).
Comment 19 Darren Hart 2014-11-07 06:15:36 UTC
(In reply to comment #17)

> System Enclosure or Chassis Types:  Hand Held

So that clearly needs to change :-)

The recommendation was "Board" (per your point #1)

> Version: To be filled by O.E.M
> SerialNumber: To be filled by O.E.M
> 
> $Structure Type: BIOS Information
> Format part Len : 24
> Structure Handle: 0
> Vendor: Intel Corp.

I believe this is correct, Intel did provide the firmware. (So no to point #2)
Comment 20 Darren Hart 2014-11-07 06:16:36 UTC
(In reply to comment #17)

> By the way, Do you also prefer us to change "serial number" field of "System
> Enclosure" to be MAC address? Or you do not care about this "serial number"? 

I'd leave this one empty.

Thanks!
Comment 21 David_Wei 2014-11-10 06:16:25 UTC
Hi Darren and Michael,

It seems that "System Enclosure or Chassis Types" cannot be set as "Board", because SMBIOS spec does not define "Board" type Chassis. Mang Guo will provide more detail.
Comment 22 Mang Guo 2014-11-10 06:57:33 UTC
Hi Darren and Michael,

According to the latest smbios spec, "Board" is not in the list of "System Enclosure or Chassis Types". The following are all the Chassis Types:

Byte Value  Meaning 
01h  Other 
02h  Unknown 
03h  Desktop 
04h  Low Profile Desktop 
05h  Pizza Box 
06h  Mini Tower 
07h  Tower 
08h  Portable 
09h  LapTop 
0Ah  Notebook 
0Bh  Hand Held 
0Ch  Docking Station 
0Dh  All in One 
0Eh  Sub Notebook 
0Fh  Space-saving 
10h  Lunch Box 
11h  Main Server Chassis 
12h  Expansion Chassis 
13h  SubChassis 
14h  Bus Expansion Chassis 
15h  Peripheral Chassis 
16h  RAID Chassis 
17h  Rack Mount Chassis 
18h Sealed-case PC

I think "Expansion Chassis" is more suitable for our board, so can we use Chassis Types "Expansion Chassis" instead of Chassis Types "Hand Held"?
Comment 23 Darren Hart 2014-11-13 07:49:46 UTC
Is "None", NULL (unassigned) an option? Do we have to populate it?

If not, and in the absence of "Tackle Box", the only answer is "Unknown" because we don't know what sort of chassis or enclosure the board will be in.

Thank you for the detail Mang Guo.
Comment 24 Michael Krau 2014-11-13 23:21:05 UTC
Let's go with Unknown (Value 02).
Comment 25 Mang Guo 2014-11-14 00:50:51 UTC
Thanks Michael. I will "unknown" to fill in.
Comment 26 Mang Guo 2014-11-21 06:15:57 UTC
Created attachment 2255 [details]
SMBIOS test image

Attachment is a test image include all the changes I have done for SMBIOS table.
Please see the following list described in detail about what fields I have changed.

After change:

Type 1	ProductName: MinnowBoard Max B3 PLATFORM
	Manufacturer: Circuitco
	SerialNumber: <MAC Address>
	Add D0 stepping

Type 2	Manufacturer: Circuitco
	ProductName: MinnowBoard MAX
	SerialNumber:<MAC Address>

Type 3	Manufacturer: Circuitco
	System Enclosure or Chassis Types: Unknown
	Version:
	SerialNumber:
	AssetTag:

Type 4	ProcessorManufacture: Intel
	SerialNumber:  
	AssetTag:  
	PartNumber:

Type 17	Manufacturer: Micron
	SerialNumber:  
	AssetTag:  
	PartNumber:

Before change:

Type 1	ProductName: Minnowboard Max B3 PLATFORM
	Manufacturer: Intel Corp.
	SerialNumber: To be filled by O.E.M
	
Type 2	Manufacturer: Intel Corp.
	ProductName: NOTEBOOK
	SerialNumber: To be filled by O.E.M

Type 3	Manufacturer: Intel Corp.
	System Enclosure or Chassis Types:  Hand Held
	Version: To be filled by O.E.M
	SerialNumber: To be filled by O.E.M
	AssetTag: To be filled by O.E.M

Type 4	ProcessorManufacture: INTEL
	SerialNumber: To be filled by O.E.M
	AssetTag: To be filled by O.E.M
	PartNumber: To be filled by O.E.M

Type 17	Manufacturer: To be filled by O.E.M
	SerialNumber: To be filled by O.E.M
	AssetTag: To be filled by O.E.M
	PartNumber: To be filled by O.E.M
Comment 27 Darren Hart 2014-11-21 17:29:36 UTC
Please correct the usage of "MinnowBoard MAX" to be consistent throughout. Currently there is a mix of capitalization. Michael provided the accepted string in Comment 15:

"MinnowBoard MAX"
Comment 28 Darren Hart 2014-11-21 17:30:08 UTC
Also, why was "B3 PLATFORM" added?
Comment 29 Mang Guo 2014-11-24 02:41:58 UTC
Thanks Darren. I will change "Max" in type 1 to "MAX".

For "B3 PLATFORM", "B3" is the stepping of SOC and I have just added the newer stepping "D0" for supported. It's dynamically detected by the code that located at :
Vlv2TbltDevicePkg\SmBiosMiscDxe\MiscSystemManufacturerFunction.c
  case PchB3:
      UnicodeSPrint (Buffer, sizeof (Buffer),L"%s",L"MinnowBoard MAX B3 PLATFORM");

So, the field "ProductName" in type 1 is now filled with "MinnowBoard MAX B3 PLATFORM".

Many thanks for your advice.
Comment 30 Mang Guo 2014-12-02 08:59:25 UTC
Created attachment 2268 [details]
Test image

Hi Darren,
Attachment is the latest test image for SMBIOS. I have changed "Max" to "MAX".
Please confirm. Thank you!
Comment 31 John 'Warthog9' Hawley 2014-12-15 22:57:06 UTC
We will *NOT* be able to use the "MinnowBoard MAX B3 PLATFORM", this *HAS* to be more generic as the CPU stepping is going to change whether we like it or not.  I would change that to "MinnowBoard MAX" and just leave it at that.

We may also want to change the "Version" from B3 to something more generic, as again, the CPU stepping is going to change (the System Information Version currently says "B3").  I'd just go with "MAX" personally.  If someone wants to know what stepping of the CPU they are on, they can read the CPU flags and identifiers.
Comment 32 John 'Warthog9' Hawley 2014-12-15 23:09:54 UTC
(In reply to comment #31)
> We will *NOT* be able to use the "MinnowBoard MAX B3 PLATFORM", this *HAS*
> to be more generic as the CPU stepping is going to change whether we like it
> or not.  I would change that to "MinnowBoard MAX" and just leave it at that.
> 
> We may also want to change the "Version" from B3 to something more generic,
> as again, the CPU stepping is going to change (the System Information
> Version currently says "B3").  I'd just go with "MAX" personally.  If
> someone wants to know what stepping of the CPU they are on, they can read
> the CPU flags and identifiers.

Ok nix my last comment, if the information is dynamically generated than I have no issue (sorry didn't read Mang Gou's comments clearly enough), assuming it's dynamically generated for both the version and the product information (Mang can you confirm that since I don't have access to that source yet?)

If that's the case this can be closed with 0.76's release
Comment 33 Mang Guo 2014-12-17 02:54:44 UTC
Hi John,
We now have no other stepping board except "B3" . But I have checked our code, the stepping information is dynamically detected by the code. When stepping changes, the information will be change.
Comment 34 John 'Warthog9' Hawley 2015-01-26 21:55:02 UTC
0.76 released

http://firmware.intel.com/projects/minnowboard-max

this bug is complete.