EU ASRock Rack B450D4U-V1LQ5 mATX AM4

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

RolloZ170

Well-Known Member
Apr 24, 2016
8,075
2,529
113
germany
My impression was that setup_var.efi could be impacted when manually changing Settings later on. But I always thought that it survived Reboots.
most options do. but if ECC is not wanted or supported by code its checked at every POST and set according to rules.
 

luckylinux

Active Member
Mar 18, 2012
766
185
43
most options do. but if ECC is not wanted or supported by code its checked at every POST and set according to rules.
But I would NOT expect the BIOS to reset a setting on its own just like that.

To Ignore it I can understand. But to reset it automatically. Well. Then there is no way out :/.

I have ZERO experience in Building custom BIOS ROMs, that's why setup_var.efi seemed a very good Option.

I'm also NOT sure that when disassemblying with uefitool and ifrextractor it's 100% like it should be (i.e. you can disassemble, modify a bit, then reassemble and it would just work). I fear it's MUCH more complicated than that ...
 

RolloZ170

Well-Known Member
Apr 24, 2016
8,075
2,529
113
germany
I'm also NOT sure that when disassemblying with uefitool and ifrextractor it's 100% like it should be (i.e. you can disassemble, modify a bit, then reassemble and it would just work). I fear it's MUCH more complicated than that ...
look at the set of numbers. you can find them with a hex editor in the sct file. you could move a ref. out of the suppress If e.g.

Code:
0x1C593         Suppress If: {0A 82}
0x1C595             Variable 0x9 equals 0x2 {12 86 09 00 02 00}
0x1C59B                 Not {17 02}
0x1C59D                 Variable 0x9 equals 0x3 {12 06 09 00 03 00}
0x1C5A3                 Not {17 02}
0x1C5A5                 And {15 02}
0x1C5A7                 Variable 0x9 equals 0x4 {12 06 09 00 04 00}
0x1C5AD                 Not {17 02}
0x1C5AF                 And {15 02}
0x1C5B1             End {29 02}
0x1C5B3             Ref: NTB Common Options, Variable: 0xFFFF {0F 0F 0A 00 0A 00 06 00 00 00 FF FF 00 06 70}
0x1C5C2         End If {29 02}
 

luckylinux

Active Member
Mar 18, 2012
766
185
43
look at the set of numbers. you can find them with a hex editor in the sct file. you could move a ref. out of the suppress If e.g.

Code:
0x1C593         Suppress If: {0A 82}
0x1C595             Variable 0x9 equals 0x2 {12 86 09 00 02 00}
0x1C59B                 Not {17 02}
0x1C59D                 Variable 0x9 equals 0x3 {12 06 09 00 03 00}
0x1C5A3                 Not {17 02}
0x1C5A5                 And {15 02}
0x1C5A7                 Variable 0x9 equals 0x4 {12 06 09 00 04 00}
0x1C5AD                 Not {17 02}
0x1C5AF                 And {15 02}
0x1C5B1             End {29 02}
0x1C5B3             Ref: NTB Common Options, Variable: 0xFFFF {0F 0F 0A 00 0A 00 06 00 00 00 FF FF 00 06 70}
0x1C5C2         End If {29 02}
Uhm but again how would that help with the hardcoded Hardware based Checks ? isn't that just another way of solving the QuestionId Issue like I just tried with setup_var.efi, but still potentially bypassed by the Hardware Check ?

And how would you rebuild the BIOS after modification ?

And Flashing must be done via a SOP/SOIP Clip, I don't think the UEFI Easy Flash tool would work with a custom Image (I guess their Images are signed) ....
 

luckylinux

Active Member
Mar 18, 2012
766
185
43
Got the first set of compute nodes moved onto these boards, they are working as expected and have not really looked much more at them beyond that.
So is ECC working for you for whatever Reason ? Or you did NOT check (aka "it just works") ?
 

RolloZ170

Well-Known Member
Apr 24, 2016
8,075
2,529
113
germany
  • Sad
Reactions: luckylinux

luckylinux

Active Member
Mar 18, 2012
766
185
43
I'm kinda tempted to buy 3700X instead going forward and see if those work better. Sucks but no ECC working sucks too :( . This is turning into a huge side Project.
 

luckylinux

Active Member
Mar 18, 2012
766
185
43
So, some updates from my Side. And I would appreciate if somebody had an Idea about how to save Output of UEFI Shell Scripts (*.nsh Files) to a Variable. I tried redirecting to File then using dmpstor -l <file_name> <var_name> but that doesn't work at all, maybe it's only intended for Files that have been saved by dmpstor and/or UEFI Environment Variables that are accessible later on by the OS. Unsure :( .

IMPORTANT #1: UEFI Shell Scripts (*.nsh Files) MUST be saved in UTF-8 Encoding

IMPORTANT #2: setup_var.efi Configuration Files as outlined in GitHub - datasone/setup_var.efi: UEFI command-line tool for read/write access of variables, MUST be saved in UTF-16LE Encoding (if you use those, I prefer a single Script to be honest though)

POSSIBLE ISSUE #3: I removed the Several ########## in Comments and added a space after the First # as in # My Long Comment). I'm not sure if this was (part of the Issue), but between the Encoding that was set to UTF-16LE and these Comments, the UEFI Shell Script just didn't run AT ALL

SSP\patch.nsh
Code:
# Tested with BIOS Version L2.09 on ASROCK B450D4U-V1LQ5
# Tuned based on File_DXE_driver_CbsSetupDxeSSP_CbsSetupDxeSSP_body.fbd.0.0.en-US.ifr.txt

# Disable printing of Commands
@echo -on

# Enable Overclock & Accept Risk
setup_var.efi AmdSetup(0x5000):0xD4=0x01

# Enable Combo CBS
setup_var.efi AmdSetup(0x5000):0x20=0xFF

# Enable ECC Memory
setup_var.efi AmdSetup(0x5000):0x11B=0x01
SSP\read.nsh (this is where I'd like some help to save output of setup_var.efi Command to Variable, see commented Examples with > and dmpstor to see what I tried and failed):
Code:
# Tested with BIOS Version L2.09 on ASROCK B450D4U-V1LQ5
# Tuned based on File_DXE_driver_CbsSetupDxeSSP_CbsSetupDxeSSP_body.fbd.0.0.en-US.ifr.txt

# Enable printing of Commands
@echo -on

# Enable Overclock & Accept Risk
# setup_var.efi AmdSetup(0x5000):0xD4=0x01
# setup_var.efi AmdSetup(0x5000):0xD4 > result
# dmpstor -l result enable_overclock
# echo Enable Overclock: AmdSetup(0x5000):0xD4=%enable_overclock%
echo Enable Overclock Setting:
setup_var.efi AmdSetup(0x5000):0xD4
echo Expected AmdSetup(0x5000):0xD4=0x01
echo ...................................................................

# Enable Combo CBS
# setup_var.efi AmdSetup(0x5000):0x20=0xFF
# setup_var.efi AmdSetup(0x5000):0x20 > result
# dmpstor -l result enable_combo_cbs
# echo Enable Combo CBS: AmdSetup(0x5000):0x20=%enable_combo_cbs%
echo Enable Combo CBS Setting:
setup_var.efi AmdSetup(0x5000):0x20
echo Expected AmdSetup(0x5000):0x20=0xFF
echo ...................................................................

# Enable ECC Memory
# setup_var.efi AmdSetup(0x5000):0x11B=0x01
# setup_var.efi AmdSetup(0x5000):0x11B > result
# dmpstor -l result enable_ecc_memory
# echo Enable Overclock: AmdSetup(0x5000):0x11B=%enable_ecc_memory%
echo Enable ECC Memory Setting:
setup_var.efi AmdSetup(0x5000):0x11B
echo Expected AmdSetup(0x5000):0x11B=0x01
echo ...................................................................
@RolloZ170: the good Thing, if there is one that is, is that the Settings seem to survive after a Reboot, at least a very fast one (no unplug Power Cord, Shutdown completely, etc):
1. Boot into UEFI Shell
2. Run patch.sh
3. Reboot with reset Command
4. Boot into UEFI Shell
5. Run read.sh

1744451260677.png

EDIT 1:
But no extra Menu Visible in BIOS :( .

I'll try to Boot Ubuntu and if not try RV, RN and ZP instead, since SSP didn't work.

EDIT 2: SSP Patch did NOT work

EDIT 2: RV Patch did NOT work

EDIT 3: RN Patch did NOT work

EDIT 4: ZP Patch did NOT work


So I think it's a no go after all :eek:

EDIT 5: To be Clear, there is NO BIOS MENU unlocked, and dmidecode and dmesg show the same Output as before. So, the RAM is running without ECC being Enabled o_O .
 
Last edited:
  • Like
Reactions: RolloZ170

luckylinux

Active Member
Mar 18, 2012
766
185
43
@dbram: is ECC Memory working with your 2000 and 3000 Series CPUs ?

I think 5000 Series CPUs is out of Luck concerning ECC Support. I tried everything I could think of short of Reverse Engineering the X86 Part of the BIOS as @RolloZ170 mentioned (but I don't think I have the Skills to do that TBH).

Can you see if your ECC is actually working ?

At any Time using dmidecode:
Code:
dmidecode | grep -i "Error correction"
If it does NOT work it will report as follows, with one Line having NO ECC Correction (related to the RAM, the L1/L2/L3 Caches always have ECC working):
Code:
    Error Correction Type: None
    Error Correction Type: Multi-bit ECC
    Error Correction Type: Multi-bit ECC
    Error Correction Type: Multi-bit ECC
After a fresh Boot you could try grepping dmesg:
Code:
dmesg | grep -i edac
If it ONLY reports this, then ECC is not Enabled:
Code:
[    0.650269] EDAC MC: Ver: 3.0.0
Thank you :)
 

luckylinux

Active Member
Mar 18, 2012
766
185
43
Unless you @RolloZ170 have other Ideas. I don't think I can manage on my own to disassemble the X86 Hardcoded part of the BIOS ...

And if asking ASRock Rack is not an Option according to what some User said on Reddit (since this is effectively a Hetzner Motherboard), then I really think we are out of Luck.

I guess now we know why they were so eager to get rid of them. They are e-Waste. If the AMD Ryzen 3700X works with ECC working then it might be OK, but with these 2 x 5700X and ECC being disabled feels like a waste of Money :rolleyes: .
 

dbram

Member
Mar 3, 2021
80
50
18
I think 5000 Series CPUs is out of Luck concerning ECC Support. I tried everything I could think of short of Reverse Engineering the X86 Part of the BIOS as @RolloZ170 mentioned (but I don't think I have the Skills to do that TBH).

Code:
dmidecode | grep -i "Error correction"
After a fresh Boot you could try grepping dmesg:
Code:
dmesg | grep -i edac
If it ONLY reports this, then ECC is not Enabled:
Code:
[    0.650269] EDAC MC: Ver: 3.0.0
Thank you :)
here's mine :
Model name: AMD Ryzen 7 3700X 8-Core Processor

Code:
# dmidecode | grep -i "Error correction"
        Error Correction Type: Multi-bit ECC
        Error Correction Type: Multi-bit ECC
        Error Correction Type: Multi-bit ECC
        Error Correction Type: Multi-bit ECC
Code:
# dmesg | grep -i edac
[    0.687160] EDAC MC: Ver: 3.0.0
[    4.203283] EDAC MC0: Giving out device to module amd64_edac controller F17h_M70h: DEV 0000:00:18.3 (INTERRUPT)
[    4.203288] EDAC amd64: F17h_M70h detected (node 0).
[    4.203293] EDAC MC: UMC0 chip selects:
[    4.203294] EDAC amd64: MC: 0:     0MB 1:     0MB
[    4.203297] EDAC amd64: MC: 2:  8192MB 3:  8192MB
[    4.203302] EDAC MC: UMC1 chip selects:
[    4.203303] EDAC amd64: MC: 0:     0MB 1:     0MB
[    4.203306] EDAC amd64: MC: 2:  8192MB 3:  8192MB
 
  • Like
Reactions: luckylinux

luckylinux

Active Member
Mar 18, 2012
766
185
43
here's mine :
Model name: AMD Ryzen 7 3700X 8-Core Processor

Code:
# dmidecode | grep -i "Error correction"
        Error Correction Type: Multi-bit ECC
        Error Correction Type: Multi-bit ECC
        Error Correction Type: Multi-bit ECC
        Error Correction Type: Multi-bit ECC
Code:
# dmesg | grep -i edac
[    0.687160] EDAC MC: Ver: 3.0.0
[    4.203283] EDAC MC0: Giving out device to module amd64_edac controller F17h_M70h: DEV 0000:00:18.3 (INTERRUPT)
[    4.203288] EDAC amd64: F17h_M70h detected (node 0).
[    4.203293] EDAC MC: UMC0 chip selects:
[    4.203294] EDAC amd64: MC: 0:     0MB 1:     0MB
[    4.203297] EDAC amd64: MC: 2:  8192MB 3:  8192MB
[    4.203302] EDAC MC: UMC1 chip selects:
[    4.203303] EDAC amd64: MC: 0:     0MB 1:     0MB
[    4.203306] EDAC amd64: MC: 2:  8192MB 3:  8192MB
Thanks :).

That looks more or less like my ASUS with the 5950X. So yeah, ECC is working with the 3700X.

I guess I'll have to order that CPU going forward and try to get rid of these 5700X that won't work with ECC Memory on this Particular Board at least :rolleyes:.
 

dbram

Member
Mar 3, 2021
80
50
18
try to get rid of these 5700X
another long shot:
  • did you use the latest microcode updates ?
  • are you using bios 2.12 ?
it's a step i took when installing proxmox nodes, apply microcode updates, one of the proxmox community scripts, you never know :)
 

luckylinux

Active Member
Mar 18, 2012
766
185
43
another long shot:
  • did you use the latest microcode updates ?
  • are you using bios 2.12 ?
it's a step i took when installing proxmox nodes, apply microcode updates, one of the proxmox community scripts, you never know :)
No, NOT the latest BIOS, I'm on L2.09 (as the Board came with), but as @ALinden reported, it doesn't seem to Matter (even after applying the patching with setup_var.efi, in both cases (for him)).

One Reddit User got stuck after trying to update so I'm not sure if it's a good Idea to update. Like ... should we even try ?

About microcode, that is blacklisted / blocked by Default on Ubuntu (Desktop and the LiveUSB I tried as well). I seem to recall Proxmox blocks microcode Updates by default as well. But even that is too late compared to when ECC Initialization must occur (during POST, BIOS must clear all ECC Memory, for it to be "valid", not sure that's the best Terminology to explain it though).

Any by the Way, I think somebody Mentioned that latest BIOS supported only 5000 Series CPUs. Or it also included 3000 Series CPUs ?
 

dbram

Member
Mar 3, 2021
80
50
18
actually the command we're supposed to use is this below, since the other also show the ECC of L1, L2, L3 cache of the cpu

Code:
dmidecode -t memory | grep -i 'error correction'
without ECC: Error Correction Type: None

Code:
dmidecode -t memory | grep -i 'error correction'
with ECC: Error Correction Type: Multi-bit ECC
 
  • Like
Reactions: luckylinux

luckylinux

Active Member
Mar 18, 2012
766
185
43
not sure this is e-waste : good enough for me :cool:
For the 5700X it's kind of e-waste Really, if I cannot get ECC to work. I might use them as some Distcc building Server at best, but I wouldn't really trust them ...

For the 3700X I agree, it's still a very good Deal. Now that I have like 60 DDR4 UDIMMs with ECC I'm considering upgrading the entire Homelab.

But I still cannot see how either this ASRock board or the Fujitsu TX1320 M3 I was upgrading to is really better in all aspects compared to the "Venerable" Supermicro X10SLM-F/X10SLL-F where at least there is a Decent PCIe Slot connected to the PCH/DMI/Chipset (thus I can use my Mellanox ConnectX-4 NIC with ASPM working correctly, NOT so in any CPU-connected PCIe Slot), had more Slots available and somehow better BIOS too (Fujitsu TX1320 M3 does NOT support SR-IOV for one Thing).