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!

21 thoughts on “Unbricking the MSI 890FXA-GD70 After BIOS Flashing Failure With an Arduino

  1. 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. 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

  3. 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.

  4. 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

    • 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.

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

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

  6. 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!

Leave a Reply to nomi Cancel 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 )

Google photo

You are commenting using your Google 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