BIOS vars are WRITE_PROTECTED

FW 13 11th gen Intel i7. BIOS version 3.24. Manual BIOS editing, via a tool such as setup_var.efi is blocked because the device is WRITE_PROTECTED. This post is most likely requesting the ability to unlock the BIOS from Framework, but I’d appreciate if anyone is able to do this without requiring an official update :slightly_smiling_face:.

I have a FW 13 11th gen Intel i7 mainboard after upgrading to a different mainboard. I also happen to have an extra Intel Arc B580 GPU. I was attempting to follow some of the actions from this post about manually enabling the ReBAR BIOS flag to make a nice little machine out of my extra parts :slightly_smiling_face:. I also did take the steps to reverify the VarOffsets of the fields I intended to modify.

However, all attempts to change the var have been blocked with:

Error Writing Variable:
Error while setting content of variable PchSetup: WRITE_PROTECTED (The device cannot be written to.)

I should have paid closer attention to the existing posts - because this actually was mentioned deeper into the discussion. I’m not sure which BIOS update introduced this restriction, I know there was a Secure Boot-related vulnerability that was patched in one of versions between the original ReBAR post and now. There was continued discussion on the official feature request for ReBAR support, although that’s not really what I’m looking for here :slightly_smiling_face:.

I’m more interested in removing the write protection of the BIOS so that I can continue to tinker with my hardware. I’ve failed with a couple of naive attempts on my own:

  • Setting a BIOS password to give some form of “authentication”.

  • Disabling Secure Boot

  • Completely wiping all Secure Boot Keys

  • Modifying the “PCH BIOS Lock” BIOS var

    • This is also WRITE_PROTECTED unsurprisingly :slightly_smiling_face:

I’ve seen some posts that suggest doing a full BIOS reset to default can sometimes help enable writability until the next boot - but I haven’t tried that because I need to have Standalone mode enabled since this mainboard is out of the shell.

Also - I feel like I did see discussion about the USB 4 ports not being able to properly support the full ReBAR bandwidth, but I intend to connect my eGPU via OCuLink using an M.2->OcuLink adapter, and booting off of one of the USB 4 slots instead.

Overall pretty disappointed that I won’t be able to setup the hardware as expected, even knowing that I’m playing with unsupported settings :slightly_frowning_face:

And lastly just to confirm the locations of some settings in the 3.24 version of the BIOS from my finsings:

VarStore Guid: 72C5E28C-7783-43A1-8767-FAD73FCCAFA4, VarStoreId: 0x2, Size: 0x441, Name: “SaSetup”
VarStore Guid: 4570B7F1-ADE8-4943-8DC3-406472842384, VarStoreId: 0x5, Size: 0x6CD, Name: “PchSetup”

  OneOf Prompt: "PCIE Resizable BAR Support", Help: "Enable/Disable PCIE Resizable BAR Support", QuestionFlags: 0x10, QuestionId: 0x46C, VarStoreId: 0x2, VarOffset: 0x431, Flags: 0x10, Size: 8, Min: 0x0, Max: 0x1, Step: 0x0

  	OneOfOption Option: "Enabled" Value: 1

  	OneOfOption Option: "Disabled" Value: 0, Default, MfgDefault

  OneOf Prompt: "BIOS Lock", Help: "Enable/Disable the PCH BIOS Lock Enable feature. Required to be enabled to ensure SMM protection of flash.", QuestionFlags: 0x10, QuestionId: 0xC0D, VarStoreId: 0x5, VarOffset: 0x1C, Flags: 0x10, Size: 8, Min: 0x0, Max: 0x1, Step: 0x0

  	OneOfOption Option: "Disabled" Value: 0

  	OneOfOption Option: "Enabled" Value: 1, Default, MfgDefault

  OneOf Prompt: "Flash Protection Range Registers (FPRR)", Help: "Enable Flash Protection Range Registers", QuestionFlags: 0x10, QuestionId: 0x7D8, VarStoreId: 0x5, VarOffset: 0x683, Flags: 0x10, Size: 8, Min: 0x0, Max: 0x1, Step: 0x0

  	OneOfOption Option: "Disabled" Value: 0

OneOfOption Option: “Enabled” Value: 1, Default, MfgDefault

Just an update for some additional findings and attempts:

  • SmokelessRuntimeEFIPatcher - I’ve attempted to both write directly to the related VarStores with offsets, and to expose new form options by messing with H2OBrowserDxe as done in their example.
    • Based on what I can tell from the IFR dump, there are two versions of the “Advanced” tab that shows up in the BIOS - “Advanced” and “Advanced_Hidden”. Unfortunately they share the same FormSet Guid.
      • Looking at OP here, it seems they were able to find formset offsets related to the different menu types - but I wasn’t sure if/how I could apply those to expose the hidden menus. (Nor if the SREP tool can bypass the WRITE_PROTECTION to even get that far :slight_smile: )
    • There are quite a few examples for SREP configs that change data to “unsuppres” various menu options - but I don’t think that the SaSetup menu is being suppressed. As far as I can tell, it is just not present in the “Advanced” menu options, and must be loaded as part of the “Advanced_Hidden” menu.
      • I also was unable to find a specific flag to allow booting into “Advanced_Hidden”.
  • Smokeless_UMAF also didn’t work, but I’m not super surprised on that, since the A in UMAF stands for AMD :slight_smile: .
    • I was able to boot into a menu and explore some options however, though none of them seemed to be related to exposing additional settings or options.