[Old Hardware BIOS PXE] Lenovo X201 PXE Flash ROM Borked, trying to restore, any ideas?


Limp Gawd
Dec 27, 2004
Couldn't find a BIOS area, hope this is the right area to inquire.

I have an old by everyone's standards Lenovo X201 laptop, was running Win10, no issues. One thing I noticed was that the Ethernet card Intel 82577LM had a Code 10 out of nowhere. Nothing fixed it, other drivers, switch to win 11. Thought hardware was borked and time to toss. I didn't do any updates like BIOS or drivers, so it was odd to suddenly see the Code 10. From what I've read on multiple pages, this doesn't seem to be uncommon as others have seen the same....good lord.

Installed Win7 since I couldn't find new Win10 x64 drivers for it and noticed that with Lenovo drivers, it worked, reported 1Gbps link proving hardware was ok. Ran speed tests, all good. So hardware is good.

Back to win10, still code 10. For some reason after reading pages on the web, many said to check the BIOS settings to see if that may fix it, so I enabled Boot Option ROM in the BIOS and blamo, the issue that was masked suddenly showed itself, now getting a Boot Agent Error (v1.5.31) on boot, nothing earth shattering, just that it can't boot PXE.

Long story short, I used intel boot utility tools and the utility BOOTUTILW64E.EXE from the PREBOOT toolchain, it basically stated NO FLASH FOUND. From images from the web, if PXE ROM was present, the tool would show the PXE FLASH image present. So it seems the LAN ROM is borked.

So running the command BOOTUTILW64E.EXE nic=1 -defcfg fixed the Code 10 immediately and now in Win10/11 the Ethernet works as expected. Link shows 1Gbps, driver from MS is good....in "that domain" all is good.

So the last item is to try and get the PXE image restored back into the NIC and fix the boot agent and Option ROM installed.

From everything I've read, being a laptop, it says that the OEM (Lenovo) BIOS update images should "update" the BIOS and the ECP controller and I/O's, things like the peripherals like the NIC ROM which contains the Intel Boot Agent. It has been stated that it can't be directly updated even if I had a valid PXE ROM.

I've tried for it update it by going all the way back to first BIOS FLASH to see if it would update the LAN Option ROM:


I've tried 1.12, 1.31, 1.39, 1.40, and the 1.40-1.15/1.15 just to see if I could have it trigger an update to the ROM and put back the PXE boot image. None of it worked.

I'm trying to speak to Lenovo in the software group, but got disconnected, but will continue to try.

I will never use this feature, and I can turn off the error (Boot Agent Error) via the bios by turning off the option ROM, but this is more of an exercise as to learning how to fix this because I am the type that wants it to be 100%.

Anyone have any ideas on short of removing the bios chip and replacing it with one from ePay and then having to use their (Lenovo) maintenance disk to rebuild the UUID and serial number flashing which is a "final" resort if I can't find a software solution.

I don't want to trash this laptop, I use it as a backup for my travels, and the hardware is good, so please keep that in mind if you have a suggestion.

Thanks in advance for any thoughts or advice.

Personally, I'd let this one go. If you're never going to PXE boot this laptop, why bother making it possible to? Worse case, you can boot iPXE off a usb stick and call it a day, unless you're trying to PXE boot because booting off USB stopped working. In which case, maybe you can boot from the card reader, maybe?

Sounds like the NIC option rom lives in the main system firmware chip? Maybe there's hidden options in the flashing tool to make sure that section gets written to?

There's a lot of interesting stuff in this google search; including your posts on this issue elsewhere :D, if you really want to go down the rabbit hole. If I were following the rabbit, I think the first thing is to figure out if you can take apart the Lenovo firmware image(s) to see what the ethernet option rom(s) are supposed to look like; then try to see if you can read the bios image off your chip without opening it up, and see if it's got the right stuff. If that checks out, flashing it more isn't going to help... if it's messed up in flash, I guess try to flash it again, with intensity? Could possibly be a couple stuck bits in your flash chip, in which case, you're kinda out of luck.
Thanks for you're feedback, I plan to be as conservative as I can on this. But something has my radar active and was just wondering what your thoughts may be since you know the barrel I'm looking down if I'm wrong.

The picture is becoming crystal clear from multiple Intel docs and people's webpages that discuss the fact that the "fix" that I implemented "solved" their issue...specifically states that the IBA BootUtility says that it should only be implemented on PCI or PCIx addon cards and not LOM (LA N on motherboard) devices, which is what a laptop is clearly, and that the LOM device will update the device via a BIOS update.

What has me scratching my head is, when I had the code 10 in win10/11 yet worked in Win7, when I did the -DEFCFG on the card's EEPROM using the tool listed with -DEFCFG, that it properly reset whatever and now the card uses the proper Win 10 and 11 MS provided driver, MAC address, even though there is still a Boot Agent GE error when the optional ROM is enabled in the BIOS.

So if that one command restored the proper functionality to allow clearly the card to now work in the Win environment, from logic in this response, the tool shouldn't have worked at all to get rid of the Code 10 but yet it did even though the device is a LOM.

What I don't understand is why any of the Lenovo BIOS updates from 1.12 to 1.40 doesn't trigger the NIC to update the firmware of that build to update the NIC and restore not only the NIC firmware level but operational BOOT modes.

I've spent a LOT of energy just doing research, have NOT touched the laptop out of many levels of caution, but again, still have the itch to want to know why or how to fix this as it seems to have affected a lot of people in the past.....knowing that most of those machines are probably in the landfill at this point.

I have not looked for a way to dump and compare the BIOS on the system, that is next, but I do have ROM files of an x201 dump to compare to once I figure out how to do it via software if it is even possible without using a hardware programmer to extract the EEPROM data. I know they won't be a perfect compare because of the SN, UUID, MAC address, and unique to that dump, but the core would be interesting to see where the blocks change.

The one last item I did think about was this; since I put it back into "default" config mode was to attempt these commands as I did the -defcfg:



My thoughts there are because I don't know what the defaults are and do these settings need to be re-enabled for it to operate, I'm wondering if those need to be adjusted to get the ROM to activate since it may be turned off by default.....particularly since the BOOTENABLE can be PXE or other options.

I can't seem to find out what the -DEFCFG values are or the doc that discusses what they should be (which can be OEM dependant).

So with all that, what are your thoughts?

I'm in no super rush to brick the thing.....just wondering why there is a divergence in their statements of don't use on a LOM, yet that solved the Win10/11 usage vs is it in the proper config state to make PXE operational again....assuming the ROM data is still present.

Thanks for your time to read this drivel …LOL.

Traditionally, a NIC had a config eeprom and an optional boot rom. We know the boot rom is embedded in the system firmware, so bootutil isn't going to touch it. But maybe the card still has its own config eeprom? That would explain defcfg doing something.

But then the question is, what should it do and what did it do. From messing with a different Intel NIC, there should be a PDF manual somewhere with most of the eeprom config bits documented. I was able to tweak my card's eeprom with the regular Linux driver and ethtool. Note that intel documents are word (16-bit) oriented, and ethtool is byte oriented, so it's a bit fiddly. In my case, I just needed to flip one bit, so the PCI vendor/product were Intel defaults instead of the card maker's (which are still set for subvendor/subproduct); that way I can use regular drivers rather than patching.

Anyway, see if maybe you can boot linux and dump the config eeprom with ethtool and study that with the manual... And then poke things to get to a better state, maybe?

What exactly is the boot agent error message?
Excuse my mad paint skillz....here is the main page BIOS and the boot error after POST.

For the linux, I'd have to be hand held as I don't know shit about Linux sad to say....so apologize for being a windows chump.


  • 20221013_172739.jpg
    564.9 KB · Views: 0
  • 20221013_184740.jpg
    313 KB · Views: 0
Ok yeah. I think it's just something is a little bit off with the configuration part. Reading chapter 9 of the datasheet, I'd guess there might be bad data in Boot Agent Configuration Customization Options (Word 0x31), or Checksum Word Calculation (Word 0x3F), and then the boot agent refuses do do work. You might try spamming ctrl-S anyway; on my intel adapters, that gets into a config menu, and saving from there might fix any data issues.

I'm not familiar enough with messing up this stuff myself to walk you through it in Linux. And I didn't find anything promising for Windows, other than the Intel boot utility...

You might try bootutil... -file something.raw -saveconfig ? and see if that dumps a 128 byte file where the first 6 bytes are your mac address (possible byte swapped... so if your mac is 00:11:22:33:44:55, it might show up in the file as 11:00:33:22:55:44)
All right, that datasheet defines all the -DEFCFG values of what it did. There are working versions of the .bin out there (and I have) and if I could get a dump of it, that could be the key to reactivate it. I did try the control -s, but it just blew by...I'll hammer it and see if I can get it to pop the menu.

No worries on the Linux thing, I wouldn't expect much on it either since the age and discontinued status of the ethernet hardware.

I will take a look to see if I can get it to dump a file of the config and see what's what.

Thanks for the datasheet, I should have reviewed it, but was hyper-focused on if anyone solved the problem and blasted through it.
Reading some of the default settings, it "appears" that it should allow the Intel ProSet to make changes to the options, but I'm finding that the "boot" tab is not showing up when I open the device in device manager.

FYI, also read that changes using Intel ProSet would allow changes similar to BootUtil, but still working to see if I can get it to show up....default option shows:

Disable Flash Update
If set to 1b, no updates to the Flash image using PROSet is allowed.
The default for this bit is 0b; allow Flash image updates using PROSet.

So that is interesting to say the least.

I'll keep digging.
I'm having trouble, I reverted this to a new install of Windows 7, and all drivers in DM are functional, when I try to use the Intel IBA utility, I keep getting Entry Point Not Found when I try to run NVM check tool from their package.

A quick Google search says that installing installing C++ redistributable for Visual 2015 will fix it, but that didn't install correctly either.

Windows 7 update doesn't seem to work any more either, I assume I need to go to their catalog to get the cumulative final updates and install that way.

So I'm chasing getting the tools just to launch and run on Windows 7 before I can get any useful info.

I know Win7 is EOL, but I assume that the updater would still work to provide the last line of defense for whatever it was before they nixxed it for Win8.

If there is something I'm missing, I'm all ears.

There was a problem that messed up getting anything for windows 7 from windows update. I had a group of 4 updates that I ended up manually installing that had fixed it. Although last time I did that was 4 years ago, when I fixed a system for a friend.
Well, it certainly has been an interesting weekend to say the least. I worked on this as time permit with a most unusual outcome.

I couldn't get my Win7 x32 to run the nvmcheck32.exe due to an entry point error issue due to Kernel32. So with that, I searched, tried the redistributable blah blah....So I tried to update Win7 via updates...fail, some 0x00008XXX error. WTF.

Thought maybe because it isn't activated it was causing update errors, try to activate (with my valid paid for key), another 0x00008XXX error, won't activate...WITF?!?

Dawns on me this is Win7 pre SP1, so I download SP1 standalone, let it update system, try windows update again...activation again...still an error.

Then dawns on me that the convenience rollup was basically SP2 and the final iteration. Download that, installs....BINGO, I was able to activate and then use Windows update to bring down all the rest that was missing.

Problem 1 solved.

All I've read installing Intel PROSet tools (the DM added tabs and such) would allow me to see boot tab which would allow configuration of the NIC and PXE environment right from within Windows which is the whole goal of using Win7 to see if I can get to the point of configuring the whole thing from within DM.

I get all that installed using a "legacy" version that supports the 82577LM, I have all the tabs, everything but the "boot" tab... which makes sense since it is borked at this point.

There is another app from intel called "Intel Ethernet Connection" also installed, those two items are living side by side and no issue, card is 1Gbps and fully operational in Win7 x32.

As I said I am extremely conservative and don't want to hose this machine, so now I run the "nvmcheck32.exe /devices" ...yup, now works, and it sees the NIC with the proper make and description.

So I then execute "nvmcheck32.exe /header" which basically from what I read will give a readout of what the devices configuration looks like and hopefully steer me the direction of fixing the registers to get it the PXE back.

BLAMO....BSOD, hard crash, system reboots and recovers....hmm.

I go to DM, double click the NIC....it takes almost 10 seconds waiting for panels to come up.....BSOD....oh shit.

um...try DM again.....BSOD...shit shit shit..

With cable plugged in, still have link LED flashing and still showing 1Gbps connection....so something is really screwed....reinstall OS??? Nah...got to be something I did.

Try to uninstall PROSet....uninstall failure....

Uninstall Ethernet connection software......success.

Try to uninstall PROSet again....success.....want to reboot? Oh hell yes I do.

Reboot......boy that was fast..............

Scratches head....go to DM, click on NIC.....alls good in the neighborhood.....1Gbps link still in windows.....do a network transfer test.....105MB/s large file transfer......card is truly still ok and working.

I reboot......."light bulb".....didn't see the Boot Agent V1.3.51 error.......boots into Win7......um....let me do that again......reboot....

F1 to BIOS, check boot list......PXE is now an option to reboot from, Boot Agent matches.....wow, really??

I exit BIOS, hit ThinkVantage key and hit F12....sure enough I have USB key, HDD0 and PXE......select PXE and go....boot agent initializes and then does some fast DOS printf, and then I see DHCP X "spinning" (DOS version of working) and stays there...I assume because it is looking for a PXE server to boot from. Appears to be working to me!

I hard power down and for the last check, try to use "CTRL" + "S" after post, I get Lenovo version of "stuck key" and try few multiple ways to get into the configuration menu for the Boot Agent via CTRL S, but nothing works, Lenovo thinks the keys are stuck. I searched Google for how to get in to the configuration menu but there are not many options where people talk about how to do it....I do see screen shots of the menu, but can't seem to get to it.

My guess here is: When the uninstalls of the Intel apps happened after the BSOD, somehow, someway, one of those apps restored the FLASH and options. That is the only thing that I can think of after the BSOD.

So I reinstalled the PROSet and I can open the panels, see the adapter, no BSOD, all info with extended info is seen, card still 1Gbps, etc...the only thing I don't "see"....is the "boot" tab. Since it appears to be working, I would expect to see the boot tab to make the changes I was looking to do earlier.

Win 11 does not support PROSet anymore, so my next move I think will be to install Win10, PROSet and see what that brings with much new code and interface handlers.

So IMHO, I got "lucky" with whatever shit show just occurred, but damn, overall happy that it "appears" to be working as expected.

Any thoughts on my new path forward? Anything I missed before I nuke Win7 and go 10? The CTRL S thing for the boot PXE menu?

Phew, that was a lot to type.....LOL.

Last edited:
The ctrl-S menu is so sad, it's not really worth chasing.

IIRC, it has two settings to set:

Show boot agent message: yes/no

How long to wait for ctrl+s: 0/5 seconds

The boot agent has changed over time, so your version might be different, but if you can PXE boot (seems like probably) by poking in the firmware menus and you aren't tremendously delayed in normal boot, I think you're done here.

If you really want to get in, you've got to work on your timing... Gotta wait until after the stuck key check, but before the boot agent checks... If that doesn't work, give up.
(Modified by Chris) ... Annnnnnnnnnnnnnnnd if that doesn't work, give up.

Buuuhahahaha.....I can see you verbally say those words ....and yes, I'm at the point, I think I'm back to 100% and no further action is required.

I know my Lenovo Y700 has PXE too, never really thought much of it. But this has been an interesting learning opportunity.

Thanks for taking the time to help me along in this particular journey.

Best Regards,