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!

SwagCopter – a Multirotor UAV !

So. These last couple months, I’ve been learning about multirotors… It’s a novelty, you never see any around here :(. Well, long story short, it turns out the project is on the brink of success:

The video above features a quadrotor built by a friend of mine. It runs code we wrote in C++, targeted for the MEGA328 chip. Our goal was partly to get our craft airborne and also start from a clean code base we feel would be easy to maintain over the long term for us.

Now, the single most important item on the TODO is adding support for the tri’s!

GUI toolkits: thoughts + MSEide enhancements

So, in the past few weeks multiplatform GUI toolkits have been for me somewhat of an interest. On one hand they allow quick application development, at least the GUI part of that, and let the code flow better by avoiding clutter. On the other hand though most platforms seem unnecessarily complex and difficult to setup. The most known open multiplatform widgeting system is most likely WxWidgets. Among its friends are Qt and GTK, mostly used in heavier applications such as the KDE and Gnome desktop environments.

Now, I develop for windows. Effectively this restricts me a bit in the choice of framework as GTK doesn’t really work well under this OS, its environment of choice being linux. I find Qt way too heavy for the kind of applications I need to make, so that’s out too, although still a very good choice otherwise. WxWidgets, also formely known as WxWindows is still a bit big for my liking, weighting in excess of 4MB once compiled, but the main problem with it in my opinion lies in its kazillion of classes and stuff.. totally hard to maintain. There’s also no easy way to click-design.

Anyways, recently I’ve discovered another alternative to those three giants but designed with simplicity in mind and programmed in Pascal : MSEide+MSEgui. The IDE’s main form however lacks a button for ‘make and run’, allowing only a debug run of the currently opened project so I took the liberty to hack the source a bit and came up with : mseide

The first icon R4 ( 🙂 ) means: Run Make4, the directive that tells FPC (free pascal compiler) to apply optimisations and ignore debug symbols. For some reason GDB kept crashing on my system so the normal ‘debug run’ button wasn’t really an option.

So, I managed to write some code with the toolkit after a few hours. Not bad at all !