[Problem] Howto get full NVMe support for Lenovo X1 Carbon Gen 3?

Hey there, sorry for the delay, I left my Carbon in countryside for almost 2 weeks.

Anyway, I was able to get a friend, who has an nvme compatible laptop to help me out. We spent 6 hours working on it, and here are the steps we did :
1. First, we followed your instruction to clean the nvme from a windows installer, then :
1.1 We tried to run it with the bios, that was already on (I am not sure about which one was it, it was probably the MMTool 4.50 with the nvmexpress_small, from post 16)
1.2 Then we tried an older edit, that you confirmed to be ok, which contained the nvmexpress (post 11 I think?)
1.3 We also tried to edit a Clean dump of the current version of the BIOS (which was 1.17, and was made almost a month ago), with UEFITool 0.25, trying with both mfg on and off
2. Then we updated a bios to version 1.24, and tried to boot it as a baseline (This was the only case when the boot did not fail, more on that later)
2.1 Then we dumped the clean and definietly working version of the bios. Here, we were able to boot into the Win 10 installer, however the installer did not accept the 970 evo as the system then had no boot nvme driver present.
2.2 After having that clean and updated bios, we tried to modify that with UEFITool 0.25, and made several permutation of the possible edits, to see if any works
We also tried to work with different bios settings, starting with the ones you outlied in post 18
All of them ended in the same way : the UEFI probably crashed when it got to load the nvmexpress driver and the 970evo was present. The exact symptoms are : first few seconds looking normal, it even accepts keyboard input, and then it freezes as it is (See post 13). It really seems like that the uefi crashes in the moment that both the nvme driver and the drive is present, if one of them is missing, everything is normal. Windows still boots from the sata m.2 drive in every case.
We also had another nvme SSD to try whether the unit was faulty. We also tried to insert the 970 into his laptop, which accepted it, and we were able to install a windows on it. (obviously we run the clean on it after, and now it is in that clean state as we speak)
He also read all the posts in this thread and the nvme support article, to see whether I’m missing something. His suggestion was that the NVRAM variables that you outlied in post 4 should be edited still, that I have a flash programmer, but as far as I understand those were needed only to access the bios WHILE having a live system on it.

What do you think, what causes the problem?

I am attaching the clean 1.24 BIOS that normally loads the win10 installer, and does not reject the NVME drive (but instead throws 2103 error)

https://drive.google.com/file/d/1bM4mAO4I6jky7BuXkcZovwtNNS4-WvP8/view?usp=sharing

Edit : Is it even possible to make it work, or is there an unknown and undeterminable force preventing us to make it happen?

@randoomkiller - Sorry to hear!!

Yes, stuff at post #4 were only about flashing mod BIOS via FPT, nothing to do with NVME functions. MMTool 4.50 was never used here, not compatible with this BIOS.
Here is above BIOS modified three different ways, if neither allow you to install Win10 then this system is not compatible with NVME for some reason. Test al three both BIOS, MFG mod not done to any, so if you think that helped or is required, then you’ll have to do to each after you test as-is
You should also first test installing Win10 to a GPT initialized SSD/HDD, to make sure you have all BIOS settings properly set to allow install to a disk setup like NVME requires. >> UEFI Mode, Secure Boot enabled/Disabled, CSM Enabled/Disabled, probably missing settings relating to OS Type (this may be the issue))
Test PT273UEFIT25 BIOS first, this was made using tool to insert NVME module that I have not used to edit BIOS for you previously, maybe it will do it properly (if BIOS edit method is the reason this is failing, but I don’t think so)
http://s000.tinyupload.com/index.php?fil…468485382457721

@Lost_N_BIOS Hey there, sorry for the disappearance, I moved to the UK, and I am still using the old ssd, on parts that weren’t boot partition (it works pretty decently, but I’d rather have a flashy and quick one for the start of the term).
I have flashed all 3 of them, however I have an update!!!
The PT273UEFIT25 might have worked, after I flashed it, I was able to boot into a Win10 installer, the installer saw the drive, and I was able to install the Win10. I have checked the drive from another laptop, and the Win10 appeared on the NVME.

HOWEVER: I could not boot into it after the install. It might is a false positive, but I strongly think that the mpcie supports NVME. The only way it does not support the drive is, it lacks bios level NVME drivers. I have also managed to install a Linux back in July if you remember.

Do you have any idea if we can try other edits, or how do the previous edit might be broken?
Are there any possibilities why this wouldn’t work?
Please tell me if I didn’t clarify anything in either this or my previous post!

In the next 2 weeks I’ll be sitting in my room and tinkering with it quite probably.

@randoomkiller - Hey! Hope the move went smoothly!!
If PT273UEFIT25 boots to BIOS and you could install to NVME, then mod BIOS was success. Sounds like you have some BIOS setting wrong possibly, before or after the install, or you have your USB installer setup wrong, or disk was setup wrong when you pointed the installer to it possibly.
Make sure USB is GPT, best way to setup USB Installer is to use windows USB/DVD tool (media creation tool) - Ignore system requirements, I use this for Win7-10 all the time - https://www.microsoft.com/en-us/download…d-download-tool

Then make NVME RAW - You can use diskpart in windows from OS (Direct from any CMD Prompt), or from installer ISO (press Shift + F10 on the first setup screen where you pick language)
Or from repair/troubleshoot options in the installer/setup. Remove all other drives, so you have only USB and target win10 drive. Then from CMD prompt do the following

1. Diskpart
2. List Disk << Here, identify what your target disk is by size/name etc, and make note of it’s #, you will use it’s # next - (If in windows, these #'s will match what you see the drives shown as in Disk Management) - Be sure you do not select your USB or main OS drive if in OS
3. select disk # << Here, instead of #, put target disk #, example >> select disk 0
4. clean
5. Exit

Reboot and run the installer again, then point it at the raw/blank drive, do not load any drivers or create any partitions etc, just select drive and click next

Finally, make sure you have BIOS settings correct, per this guide see step #4 in the "This is what you should do" section
[Guide] How to get full NVMe support for all Systems with an AMI UEFI BIOS

After OS Install, boot back to BIOS, and then in boot area, move "Windows Boot Loader" to the top of the HDD boot priority list, so it’s first boot device.

Looking at your BIOS, make sure this is set >>

UEFI/Legacy Boot >> Set Either UEFI ONLY or Both
UEFI/Legacy Boot Priority >> Set UEFI First
CSM Support >> Try Both, disabled first
Secure Boot + Fast Boot >> If you have, disable
Pcie Nand Flash Remap Support - May need enabled or disabled, unsure what this one is, but sounds related!
Pcie Nand Config Access Lockdown - Same as above, sounds related

@Lost_N_BIOS So, I have got an SD card, put windows 10 2004 on it (FAT32, and GPT) freshly downloaded from microsoft’s website. I have reflashed freshly the PT273UEFIT25 just to be sure.
Windows installer booted fine, I cleaned the disk with Diskpart, and then rebooted the installer. I have selected the only drive that was in (the NVME 970 pro), and told the installer to run. Weirdly it did not prompt that it would create extra partitions, but it run through. By the point it gotten to the part where it would restart in 10 seconds (and counting down) I waited for it to restart.
And here is where the magic happened. Computer rebooted and I was back to 2103 : Detection error on SSD0 (m.2)



All the BIOS settings suggested were set, I could not find Pcie Nand Flash Remap Support, Fastboot, or Pcie Nand Config Access Lockdown. (the BIOS menu is pretty primitive surprisingly)
I have tried a second run with UEFI and Legacy, with UEFI first and CSM turned on, same 2103. The first one had UEFI only and CSM off.
In both cases the windows boot manager is visible from the temporal boot device menu, but upon entering it just blinks and returns as if it cannot boot from that.

Here are all the photos I took from the relevant BIOS settings page.

SD card may be part of the issue, use a normal USB Stick. Hmm, your first image shows drive slot error, how did you get past that and install windows before? Was the NVME on the same slot, and or do you get same error if you try other slot?
All the BIOS settings I mentioned are in your BIOS, those three must just be hidden from you So, looks like we need to unlock your BIOS first, so you can at least disable fast boot, and try the others eventually too.

I think, if/since you can see Windows boot manager, and do the initial install to NVME, then it’s only left down to getting some BIOS settings set correctly and it should be bootable.

TPM may be causing an issue, I would disable all that until you are done. And this certainly always needs disabled before any dump to mod the BIOS too.

I see at the link below that I’m posting again for Fernando, they mention this error and you should press ESC to pass it (mentioned by w0qj on page one, post #7)
Re-reading all that thread, makes me think, the only possible solution may be to press ESC each boot, or setup the bootloader onto USB as mentioned by sshambaugh on page 2 post #5 (and similar/same to clover or duet method)
Seems to me, this should not be needed since we have NVME mod BIOS, but ???

* Edit - @randoomkiller - See this thread, seems some users get exact same error with factory M.2 drive too, and with non-stock M2 as well (read page 1-2), and BIOS update/reflash is the solution (or possibly clear CMOS and then reset your BIOS settings back)
https://forums.lenovo.com/t5/ThinkPad-X-…-2/td-p/2161245

Also, further confirmation that Gen3 supports NVME - https://www.computerforum.com/threads/le…or-2103.245720/
Links to specs page, showing both AHCI and NVME type M2’s - https://pcsupport.lenovo.com/us/en/produ…utions/PD100511

* Edit - I think I see the issue! In stock BIOS, without NVME mod, should be compatible!!! I found setting "NVME Support" = Enables NVME remapping!
So, I think we need to test stock and or mod BIOS and change this setting if it’s not already enabled, or make visible to you (checking now)!

*Edit - Show me image of your Advanced BIOS page, and circle or tell me some setting that is "enabled" by default that you have not changed
This setting does not need to be visible at root of this page, for this image, you can just tell me the setting

@Fernando - Do you know what the issue might be here? NVME mod BIOS seems to be OK, since he can see windows boot manager post install, and can see/install to the NVME during Win10 setup.
For your reference, on post #14, I linked and posted this >>
See this thread, post mid-way down (Post 7, not 3) with link to Toms, seems it worked for him. Also, see second page, for confirmation of Clover/DUET Bootloader methods working, so it’s not a slot/compatibility/whitelist issue
https://forums.lenovo.com/t5/ThinkPad-X-…/2064793?page=1

@Lost_N_BIOS :
After having done a short view into this thread, I don’t know the exact reason for the issue, but I am currently far away from home and have not much time to think about such topics.

@Lost_N_BIOS well that would explain a lot of things. This machine was engineered in '13-'14 and built in '14-'15, when NVME was not mainstream but it got more and more demanded over time. Many users were complaining about the lack of native NVME support, and if you really found that there is a setting for it, then it could be an evidence that Lenovo indeed listened to its customers, and developed this feature, but then at the end it did not activate it for either business, product testing or whatever reasons. In the next year, the updated gen 4 laptop has been introduced with native NVME support.

Back to your question, I’m afraid I cannot show you my Advanced Bios Settings, as this laptop does not have anything such (at least not that I know of, do I have to unlock that too?)
See the middle BIOS settings image in post #23, there are all that I have access to right now.
Under Config I don’t have anything related to Disks, storage, pci, or sata. Under Security and Startup, neither.

@Lost_N_BIOS so, I have been digging a bit at GUID pattern CFEF94C4-4167-466A-8893-8779459DFA86 with IFR extractor and also 2 other modules that contained "advanced"(PhxGopHiiDxe, and SystemBootManagerDxe, although I did not find anything here).
In PlatformHiiAdvancedDxe I have found clues for several settings that might be related, and after googling them, I have concluded : Is that right that there is a hidden BIOS menu, under "Advanced" where I’d be able to access dozens of hidden settings, possibly even enabling NVME?
Am I supposed to unlock it with a registry edit with either a grub shell or a RU?
Because if I am, then I’d come back to the same problem as in post #5, RU does not allow me to save my edits :smiley: (you were suggesting Boot Guard?)
I can still try a grub shell, and I also found a post that unlocked gen 3 NVME on Lenovo Y700 with a tool called Insyde H2OUVE
https://www.instructables.com/Lenovo-Y70…Me-Gen3-Speeds/
However even if I’d be able to access with either the grub shell, or this tool (although if I remember I have phoenix bios, not insyde) I’d still don’t know which value to edit to enable the Advanced form
My guesses are either 0x18033 or 0x1802D, where the Standard Default and the Manufacturer Default are established.

@randoomkiller - So your BIOS does not have Advanced section at all? If not, then yes, we’ll have to unlock that
What is in "Config" show me an image of root of that section.

Yes, CFEF94C4-4167-466A-8893-8779459DFA86 is the advanced menu stuff I was talking about, we’ll have to see about getting unlocked menu for you!
I can change settings without you seeing them, so if we can’t unlock the menu it will be OK and we can still change settings.

You skipped over the part of my post that has the answer to all this though, or maybe you missed it during all my edits that day?
Even stock HDD/SSD (or other non-stock SSD replacements) give user same error you mention, BIOS reflash fixes this. Did you try that yet?
If not, try that now, then load optimized defaults, then reboot back to BIOS and set everything for Win10, then try to boot to win10 again.

Boot Guard would not cause RU to not save changes, secure boot or Encryption enabled might, I am not sure.

Yes, if we can find working H2OUVE then we can make all these changes you were trying in RU with that instead. I thought we already tried that though?? But, maybe I’m thinking of another thread, that happens often around here
Download the following package, and run the command below from each versions folder that directly contains it’s exe. Before doing this, make sure you have secure boot disabled in BIOS, any BIOS password removed, and TPM/Encryption disabled.
Once done, copy the entire folder somewhere, delete everything but any created vars.txt and then repackage this and send to me, this way all created vars.txt remain in place in the folders of the version that created them.
https://www.sendspace.com/file/8v98ya

H2OUVE.exe -gv vars.txt

setup_var via grub can’t be used here, since settings are not stored in "Setup"

And, never mind, the above will not work for you, "I think" Because you have Phoenix BIOS, but go ahead and try and see, if any vars.txt is created then it may work (But I doubt)

What you see in IFR there at top about standard/manufacturer defaults don’t have anything to do with menu unlocking, those are just variable store default ID’s, most settings will have one or both, to hold NVRAM stored values
Sadly, I don’t know much about unlocking Phoenix BIOS Intel/Insyde is done in Assembly, but I don’t think any of that kind of method applies here. I have a advanced phoenix Unlock guide PDF, but I think it may only apply to older Phoenix, not sure. I will check it out.

Best, and safest thing to do is change what we want (ie what you wanted to change in RU, or any defaults we wanted to change) via programmer.

@Lost_N_BIOS No, it does not contain an advanced menu sadly

But I think I found clues online that it is entirely possible (and I guess you already know it :D) and I was just rephrasing what you were saying
However no-one seems to have posted the method.

H2OUVE just throws an error, all 4 version that you sent me :frowning: All said that protocol or compression is unknown, running from admin cmd.
I still have Secure Boot disabled, no passwords are present and TPM chip is in MFG mode, and turned off.

Therefore as you are suggesting I am gonna attempt to edit the BIOS with a programmer, but I am not sure about how am I supposed (single bit edits in a hex editor?) to edit the settings, and to where exactly am I looking at.

Also I reflashed the BIOS to stock to see if there is any change and sadly no. I have read the changelog whether an updated BIOS would fix the issue, but all the newer versions sadly only have security patches. (changelog) https://download.lenovo.com/pccbbs/mobiles/n14uj30w.txt

Then I looked whether there is any key combo to unlock the Advanced menu like some suggested in this page but none seems to work. I guess being an Enterprise laptop makes everything much more complex. https://www.quora.com/How-can-I-access-a…ettings-in-BIOS
I have also googled it for specifically phoenix thinkpads, and they were all suggesting that it can only be done with a programmer.

Here are the printscreens from Config root

120672330_915753738952523_5273035979869584721_n.jpg



And I think there is a good clean image in post #19 (BIOS_DUMP_V24_CLEAN) which is still live.

@randoomkiller - Thanks. I assumed H@OUVE would fail, it’s for Insyde BIOS

Programmer is only needed if you cannot flash in mod BIOS otherwise, but first I have to see about if I can unlock this menu or not.
I am not a pro at Phoenix BIOS menu edits, we do have someone here that is but I cannot remember who does it
Nothing for you to do about this but wait and see if I can figure it out. You may find someone at BIOS-Mods to unlock it much quicker than I can, if you want to make a thread to ask for menu unlock there.

Change logs would not say anything about any of this. So, after BIOS reflash, you still have the 2013 error?

Yes, I have your BIOS from #19 already

@Lost_N_BIOS Well somehow I cannot create a new post on bios-mods, the textbox just disappears when I am to send a message… whatever.

I think if you could try to edit that one setting to see whether it works or not would be a step toward the right direction. (I still couldn’t figure out how to find the right bits from the IRF extraction , How am I supposed to find them out?)

I have looked into editing Phoenix bioses for a whole day, and even tried to put the whole thing into IDA Pro, to see whether there are any clues about how to unlock the Adv menu. I found the tutorial you mentioned about unlocking them, but mine had a completely different structure than what’s in the pdf.

Do you know how might I be able to put the programmer dump into Phoenix Bios Editor?

@randoomkiller - Try another browser there, or clean cookies/cache and see if that helps.
Yes, I see that too in the PDF, and your BIOS in any way (Stock, decompressed, dumped from PhoenixTool, dumped directly etc) does not open in Phoenix BIOS editor either, so that guide/method can’t be used
I can change setting for you in setup and NVRAM, but on the NVRAM I am not sure if this is signed or checksum’d in phoenix BIOS, so may = brick
I will make some BIOS for you to test shortly

@randoomkiller - I was about to do test edit for you on that setting, but looking back at post #21, I realized you didn’t give me full info/report there
The BIOS you did report on PT273UEFIT25 is non-ideal edit that I only made in case the others bricked due to tools used, the others would be better, if they were bootable (and all should have been able to install Win10 to NVME if PT273UEFIT25 could too)
So, what happened with the other two BIOS from that package, either brick, or both bootable?

@Lost_N_BIOS In #17 and #19 I have written what I experienced. It feels like it literally crashes halfway loading up everything from the bios chip, and my guess is, when it gets to load the nvmexpress, it get’s into an infinite loop, and stucks there. I cannot explain it better. If the drive that’s in is not an nvme, it works perfectly normal (I guess no NVME detected -> No need to look up any related function, no related thing is loaded) without any signs that it is modded. However when the 970 is in, it functions normally for half-one second, and then freezes midway. If I keep pressing F11 or F2 immediately after pressing power, the notification for loading into setup menu appears but still freezes after that 1 sec.

However, looking it up in bios-mods, the laptop seems to be rewrite protected, but not encrypted (?). We might be able to change the nvram options by just plain editing.

I was talking about 3x BIOS from post #20, you only reported on one of those BIOS

Yes, if you want to test changing that one setting I mentioned it can be done without mod BIOS, either via grub/setup_var, RU method, or dump vars with H2OUVE (Probably best)

Download the following package, and run the command below from each versions folder that directly contains it’s exe. Before doing this, make sure you have secure boot disabled in BIOS, any BIOS password removed, and TPM/Encryption disabled.
Once done, copy the entire folder somewhere, delete everything but any created vars.txt and then repackage this and send to me, this way all created vars.txt remain in place in the folders of the version that created them.
http://s000.tinyupload.com/index.php?fil…212104496994806

H2OUVE.exe -gv vars.txt

Hi all,

Was there any success getting NVMe booting working on the X1C3?

Cheers.

@cheeseandjamsandwich
Welcome to the Win-RAID Forum!
After having done a deeper look into the content of this thread it seems, that the main problem of the Opener randoomkiller was not the insertion of the NVMe module, but the flashing of his modded BIOS (due to the BIOS’s write-protection).
That is why I have moved the complete thread into the "BIOS Modding" Sub-Forum and customized its title.
Regarding your question it may be a good idea send the Forum member randoomkiller a PM. He may not watch this thread, which had started by him in June 2020.
If you want to insert the NVMe module into the BIOS of your mainboard, I recommend to read and follow the related guide. You can find it >here<.
By the way - our BIOS modding Guru Lost_N_BIOS hasn’t been online since January 2021. So you cannot expect to get any support from him.
Good luck!
Dieter (alias Fernando)

Hello there,

So actually I’ve just logged in because I’ve met a motherboard repair fellow and he was suprised as I couldnt get it to work and seen the updates.

No sadly, I couldn’t get it to work, and as it was originally about the write protection it was no longer after like post 8 (?) as I got the SOIC programmer.

I’ve paid a dude to unlock the hidden bios menu even, and there was no setting for it.

I have no clue about what I was doing wrong if I was doing something wrong, but I’ve tried to bake in the dxe driver to all the bios images and it never worked.

I also haven’t managed to get the Samsung 950 to work but to be fair I was suggested that it could be due to bad bios settings.

I’ve given up on this and currently driving a 1TB WD RED mSATA SSD, HOWEVER if we figure it out I’m willing to give it another try over the summer, just for the sheer amount of time I’ve put into it, and because fuck software limitations.

On another hand I’ve tried a m.2 to pcie + an nvidia 2080, and it still gave the same detection error. I’m guessing that there could be some firmware limiter but I might be wrong.

Bests,
Randomkiller (Alias Andris)