Raspberry Pi And Windows 10 IoT Core: A Huge Letdown

Last Spring, Microsoft unveiled their plan for Windows and the Internet of Things. It starts with the Raspberry Pi and Windows 10 IoT Core – a stripped down system with Windows API calls running on an ARM architecture. Yes, Microsoft is finally moving away from the desktop, building a platform for a billion Internet of Things things, or filling the gap left by tens of thousands of POS terminals and ATMs running XP being taken offline. Either one is accurate.

Earlier this week, Microsoft announced the first public release of Windows 10 IoT Core. This is the review, but here’s the takeaway: run. Run as fast as you can away from Windows IoT. It’s not worth your time unless you have a burning desire to write apps for Windows, and even then you could do a better job with less effort with any Linux distro.

When Windows 10 IoT was first announced, there was great hope for a Windows RT-like experience. Being able to run real Windows applications on a Raspberry Pi would be a killer feature, and putting Skype on a Pi would mean real Jetsons-style video phones appearing in short order.

Windows 10 IoT core isn’t so much an operating system, as it is a device that will run apps written with Windows APIs: there is no shell. If you want to control dozens or hundreds of devices, each running a program written in Visual Basic, JavaScript, C#, or Python, this is for you.

devicemanagerThe majority of interaction with Windows 10 IoT Core is over the web. After booting and pointing a browser to the Pi, you’re presented with a rather complete web-based interface. Here, you can check out what devices are connected to the Pi, look at the running processes, and run new apps. Think of this feature as a web-based Windows control panel.

While Windows 10 IoT uses the HDMI output on the Pi, this is merely informational, the video output capabilities of the Pi reserved for application-specific displays – digital signage, POS terminals and ATMs are where Windows 10 IoT Core excels. For general-purpose computing, you’re better off looking elsewhere.


Officially, the only way to install Windows 10 IoT Core is with a computer running Windows 10. There are a few ways around this is with the ffu2img project on GitHub. This Python script takes the special Microsoft .FFU image file format and turns it into an .IMG file that can be used with dd under *nix and Win32DiskImager on Windows.

Yes, Windows 10 is free for everyone with a relatively modern Windows box, but since the only requirement for running Windows 10 IoT core is putting an image on an SD card and monitoring a swarm of IoT Core devices, there is no reason why this OS can’t be supplied in an .IMG file.

After putting the image on an SD card, installing Windows 10 IoT Core is as simple as any other Raspi distro: shove the card in the Pi, connect an Ethernet cable, and give it some power. No, you don’t need a keyboard or mouse; there’s very little you can actually do with the Pi. In fact, the only thing that is displayed through the Pi’s HDMI port is a screen giving you the IP address and what USB devices are attached.

The totality of the Windows 10 IoT Core experience

You do get a few options for language and network settings, and there are a few tutorials and examples – connecting to Visual Studio and blinking an LED – but that’s it. The base user experience of Windows 10 IoT Core is just network information, a device name, and a picture of a Raspberry Pi.

There are a few shortcomings of the Windows 10 IoT core for the Raspberry Pi. Officially, the only supported WiFi module is the official Raspberry Pi WiFi module with a BCM43143 chipset. By far, the most popular WiFi module used for the Raspberry Pi (and something you should always carry around in your go-bag) is the Edimax EW-7811Un, a tiny WiFi module that uses a Realtek chipset. Odds are, if you have a Raspberry Pi 2, that WiFi module you picked up won’t work. Common sense would dictate that you could install the Windows driver for the Realtek chipset, but this is not the case; no Windows driver will ever work with Windows 10 IoT core. Even devices from the Raspberry Pi foundation, like the Raspberry Pi camera, are not supported by IoT core

If you’ve ever wanted clearer evidence the Windows 10 IoT core is not meant to be an extensible system like every other Linux-based single board computer, you need only look a little deeper. Digital audio is completely ignored, and pins 8 and 10 – normally reserved for a 3.3V UART on every other Raspberry Pi distribution – are reserved pins. Microsoft managed to make a single board computer without a hardware UART.

Fortunately, some of these problems are temporary. A representative from the Windows On Devices team told us more WiFi dongles will be supported in the future; the only driver they were able to bring up in time is the official dongle from the Raspberry Pi foundation. A similar situation of engineering tradeoffs is the reason for the lack of UART support.

Who is this for, exactly?

The idea that Microsoft would put out a non-operating system without support for the de facto standard WiFi adapter, a hardware UART, or drivers for the majority of peripherals is one thing. Selling this to the ‘maker movement’ strains credulity. There is another explanation.

The Windows 10 IoT Core Watcher, the remote admin app for multitudes of Pis.

Let’s go over once again what Windows 10 IoT Core actually is. By design, you can write programs in Visual Studio and upload them to one or many devices running IoT core. These programs can have a familiar-looking GUI, and are actually pretty easy to build given 20+ years of Windows framework development. This is not a device for makers, this is a device for point of sale terminals and ATMs. Windows XP – the operating system that is still deployed on a frighting number of ATMs – is going away soon, and this is Microsoft’s attempt to save their share of that market. IoT Core isn’t for you, it isn’t for me, and it isn’t for the 9-year-old that wants to blink an LED. This is an OS for companies that need to replace thousands of systems still running XP Embedded and need Windows APIs in kiosks and terminals.

Save your SD card

For anyone with a Raspberry Pi 2 and an SD card, the only investment you’ll make in trying out Windows 10 IoT Core is your time. It’s not worth it.

While Windows 10 IoT Core is great for any company that has a lot of Visual Basic and other engineering debt, it’s not meant for hackers, makers, or anyone building something new. For that, there are dozens of choices if you want an Internet-connected box that can be programmed and updated remotely. The Cloud9 IDE for the Pi and BeagleBone allow you to write code on single board computers without forcing you to install Visual Studio, and Linux is king for managing dozens or hundreds of boxes over the Internet.

This is not an OS that replaces everything out there. A Linux system will almost always have better hardware support, and this is especially true on embedded devices. Windows 10 IoT Core is a beginning, and should be viewed as such. It’s there for those who want it, but for everyone else any one of a dozen Linux distributions will be better.

222 thoughts on “Raspberry Pi And Windows 10 IoT Core: A Huge Letdown

    1. Don’t confuse Windows 10 desktop with Windows 10 IoT – two completely different projects with two completely different code bases.

      They share API definitions, little else…


      1. This is very wrong, there is massive code reuse from the kernel up to the UWP framework and API. While it may not have all the desktop extensions such as the shell and Cortana, the rest is the same code; in fact on something like the Minnowboard Max, it will be the same binaries.

  1. the more i read such articles like this, the more i love windows. which i always liked even without those butt hurted zealots. really, what is written here, the tinality, overall hysterical, – even is not worth to stop on, just shitting with bricks. linux fungirls allways get so nervous when windows is showing up on the horizon, and turn themselves into brainless hysterics, why, maybe they feel their ugly crappy ‘realest of the real os’ is going to be kicked out like it IS on desktops? so freaking ‘serious, over serious embedded linux guys… which know what the pointers are… ” gosh… is this really written by the adults? with a normal mental health? anyway, thanks, i knew that linux fanatics are mostly such morons. you have just proven this, by this article, and bunch of ‘serious’ guys’ comments.

    1. I’m glad to hear that Microsoft has a loyal customer in you. You must be paying several hundred dollars every few years for a new Windows version. Also, to be productive, you must at least be paying for MS Office package. If you want to continue paying for their products, that is fine. But many have seen the light. Now, if you are not paying for their products, and you are using them, you are a thief. Have a nice day.

      1. “You must be paying several hundred dollars every few years for a new Windows version.”

        No, he mustn’t…

        The vast majority of home users obtain MS operating systems pre-installed by mfg. if they don’t, then the purchase of a retail copy has, from Vista thru today’s current version Windows 10 sold for about $139. If you bought each verizon on it’s release, your total investment over the past 10 years would be $139 for Vista, $139 for Win 7, and $139 for Windows 8, with Windows 8.1 and now Windows 10 being free, or about $400 spread over the last 10 years or so.

        A copy of office can be purchased for about $100 (home & student version), so office 2007 was $100, office 2010 for $100, and office 2013 for $100.

        So to keep current on the latest OS and never buy it pre-installed on a new computer could run you about $40/year. That same dogged insistence to run the latest version of Office would be about $30/year. Your annual cost could be less if you are willing to, for instance, remain on Windows 7 and skip Windows 8 an/or skip Office 2010 and/or Office 2013. But what if you buy a new computer? That’s what’s great about RETAIL copies of the OS, they are transferable (unlike pre-installed OEM versions).

        So, to remain absolutely current with Windows and Office from MS, it’s about $75-100/year, less if you stick with older software (as most users do).

        What I always find fascinating is how many Linux advocates are so uninformed about the MS products they rail against, even though their initial defense of Linux relies on (at the best) imagined costs of running windows.


  2. Now now, being nice to the fanboys, else you will make them feel the need to move out of mom’s basement and get actual productive paycheck-producing jobs. Plus, the longer they stay in the basement being fanboys the better it is for the rest of us that have to get things done in the real world of revenue-generating “business”.

  3. “Raspberry Pi and Windows 10 IoT Core: A Huge Letdown”

    What did you expect? It’s a Microsoft product.

    Now not only can you be let down… You can also be sure that all your data on any device using this criminal corporations’ code is now less secure than it ever was. You can take pride in knowing your devices have been backdoored for national security reasons, leaving exploitable holes for others to play around with as well.

    Way to go.. I’m so glad that not getting a real IT education and preferring the “point-n-click” server interface that MS provides was worth it.. Thanks for your assistance in helping to fund a soul eating and Constitution burning monster of a bastard corporation.

  4. im late to the discussion but here are some points that i feel.
    * security [for sure]
    how is mantaining security? m$? LOL m$ is already know to NOT to be count on
    ex: a special sequence is send on the reserved RX,TX lines and this open a special shell that give full control of the hardware. so ATLEAST DO NOT use windows for your house main door.
    from security prespective, the worst thing to use.

    * how will m$ make money out of IOT market [for sure]
    ofcouse they will not be giving free in future.
    right, from hardware manuf. (like the 90’s),
    they will? apply the same unethical technique to keep other os vendor from market like 90’s
    ex: windows ARM phone are locked to windows only (UEFI locked), same for IOT hardware.
    so, not free as in beer

    * limited driver. [less likely]
    if m$ write crappy driver for one vendor and better driver for another vendor. (possibly incorrect statement – could result in lawsuit)
    another vendor make more money.
    you are not free (as in freedom)

    * opennes (transparency) [for sure]
    anyone can look into Linux code and fix things.

    * optimize [more likely]
    so, for IOT hardware, m$ set that you atleast need X amount ram.
    now, you are limited with less number of vendors and those only whom m$ endorse.

    * code or functionality limit. [maybe be]
    like Keil, IAR shit, there will be limit on code and functionality in future application.

    * late market problem [less likely]
    if m$ is not able to keep up (and if goes bankrupt i hope!) you are left with nothing

    * lock-in [will be]
    m$ well known strategy. everyone is aware of.

    so, why not use a well known and mature platform (Linux kernel and other userspace utilities) for this.
    it is both free as in freedom and free as in beer.

    “For anyone with a Raspberry Pi 2 and an SD card, the only investment you’ll make in trying out Windows 10 IoT Core is your time. It’s not worth it.”
    so, if i consider from that prespective. the statement is correct

    1. It’s really hard to take anyone who abbreviates Microsoft as M$ seriously. It instantly brands you as a troll, and/or linux fanboi.

      Your statement on Windows IoT security is basically incomprehensible. I’m guessing English is not your first language so maybe the quality of your writing can be excused, but the misleading or flat out wrong content is not excusable.

      The only reference I can find to a special command sequence on the TX/RX lines with Windows IoT is your comment here. Such an accusation should surely be accompanied by a citation of some sort if you wish to be taken seriously.

      It really looks like you believe the MS of today is the same MS of the 90’s and early 00’s which is clearly not true if you are paying attention.

      Windows IoT is not the best thing to happen to embedded development, but is far from the worst thing to happen. There are a great many .Net developers out there who will benefit from Windows IoT. I know many of you have said, “just learn linux”, which is really horrible advice to give to a .Net developer. Sure they could learn linux, or they could immediately begin to create useful applications with Windows IoT.

      Everyone should just learn CPU opcodes and build binaries without even assembler.
      Sounds ridiculous right? Just like telling .Net devs to learn linux.

      Sure there are cases where linux might be a better fit for a project, and in those cases learning embedded development with linux would make sense. Those cases are probably few though, and most of them would probably be better served by coding directly to the iron and foregoing an OS altogether.

        1. So a non-issue unless you have debugging enabled, correct?

          Even with debugging enabled would you really be able to do much? I’ve never had a need for kernel debugging so I’m not sure what you could do to the system being debugged.

  5. I understand the kiddies being let down by this, it has no GUI and you have to know your stuff to use a computer by CLI alone, Powershell is not for the technically inept. That’s why I am both surprised and disappointed to see Hackaday giving a review like this. So far I am very impressed by this version of an OS for RPi and other small devices. Using a GUI on a Pi is wasteful at best, I boot all of my RPis headless and with out a GUI. If you don’t understand how to really use a computer, then this OS is not for you, it will only confuse you and you will not be able to make use of it. A Hacker should not be scared of the CLI.

  6. I was really glad to read this post. I have ready many posts on this and other sites while trying to get an SD card set up using Windows 7, Vista, OS X, and Debian. I kept getting an error saying there is data past the image. Anyway, I was expecting a Windows desktop on the Raspberry Pi but after reading this I find that will not be the case. I did waste a lot of my time attempting to get this working, but it is not all in vain. I have Raspbian running still and cleaned up the SD card for a Teensy running audio, and video on an SPI 2.2″ screen. Perhaps I’ll borrow a Win10 laptop and continue the adventure in a few weeks. For now, back to the ESP8266. – fid

  7. I can do more, better efficiently in Linux with lower overhead on my base mem on my pi than I can with windows Iot . microsoft if you really want to make a difference build a small cheap PI type cpu that will run a 64 bit chip and a scaled down version of windows.
    I would pay $100 dollars for a mini cpu that could run windows apps.

    1. What?

      “I can do more, better efficiently in Linux with lower overhead on my base mem on my pi than I can with windows Iot .”

      Any chance the ease with which you, a Linux developer can work under Linux might be matched by an equally-experienced Windows developer under Windows IoT?

      “microsoft if you really want to make a difference build a small cheap PI type cpu that will run a 64 bit chip and a scaled down version of windows.”

      Microsoft doesn’t build ‘CPU’s and Windows 10 IoT *is* a scaled-down version of Windows – did you read the original article which bemoans the lack of a typical Windows shell/GUI?

      “I would pay $100 dollars for a mini cpu that could run windows apps.”

      Buy an InFocus Kangaroo PC – it is a quad-core Atom, 2 gig of RAM (I think), 32 Gig of storage and a full-featured copy of Windows 10.

    1. I assume you’re trolling but in case you’re not:

      The point to Linux being free isn’t one of monetary or time savings. Linux is free as in freedom to do with it what you want. Don’t like something? Want new functionality? Want to borrow existing functionality and use it in your own application? The framework for doing so is always there with FOSS software.

      Linux is not free as in zero-cost. A huge community has sunk a lot of time, and also money, into developing and maintaining the code base.

    1. Windows IoT is not Windows Core – they run on wildly different processors and have vastly different feature sets. The failure in this case seems to be isolated to somewhere between the keyboard and chair, not with Microsoft.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.