Last weekend, as a result of a bought of insomnia and the inevitable boredom that with it, I started doing what I usually do – check for driver updates, firmware updates, BIOS updates, etc….

When I checked MSI’s website, I found that they hadn’t released an updated BIOS for my P45 Platinum bored in quite a while. Doing a little digging, I discovered why – they had apparently stopped updating BIOS on that board. The reason?

MSI “Click BIOS” – they’re own UEFI implementation.

On their public site for it, http://www.msi.com/html/popup/MB/uefi/about.html, not a lot of information is available. Only two motherboards are currently listed as supported: my P45 Platinum, the P45D3, and another which is ‘under testing’.

Doing a little Google’ing, I found that the firmware version they have available for download on the public site, 1.7, is apparently horribly out-of-date. The MSI forums pointed to the MSI FTP server, which unfortunately isn’t public. Another quick Google search, however, provided me with a working username and password for it. Once in, I found the latest version (confusingly labeled ‘e7512ims.100′, which would seem to make it 1.10, or 1.00) and downloaded it.

The flashing process was identical to updating a standard BIOS image, and in no time I was in.

Now, there are plenty of review sites that talk about the GUI of the Click BIOS, so I’m not going to cover that. Instead, I’m going to focus on three things: The EFI Shell, the onboard JMicron IDE/SATA/RAID and Intel SATA/RAID controllers, and finally, booting UEFI-enabled operating systems (Windows Vista and Windows 7).

EFI Shell

The EFI Shell is very, very basic. Once loaded, it shows a list of all attached storage devices and the “Shell> ” prompt. From here, you can select a device as you would in DOS or from a *nix prompt (ie, “FS0:”), and from there you can navigate with the ‘CD’ command and show files with the ‘ls’ or ‘dir’ commands. ‘HELP’ is available, however as there is no “MORE” command to pipe output to, you miss the first few commands listed. This can be overcome by typing ‘help a*’, which will list all of the commands starting with the letter ‘a’.

I tried to execute a few of the EFI applications that were available to me, such as the MEMTEST app included on the Vista and Windows 7 DVD’s, however I didn’t have any luck. In fact, the only EFI applications I was able to run were the boot loaders from those disks. We’ll get to that later, though.

Onboard Storage under UEFI

This is where things get tricky. When trying to install Windows 7 after the UEFI update, I wanted to be able to use a GPT-type drive. Unfortunately, with my Intel ICH10 controller in RAID mode, and the disks I wanted to install to in a RAID 0 array, I was only able to go through the first phase of the install process. As soon as it rebooted, the EFI boot manager wasn’t able to boot to the installation. It worked if I changed the controller to AHCI mode, though.

However, as I really wanted the RAID array, so I switched back to RAID mode. However, now my array wasn’t working. That’s when I noticed that during the POST process, it wasn’t showing the prompt to press ‘CTRL+I’ to enter the RAID manager. It also wasn’t showing the prompt for the JMicron controller. What was worse was I noticed my two IDE hard drives weren’t being detected, and hadn’t been since the upgrade.

Fortunately, a quick poke around in the Click BIOS GUI under the BIOS SettingsBoot Settings area showed where I had gone wrong. In order to be able to see the output from the JMicron and ICH10 controllers, I had to set the following to options:

Option ROM Messages: Force BIOS

Interrupt 19 Capture: Enabled

If these are disbled, Click BIOS goes in to a ‘silent’ mode and won’t display the messages or allow you to access the configuration utilities. And, in the case of the JMicron controller, won’t even initialize it.

The down side is, when these are enabled as above, the POST process takes longer, and will jump back-and-forth from the normal POST screen to the boot messages. Additionally, even with these settings, I wasn’t able to enter the ICH10 configuration manager with my USB keyboard. I had to unhook it, then connect a PS/2 keyboard, otherwise my key presses were ignored.

Update: Apparently, even with the above settings enabled, Click BIOS randomly refuses to initialize the JMicron controller. As such, my boot order frequently changes and I have to reboot repeatedly until the control is picked up, then enter BIOS and reset the boot order so my RAID array is the first boot device. Rather annoying, I must say.

Booting Windows in EFI Mode

This was annoying. First off, you can’t just boot directly from the DVD – you have to do it from the EFI Shell. With the disk inserted, boot to the shell (you can press F11 during POST to get there, or you can do it from the Click BIOS GUI through BIOS Settings -> Boot Settings (although for the GUI method to work, you need to change something and try to exit. On the screen that prompts you to save, you can choose to bypass the startup options and just jump to the shell).

In the shell, watch for what device your DVD is. If you need to figure out which device is which later, you can also use the ‘map’ command.

In my case, the Windows 7 DVD was FS0:. As such, I typed that, and the prompt changed to ‘FS0:\’. I then typed ‘cd efi\microsoft\boot’ to get to the boot files. Here’s where the big problem started.

To boot, there are two EFI applications available: ‘cdboot.efi’ and ‘cdboot_noprompt.efi’. If I tried the first one, the top line of my screen would show ‘Press any key to boot from DVD’. If I did, it would freeze there. If I tried the second, it would just freeze. Curiously, doing the same from the Windows Vista DVD (x64 with SP2 integrated) worked fine.

Apparently, the cdboot.efi used by Windows 7 isn’t actually EFI 2.0 compliant. Go figure, huh?

I was finally able to boot from the Windows 7 DVD with a bit of trickery. Here’s how:

1) Make a Windows 7 USB stick. Note: it has to be FAT32 formatted, so you need to do it manually. A guide on how can be found here. NOTE: When the guide says to type ‘FS=NTFS’ as part of the format command, type ‘FS=FAT32′ instead. MSI didn’t include an NTFS driver in Click BIOS, so it is only able to read FAT32 formatted drives.

2) Insert the Windows 7 DVD and and connect the thumb drive. Reboot the computer, then enter the EFI Shell. The reboot is required.

3) In the shell, check the drive mappings. You should have multiple entries, and the first two should be FS0: and FS1:. One of them should be mapped to the DVD ROM drive (you can tell because the line will include ‘cdrom’ in the device information), and the other to the Removable Storage Device (the USB drive).

4) Select the USB drive. In my case, FS0: was the DVD and FS1: was the USB drive, so I typed ‘fs1:’ and hit enter). Your prompt should change from ‘Shell:’ to ‘FS1:’.

5) Now type ‘cd efi\microsoft\boot’ and press enter.

6) Type ‘cdboot_noprompt’ and press enter.

7) Wait (this takes a while).

Now you’re running Windows 7 setup in EFI mode! Now you can use DISKPART to convert your OS drive to GPT and actually install and boot Windows in EFI mode (I may do a blog post about how to do this later).

A Lesson Learned

The take home from this? Although I eventually was able to get Windows 7 installed and booting from a GPT disk in full EFI mode, it was a real pain in the ass. Also, when I attempted to install the Intel chipset drivers, Windows refused to boot afterwords. As such, I just went back to a standard MBR-type disk and gave up on booting in EFI mode.

Click BIOS is pretty cool, but MSI still has a lot of bugs to work out with it, and Microsoft has a long way to go to make Windows EFI ready. I can only hope that I get in to the Windows 8 beta so I can start submitted EFI bugs!