Hi, I want to update the GOP driver of a Nvidia GT 720 (ASUS GT720-2GD3-V2/DP), I want to know which version of the program I’ve to use and if there is something that I’ve to know at the moment to modify and flash the BIOS, thank you so much for your help and excuse me for answer like a noob, but I can’t read 39 pages thread, kind regards.
I have an issue using the .bat to update GOP and the python script always tells me that GOP isn’t present (while it has a GOP installed)
To call python 3, I use python3 ......
and colorama is installed
How can you select older GOP versions?
GM2xx - 0x20011 - Jan 16 2017 - 21577143 - 80A19AD5 seems to be invalid (post 578), I’m on 0x2000E but would like to test 0x2000F and 0x20010
When the script asks me if I want to install the latest version, I select no and then it quits instead of letting me select all others.
Because it allows only that. It’s not been written to select which GOP table user can select.
Anyway, I’ll take a look at that table as I’ve a GTX Titan X Maxwell with same 0x20011 and it works like a charm.
@FPSUsername
Could you link your bios please ?
Okay, thank you. Please also check at post 852, could be because you call python3 as python, I have python 2 and python 3 installed and need to have python 3 being called as python3 so it won’t conflict with python 2
Here is my bios.
I also uploaded the “clean” version which was shipped by EVGA OEM (version 0x2000B I think)
GM206_GTX_960_SSC_4GB_1531_OC_2000E.zip (198 KB)
GM206_GTX_960_SSC_4GB_1531_OC.zip (198 KB)
Check the 2nd note here. If you add that line at the top of the python script, the python launcher will choose the correct version for the script automatically.
I fixed it by changing the path to my python in the .bat file. I have python 3.7 installed in "D:\Users\FPSUs\AppData\Local\Programs\Python\Python37\Python3.exe"
The problem isn’t updating the gop, it’s flashing the bios with the updated gop. Nvflash64 is giving me the error
Let me try with my VGA card. Stay tuned.
I’ve used NVflash 5.236 modified version and no issues at all in flashing the generated updated gop firmware.
I’ll try once I have access to my pc
@plutomaniac
That is an elegant solution and I will have to test it against my entire database. I really wish I could use it, but my main concern is that the version can have anywhere between 8 and 12 chars, followed by date, thus the length of the string is critical. My feeling is that I will end up with some bits of the date in some of the versions. Still, without testing this is just chattering, so I will get back to you after I have fully compared it against my entire repo of AMD GOPs. Also, using "#!/usr/bin/env python3" only works on Linux. On Windows, if you have Py2 and Py3 side by side, and if you updated Py2 at some point and forgot to unselect the py launcher association, it will mix them up. Bottom line, on Windows it is the last installed Python launcher that will determine which Python to call. At least this is what happened to me.
@FPSUsername
I think you missed the first two posts. It says to drop the file on GOPupd.bat, not on GOPupd.py. There are some steps under the hood, like extracting the EFI ROM, decompress it with UEFIRomExtract.exe, check the decompressed EFI driver. Maybe I can glue them together inside the python script, but since UEFIRomExtract.exe is needed, I decided to release this tool as Windows centric and make the GOPupd.bat as master of ceremony. The only error I can see from my part is locating the Python path, which is not that easy, given the multiple versions and multiple paths. Can you check with the attached file, by replacing the one from 1.9.6 package?
GOPupd.rar (2.58 KB)
Each part of the version ends with 0x2E00, no matter its length (2, 86, 9999), so splitting at that character will always give you the correct values and thus total length does not matter because you’ll know that the first 4 or 5 list cells are the version tag. Now, the entire date also ends with 0x2E00. So the next cell is the date. Afterwards, the time is always 0x10. So, after decoding, the first 8 characters of the cell after the date show the time. Obviously if you want the date and/or time sub-parts, you could further split them at space or : symbol respectively. Here is proof of concept:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
t_version = t_efi_dump[ver_end_match + 2: ver_end_match + 0x50].split(b'\x2E\x00') # Split at 0x2E00 character (Version + Date)
for v in range(len(t_version)) : t_version[v] = t_version[v].decode('utf-16', 'ignore') # Decode Version + Date
ver_len = 4 if t_version[0] == '0' else 5 # Set Version length based on Major number
version = '.'.join(map(str, t_version[:ver_len])) # x.x.x.x or x.x.x.x.x
date = t_version[ver_len] # xxx xx xxxx
time = t_version[(ver_len + 1)][:8] # xx:xx:xx
print(version)
print(date)
print(time)
print('')
print(version, date, time)
input()
But of course, as you said, all the GOP in your DB have to work with the above concept. Hopefully they do. Knowing AMD, you might find some odd cases.
The "#!/usr/bin/env python3" works on Windows as well. Either from Python 3.5 or 3.6 when the Launcher was introduced. For example, if I intentionally change it at MEA from 3 to 2, it crashes as it tries to launch it with Python 2.7 which I also have installed.
@lordkag you can also call it with:
python3 gopupd.py bios.bin gop_upd
That’s how I uptaded from 0x2000B to 0x2000E
That batch file from #593 gives the same python not found issue, but I managed to flash it with the certificate bypass nvflash. This is the output:
@plutomaniac
I checked your solution on all my repo and it works! You seem to have reached the AMD enlightenment. Or, in a Bond-Connery voice, “You’ve been spending too much time with the enemy, mister Pluto. You’ve been corrupted!”. I had to slightly adjust on the date extraction, as there are some cases you weren’t aware of, but it is way easier now. Just not too easy, we don’t want to upset the AMD gods.
You are also right about the python shebang. I just remember having a meltdown after a Python 2.x update were nothing worked. And if I’m reading > this < right, it is still the Python launcher that has the last word.
Released a minor update, version 1.9.6.1 changelog:
- Updated AMD version extraction, thanks to Plutomaniac.
- Fixed Nvidia checksum correction. Hopefully for good.
Ehm, download link, plz?