After nearly a year, I accidentally bought the parts to replace the damaged one, but now I can’t write the image into the chip using the CH341A programmer, always getting the message “Chip with the contents are in disagreement.” I used which version of the programmer to read and finalize the code? I forgot.
@lfb6 bro ,i have upload the bios file ‘after-some-reboots(install win10 os)UEFI_106_1281_768_ME_11_0_15_1003.bin’ whitch is ([UEFI_106_1281_768_ME_11_0_15_1003.bin]) after some reboots. Exactly I reinstalled Windows 10 and rebooted the system a few times before dumped this file .
After several attempts, I have successfully read and written to the BIOS using version 118 of the CH341A program. the file 2.bin you modified is still no touch function. I found that press the volume up and power on keys to enter the BIOS Settings, if the firmware version of touch to show 00000, it means that the touch function is lost. I write the most original BIOS file(Before all modifications and memory upgrades) back to the chip that it will back to normal touch function, but can not Correctly recognize the upgraded RAM capacity.
Here are the images when the touch function is correct:
picture
That was more than 4 months ago, so I deleted the files on my machine. I’d need the files from your post #13 again, the links are no longer valid.
@lfb6 OK. old118.bin is the original official bios file whitch dumped before i upgrade the ram .UEFI_106_1281_768_ME_11_0_15_1003.bin is a common BIOS file that was released by someone on the Internet and claimed to be from Microsoft’s factory. But obviously it can’t write directly to the computer, it will lose the touch screen function, ‘touch firmware version’ will display 0000000, and it will take a long time to boot.
That’s the correct version of the touch firmware in NVRAM:
old118.bin - TouchSystemVersion in NVRAM
after-some-reboots(install win10 os)UEFI_106_1281_768_ME_11_0_15_1003.bin - TouchSystemVersion in NVRAM
It’s unclear to me why a wrong version is detected and if correcting this value would solve the touch- problem…I couldn’t find the displayed version anywhere in the updates as version number.
Are you sure that only 0000000 is displayed but not the slightly different wrong firmware version (2.429.0.1.113.0)?
i am sure that only 0000000 is displayed. And it’s worth mentioning that when I installed the the Microsoft Surface driver package could not be installed because it recognized that the device was not a Surface device after I flash the bios file modified.
You mean ‘after-some-reboots(install win10 os)UEFI_106_1281_768_ME_11_0_15_1003.bin’ or ‘UEFI_106_1281_768_ME_11_0_15_1003.bin’?
This bios had an empty NVRAM when flashed, the necessary entries got created but were filled with dummy information
Wait with flashing 021024a, there might be an entry I didn’t include, will check that later!
Both of them will cause Microsoft drivers not to recognize the device as a surface pro 4.
Try that one- that’s your own bios region from old118.bin with the two memory entries made invalid. Should be able to re- recognize the memory properly.
031024e.zip (5.8 MB)
031024e.zip can recognize the correct memory capacity and also display the correct touch firmware version, but there is still no touch screen function.
There are some differences in the device Manager list.
I have tried to reinstall the surface system image or reinstall the Microsoft surface driver package after writing 031024e. but It didn’t work.
OK, thanks,
What does ‘didn’t work’ mean- did it not install or did it not recognize the Surface machine or did it not solve the touch?
If you still have 031024e installed, could you run an
MEInfoWin64 > MEI.txt and an
MEInfoWin64 -verbose > MEIv.txt
and attach both textfiles? Thanks in advance!
Then you can use this file, touch should still work and memory should get recognized correctly, too.
old118_mem.zip (6.0 MB)
If everything works with old118_mem.bin, please run both commands again and attach the text- files.
for 031024e.zip it mean no touch funtion.for old118.bin it mean Incorrect memory capacity.
I learned from some information on the Internet that the machine older than surface pro 5 does not need to modify the BIOS when replace the memory, and the device will automatically recognize it. There is a saying that the memory chip information I used does not exist in the BIOS. Using the hexadecimal tool, you can see the text about the model of several memory chip in the BIOS file dumped . I only know the code mark of the memory chip I use, and have not tried how to add the corresponding information to it
great job ,Everything works except that it seem to have lost the WINDOWS system activation information. I can deactivate with other activation tools
Thanks a lot for the feedback and the MEInfo- output.
Regarding the activation- this information is unchanged in NVRAM, maybe the changes in memory and the time you didn’t have this information and/or machine information (when trying UEFI_106_1281_768_ME_11_0_15_1003.bin) a ‘new hardware’ trigger was set? The stored code is a Windows 10 code, so it should still work.
Thanks a lot for the ME- output, that’s the first time I could get some more information regarding the ‘Surface 4 touch disappeared after cleaning ME thing’.
The missing setting is definitely in the ME / a ME capability. But there’s no setting for this and even if I try to use an older FIT for disassembling (actually the version which was used to build the ME in old118,bin) I can’t find a corresponding setting regarding neither in FIT itself or in the xml- config file which can be saved.
EDIT:
Well, there’s 2 entries for memory in NVRAM, either delete them or make them invalid (change 3F to 3C at 0x02 of the entries header). If the system finds these two it works with them, if it doesn’t these entries seem to get recreated.
So the last usable file (old118 mim.zip) was modified using this method on the basis of old118.bin, right?If it is not the above method but very complicated, can you help to modify these two BIOS files dumped from surface pro 4? They’re all for the 8G ram upgrade .Because I have two other surface pro 4 processors I5 and M3 in the warehouse somewhere, where the I5 has upgraded the memory and also has touch problems. The M3 has not yet bought the memory chip for update. I’ll find them out and refine them when I have time.
this dumped from pro 4-i5
this dumped from pro 4-M3
Thank you for your great job!!
You’re welcome!
But are you sure that 134-128FV is a good read? It’s pretty corrupted after 0x800000! If that’s really the bios- region the machine shouldn’t be able to boot.
Left side normal Surface Pro 4- see the errors in the parser?
Is 134 the version of the ch341 software? Remember having problems with 1.29(?) reading and writing 128MBit chips, changed to Asprogrammer for those.
.
118-BV_mem.zip (5.9 MB)
That’s the good looking file, just made the two NVRAM entries invalid:
According to information in NVRAM both machines should have touch firmware 1.107.3.106.8.6 ??
yes, 134 is the version of the ch341 software. I may have forgotten this at the time. I recently made the same mistake and finally found that version 118 can read and write properly. Maybe the BIOS file read out at that time is bad, then leave it alone,i will read again when i find the m3-pro 4 out later.
It’s quite possible. because they should all have updated their drivers during use
Would you please try one thing on a machine with working touch:
Run from Intel tools in the ddirectory Clock Commander Tool\WIN32
cctWin.exe gm
= > gm - Get Chipset Init Settings
Post / attach a screenshot of the output
Syntax
Intel (R) Clock Commander Tool Version: 11.8.86.3877
Copyright (C) 2009 - 2021 Intel Corporation. All rights reserved.
usage:
cctWin.exe [options] command [arguments]
Available options:
/v0 - Verbose level 0 (default mode, smallest amount of information).
/v1 - Verbose level 1 (debug). Includes raw MEI messaging.
Available commands:
gl - Get Lock
sr - Set ICC Record
gr - Get ICC Record
gcc - Get ICC Clocks Capabilities
gcdr - Get Clock Range Definition Record
sl - Set Lock
gp - Get ICC Profile
sp - Set ICC Profile
gc - Get ICC Clock Settings
sc - Set ICC Clock Settings
gm - Get Chipset Init Settings
sm - Set Chipset Init Settings
To get help on specific command, use “cctWin.exe command ?”
I’m just curious, it doesn’t look like Intel had a specific FIT tool to enable touch / change the FW Capabilities, so how did they do this…
EDIT:
Seems like the correct way might be FPT here.
Please try in addition
fptw64 -vars > vars.txt and attach vars.txt
If you find a variable “Intel(R) Precise Touch Technology Supported” please run in addition
fptw64.exe -R “Intel(R) Precise Touch Technology Supported”
an post the result!
(If vars,txt doesn’t contain the precise terms, please use replace the terms between " " with the term you found in vars.txt)
Please do the same for
fptw64.exe -R “FeatureShipState”
Thanks in advance!
Sorry I missed this message, I will go to test, but it will take some time, because I removed the hard disk to use on other computers