How to Unlock the NVMe Performance on the Lenovo Y700
Posted on 23rd Feb 2017 08:14:31 in SSD, NVMe, Laptops, cryptocurrency
How to Unlock the NVMe Performance
For a re cap you can head to the previous posts about adding the 950 pro and the resulting investigation into figuring out why the full performance was not realized.
NVMe Performance Capped at PCIe 2.0 Speeds
A Quick Recap
It was found that the DMI link was set to PCIe 2.0 speeds by examining the setup form decoded from the BIOS, The Insyde H2O Ver 5.0 BIOS includes some hidden menu's, the one of interest in this case is "Advanced". The advanced menu includes a section for setting the DMI link speed, by default this is set to 2 which yields PCIe 2.0 speeds.
0x782F5 Setting: DMI Max Link Speed, Variable: 0xC10 {05 91 69 0E 6A 0E 44 07 34 12 10 0C 10 10 00 03 00}
0x78306 Option: Auto, Value: 0x0 {09 07 C3 0B 00 00 00}
0x7830D Option: Gen1, Value: 0x1 {09 07 2F 03 00 00 01}
0x78314 Option: Gen2, Value: 0x2 {09 07 30 03 30 00 02}
0x7831B Option: Gen3, Value: 0x3 {09 07 31 03 00 00 03}
0x78322 End of Options {29 02}
It was confirmed that it was set to Gen2 using a EFI Shell, it just couldn't be changed with the tools at hand.
The Utility
One of the senior members over at MDL came across this Insyde H2O UEFI Variable Editor and kindly sent me a PM with a link to give this one a try.
Now that looks more promising.
Steps to change the DMI Link Speed to Gen3
We know the variable that we want to change is 0xC10 and it's value is 02.
- Dump your current variable info to a file
- Search for Variable 00000C10 in the "setup" block (should be "02")
- Edit the dumped variable file and change to 03 save
- Update variables using the updated variable file
Step 1: dump the variables to a file for editing (open a Command Prompt run as Administrator from Windows 10)
H2OUVE.exe -gv vars.txt
Step 2: edit the variable file
Using notepad search for "00000C10: 02" verify that it is located in the setup section.
"Setup"
GUID: A04A27F4-DF00-4D42-B552-39511302113D
Attributes: 0x7
DataSize: 0xFA0
This section is near the end of the extracted variable file.
Edit so that it reads "00000C10: 03" DO NOT CHANGE ANYTHING ELSE you have been warned.
save the file
Step 3: Update the variables
H2OUVE.exe -sv vars.txt
Some warnings will be show that not all variables could be updated (no choice but to ignore them) lucky that the setup variables was not one of them.
Step 4: Dump the variables to confirm that it was updated.
H2OUVE.exe -gv vars2.txt
Check that setup variable C10 is now 03, Reboot and enjoy the full performance of your NVMe drive.
All of the above are performed in an administrative command prompt below.
Performance Results
Before (256GB 950pro)
After (256GB 950pro)
This is a 600MB/s increase over the capped performance for my 256GB 950 Pro and very close to rated 2200MB/s read.
500GB 960 EVO
512GB 960 Pro
Double the read performance which is an awesome result for 960 owners.
512GB 970Evo
Summary
This change is permanent across reboots as the variable has been updated in NVRAM.
This change was made on the following model:
System SKU LENOVO_MT_80NV_BU_idea_FM_Lenovo ideapad Y700-15ISK
as displayed by msinfo32.exe
BIOS version was: "CDCN52WW" the bios is Insyde H2O ver 5
Confirmed with CDCN54WW also
Insyde H2OUVE (UEFI Variable Editor) Version 100.00.16.08
Also works for the Y700-17ISK
Finally no more performance CAP! enjoy.