A New Arrival–The Minnowboard MAX Device. Getting Windows Installed…

I’ve recently managed to get my hands on one of these Minnowboard MAX devices;

WP_20141208_10_56_57_Pro

That’s a relatively new development board with a whole bunch of features that you can see here – I’ll admit that I was surprised at the power of some of the specs although given the specs of a modern phone or tablet I perhaps shouldn’t be so surprised as to what can be crammed into such a small package. This has;

  • 64-bit Intel Atom E3825 Series SoC, dual-core at 1.33GHz
  • Intel HD Graphics
  • 2GB of RAM
  • (micro) HDMI output
  • Gigabit ethernet
  • USB 3.0, 2.0
  • Micro SD, SATA2

and then a whole bunch of additional connectivity options that I’ve yet to explore in terms of plugging in sensors and so on.

I don’t know whether these boards are so easy to come by at the moment as they’re new but I managed to get hold of one of these from Mouser and also made sure that I had a 5V, 2.5A power supply and a micro-HDMI->HDMI adapter and a USB hub via which I can connect a keyboard and mouse.

I’ve had the device for around a week but I hadn’t yet had a chance to plug it in and do anything with it so, today, was the first day that I plugged it in and switched it on and got a UEFI shell prompt from it;

image

My initial aim here was to see if I could get something up and running on this device and my first thought was to try and get Windows onto it.

I know there’s a “Windows Developer Program for IoT” so I had a look at that site which you can find here;

image

but, as far as I know, that’s specifically targeting the Intel Galileo development board right now and I suspected that attempting to use those bits on a different board might be a bad idea so I didn’t go down that route.

Instead, I decided to see if I could get Windows 8.1 Embedded onto the board, working through the instructions here;

Minnowboard MAX hardware development board

The steps that I took (largely following that page) were as follows…

Updating the Firmware

  1. This set of Documentation says to type Exit at the shell prompt to get a view that shows the firmware version and my board was running 64-bit firmware at version .0071.
  2. The latest version of the firmware appears to be .0073 (taken from https://uefidk.com/content/minnowboard-max) and so I downloaded that and then copied the .bin file and the .efi file (64-bit) to a USB key.
  3. I spent a bit of time trying to figure out how to map my USB key such that the device could see it. I tried a few commands before realising that I just needed to Exit the shell after plugging in the device and then re-enter the shell and “voila!” the device showed up mapped as fs0 (which I could then confirm via the map command).
  4. I could then update the firmware via the downloaded FirmwareUpdateX64.efi program, feeding it the .bin file. I was very pleased to see that the command shell did filename completion given the extra-long-name of the .bin file here.
  5. The updater spun for a while and I found myself with a .0073 firmware version after restarting.

Getting an Operating System

From there, I went off to MSDN and downloaded “Windows Embedded 8.1 Industry Pro with Update (x64)”. The evaluation edition from here is the other option.

Again, following the website instructions, I went and grabbed the “WDK Development Boards Add-On Kit” from Codeplex and went through the steps outlined on the website to make a bootable USB key via the supplied Create-DevboardKey PowerShell script.

That script kept hitting me with an error.

image

In fact, it was hitting me with a number of errors and it wasn’t particularly obvious to me which one was the blocker but after a few minutes I think I worked it out in the sense that the documentation was telling me to run this command;

image

but I think with the particular .WIM file that I downloaded from MSDN the “-Index 2” part of this seemed to be wrong. I found that switching to “-Index 1” worked out fine whereas any other value seemed to give me an 87 (i.e. invalid parameter) error so I presume that I’d somehow got a slightly different download to the one being worked through in the article.

That script ran for “quite some time” but in the end produced an image file that I could use to boot the device up from the USB key into Windows.

Booting Windows

I booted up into Windows from the USB key. I’d expected that booting might take an awfully long time given the specs of the machine and the fact that my USB key is old, is only 8GB large and I’m not sure it’s very fast.

But…boot time wasn’t too bad.

At this point, it’s time for a bit of honesty. I haven’t booted Windows 8.1 Embedded before and haven’t done much with the embedded family for quite a while so I wasn’t entirely sure what to expect in terms of the experience but you get dropped into the usual Windows 8.1 setup experience where you need to do bits like;

  • Set up region/language
  • Name the PC
  • Create a user account

Now…at the first step above I got a bit stuck. This might be a one-off thing but I had the board configured such that;

  • I had my USB key in one USB slot with the OS on it.
  • I had a USB hub with a keyboard in it in another slot.

I found that at the “Region/Language” page of setting up Windows, my keyboard didn’t seem to work and I didn’t seem to be able to select anything or move on through the process. I hit this twice and it felt like the device had just locked up because I couldn’t seem to reboot it via it’s power button either (i.e. I had to unplug it).

On third attempt, I tried plugging in a USB mouse and was a bit surprised when I suddenly got a mouse pointer and that let me carry on the setup process. As I say, that might be a one-off thing that’s specific to my setup but I thought I’d jot it down here just in case – the mouse saved me Smile

The next minor stumbling block was that I got an error message about the OS not being able to apply group policy at the point where I logged in. The screen went black for quite a while and then I’d see a “failed to apply group policy” error.

I went with my usual “ignore it and see if it goes away” type approach and, sure enough, next time around I managed to log in and get to a desktop and a start screen;

image

So that’s “Hello Windows” Smile

I should say that not long after this Windows said “You don’t have much disk space” and I wasn’t entirely surprised given that it was running off an 8GB key.

It’s also running pretty slowly in this setup – you can almost feel bits of the OS and apps being paged into memory from the USB key and then those cached bits start to run a bit faster once they’re in memory and things become a bit more usable.

Adding Drivers

As per the original instructions, when Windows boots it is lacking quite a few drivers. Here’s device manager;

image

and so I added another USB key as per the instructions ( via a hub – the 2 USB slots on the board mean that I need a hub to connect 2 USB sticks along with a USB keyboard and mouse ) and went about installing the “embedded drivers” and graphics driver that I’d copied to that new USB key

However…that was the point at which my 8GB USB stick pretty much ran out of road Smile and the driver installation bits failed because of disk space (Windows says it has 40KB free on that 8GB USB key).

I think I’m going to have to get a bigger stick and try again…I’ll update the post when that happens…

Update – 16th December, 2014

I managed to get hold of a 32GB USB stick and repeated the process above to get the OS onto that stick. With that in place, I managed to progress through such that I’d got the drivers installed and I also seemed (with a modern stick) to get the boot time down such that I can go from cold boot to the Windows login screen in around 25 seconds which doesn’t feel like an unreasonable boot time.