I apologise if I missed information on how to do this, but I couldn’t see anything in my searches the past few days.
I have a Huananzhi X79-8D motherboard that Unraid was only reporting 64GB of RAM but 123GB available (with 128GB installed). Found this thread which indicated that it was a problem with the bios and the DMI table within it; as dmidecode returns “Invalid entry length (0). DMI table is broken! Stop” mid way through processing the DMI Table. Looking through the data, I noted that the 2nd Physical Memory Array had a length of 0x23 instead of 0x17 (23 bytes) which should be the correct length according to my understanding of this pdf document. I couldn’t fix this in AMIBCP 4.55 and I installed Windows 10 onto a drive so I could run DMIedit, with no success in being able to fix this. I wasn’t able to find an entry in UEFITool that had the SMBIOS/DMI Table data in it, but that could also be due to my inexperience with it (used the hex search function with no results showing up).
There as of writing no updated BIOSes for this motherboard that I’ve found, from the manufacturer or 3rd party. As I’ve been researching on this, I looked at other firmwares for other Chinese dual socket ‘X79’ motherboards and found they all seemed to have the exact same error in their BIOS files. If you want to take a look, the bios file can be found here.
I need to be able to extract the raw DMI Table from the bios, edit it and put it back into the BIOS file for reflashing/testing. Does anyone know of a method/tool for doing this? I understand there is a possibility of bricking my motherboard by doing this, but I have the tools needed to extract the flash chip and externally program it if required (found out how to do that for my current Ryzen 3000 system!).
Edit: The bios file requires www. to be manually added as I don’t have enough posts to post links properly yet.
Alright, so I found a way of extracting the ‘DMI Table’ contained within the compressed section of SMBiosStaticData, and I can edit it with a hex editor. But now it’s a question of how can I replace this section. I haven’t found a way of doing this in MMTool or UEFITool (NE Alpha 58, latest release). Any ideas?
EDIT: Looks like using UEFITool v0.25.1, I could replace the body of SMBiosStaticData (although the name doesn’t show up in that tool) and I’ve confirmed with AMIBCP that the DMI Table now shows all entries. Now just need to flash it.
Success! Ended up modding the BIOS backup that I made with AFUWIN64 (via GUI) to try to ensure success but I’ve now fixed the one byte that I set out to fix which now has removed the dmidecode error and allows for unraid to see all the RAM correctly (still doesn’t fix a different problem, but it’s something I can work on).
Tools needed:
-UEFITool 0.28.0 (UEFITool NE Alpha 58 useful to verify, but can’t be used for replacing the section from what I’ve found; may be down to user error)
-HxD or other hex editing tool
-Method of flashing the bios (I used AFUWIN64)
Here’s the steps I used to get to this point:
1. Extract bios from motherboard or use a BIOS image from Huananzhi’s website (I modded the table from the bios file on Huananzhi’s website and inserted it into my extracted bios)
2. Open the bios with UEFITool 0.28.0 and find “File GUID: DAF4BF89-CE71-4917-B522-C89D32FBC59F” or SMBiosStaticData. I found it in the 3rd Volume under the DXE driver SmbiosGetFlashData/SmbiosGetFlashData64
3. Extract the raw section (open up compressed section) and extract body
4. With HxD, find the HEX Numbers “10 23 3E 00” and change the 23 to 17; save changes
5. On the raw section of SMBiosStaticData, replace the body with the file you just changed and save the bios image
6. Optional step and probably not needed: Open in AMIBCP v4.55.0070 and verify you can see all DMI Table entries (down to End of Table), save the image and extract the SMBiosStaticData raw body and insert into your extracted bios or downloaded bios image (The fit table seems to no longer get found with the file saved from AMIBCP, so I didn’t use that output for flashing)
7. Flash onto board
I’ve attached my modded SMBiosStaticData if someone can’t find the appropriate section or has problems fixing the correct place to edit the table. I can’t guarantee it will work for anyone else, but it did work for me and my board. There might still be other errors in the table, but they were already existing errors in the raw bios.
Modded SMBiosStaticData.zip (1.67 KB)
Nice to see you are able to solve your problem on huananzhi x79-8d. I happened to possess the same mobo as you and issuing dmidecode ends with a message "Invalid entry length (0). DMI table is broken! Stop.", though it does not affect showing the correct amount of RAM. Still I face another problem of getting bifurcation to work, to bifurcate 1 of the x16 slots into x4x4x4x4 while keeping the other at x16 for the display card. Even though I populated both the x16 slots, dmidecode -t 9 always shows me different kind of infomation:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
$ sudo dmidecode -t 9
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
Handle 0x0024, DMI type 9, 17 bytes
System Slot Information
Designation: J8M1
Type: x4 PCI Express
Current Usage: Available
Length: Short
ID: 2
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:ff:01.1
Handle 0x0025, DMI type 9, 17 bytes
System Slot Information
Designation: J7M2
Type: x8 PCI Express
Current Usage: In Use
Length: Short
ID: 3
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:02:03.0
Handle 0x0026, DMI type 9, 17 bytes
System Slot Information
Designation: J7M1
Type: x8 PCI Express
Current Usage: Available
Length: Short
ID: 4
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:ff:02.0
Handle 0x0027, DMI type 9, 17 bytes
System Slot Information
Designation: J6M2
Type: x8 PCI Express
Current Usage: Available
Length: Short
ID: 5
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:03:02.2
Handle 0x0028, DMI type 9, 17 bytes
System Slot Information
Designation: J6M1
Type: x16 PCI Express
Current Usage: Available
Length: Long
ID: 6
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:81:03.2