Mini tutorial for Lenovo M720q BIOS modding : Above 4G decoding, Resizable-Bar, etc.
For those interested in modding their M720q/M920q/M920x/P330 Tiny, I managed to BIOS mod mine thanks to this
guide. However, I did it a little bit differently. It will also work for the M920q/M920x/P330 Tiny : stick to the link guide (for dual chips reasons). I beg your pardon for my bad english.
I will not take any responsability if you brick your computer !
I added pictures too.
My Lenovo M720q :
- CPU : Intel Core i5-9500TE.
- GPU : AMD Radeon Pro WX 4100 4GB.
- RAM : 2x8GB 3200MHz (running at 2666MHz) DDR4. Don't remember the brand...
- M.2 NVMe SSD : SANDISK WD_BLACK SN7100 500GB.
- WiFi/Bluetooth module : Intel AX210 with FRU part number.
- Power brick : a genuine Lenovo 135W brick. Other bricks (170W, 230W, 300W...) are useless.
- Genuine top cover from a Lenovo P330 Tiny bought on
AliExpress for GPU breathing lmao : I don't have receivte it yet at the time of writing the guide.
- Genuine bracket bezel for Quadro GPUs bought on
AliExpress : I don't have receive it yet at the time of writing the guide. Should be compatible with my Radeon Pro WX 4100. Make sure to buy the bracket for Tiny5.
1. Backup your BIOS using a CH341A programmer
First, remove the CMOS battery and unplug the power brick. Install Flashrom (I used Arch Linux) and prepare a CH341A. No need to do a 3.3v mod, the programmer already uses 3.3v. Locate your BIOS chip and make sure pin 1 of the CH341A (the red wire) is on pin 1 of the BIOS chip. In my case, the BIOS chip is a GD25B127DSIG and Flashrom on Arch Linux didn't find it ! I needed to specify other chips names from the same brand (GD25Q128E/GD25B128E/GD25R128E/GD25Q127C). If you have a Winbond chip, you can stick to the guide I linked above. The CH341A was recognized natively without the need of installing drivers. The experience was way better than the Windows one lmao. The programmer was plugged on a USB 2 cable plugged into a USB 2 port of my ASRock B650I Lightning WiFi.
The commands I used :
a. First command to create one backup :
sudo flashrom -p ch341a_spi -c "GD25Q128E/GD25B128E/GD25R128E/GD25Q127C" -v -r backup1.bin .
b. Second command to create the second backup :
sudo flashrom -p ch341a_spi -c "GD25Q128E/GD25B128E/GD25R128E/GD25Q127C" -r backup2.bin .
c. Third and last command to compare the two backups :
diff backup1.bin backup2.bin . If nothing returns, you're good.
It can take quite some time (be patient), if Flashrom doesn't work, you need to replace the CH341A pliers correctly, etc. If everything worked fine, you will have your backups in your personal folder. I know the pliers are awful... Hopefully, I did it in a first shot ! Please keep the backups...
2. Edit the BIOS file
You need :
UEFITool NE Alpha 68,
UEFITool 0.28.0 (not NE !!!),
ifrextractor v1.5.1 (the latest version doesn't work with UEFI web editor) and
UEFI editor... and patience.
I edited backup1.bin. I just followed the guide I linked above. Personally, I wanted to have Above 4G decoding visible in the BIOS, PL1/PL2 controls, etc. I also disabled BD-PROCHOT as the guide said (be careful !). You can enable Thunderbolt support, etc. Take your time and be careful about the modifications you make. I renamed the new BIOS file as "bios_main_mod.bin".
The command I used :
-
sudo flashrom -p ch341a_spi -c "GD25Q128E/GD25B128E/GD25R128E/GD25Q127C" -w bios_main_mod.bin . It will also take a long time. If it's a success, you will a have a "Sucess" or a "Done" message. If not, do as I said above : "replace the pliers", etc.
3. Boot your computer
Re-plug everything (CMOS battery and the power adapter), power on your Tiny and if you have an output, it's a great sign. Access the BIOS and check for the options you added previously in UEFITool 0.28.0. If you don't want Resizable-Bar, you can skip 4. and 5. sections and go directly to the last sections of my mini tutorial.
4. Adding Resizable-Bar support (Optional)
I wanted to push the BIOS mod further with Resizable-Bar support. Unplug your Tiny, remove your CMOS battery, etc. "Here we go again". I used
ReBarUEFI and just follow the
"UEFITool method (recommanded)" section. No need to use UEFIPatch. Just UEFITool 0.28.0 to add
ReBarDxe.ffs. I uploaded in UEFITool my previous "bios_main_mod.bin". I named the new BIOS file "BIOS.bin" after adding the module.
The command I used :
-
sudo flashrom -p ch341a_spi -c "GD25Q128E/GD25B128E/GD25R128E/GD25Q127C" -w BIOS.bin
"It will take some time"...
5. Boot your computer and enable Resizable-Bar
This time, Resizable-Bar will not be a visible option in the BIOS ! Above 4G decoding needs to be enabled with aperture size set to 2048mb. Now boot Windows (in my case, Windows 11), launch GPU-Z or any monitoring tool, and you will see that Resizable-Bar is disabled ! You need to run
ReBarState.exe and enter "32" to get Resizable-Bar working. It will prompt you to reboot your PC. Reboot and look again : Resizable-Bar is now enabled ! Bravo, félicitations (I'm french) !!!
I don't know if it's possible to do that on Linux. I saw that ClearCMOS will not delete the Resizable-Bar module but it will disable it ! You will need to re-enable ReBar with ReBarState.exe. To disable ReBar, ClearCMOS or run ReBarState.exe and put "0".
6. Some observations and final words
It was fun to achieve a BIOS mod. I already did this kind of modding with the previous Tiny generation. However, for M710q/M910q/M910x/P320, you can add Intel Core, Xeon and ES LGA 1151/BGA 1440 CPU support. As I'm aware, it's not possible to do that on the Tiny5 generation.
Resizable-Bar is a must with Intel ARC GPUs in order to get the most out of them. Without Resizable-Bar, you lose so much performance ! Remember that Lenovo Tinys support a maximum of 50W out of the PCIe slot. You will need to undervolt/power limit any GPUs that consume more than that.
The Radeon Pro WX 4100 is made to reach 50W but when you look at its VBIOS, it's only running at 35W so that's great. The GPU performance is near RX 560 performance. I added a 1mm thick thermal pad between the heatsink and the magnificent blue shroud : the GPU shroud is obviously hotter but the GPU die is colder. It improves temps a little bit. To install the GPU, you need to remove the front bracket made for the bluetooth antenna. I'm using
Do you know if it is possible to delete the WiFi/Bluetooth modules whitelist ? If so, I'm very interested. Natively, you can only use modules with FRU part number or the ones listed on your Lenovo Tiny page. I would like to use a WiFi 7 module.
Feel free to reach me on Discord : chiracopolis. I answer generally very quickly !
Au revoir !