August 10, 2015 7:52 am

Hello, Windows 10 IoT Core

Greetings, Makers!

We are excited to announce the public release of Windows 10 IoT Core for the Raspberry Pi 2 and the MinnowBoard Max. Visit the Windows IoT Dev Center to choose your target board, then walk through the steps to provision your board, acquire the tools, and get started Making. This release of Windows 10 IoT Core requires a development machine running the 7/29/2015 release of Windows 10 (Build 10240) and Visual Studio 2015.

Introduction to Windows 10 IoT Core

Windows 10 IoT Core is a new edition for Windows targeted towards small, embedded devices that may or may not have screens. For devices with screens, Windows 10 IoT Core does not have a Windows shell experience; instead you can write a Universal Windows app that is the interface and “personality” for your device. IoT core designed to have a low barrier to entry and make it easy to build professional grade devices. It’s designed to work with a variety of open source languages and works well with Visual Studio.

Oh, and you can also use it to build robotic air-hockey tables.

New in this release

The first public preview of Windows 10 IoT Core was released at the //build/ conference, and we’ve made great progress since then. Perhaps most importantly, long-awaited support for Wi-Fi and Bluetooth connectivity has arrived. The full list of new features and improvements is too long to list here but here’s a nice sampling:

  • Improved support for Python and Node.js, including a new Express Node.js project template
  • GPIO performance on the Raspberry Pi 2 has improved by 8X to 10X
  • Analog-to-digital converter (ADC) and pulse-width modulation (PWM) are now supported via breakout boards and ICs
  • New Universal Windows Platform (UWP) APIs give apps easy control over system management features like time zone and network connections

Developers, Developers, Developers

The developer experience has been a high priority for our team as we’ve built Windows 10 IoT Core, and we hope this shows when constructing apps for this platform. Our philosophy is that we want to make it easy for developers to use the languages and frameworks they prefer to build IoT device apps. This means full support for the standard UWP languages like C++, C#, JS and VB, but it also means bringing support – including full tools, debugging, and project systems – for Node.js and Python. The project templates for the standard UWP languages create projects that look like standard UWP projects, but for Node.js and Python we’ve worked hard to make these apps look and feel just like they do on other platforms. The code below shows a complete Node.js UWP app that reads from an I2C sensor and serves up a web page with the data (and you can get the sample here).

// Copyright (c) Microsoft. All rights reserved.
// This is under the MIT license, please go to the GitHub sample link for full license.
// https://github.com/ms-iot/samples/tree/develop/WeatherStation/Node.js/NodeWeatherStation

var http = require('http');

//Import WinRT into Node.JS
var uwp = require("uwp");
uwp.projectNamespace("Windows");

var i2cDevice;

//Find the device: same code in other project, except in JS instead of C#
var aqs = Windows.Devices.I2c.I2cDevice.getDeviceSelector("I2C1");

Windows.Devices.Enumeration.DeviceInformation.findAllAsync(aqs, null).done(function (dis) {
    Windows.Devices.I2c.I2cDevice.fromIdAsync(dis[0].id, new Windows.Devices.I2c.I2cConnectionSettings(0x40)).done(function (device) {
        i2cDevice = device;
    });
});

http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    var output = "";
    var humidity = 0;

    //Read the humidity from the sensor
    var command = new Array(1);
    command[0] = 0xE5;
    var data = new Array(2);
    i2cDevice.writeRead(command, data);
    var rawhumidityReading = data[0] << 8 | data[1];
    var ratio = rawhumidityReading / 65536.0;
    humidity = -6 + (125 * ratio);

    //Read the temperature from the sensor
    var tempCommand = new Array(1);
    command[0] = 0xE3;
    var tempData = new Array(2);
    i2cDevice.writeRead(command, data);
    var rawTempReading = data[0] << 8 | data[1];
    var tempRatio = rawTempReading / 65536.0;
    var temperature = (-46.85 + (175.72 * tempRatio)) * 9 / 5 + 32;

    output = "Humidity: " + humidity + ", Temperature: " + temperature;
    res.end(output);
}).listen(1337);

A small note about VS RC->RTM project system compatibility:

There were a variety of breaking changes in the VS project system between the //build/ and RC and RTM. For the most part, application code will remain functional, but the project itself will need to be rebuilt. The recommendation from the Visual Studio team is to build a new project and move the code over into the new project shell.

Built to work with the tools & languages you want to use – whatever they are

As part of our engagement with the broader community, we’ve worked with the community to support as many open source options as we can. You can find all of our IoT samples on Github, as well as documentation and a growing set of libraries and helper tools. Even our project system and runtime support for Python and Node.js is available open source on Github.

When our samples start turning into full projects, you can find them on Hackster.io.

We’ve also worked with our friends at Arduino to make it very easy to talk to Arduino boards from Windows and even for Arduinos to talk to Windows devices as if they were virtual shields. See this project for more information.

IoT Projects for fun and profit

We built IoT Core and the corresponding developer tools to make it easy to build projects that are fun and cool, as well as those that have very practical uses in the real world. Find evidence of this in the range of projects, from members of our team, as well as the community, that have been created in the months since our first public builds.

Sampling of Hackster.IO projects:

We have more projects in the pipeline, so keep your eyes on our hackster.io hub for more information about our Air Hockey Table, Face Recognition Unlocked Door, and more.

We are listening

While you’re playing around, if you notice some rough edges, please let us know. As always, we appreciate your feedback, so keep it coming and we’ll do our best to address issues.

Quick links

  • Release Notes : Details about what is covered in this release of Windows 10 IoT Core.
  • Download Now : Click here to start downloading for FREE now. You will need the latest version of Windows 10, Visual Studio 2015 and tools.
  • Community : Share your feedback here and engage with other Makers using our forums.

Show Us What You’ve Got

We do what we do so we can see all the cool things people build on top of our platforms. Most of our projects start with the unofficial Maker credo of “Wouldn’t it be cool if…” and we can’t wait to see how you answer that question. Have fun building amazing things and, when you do, tweet @WindowsDev with the hashtag #makeInventDo with pictures so we can have as much fun as you do.

Updated August 13, 2015 9:26 am

Join the conversation

  1. Great to hear, and good work all. Really hoping to see this for Intel’s other products: RealSense, Edison and Galileo Gen 2. Any idea of a time frame for those?

  2. This is pretty cool. I want to see the hardware design for the Hockey table. How did you guys manage to move the arms so fast on 80-20? Are there better photos from the design?

  3. How is the power consumption vs standard Pi OS’s, doing the same tasks?

  4. Is there OpenGL ES support for the Raspberry Pi 2? Any demo projects (C++) that use it?

  5. This is really cool. However the code sample you have has an not so great copyright notice at the top.

    As it is an example that is meant to be reused and modified, you should really put a more appropriate license.

  6. Does anyone know if Cortana will be available in IoT Core? I would like to make something similar to the Amazon Echo but with a Raspberry Pi and Cortana.

  7. This is awesome!
    This will not work on the older versions of the Raspberry Pi correct (Like it has to be a Raspberry Pi 2)?

  8. You say “developers developers developers” – but it looks like you’re pretty hostile to developers. How do we get the source, then build and distribute this for other boards? If the answer is “you can’t” – then you’re wasting your time and ours.

  9. Could Microsoft comment on _why_ they think people will want to use Windows for IoT?
    In general the Windows API is not well suited for such things and most early development for IoT uses Linux… so where is the benefit of using Windows? To me it looks like I just end up with a closed-source OS, that will be constantly behind the curve and that has to be paid for if I use it commercially. Presumably Microsoft believes there’s a benefit worth those drawbacks?

    • As a developer I see a few benefits:

      1. Another option: It’s good to have another option. This is different enough from Linux to count as something else.
      2. Familiarity with tools: I’m all for Linux and I use it all the time. But I’m also a Windows developer and have been using Visual Studio and C# for a long time. I’d much prefer writing code in C# and debugging with Visual Studio than meddling with C/C++ and GNU debugger. Native languages may be more powerful, but I’m not experienced enough to build something meaningful out of those.
      3. Universal Apps: I don’t know just yet, but if the APIs and apps are really universal then this is great!
      4. Simply, why not!

  10. I like how this article touts “Developers Developers Developers” but doesn’t take any time to answer any questions posed by said developers. Microsoft, you kinda suck with this blog, and with engaging your developers in general. #irony

      • First off, don’t take several days (!) for the first MSFT-associated account to post a reply. 🙂 Steve Teixeira posted this article and it reflects very poorly on him to not see him interact with the ensuing comments. PR101!

        You should have a dedicated person in your organization to account for each and every question on each and every blog post, to (at the very least) make you seem engaged and care for your users. There are a number of MSFT blogs out there that follow this policy, most notably Azure blog and TFSOnline. They are very active in their posts and you get the warm and fuzzies when reading replies to the questions asked.

        By contrast, the Windows/UWP group seems disconnected and aloof — or worse, just doesn’t care. Case in point: the lack of F# support in UWP (and IoT — but we don’t know because you are not answering our questions around this) really speaks to the overall state of the “art” with this group. How on earth can a MSFT group not support a .NET language? Why was it designed in a manner where it could not support ANY language in .NET? Does the group not understand .NET? This whole new technology stack of UWP/.NET Native/Core/Whatever/SoManyOfThem seems hijacked and honestly like a *terrible* management decision, and implemented even more poorly by engineers that simply do not understand MSFT, or the technologies that once made it so great.

        Finally, as I was alluding to earlier, this blog is not a post-and-forget medium. Your customers will most undoubtedly have questions and deserve better than just silence. The fact that I feel like I have to lecture you (well not you personally, Clint, but whoever maintains this blog) on this says a lot!

        However, I do appreciate your personal reply, Clint (and will be emailing you — thank you).

  11. Using Windows for IOT, is like using a dump truck to bring home your groceries.
    Linux has a proven track record and has been the embedded OS of choice for a very long time. It is truly OPEN, and has a vibrant community that works altruistically to enhance and secure it. I don’t need my IOT toaster reporting back to MS on how much toast I use, or what times I eat breakfast….no thanks.

  12. Will this run on old NetBooks that aren’t otherwise able to run Windows 10? I have an older Dell Mini 10 that I would love to put this on.

    • If it could do that, it would be a pretty good way to repurpose old hardware, even if just part of a testing lab at home.

    • Yup and was called out in the blog post! ” Perhaps most importantly, long-awaited support for Wi-Fi and Bluetooth connectivity has arrived. “

  13. I do hope that we can install win 10 core on existing android based mobile phone (4 core or more). This will be a real game changer.

  14. On Windows 10 IOT site the version to download is the same that I downloaded 29.07.2015. Is there any newer release available somewhere or are you blogging about release that around two weeks old?

  15. Is there a “cut and paste” error here? Should it not read…

    //Read the temperature from the sensor
    var tempCommand = new Array(1);
    tempCommand[0] = 0xE3;
    var tempData = new Array(2);
    i2cDevice.writeRead(tempCommand, tempData);
    var rawTempReading = tempData[0] << 8 | tempData[1];
    var tempRatio = rawTempReading / 65536.0;
    var temperature = (-46.85 + (175.72 * tempRatio)) * 9 / 5 + 32;

    If I am correct, it only works because the variables were defined above earlier on.

  16. What about the Store? E.g. I have request some people would like to use my file manager (File Cards, currently the only one 3rd party app of that type that works with Windows 10) on IoT, but there is no way I can deliver/sell that to them if I am right?

  17. I have to say that this robot is very very slow.
    It favourably showcase the alleged strengths of Windows 10 IoT Core.

    It look sleepy and slow.

    This one is much faster-
    https://youtu.be/CjzSeOg8oTs?t=35s

    It uses an Arduino ATMega /Ramps 1.4 & PC for the control system.

    Maybe it is because the Microsoft air hockey robot is just using a MinnowBoard Max to control everything whereas the other faster one in the video uses a PC running windows for the vision system that then feeds the data of the puck and paddle position to the Arduino and RAMPS controller.

    Anyone have any thoughts on this?

  18. I have to say that this robot is very very slow.
    It doesn’t really showcase the alleged strengths of Windows 10 IoT Core

    The air hockey robot looks sleepy and slow here.

    This one is much faster-
    https://youtu.be/CjzSeOg8oTs?t=35s

    It uses an Arduino ATMega /Ramps 1.4 & PC for the vision control system that uses a PS3 camera.

    Maybe it is because the Microsoft air hockey robot is just using a MinnowBoard Max to control everything whereas the much faster one in the video uses a PC running windows for the vision system that then feeds the position data of the puck and paddle to the Arduino and RAMPS controller that controls the paddle.

    Anyone have any thoughts on this?

  19. Please, implement DX! It would be great to have access to the onboard CSI for RaspiCAM on RaspberryPi 2 model B. Thanks.

  20. Is there a projected timeline for a hardware accelerated video driver for Raspberry Pi2? I’m noticing the basic display driver is being used in Windows 10 IoT and that all of my DirectX calls have the same performance whether I use Hardware or Warp as the Direct3D device.

  21. i wonder what hardware the facial recognition will need? i thought the current windows 10 hello requirement was for a core i5 at the minimum