[Request] Edit PRMRR Size for MSI Gaming Carbon Wifi

Hi,

I’m looking to edit the PRMRR size to 128mb for Intel SGX but cannot find an option to do so with this motherboard, only has enable/disable/software controlled option. If someone can help me with this problem I’m willing to pay a tidy sum for your help.

@yeojhg - Need to know actual motherboard model before anyone can look for you. MSI has several “Gaming Carbon Wifi” boards
Please link to the BIOS download page, and edit your post above to put in the full model name

Hi, thanks for helping! Mine is the Z490.

Post 2 for link
------------------

Hi, thanks for helping! Mine is the Z490 version, 7C73v13

Link (Post 3)
---------------------

Link: https://www.msi.com/Motherboard/support/…ING-CARBON-WIFI

@yeojhg - This BIOS can be set to 256MB, default is “Invalid PRMRR” which is actually an invalid 32bit set amount (I assume to disable or invalidate by default?)
It’s also set to “Software controlled” by default too. You can change any of these values with RU program method, see here - section 2.2 and make bootable USB with RU program, then read 2.3-2.5
http://forum.notebookreview.com/threads/…-issues.812372/

Please note, the guide above shows you how to make changes in “Setup” but this does not apply to what you want, all of the settings for this (except for the “Epoch” settings below), are in the following varstore
VarStore: 0x11 >> = CPUSetup @ GUID >> B08F97FF-E6E8-4193-A997-5E9E9B0ADB32 - So, you would make changes in CPUSetup, not Setup

Or, I can make you mod BIOS with any changes you want? Whichever seems easier to you.

Suppress If {0A 82}
0x481E3 QuestionId: 0x1138 equals value 0x0 {12 06 38 11 00 00}
0x481E9 Suppress If {0A 82}
0x481EB True {46 02}
0x481ED One Of: SW Guard Extensions (SGX), VarStoreInfo (VarOffset/VarName): 0xE0, VarStore: 0x11, QuestionId: 0x2725, Size: 1, Min: 0x0, Max 0x2, Step: 0x0 {05 91 06 0B 07 0B 25 27 11 00 E0 00 14 10 00 02 00}
0x481FE One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x48205 One Of Option: Enabled, Value (8 bit): 0x1 {09 07 03 00 00 00 01}
0x4820C One Of Option: Software Controlled, Value (8 bit): 0x2 (default) {09 07 CA 01 30 00 02}
0x48213 End One Of {29 02}
0x48215 End If {29 02}
0x48217 Suppress If {0A 82}
0x48219 QuestionId: 0x2725 equals value 0x0 {12 06 25 27 00 00}
0x4821F One Of: Select Owner EPOCH input type, VarStoreInfo (VarOffset/VarName): 0xE1, VarStore: 0x11, QuestionId: 0x2726, Size: 1, Min: 0x0, Max 0x2, Step: 0x0 {05 91 0D 0B 0E 0B 26 27 11 00 E1 00 14 10 00 02 00}
0x48230 Default: DefaultId: 0x0, Value (8 bit): 0x0 {5B 06 00 00 00 00}
0x48236 One Of Option: No Change in Owner EPOCHs, Value (8 bit): 0x0 {09 07 0F 0B 00 00 00}
0x4823D One Of Option: Change to New Random Owner EPOCHs, Value (8 bit): 0x1 {09 07 10 0B 00 00 01}
0x48244 One Of Option: Manual User Defined Owner EPOCHs, Value (8 bit): 0x2 {09 07 11 0B 00 00 02}
0x4824B End One Of {29 02}
0x4824D Suppress If {0A 82}
0x4824F QuestionId: 0x1297 equals value 0x2 {12 86 97 12 02 00}
0x48255 QuestionId: 0x2726 equals value 0x2 {12 06 26 27 02 00}
0x4825B Not {17 02}
0x4825D Or {16 02}
0x4825F End {29 02}
0x48261 Numeric: Software Guard Extensions Epoch 0, VarStoreInfo (VarOffset/VarName): 0x0, VarStore: 0x15, QuestionId: 0xBD, Size: 8, Min: 0x0, Max 0xFFFFFFFFFFFFFFFF, Step: 0x1 {07 A6 12 0B 13 0B BD 00 15 00 00 00 10 23 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00}
0x48287 Default: DefaultId: 0x0, Value (64 bit): 0x553DFD8D5FA48F27 {5B 0D 00 00 03 27 8F A4 5F 8D FD 3D 55}
0x48294 End {29 02}
0x48296 Numeric: Software Guard Extensions Epoch 1, VarStoreInfo (VarOffset/VarName): 0x8, VarStore: 0x15, QuestionId: 0x2727, Size: 8, Min: 0x0, Max 0xFFFFFFFFFFFFFFFF, Step: 0x1 {07 A6 14 0B 15 0B 27 27 15 00 08 00 14 23 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00}
0x482BC Default: DefaultId: 0x0, Value (64 bit): 0xD76767B9BE4BFDC1 {5B 0D 00 00 03 C1 FD 4B BE B9 67 67 D7}
0x482C9 End {29 02}
0x482CB End If {29 02}
0x482CD End If {29 02}
0x482CF End If {29 02}
0x482D1 Suppress If {0A 82}
0x482D3 True {46 02}
0x482D5 Numeric: Maximum Supported PRMRR Size, VarStoreInfo (VarOffset/VarName): 0xE3, VarStore: 0x11, QuestionId: 0xBE, Size: 4, Min: 0x0, Max 0xFFFFFFFF, Step: 0x1 {07 9A 0B 0B 0C 0B BE 00 11 00 E3 00 10 22 00 00 00 00 FF FF FF FF 01 00 00 00}
0x482EF Default: DefaultId: 0x0, Value (Other) {5B 85 00 00 08}
0x482F4 Value {5A 82}
0x482F6 64 Bit Unsigned Int: 0x0 {45 0A 00 00 00 00 00 00 00 00}
0x48300 End {29 02}
0x48302 End {29 02}
0x48304 End {29 02}
0x48306 End If {29 02}
0x48308 Suppress If {0A 82}
0x4830A QuestionId: 0x2725 equals value 0x0 {12 06 25 27 00 00}
0x48310 Suppress If {0A 82}
0x48312 QuestionId: 0x2725 equals value 0x2 {12 86 25 27 02 00}
0x48318 QuestionId: 0xBF equals value 0x0 {12 06 BF 00 00 00}
0x4831E And {15 02}
0x48320 End {29 02}
0x48322 One Of: PRMRR Size, VarStoreInfo (VarOffset/VarName): 0xE7, VarStore: 0x11, QuestionId: 0xBF, Size: 4, Min: 0x0, Max 0x10000000, Step: 0x0 {05 9A 09 0B 0A 0B BF 00 11 00 E7 00 10 12 00 00 00 00 00 00 00 10 00 00 00 00}
0x4833C Suppress If {0A 82}
0x4833E QuestionId: 0x2725 equals value 0x1 {12 06 25 27 01 00}
0x48344 One Of Option: INVALID PRMRR, Value (32 bit): 0x0 (default) {09 0A 08 0B 32 02 00 00 00 00}
0x4834E End If {29 02}
0x48350 Suppress If {0A 82}
0x48352 Question Ref1: QuestionId: 0xBE {40 84 BE 00}
0x48356 8 Bit Unsigned Int: 0x20 {42 03 20}
0x48359 Less Than {33 02}
0x4835B End {29 02}
0x4835D One Of Option: 32MB, Value (32 bit): 0x2000000 {09 0A 27 0B 02 02 00 00 00 02}
0x48367 End If {29 02}
0x48369 Suppress If {0A 82}
0x4836B Question Ref1: QuestionId: 0xBE {40 84 BE 00}
0x4836F 8 Bit Unsigned Int: 0x40 {42 03 40}
0x48372 Less Than {33 02}
0x48374 End {29 02}
0x48376 One Of Option: 64MB, Value (32 bit): 0x4000000 {09 0A CD 06 02 02 00 00 00 04}
0x48380 End If {29 02}
0x48382 Suppress If {0A 82}
0x48384 Question Ref1: QuestionId: 0xBE {40 84 BE 00}
0x48388 8 Bit Unsigned Int: 0x80 {42 03 80}
0x4838B Less Than {33 02}
0x4838D End {29 02}
0x4838F One Of Option: 128MB, Value (32 bit): 0x8000000 {09 0A CE 06 02 02 00 00 00 08}
0x48399 End If {29 02}
0x4839B Suppress If {0A 82}
0x4839D Question Ref1: QuestionId: 0xBE {40 84 BE 00}
0x483A1 16 Bit Unsigned Int: 0x100 {43 04 00 01}
0x483A5 Less Than {33 02}
0x483A7 End {29 02}
0x483A9 One Of Option: 256MB, Value (32 bit): 0x10000000 {09 0A CF 06 02 02 00 00 00 10}
0x483B3 End If {29 02}
0x483B5 End One Of {29 02}
0x483B7 End If {29 02}
0x483B9 End If {29 02}

Hi, it’s amazing to hear that you can change the PRMRR value. I got a little lost at the spoiler part, what exactly do I do? Haha…

@yeojhg - Yes, you can change any BIOS setting hidden or visible with usually grub/setup_var, or RU program method. In this case, what you want to change is not in setup, so can’t use grub/setup_var method.

You have to follow guide at post #4 I linked to use RU method, but remember you are making change in CPUSetup area, not “Setup” which they discuss.
In the spoiler, each item/setting, example >> Maximum Supported PRMRR Size, VarStoreInfo (VarOffset/VarName): 0xE3 << This is the “offset” which you go to in order to change the setting while in RU
And to change this to 256MB, you change 00 00 00 00 to >> 00 00 00 10 << The last byte here is the starting “Offset”, data is input backwards, so you would really change offset E0-E3, if there was values other than 00 in the other three places, hope you get what I mean, tough to explain
Once there, you can take an image, show me, I will circle for you what to change, if you are not sure.

First you also want to change >> SW Guard Extensions (SGX), VarStoreInfo (VarOffset/VarName): 0xE0 << at this offset, from 02 (Software controlled) to >> 01 (Enabled)

If you want, there is another way we can edit, I can do for you if you want, without having to flash in mod BIOS (but, if may be easier for you to just flash in mod BIOS, not sure, up to you etc )
To do other way, you will dump NVRAM volume with FPT and send to me, I will edit, then you flash back. Do you want me to give info on how you do that, or do you want me to just mod a BIOS for you?

If you want a mod BIOS, I can change the defaults, so it’s always what you want by default, in a stock BIOS.
Or, I can have you dump current BIOS with FPT and we can change only the current/live setting and not the defaults, all up to you.

Or, I can swap in the entire hidden advanced menu for you, so that you can directly change all this in BIOS.
But, this is a MUCH more involved edit, will take me a few days to do, and you will have to pick some submenu hidden or visible that you do not want/use and I will replace it.

Many thanks for the reply! I’ve attached the pictures… Still not quite sure what values to offset and where in the array, maybe a step by step procedure on the inputs?

B923C78E-3D33-4513-BC07-F49D0C0949DB.jpeg

4DAE624A-1EFB-4CD9-A142-18CF7B493F7A.jpeg

Are there any other changes other than the CPUSetup tab? Where is the Epoch setting located?

F178502D-880D-4B08-B94D-43A0BCAC4CBA.jpeg

@yeojhg - Select Owner EPOCH input type, >> VarStore: 0x11 << This setting in CPUSetup
Other Epoch >> Software Guard Extensions Epoch 0 & 1 >> VarStore: 0x15 << This setting is in CpuSetupSgxEpochData
^^ This ^^ Will be difficult for you to change this way, it’s in hex and little endian and 64 bit, so = 8 bytes in reverse, and I can’t tell you what these values are stored in. I advise against you do anything with this setting, unless you know what you’re doing and what this value is applying

Stock value for Epoch 0 = 1604620071 decimal / ‭5FA48F27‬ hex (Stored in NVRAM in Little Endian / Backwards)
Stock value for Epoch 0 = 3192651201 decimal / D76767B9BE4BFDC1 hex (Stored in NVRAM in Little Endian / Backwards)
Software Guard Extensions Epoch 0 >> @ Offset >> 0x0 in >> CpuSetupSgxEpochData
Software Guard Extensions Epoch 1 >> @ Offset >> 0x8 in >> CpuSetupSgxEpochData

CpuSetup - VarStore: VarStoreId: 0x11 @ GUID - B08F97FF-E6E8-4193-A997-5E9E9B0ADB32
CpuSetupSgxEpochData - VarStore: VarStoreId: 0x15 @ GUID - B08F97FF-E6E8-4193-A997-5E9E9B0ADB32

ForPRMRR - the following, this is all you need to edit (in CPUSetup)
SW Guard Extensions (SGX) (Default = Software Controlled 02) >> Change to = Enabled >> Change offset 0xE0 >> From 02 >> To 01 = Enabled - In your image above, this already set to 01, so nothing to do here
PRMRR Size, VarStoreInfo (VarOffset/VarName): (Default = 00 00 00 00) >> Change to max of 256MB >> Change offset at 0xE7 from >> 00 >> Change to >> 10 (This will actually be 00 00 00 10, but you only need to change that last byte here, rest already 00)
I circled the “PRMRR size” settings bytes in image below, you just need to change 0xE7

E7.jpg



Or, if you want, you can do the following, and dump your NVRAM, send to me and I will make the two edits directly above, well just one I guess then you flash back. But you are right there, I think you can do it

Go here, get ME System Tools package V14.0.20+, in section C.2 at post #2 - Intel Management Engine: Drivers, Firmware & System Tools
For this, you must have ME drivers installed in windows, or use EFI version - Secure Boot needs to be disabled while we work, you can enable once done. Also, remove any BIOS password, and disable TPM/Encryption if enabled, do all this before you do below dump
In windows, FPT must be ran from ADMIN CMD Prompt, logged in as Admin does not matter, must be Admin CMD Prompt and say Admin at top of CMD Window
Here’s registry fix to add this to right click if you need, install/merge, then reboot, and you can right click anywhere in folder to "Open CMD Prompt here as Admin"
http://s000.tinyupload.com/index.php?fil…134606820377175 << This is for Win10. If you have Win7, hold shift, right click folder that contains FPTw.exe, and choose Open Admin CMD Prompt here

Then, make NVRAM dump using command below and send me the file
FPTw.exe -a 0x1000000 -l 0x40000 -d NV1.bin

Hmm, I seem to have edited the values but I’m still getting an error of enabling Intel SGX and setting PRMRR size to 128 MB when playing back my UHD discs. Could it be I’m doing something wrongly? I could send you the bios file, is there any way you could test run or see what is wrong with the file?

@yeojhg - After you save in RU, reboot back in there again and check to confirm your change stayed set
If it does not stay, then dump NVRAM how I mentioned at end of post #9 and send to me, I will edit it for you and show you how to flash it back.

SGX may have other requirements? Or may require certain drivers be installed too. Did you look this up, to be sure your hardware all supports it etc?
Sorry, I know nothing about this, I only know BIOS, don’t even know what SGX or PRMRR is

It does not seem to stay, I’ve tried dumping the NVRAM but it the command prompt it says FPTw.exe is not recognised as an internal or external command, operable program or batch file.

Hi Bios,

I’ve tried doing the ftpw.exe command in the admin command prompt, but currently facing this problem (picture attached). Please advise, thanks!

Capture1.JPG

Capture.JPG

@yeojhg You typed ‘ftp’ followed by ‘enter’. That opens an ftp session. ftp = file transfer protocol. See the different prompt? (“ftp>”)? The next thing to do in an ftp ssession would be an “open ftp.servername.domain” then you’d be asked for username and password and could thereafter transfer files to/ from that server. I suppose that’s not what you wanted here.

ftp.jpg



("quit" will close this ftp- session and bring you back to the command prompt)

Hi lfb6, my bad! It was a typo, I have corrected it but it still displays error message (picture attached), revert to post #12

@yeojhg - FPT you showed in image is not what we are using here

Select the folder that contains FPTw.exe >> Ie >> Flash Image Tool >> Win/Win32 >> FPTw.exe is there. Open Admin CMD Prompt there, run command from end of post #9

Pic attached

Capture3.JPG

You’re still in c:\windows\system32. Change to the directory where the program is!

Nothing attached above, my reply above is after I already looked at both images in post #12. You must run Admin CMD Prompt from that exact folder location too (not System32)
Install the registry fix I linked for you at post #9, then reboot, select the Flash Programming Tool > Win32 folder << select this folder, right click and choose Open CMD Prompt as Admin Here<br />
* Edit, I see your image above now! Yes, as mentioned above, you need to either navigate to the proper folder, or just open CMD prompt at the correct exact location
Example, you may need to edit path to be exact correct match >> CD Intel CSME System Tools v14.0.20+ r10\Flash Programming Tool\WIN32

Hi peeps, @lfb6 sorry mistake corrected! Thank you for pointing it out!
@Lost_N_BIOS How do i send you the NV1.bin file?

Capture4.JPG

NV1.zip (18.8 KB)