Sunday, September 30, 2012

Dealing with bad purchases

There is something emotional tied to every purchase we make. We spend time deciding which option is best, maybe check out review sites, and, at some point, cross our fingers and hope that the purchase decision is correct.

Of course, a percentage of the stuff we purchase will end up, for all intents and purposes, be total duds. There is a threshold of expense that determines how far we will go to make a dud somewhat tolerable to work with. When it comes to computer technology that tends to be expensive, we are willing to waste hours on the phone with technical support just so we can get back to our lives.

So, where is this post coming from? Well, back a couple years when netbooks were all the rage, I saw an opportunity to pick up a cheap Linux box via a Dell Mini 9 pre-installed with Ubuntu. It was $200 and I had plans for it and it has come in quite handy a few times for purposes I never really intended for it. It would have been a worthwhile purchase except for one little teeny-weeny problem:

The batteries "die" after 6 to 12 months. The orange battery light blinks incessantly and, when that happens, the netbook refuses to charge the battery.

The first time this happened, it was under warranty so Dell replaced the battery free of charge. I also did some research around that time and found a surprising number of posts online with plenty of other people complaining about the issue. So this was not some isolated incident.

The light came on again yesterday and I spent a good chunk of a perfectly good Saturday wrestling with a few suggestions I found online to upgrade/downgrade the BIOS. Hence, yesterday's post about how to flash a BIOS. The Dell Flash utility I found didn't allow downgrading to previous BIOS versions. So, I had to scour around a while to find the phlash16 command line I needed to get A00 loaded (phlash16 /x /n /s /mode=3 910_A00.ROM). Nothing worked. The orange light keeps blinking. Never mind that the battery is an official Dell battery, the contacts are clean, and it held a charge without any issues 48 hours ago.

So, basically, the Dell Mini 9 is a complete dud. But here is the thing: I'm pretty certain that the hardware is 100% okay. The electricity to the device is carefully regulated through an APC UPS unit. The forums online interestingly complain about alternate unofficial batteries causing the lights to blink erratically with BIOS versions A04 and above but NOT with A00 through A03. This leads me to believe that the BIOS software and the hardware are attempting to detect battery issues and then simply refusing to charge the battery if it "fails" and perhaps memorizing the battery ID or something lame like that in the process. Therefore, most of the "tricks" to get it to work again really involve getting the netbook to forget about the last battery that was connected to it. Let's suppose for a moment that the power fluctuates momentarily such as removing the power cable from the laptop, that transition to "battery only" is a delicate moment - if something during that transition fails, the system memorizes it as a battery fault and begins blinking the orange light of death. This may be why, during boot, I get about 7 seconds where the orange light stops blinking and then starts up again.

BUT! I'm not going to fiddle any more with useless equipment because Dell was unable to put together a decent piece of hardware and then coupled it with shoddy software (e.g. someone who can't type *BIOS* in correctly shouldn't be writing code let alone deploying BIOS updates).

But this post isn't really about the Dell Mini 9 but about dud purchases. For all intents and purposes, I've come to the inescapable conclusion that this was a dud purchase. So, what do we do when this happens? The seven steps of grief seem applicable here: Shock/Denial, pain/guilt, anger/bargaining, depression/reflection/loneliness, the upward turn, reconstruction/working through, and acceptance/hope.

Right now, I'm somewhere in between the "I'm angry at Dell for selling me junk hardware and then having the gall to replace the battery on a known issue instead of refunding my money/fixing the real problem" step of grief and the "I'm a bit depressed that I'm going to throw away what seems like a perfectly good piece of hardware" step of grief. The solution is probably to just go find another Linux-friendly laptop that doesn't cost a lot and walk away from this disaster. Having a laptop with Linux on it is fairly handy because Linux can work through certain complex technical scenarios a lot more easily than Windows can, plus some software either only runs on Linux or works better there.

I've made bad purchase decisions over the years. Review websites have improved things a bit by exposing bad manufacturers and forcing them to improve their quality through bad reviews. But I've still encountered dud purchases - which makes the feelings that follow even worse, "How could I possibly have believed that amazing 5-star review? Why, oh why, did I not pay attention to that one guy with the 1-star review? Why is there no 0-star review option for this product?"

There isn't a good way to deal with the grief that follows a dud purchase except to plow through the stages of grief as quickly as possible and move on. Sometimes it is fun to wallow in grief for a while because it does garner attention. I got you to read this far anyway. :)

Got a dud purchase you've made recently? Write a nice long comment about it. It'll make you feel better, I promise! Now I'm off to look at newer laptops.

Saturday, September 29, 2012

How to Correctly Flash a BIOS

Every computer comes with what is known as a BIOS (Basic Input/Output System). The BIOS contains startup and basic execution code that runs code before the CPU is handed control. In essence, it is the key piece of software on the computer that makes a computer start up in the first place.

Occasionally, motherboard manufacturers will release new versions of a BIOS, usually to correct manufacturing defects. Flashing the BIOS is a rather dangerous, but sometimes necessary operation. Doing this is also usually much more complex than it needs to be, which not only acts as a deterrent but also vastly increases the possibility of something going horribly wrong.

Before you go any further, heed this warning: Flashing a BIOS can brick your motherboard no matter how careful you are! Read everything two or three times and have a plan of action and a backup plan if flashing the BIOS fails spectacularly.

There is a right way and a wrong way to flash a BIOS. The wrong way is to do it from within Windows. Any motherboard manufacturer shipping a Windows EXE should be publicly shamed and humiliated. If you are a motherboard manufacturer, please just ship ZIP files - thank you.

The right way to flash a BIOS is to use a command-line flashing utility from a very minimalistic, single tasking OS with as few drivers loaded as possible (e.g. MS-DOS).

There are a few things that you will need to flash the BIOS:
  1. A correct BIOS ROM image file for your motherboard. If you bought the computer from a manufacturer like Dell or HP, visit their website and locate the BIOS in the downloads. If you built your own computer, you'll have to hope that the manufacturer and BIOS still exists. This has to be a 100% match or it will either brick the motherboard or simply not flash at all. You may have to extract the BIOS ROM image file from an EXE somehow if the manufacturer distributed it incorrectly. Ideally, this is a ZIP file consisting of a file such as "BIOS_01.IMG" and a "README.TXT" file that describes how to use the package. The latter file can be opened up with Notepad or another text viewer/editor. Also, locate the current version of the BIOS on the motherboard (if possible) so it can be reverted to if the update fails somehow.
  2. A DOS-based flashing utility that knows how to flash your hardware given a compatible BIOS image as input. The best manufacturers supply the BIOS ROM and the flashing utility separately. Ideally, the utility's exact location of where it can be obtained should be correctly referenced in the "README.TXT" file.
  3. A tool to make what is known as a "boot disk".
  4. A very minimalistic, single tasking OS for the boot disk (e.g. MS-DOS or FreeDOS).
  5. A storage medium with enough space for the boot disk image and all the files needed to flash the BIOS.
The first step is to get MS-DOS or similar installed on something that can be booted from. I prefer a USB thumbdrive for a boot disk. USB thumbdrives can be booted from but working tools that make them bootable are difficult to find.

There are two popular-ish tools for making a bootable USB thumbdrive under Windows (if you run a different OS, you'll have to scour the Internet), but only one comes with MS-DOS and FreeDOS: Rufus (GitHub version)

Run Rufus with a USB thumbdrive plugged in that you don't mind the contents getting wiped. For me, the process was quick and painless to put MS-DOS on my thumbdrive using Rufus under Windows 7.

The next step is to put together the flashing utility and BIOS ROM. Usually this involves just copying files. I recommend creating a directory called 'FLASH' on the USB thumbdrive and putting the files there. Important note: DOS has a very restrictive file naming convention of 8 characters + a period/dot + 3 characters. "Characters" must be A-Z, 0-9, hypen, or underscore for the best reliability. Ideally, no lowercase letters and definitely no spaces.

Once the files are on the thumbdrive, it is ready to go. I generally build the flash drive on one computer that I can return to if something on the target machine goes horribly wrong. Don't do this without having a second, functional computer around.

Plug the USB thumbdrive into the machine to be flashed. Boot it up and watch the initial screens for something like "Press F10 for boot options". When I miss pressing the key, I just power off the computer and try again.

The boot menu should contain a USB thumbdrive boot option - assuming the hardware isn't ridiculously ancient - both the motherboard and the thumbdrive have to support the feature. Select the USB thumbdrive boot option and watch the computer boot to DOS. Then run the flash utility as one does under a DOS command-line. One would hope that the "README.TXT" file contains accurate directions. In the event that there aren't directions, running the EXE by itself may work or try to find a DOS "batch file" (a file that ends in '.BAT') that is associated with the flash utility - it might provide useful hints on how to use the flash utility's EXE file.

If all goes well, the BIOS firmware will be updated with the version of the BIOS being flashed. If something goes horribly wrong such as a power outage or surge at the wrong moment or a cat presses Ctrl-Alt-Del, the motherboard could be bricked. More expensive motherboards ship with dual BIOS chips just in case flashing fails and can revert back to the factory BIOS. Flashing is best done with power through a functional UPS backup, even if it is a laptop, and kicking animals and small children out of the room.

Each BIOS is completely different as far as updating firmware goes. The scenario described above is the ideal scenario. It would be something that simply works but the reality is that the people authoring BIOS code lack brain cells when it comes to deployment. Because there is no official standard for BIOS deployment, you'll most likely have to wrestle with the ideas a bad programmer came up with just to get the silly thing to work properly (Dell: I'm glaring at you).

The computer hardware industry needs to standardize on a few things yet. This seems to be one of them.