Unbricking the MSI 890FXA-GD70 After BIOS Flashing Failure With an Arduino

Jul 2017: I found the code again, get it here.

August 2011 update: code no longer available online, mail and I’ll send it


For some reason, flashing the MSI 890FXA-GD70 with the AFUWIN utility will brick your motherboard. I do know, however, that the “flashrom” utility does support this board just fine. I had no trouble flashing under Linux using “flashrom“.

This motherboard uses a Winbond W25Q16 SPI FLASH memory chip. Fortunately enough it is fairly easy to unsolder and reprogram this chip with the help of an Arduino.

First of all, carefully remove the memory chip.

Wire it up to an Arduino:

  • GND (pin 4) to Arduino’s ground
  • VCC (pin 8 ) to Arduino’s 3.3V output (5V would likely kill the chip)
  • /HOLD (pin 7) to Arduino’s 3.3V output (5V would likely kill the chip)
  • /CS (pin 1) to Arduino pin 10
  • DO (pin 2) to Arduino pin 12
  • /WP (pin 3) to Arduino’s 3.3V output (5V would likely kill the chip)
  • DI (pin 5) to Arduino pin 11
  • Clock (pin 6) to Arduino pin 13
Grab the source code. Open up .pde inside the Arduino IDE and change the first line to “#define WriteROM” if you want to write or comment it out (“//#define WriteROM”) if you want to read the ROM contents. Then on the PC side run the script like this (requires python, pyserial and progressbar modules) :  “python biosrecovery.py readfile infile r” or if you want to write the chip “python biosrecovery.py readfile infile w” where readfile is the output file and infile the file the ROM will be written from. Also, you will need to change the path to your serial port in the biosrecovery.py script, the line in question is,
ser = serial.Serial('/dev/tty.usbserial-11BP0464', 115200)
It should be possible to run this script on Windows, hit up the pySerial documentation if needed.
Good luck!
This entry was posted in Uncategorized. Bookmark the permalink.

22 Responses to Unbricking the MSI 890FXA-GD70 After BIOS Flashing Failure With an Arduino

  1. pammomo says:

    Hello sinetek,
    Forgive me as I am new to wordpress. What is the best way to “mail” you?

    I was hoping to stand on your shoulders by utilizing your arduino and .py code to unbrick an intel board.

    I have a matching pair of intel brand 945 boards with SPI chips that are similar to that on your MSI …
    one of which I bricked by not upgrading to an intermediate bios as instructed by the current bios release notes and the other updated fine since it already had a bios that could be directly updated.
    I was hoping to read the contents from the working SPI and dump it into the other.

  2. Vladislav says:

    Hello sinetek, send me plz source code

  3. Andrew Trimble says:

    Hi, I realise this is over a year old but I was wondering if you still have the arduino code/python script. I could not find an email link to contact you

  4. tokigawaxy says:

    Hello, I have the same motherboard,this method can solves the short 4bips? thanks.

  5. awesomes8wc3 says:

    i need the source code but its been deleted! i have a compaq/asus m2n68-la with a corrupt bios which i connected to the arduino according to the pinout on HP’s page.

  6. Carlos says:

    Hey, could you send me the source code?

  7. Nicolas B says:

    Hello, my ASUS BIOS chip got bricked by an update failure. Can this metod brick the entire motherboard? Can you send the code? Thank you

  8. Sorin says:

    Hi, can this method work with this chip MX25U6435FM2I-10G? http://www.datasheet-pdf.com/datasheet/Macronix/829809/25U6435F.pdf.html The source code isn’t available anymore, can you please add a new link to it? Thanks

  9. Stream says:

    Hi Phil! The mediafire link in the article to the source code is dead! Do you have Github? Source code hosting is free there. Thanks for the article!
    I found some Arduino instructions here (http://www.flashrom.org/Serprog/Arduino_flasher). They seem to be different from yours but I’ll give them a shot.

    • sinetek says:

      Thanks for your input!

      I wasn’t aware of github back when I posted this, but if you have any trouble with Serprog I would be happy to assist. I still have the source code *somewhere*. I didn’t have to do much special to write to the chip, was just a matter of writing a page at a time.

      • Stream says:

        Thanks! I’ll post back if the instructions work out … though it might be a while since I have to first by soldering equipment.

  10. yuriy says:

    Hello sinetek, send me plz source code

  11. nevar says:

    Hello. The source code isn’t available anymore, can you please add a new link to it? Thanks

  12. RoDriGeS says:

    😉 well cheapest spi programmer on ebay from Bejing is enough lol 😉 big thx for article its education in one pill 😉 the blue one 😀

  13. Thedemon007 says:

    Hello sinetek please send me the source code…

  14. Tami says:

    Hi, could you please send me the code for arduino?. I have a winbond W25x80 and I would like to reflash it, so I can make the motherboard I got running again.

    Thanks sinetek!

  15. nomi says:

    can you please reupload the souce code. Bundle of thanks

  16. nomi says:

    can you please reupload the source code. Thanks

  17. KptHashtag says:

    Can you send me a source code? 🙂

  18. Pingback: Gravando BIOS com Arduino – Lucas Dias

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s