I bricked my Dell Optiplex 3010 and have a couple questions

[First post on forum, so please forgive me if I’m posting incorrectly :slight_smile: .]
Using fptw64.exe -d -bios, I had extracted the BIOS region from my Dell Optiplex 3010’s BIOS (motherboard model 042p49; Sandy Bridge). I flashed ReBar-enabled versions of the BIOS numerous times successfully using fptw64.exe -f -bios. But after the latest flash, my motherboard did not boot. The display was blank and it would just power cycle, but never actually boot (no POST). I may have forgotten to include the “-bios” switch on the last flash. Would that have blown things up or is FPTW64 smart enough to account for my omission?

I then bought a CH341A programmer (black; not voltage modded) and after several BIOS flash attempts, the motherboard only powers on (CPU fan spin, etc.) but nothing ever appears on the display. I still have the original dump made with “-bios” mentioned above in case it contains useful information. I’ve tried so many things at this point the BIOS chip on the motherboard (mx25l6406e) is in an unknown state. I have only a modest understanding of BIOS layout and started playing with BIOS mods in late 2022, so I’m still a novice.

Can anyone tell me how to recover this motherboard to working condition? If I’m posting in the wrong forum, could the mods move my question or tell me where to post? I’ve read tons of really interesting posts on this forum and learned a lot in the process, but I really feel stuck at this point and nothing seems to be working.

fptw64 doesn’t care what it writes where, that’s known. It doesn’t ask to many questions what makes it a rather powerfull tool. It just compares what it was supposed to write with the content of the chip after flash and gives a ‘task accomplished’ if both are identical. So you should know what you’re doing and do it carefully…

You overwrote you flash descriptor and ME and possibly the beginning og bios region with the bios region thus successfully bricking your system.

Did you dump the content of your chip before flashing it?

Post or attach here

  • the dump you had from your original system and
  • the last file you tried to flash and
  • the actual content of the SPI chip.

Hello lfb6,
Thank you for your explanation about how fpt464 works. It’s a nice tool; I simply employed it wrong that one time and as you said, it doesn’t ask questions. I will be more careful going forward.

Here are the files you asked about:
The dump I have of my original ROM is attached as 3010originaldumpedbiosregion.zip. Fptw64 extracted it as a 6MB file. I believe this is only a dump of only the “BIOS region” as I used the “-bios” switch when extracting it.

The most recent file I downloaded and attempted to flash unsuccessfully is attached as “3010 A11.zip” and it is 8MB, the size of my mx25l6406e BIOS chip.

I’ve extracted my current BIOS to a file and it is probably a complete mess at this point. It is attached as the 8MB 3010-current-broken-bios.zip.
3010originaldumpedbiosregion.zip (3.2 MB)
3010-current-broken-bios.zip (2.6 MB)
3010 A11.zip (4.2 MB)

Thank you for any time you spend looking at this. Now that I have a CH341A programmer, I will make sure I have (verified) backups of my BIOSes before modding them going forward.

Edit to add: I downloaded the latest version of the BIOS from Dell in EXE format and extracted its contents using Dell_PFS_Extract.py, but I was unable to put the BIOS back together successfully. I’ll attach those extracted files just for reference.
O3010A22.exe_extracted.zip (4.1 MB)

Thanks for the files.

If ‘8MB 3010-current-broken-bios.zip’ is the actual content of your SPI chip then you have a reading/ writing problem. The complete file is a similar looking gibberish:

  • We’re missing an original FD and ME of your machine. The files found on the internet might’ve been fiddled with or not, they may have an unaltered, altered or corrupt ME…

  • There’s proof of a non- working read and write process at least once in the process.

How often did you dump your SPI for the attached file? Did you do it at least twice and the results of both reads were a 100% bytewise identical? (HxD, Ctrl-K = compare files)?

If not please do so until you get reproducable identical results!

1 Like

Hi lfb6, just wanted to close the loop and thank you for your responses. I was finally able to successfully flash a BIOS posted on badcaps.net that was reported good by several users. I ended up using a Raspberry Pi 3, the ch341a (black) programmer, and flashrom built into Raspberry Pi OS to flash the ROM. I can’t say for certain that flashrom/Linux was the fix or that neoprogrammer/asprogrammer was the problem in my case because I changed too many variables at once. Note: My rPi4 didn’t work; the light on ch341a kept flashing weirdly just by being plugged in to the rPi4 and I didn’t want to use the GPIO on the Pi with my test clip unless I had to. Upon first successful boot after flash, Dell BIOS prompted me to enter the Dell Service Tag which I luckily was able to recover from previous 6MB “BIOS Region” dump. Upon installing Windows 11 to this old mobo (thanks to Rufus) and providing my Microsoft account/password, Windows showed as activated.

Thanks for pushing me in the direction of revisiting my flashing process which led me to Linux/flashrom. Side note: The major motivation for fixing this Optiplex 3010 is as a test bed for flashing an Optiplex 9010 with coreboot. (It’s the only Dell listed as supported on the coreboot site and just by chance, I have one.) :open_mouth: I needed to get flashing down solid before I blew up another motherboard. I will of course dump/verify both BIOS chips using multiple methods before doing any writes this time around. :slight_smile:

1 Like

Thanks for the feedback.

Yes, there are several dumps floating around which are identical in ME configuration. So either they all have the same parent (bad, but could be excluded having them different versions and service tags) or they may be close to stock / unchanged (since it’s not probable that all different images had been fiddled with the same way- that was the case here)

So the proposed (cleanest) way would’ve been to take

  • Re-initialize the ME of such an image according to
  • Take FD/ME from this image,
  • Take a stock bios region around same version of your own bios
  • Transfer the DVAR block (padding between second NVRAM and first EFI volume to the stock bios - size 0x10000)
  • Combine prepared stock bios and re-initialized FD/ME block to a complete image.
1 Like