[Problem] Surface Pro4 BIOS doesn't detect replaced RAM correctly

The original RAM capacity of a surface pro 4th generation is 4GB (four 1GB LPDDR3 type). Replace the RAM chip of 8GB(2GB per piece), change the position of the identification resistance (according to the schematic.pdf), and start up normally without BIOS modification, but the RAM capacity displayed by the computer does not change, it is still 4GB. I found that the RAM model information was in the BIOS region, so I used a tool to replace the old one’s BIOS region witch a new one extracted from a factory BIOS file (it may be the factory state, there is no RAM model information).strangely enough, this can normally run the system and correctly identify the memory capacity, but the touch failed. TOUCH FIRMWARE becomes’ 0.0.0.0.0.0’. So the question comes, I keep seeing people say that replacing the ME area will ensure that the touch function is normal, but I just changed the BIOS area, which will also cause the touch to fail? So which guide should you follow for the correct modification after replacing RAM chip?


Edit by Fernando:
Thread moved into the “BIOS Modding Problems” Category and title customized

If no one would suggest how to fix the failed touch, I recommend to go with modification of original bios. SPD blocks are located in PlatformInitPreMem driver.
One PEI volume is Boot Guard protected and another is not. Not sure how the protection would react on the driver replacement.

how can i find out SPD blocks located in PlatformInitPreMem driver? Have you tried to modify this ?

Did you populate R1602, R1604, R1702, R1704, too?

yes, i did.samsung is replaced by hynix :
R2318 move to R2317.
R2312 move to R2320.
add R1602, R1604, R1702, R1704.

And I also said that run the system normally after replacing the BIOS region (identify RAM capacity) except touch funtion

In hex, the blocks section starts just after the MemoryOverwriteRequestControl line or something.

I tried loading blocks in GitHub - integralfx/DDR4XMPEditor: Editor for DDR4 SPD and XMP
It reads spd data correctly and allows to edit parms via misc menu. But that’s not necessary as you could just copy spd from the 8GB bios. Or try doing this at least.

Is it also suitable for LPDDR3?

Only SPD specs revision matter. Like 1.0, 1.1 …2.0.

I don’t understand why you might want to mod the bios code if it’s already capble of recognizing the ram?

And you lost touch of a / this surface pro 4 in 2019 and cleaned the ME in 2023, so you know a lot of the steps.

Attach the stock bios region which you used and which was capable of showing all the ram.

And attach the dump of your firmware before changing somthing.

answer your first question:when it’s already capble of recognizing the ram ,in the same time ,it lose the touch function(because replace the bios region,Otherwise, the true RAM capacity cannot be recognized).
second:In 2019, the PRO 4th was abandoned due to EC short circuit, and there was no schematic diagram for the device at that time. In 2023 I got another surface PRO 4th and replace the RAM chip myself, after that touch problem come out, which is still not completely resolved.
Instead of living a carefree life, each period has its own priorities.

I used UEFITool.exe to replace the bios region , thinking that if I didn’t change the ME region, it wouldn’t have a problem. Also, the BIOS file I downloaded from the Internet that someone else dumped did not have my RAM chip model. This further puzzled me as to why the BIOS region extracted from the factory BIOS did not contain any RAM model information but enabled the computer to correctly identify RAM capacity. (I found through winhex that the BIOS area exported by others contained a lot of RAM model information, while the factory BIOS was blank in the same place.)

The attachment is too big, I need to find a transfer disk that can be used before uploading

dump of my surface pro 4thbefore changing somthing

i wiil upload others later

The following file is claimed to be factory firmware, from which I extracted the BIOS region to replace the original

UEFI_106_1281_768_ME_11_0_15_1003.bin

In addition, when I want to replace a single region such as (ME, bios), I can simply use UEFITool.exe->open image file(dumped from my device)->me region->extract as is ->save the file as’ a.gn '. Then open a bios-file .bin dumped from another normal device, UEFITool.exe->open image file->me region->replace as is ->‘a.rgn’->save as ‘b.bin’.i will flash b.bin back to the device. Is this the correct way to replace the region? Because I had a bitlocker problem after I replaced it

On the other hand, when I find that I can just replace the BIOS region to fix the problem (not really, other problems will come up later, such as touch failure, bitlocker problem), can I do the following? Use UEFITool.exe to extract the BIOS region from another running device dumped using CH340 and save it as bios.rgn. Open BIOS.bin(dumped from the target machine needed to repair) and replace as is → ‘bios. rgn’ ->save as’ a.bin '. flash a.in back to the target device. It has been confirmed that the above operation will cause touch failure for surface pro 4 and bitlocker problem for surface pro 2. What did I do wrong? Or maybe I should post a new thread about it

That should work at least for complete regions, for exchanging EFI volumes the different UEFITool versions might behave differently.

That’s of course expected behaviour. These machines have a discrete TPM where at least hashes for firmware security (bootguard profile 5 - FVME) and bitlocker information is stored. Firmware should be OK, but Bitlocker will notice changes in firmware.

i use the UEFITool.exe version is 0.28.0 . can use the way ‘extract as is’ then ‘replace as is’ to replace the bios region? I seem to have forgotten the difference between EFI volumes and region, is the latter containing the former? What guide describes their relationship?
If you mean that i can replace the bios region with this method, and the bitlocker issue with the surface pro 2 is normal (it may also happen with the surface pro 4, but bitlocker of windows is not enabled at the time), So the touch failure on the surface pro 4 shows that you can’t simply use this method? I saw a solution at badcaps, which proved to be untrue after practicing. I attach the link to that thread again , which is a lie.
here

Unfortunately those Surface Pro 4 bios regions are quite simple, the only place with machine specific information stored is NVRAM, the rest is 4 EFI volumes with their identical copies and a (static) padding which is duplicated, too.

So this is the only part of bios region that can cause touch not working, too, when just exchanging the bios region. Normally NVRAM gets repopulated when emptied, but serials, machine type, Windows Code have to be stored another place, TPM maybe, or they’re missing.

Please post a dump of the stock bios (UEFI_106_1281_768_ME_11_0_15_1003.bin) after some reboots. It’d be interesting to compare the original information in your own bios with all machine specific information and what get’s written / rewritten if you start with an empty NVRAM!

I haven’t said that. Read the upper part of this post!

I know this page and the people at badcaps do a lot of good work! That this doesn’t mean it’s a lie. A lie would mean that they posted intentionally wrong information, that you can’t confirm having it tried for just one or two machines- this fix simply doesn’t work for your machines.

happy to do it, but I’ll have to post it again at lease 12 hours after , and because of the packaging of that chip, it’s a bit of a hassle to remove it and put it back on(I will only use the CH340 to read)

Well, when I did it, it didn’t work, and then he told me he only tried it on the surface PRO 3

i saw ‘That should work at least for complete regions’ . I mistook this to mean that can replace the bios region in that way( ‘extract as is’ then ‘replace as is’) . It’s really hard if there is no regular, uniform approach。