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

Adding NVMe SSD to the Y700

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.

Insyde H2O UEFI Variable Editor

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

DMI Link Speed Setting

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.

Command Prompt 

Performance Results

Before (256GB 950pro)

Before Performance

After (256GB 950pro)

Y700 Full NVMe performance unleashed.

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

500GB 960 Evo

512GB 960 Pro

960 Pro NVMe Perfomance

Double the read performance which is an awesome result for 960 owners.

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

Insyde H2OUVE (UEFI Variable Editor) Version 100.00.16.08

Also works for the Y700-17ISK

Finally no more performance CAP! enjoy.

Get the instructions and utility via email