Windows 10 IOT on a Raspberry Pi 2
I’ve just installed Windows 10 IOT edition on a Raspberry Pi 2 – and I have my suspicions that this isn’t necessarily the same operating system that I am running on my laptop.
Let’s have a bit of context
The challenge to IT – and indeed to us developers – is that users are no longer experiencing our applications or operating systems on the boring beige box like they used to. People are just as likely to use their phone or a tablet as a laptop or a desktop to run that shiny new app. This is something we need to consider when designing the user experience for our products – be they operating systems or applications.
So Microsoft has been working towards unifying their operating systems – which is why you can now get windows 10 running on mobile phones such as the Lumia 550 or Lumia 950 and even the Surface product range. I believe that Microsoft are talking here about the main kernel for their OS, rather than the whole OS. A window manager for desktop PC’s would be very different from a window manager for Mobile phones or tablet based systems. Except that I don’t believe they have gotten around to their IOT offerings yet.
Microsoft’s process for interacting with Raspberry Pis, and turning them into IOT devices is simple enough. Instructions and write ups for the Raspberry Pi can be found here but Windows 10 IOT also supports Minnowboard MAX and the Qualcomm DragonBoard 410c – but with DragonBoards costing roughly £60, and minnowboards going for roughly £100 , the obvious choice is a raspberry pi costing £30. I happen to have a spare raspberry pi hanging around, so I thought I’d give it a go. I set up the pi using the IoT Dashboard Tool.
After my machine had booted, I clicked around on the web based dashboard, looking at my wondrous new machine that was connected to the TV in the other room.
Yes- so that’s definitely my Raspberry Pi2 running Windows 10.
Clicking on some of the options I found a debug page, which listed 2 errors – which I thought was strange considering that the device was doing nothing.
Out of the box – 2 errors. Hardly inspires confidence.
Being the inquisitive sort I clicked on the first error, which confusingly is at the bottom of the list :
|1/21/2016, 10:50:46 PM
||Critical unknown a0795c9de6cdb1f43e165a29b7f6d42caeb2b
Clicking on the Name took me to a detailed screen showing more information about the error :
Confused by an obscure error? This page will help clear it right up.
The friendly name for that error : WindowsPhone8ExecManService
I’m not a gambling man, but I reckon that all Microsoft have done here is compile their windows 8 phone OS for the ARM chip on the Raspberry Pi, and replaced the front end string resources with “Windows 10”. For those interested, the Chip in the Raspberry Pi is a quad-core ARM Cortex A7 – the same processor running on the Microsoft Lumia 550 – which while based on the SnapDragon 210 SOC, has ARM Coretx A7 Processors.
Was able to find something for the WindowsPhone8ExecManService error on stackoverflow :
The value EM_WATCHDOG_TIMEOUT likely indicates that you have blocked the UI thread with a long running piece of code or a wait of some description.
Mark Radbourne [MSFT]
So we dropped ourself in it – sort of. There was a mention made on the April 1st episode of the Dr Who episode randomiser. Now the randomiser was a project idea that we had here at the bunker. So spurred on by the latest episode we started examining the options. The premise is that there is a piece of software that picks a random episode from Dr Who.
Sounds simple right? Create something that will search through a collection of episodes and return a random one from the list. But there were a number of design decisions that we needed to look at :
- The Data
The HooOnWho show looks at a subset of the available Dr Who episode. These episodes are classified as Classic Dr Who, rather than the newer episodes – but how do we classify these? We could use the Dr’s themselves. Now the original series went into hiatus under the stewardship of Sylvester McCoy, and he handed the torch to Paul McGann in the 1997 Movie.Does that mean that only episodes featuring those first 8 Doctors should be used? after all Peter Davison did appear in an episode (time crash) with David Tennant.
- The Platform
The TitaniumBunker are primarily a PC house1 (with the exceptions of Rachel’s Iphone and Ipod) and I’m predominantly a Linux user. The Hooies are mainly macintosh.
- The functionality
How should the program operate? Should the program only select from DVD’s that the HooOnWho Team have access to? Or should it provide any episode.
Now we do have access to a TitaniumBunker macintosh, but realistically we need to be able to develop on PC, under windows or Linux, and be able to distribute anywhere. Therefore I have made a few design decisions which I am documenting here.
Data and storage
SQLite seems an obvious choice. The advantage from this free format is that is supported on Android, IOS, macintosh, Windows and Linux Platforms, and a partially populated Database can be distributed with the application. A SQLite Database has been created with basic episode information stored within – for example which actors played the Doctor, and will eventually store an episode list, allowing the user to select random episodes from a particular Doctor’s reign.
I am currently developing a prototype using Titanium – a Cross platform tool. Currently the plan is to build the application and make it work under Desktops. Desktop support is currently being spun off to a separate project. I personally think that this is a bad idea. I can see the justification behind such a decision, but I think that this drastically reduces one of the main points for the project. Primarily that once I am happy that the application works well, that I can make versions of that application available to all desktop and mobile platforms without needing excessive re-writes. the work to spin off the Desktop side is still work in progress, and nothing is available yet. Perhaps it will do the project good, but I do get the impression that cross platform desktop support was a happy accident of the Titanium model. There isn’t even intelli-sense support for Desktop, but this does seem to exist for Mobile.
By trade I am a .NET developer, so the idea that I’m going to abandon a strongly typed language in favour of a dynamically typed language hasn’t exactly filled me with joy – I suppose I have been spoiled by the benefits that the .NET development environment gave me. Maybe I’m just too much of a dinosaur.
I see the application allowing 2 modes of use. Primarily the user will be able to add episodes. Each episode will have a cast list, which can be edited later if needs be. In addition a DVD will be marked as to whether the DVD is owned by the user, and whether it has already been reviewed.
At some point the user may want to select the random episode. The user fills in some selection criteria – for example ticking a box for “Only select DVD’s that I have”, Additionally the Search can pick only episodes where a particular actor is involved. Initially the ACTORS table contains the 11 Doctors, but there would be nothing to prevent companions to be added to the list, allowing the user to pick a random Adric episode, or random . The User can also select whether to include or exclude DVD’s that have already been reviewed.
Now the interesting part – how do you select a random record from the episode list? Well a quick perusal of stack exchange revealed this suggestion :
SELECT * FROM table ORDER BY RANDOM() LIMIT 1;
This code allows the selection of potentially any number of random episodes – if you want to pull 10 episodes then replace the limit count with 10. It all seems so simple. Development under Titanium Studio is currently stalling a little due to issues I am currently having installing a Database.
I’ll try and keep this updated as I make progress.
1The exceptions to this are : Rachel’s 3rd generation Ipod, Rachel’s Iphone 3GS, and My Ipod Nano (I do run RockBox on it – so I count that as a moral victory)
So, Dave’s been ripping the perverbial out of me – as A programmer by trade I have (to date) contributed 0 games or utilities. Dave on the other hand has done WITWICB, and PPPC, and has recently completed his own android companion app he calls Heston.
I won’t spill the beans about heston – I’ll leave that to dave….but all this gentle ribbing reminds me of that episode of big bang theory (Series 4 Episode 08 – The 21 Second Excitation) where sheldon was quoting picard.
Not again…the line must be drawn here…This far, no farther.
So I am working on a python version of Simple Dalek. The plan is to re-develop the entire think using pygame, and I’ll aim to update via this blog.