We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Windows 10 IoT Core or Corny

00:00

Formal Metadata

Title
Windows 10 IoT Core or Corny
Title of Series
Number of Parts
96
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Microsoft have released Windows 10 for Raspberry pi 2, a platform already often used by home automation hackers and computer enthusiast around the globe but how does it stack up against the much more common Linux distributions? This talk demonstrates basic functionality of Windows 10 Core on the Raspberry PI 2 and how to use it to build hardware prototypes.
Data dictionaryMoment (mathematics)WordMetropolitan area networkWindowInternet der DingeCore dumpArithmetic meanPlotterComputer animation
Internet der DingeCore dumpProduct (business)Software developerWindowBitComputing platformSource codeComputer animation
Data modelRevision controlInformationReading (process)Bookmark (World Wide Web)Graphical user interfaceMaizeMathematicsMobile appData typeDefault (computer science)WaveDemo (music)WindowInternet der DingeMenu (computing)IP addressCore dumpComputing platformInstallation artDemo (music)QuicksortPhysical systemComputer fileComputer animation
Internet der DingeEuler anglesComputer fileData typeDirectory serviceContent (media)VoltmeterProcess (computing)Physical systemCloud computingWindowBefehlsprozessorBookmark (World Wide Web)Principal ideal domainCore dumpMaizeReading (process)Graphical user interfaceRead-only memoryGraphics processing unitVisual systemDebuggerKernel (computing)Default (computer science)Computer fileProcess (computing)QuicksortPower (physics)Software testingBefehlsprozessorMicroprocessorPiCodeMobile appRemote procedure callVisualization (computer graphics)DebuggerCuboidInstallation artC sharpComputer animation
Configuration spaceInternet der DingeElectric currentRead-only memoryDevice driverDefault (computer science)Game controllerComputer configurationInformation securityVolumeDirected setBookmark (World Wide Web)Event horizonTrailEmailRevision controlQuicksortDevice driverSemiconductor memoryDifferent (Kate Ryan album)Volume (thermodynamics)Default (computer science)Game controllerDirection (geometry)Virtual memoryComputer animation
Configuration spaceInternet der DingeDesign of experimentsProcess (computing)Server (computing)Core dumpInstallation artClient (computing)BootingComputerRemote procedure callWindowTouchscreenElectronic visual displayMobile appStreaming mediaComputer animation
VolumeRevision controlNumberSerial portDirectory serviceComputer filePatch (Unix)System administratorPasswordBookmark (World Wide Web)Server (computing)GoogolData typeService (economics)TimestampData bufferFlagEmailRow (database)Source codeReverse engineeringSystem programmingAddress spaceInternet service providerComputer networkForceHypercubeLocal ringState of matterCore dumpWeb 2.0Software frameworkPhysical systemInternet der DingeQuicksortWindowDefault (computer science)Configuration spaceType theorySet (mathematics)MereologyScripting languageBitPiConnected spaceInternetworkingExtension (kinesiology)Visualization (computer graphics)NumberGastropod shellComputer animation
DialerDefault (computer science)Software frameworkComputer networkMetropolitan area networkBargaining problemInstallation artPoint cloudQuicksortSocial classLibrary (computing)Run time (program lifecycle phase)Euclidean vectorExecution unitSoftware testingWindows PhoneVisual systemAndroid (robot)Office suiteComputing platformExtension (kinesiology)Core dumpComputer fileRevision controlWindows MobileWeb pageCore dumpComputing platformCodeMobile appProjective planeVisualization (computer graphics)WindowFunction (mathematics)Data storage deviceCategory of beingUniverse (mathematics)Software developerRight angleCuboidQuicksortExtension (kinesiology)Demo (music)Standard deviationComputing platformPhysical systemInternet der DingeSource codeComputer animation
Convex hullPower (physics)Internet der DingeComputing platformCore dumpComputer clusterArmWindowObject-oriented programmingMultilaterationDemo (music)Multiplication signComputer animation
Function (mathematics)Task (computing)Physical lawPersonal identification numberExecution unitInstance (computer science)Internet service providerDefault (computer science)Electronic mailing listVideo game consoleError messageOperations researchService (economics)Web browserMathematicsoutputAsynchronous Transfer ModeSet (mathematics)Visual systemTemplate (C++)Text editorLibrary (computing)Java appletExtension (kinesiology)Scripting languageBuildingCore dumpCross-site scriptingSource codeAndroid (robot)Point cloudQuicksortSoftware frameworkComputer networkData typeOvalLoop (music)Machine codeInternet der DingeCore dumpThread (computing)Level (video gaming)IP addressEvent horizonWindowProgrammschleifePhysical systemHookingCodeGodComputer configurationRegular graphFormal languageWeb 2.0Cartesian coordinate systemTask (computing)Mobile appMicroprocessorPersonal identification numberComputer programmingTemplate (C++)Product (business)VoltmeterSoftwareGame controllerReading (process)Multiplication signDifferent (Kate Ryan album)Virtual machineDevice driverNeuroinformatikMenu (computing)Universe (mathematics)Process (computing)Flow separationInteractive televisionForm (programming)Default (computer science)Software testingRight angleSensitivity analysisSynchronizationInstallation artExtension (kinesiology)Electronic visual displayDean numberJSON
Division (mathematics)Ring (mathematics)InternetworkingExecution unitRight angleMereologyProcess (computing)FeedbackWordSoftware developerGroup actionRapid PrototypingData managementProgrammer (hardware)WritingDevice driverStatisticsCore dumpProduct (business)Service (economics)Physical systemMechanism designBuildingDifferent (Kate Ryan album)Power (physics)PrototypePlastikkarteComputer hardwareInheritance (object-oriented programming)WindowComputer animation
SoftwareOffice suiteComputer hardwareProcess (computing)Physical systemSoftware developerComputer programmingVisualization (computer graphics)BuildingProjective planePoint (geometry)Computer animation
Visual systemInformation technology consultingVisualization (computer graphics)SoftwareData managementProjective planeMultiplication signSeries (mathematics)Computer animation
Product (business)Proof theoryComputing platformRevision controlCore dumpElectronic visual displayArrow of timeWhiteboardMaxima and minimaBuildingField (computer science)Data storage deviceBefehlsprozessorArmAddress spaceExtension (kinesiology)Cloud computingPersonal area networkSoftware developerInternet der DingeCore dumpInformationAmerican Vacuum SocietyPhysical systemPoint cloudWindowField (computer science)Computing platformComputer hardwareComputing platformArrow of timeProcess (computing)Sinc functionLogic gateBitProof theoryComputerCoprocessorRevision controlElectronic visual displayProduct (business)NeuroinformatikOpen setGateway (telecommunications)InternetworkingUniform resource locatorEntire functionMereologyWhiteboardType theoryDifferent (Kate Ryan album)Universe (mathematics)PlastikkarteMultiplication signCASE <Informatik>Information securityPhysicalismPrototypeExtension (kinesiology)Data storage deviceHookingBefehlsprozessorSoftwareAerodynamicsRight angleRapid PrototypingRegular graphPiDevice driverDrag (physics)Maxima and minimaNeighbourhood (graph theory)Absolute valueComputer animation
Electronic visual displayComputing platformBefehlsprozessorData storage deviceChainSquare numberFormal languageGastropod shellUtility softwareKeyboard shortcutElectronic mailing listMereologyObject (grammar)Data storage deviceRight angleGateway (telecommunications)Software bugMultiplication signProcess (computing)CASE <Informatik>Communications protocolDevice driverCore dumpBitTransmissionskoeffizientReverse engineeringMoment (mathematics)Computing platformPlastikkarteMicroprocessorPiPortable communications deviceBlogFree productBuildingWindowVirtual machineRevision controlField (computer science)Computer hardwareSoftwareSlide rulePhysical systemQuicksortAsynchronous Transfer ModeRoboticsLengthTheoryMusical ensembleInternet der DingeC sharpComputer animation
Electronic data interchangePower (physics)Uniform resource locatorComputing platformPay televisionComputer animation
Power (physics)Computing platformOperating systemCore dumpPay televisionPhysical systemBootingPersonal identification numberTouchscreenProduct (business)Multiplication signIdeal (ethics)FreewareAsynchronous Transfer ModeUniform boundedness principleComputer animation
Computer animation
Transcript: English(auto-generated)
That's not right. All right, there we go. All right, let's kick it off. Windows 10, IoT Core, or Corney. So when I sent in this abstract, I wrote Corney. So I was like, I wonder if that word has a meaning. So I looked it up.
And it actually means, the Urban Dictionary actually defined it. It's the wrong spelling of the word Corney. But the NDC was nice enough to actually correct my spelling. So thank you for that. Now, a good man once told me that when you're giving a talk, you don't really get no big moment.
You don't get plot twists. You are not Steven Spielberg. You don't get to have your big surprise moment, stuff like that. So if you have something to say, say it up front, and then prove it. So Windows 10 IoT Core, or Corney. And I would like to say that Windows 10 IoT Core is the Corney-est product that I have come apart from Microsoft for a while, and I'd like to prove it.
But I'd also like to prove that we are to blame, the developers. We've created something for it that has made it a Corney product. And we, the awesome developers, can remove a lot of these problems. We can make it a better product. We can stop it from being a problem
and actually have some benefits from it. But I'd like to start to do just a little bit of demonstration of what we can do with the platform, so we all know what we're talking about, since normally people don't have that much experience with Windows 10 IoT Core. So when you've installed your Windows 10 IoT Core, the first thing you are going to see
is you're going to log into port 8080 of the IP address of your Raspberry Pi, or whatever platform that you choose to run Windows 10 IoT Core on. And you're going to see this menu. This is actually quite extensive. You can do a lot of stuff with this. You can see what apps you have installed.
Here you see I have a lot of demos that I can start. I can run them and do all sorts of stuff. So it's actually quite easy to manipulate the Raspberry Pi and Windows 10 IoT Core stuff from the menu and from the menu system. You also have a crude file explorer. You can go in. You can navigate through the documents and stuff like that.
You can hit up and look at the processes occurring, kill processes, run processes, do all that sort of stuff, see what's taking the most CPU power and all that. You can actually do some performance testing. You can see how much CPU do we have. We're not using almost anything. So we can watch a lot of that stuff.
But what we also can do here is activate. And you're going to want to do this. So this is probably the first thing you're going to want to do when you right out of the box installs your Raspberry Pi. Go in and start the Visual Studio Remote Debugger. Because if you're going to write code using Visual Studio, you want to be able to step through the code like we always do when we write C Sharp apps.
And if we go in and activate this, as soon as we deploy, we deploy to device, we're going to demonstrate, we can just deploy there and it will take care of it for us. And we can step the code, see how it's executing through the microprocessor through the Raspberry Pi.
And also, Microsoft has a lot of stuff around this, like the ETVs, the event tracking, and all that stuff. But I'm not going to go into that. It's more of an advanced thing. What I'm going to talk to you about is this. This is the devices. So under the Device tab, we have the default controller driver. And the default controller driver is kind of strange. Because initially, you will have the inbox driver.
And so if you go into this tab and actually change to the direct memory mapped driver, you will enable something called the lightning drivers. And the big difference here is speed. Lightning drivers are much faster than the original drivers. The original drivers can go up to something like 5 kilohertz if you simply switch them on and off.
And the lightning drivers can speak in actual megahertz, which is really useful. And we're going to demonstrate why in a little while. So that's something you're going to want to do. You're going to go in and just activate the direct memory mapped drivers under the Device tab.
Then you just have the regular device. You can adjust the audio volume. You can see Bluetooth versions and all sorts of stuff like that. You can run Windows Update. Yay. And something that you also might want to check out is the remote.
So let's say that you have a big screen somewhere connected to a Windows 10 device. Or perhaps you have a Raspberry Pi that is far away from you. So Microsoft wrote an app. You can enable this, and you will be able to get the Raspberry Pi screen into this app. So it will stream the screen into your app. So you can have a headless display.
You can put a Raspberry Pi somewhere. And you can actually see the screen and see how the app works on the Raspberry Pi. So that's also kind of nice. Now, one of the things with web frameworks like this, like if we don't want to administrate 100 Raspberry Pis or 100 systems on the web, we don't want to do that.
We want to use something a little bit better. We want to use SSH. So we can actually, let's do this instead, then.
So we can actually SSH into, so Raspberry Pi with Windows 10 IoT Core supports SSH. So we can use Secure Shell to access our Raspberry Pi.
This supports a number of commands. Like you can do ping. You can do, this is basically all the regular commands that you remember that you can do. You can add, you can use net user. Maybe we can't. Maybe we don't have internet here. No, we don't have internet. So begin ping, you can do all those sort of things.
You can try your connections, and you can run scripts. So you can run scripts and all that. So you can do a lot of configuration very quickly. Like you can set default names and all that stuff. So I think you can do that. The problem with this facility, though, is that it doesn't actually have, some of the commands
are with .axe, some are not. It doesn't feel like it's actually quite prepared. For example, I would assume that I could type ping. And I can. But I cannot type, I think it was, like, netstat, was it? No, I could type netstat, trace or something.
But some of the commands are not available. To you without the .exe extension, which kind of gets annoying in time, if you know what I'm saying. But one of the strong parts, one of the really, really strong parts for Windows 10 IoT Core is Visual Studio. So I am demonstrating Windows 10 IoT Core.
I'm running Visual Studio. And I'm doing it on a Mac in OS X. You've got to love the new Microsoft, right? So the standard solution here, if you want to add something new, let's do that. Let's add a new app. I'm going to zoom in in a little while. Don't worry.
So we add a new project. And right out of the box, we don't actually have that much regarding, let's get rid of you. And let's do it like this. Let's zoom in. So we don't actually have that much. So normally, you will not have this tab, the Windows 10 IoT
Core tab. This will not be visible to you. You will not have the ability to build more than the regular universal app. But Windows 10 IoT Core runs Windows Universal Apps. So we can deploy a Windows Universal App to the Raspberry Pi.
So let's do that. Let's start there. Demo for awesome people. So this is still a regular Windows 10 IoT Core app. We could run it on Windows 10. We could deploy it to the App Store and have it run and all that sort of stuff.
But we can also give it, so here we have it, we can also give it the possibilities to interact with GPIO devices. So there are these Windows IoT extensions for Universal Windows Platform.
And the Raspberry Pi supports this. Just like when you're writing mobile apps, any Windows phone developers here? All right, so when you're trying to check, does my phone have a camera, you can do the same thing with a UVP app. You can check, do I have a GPIO output? And it will give you a true or false.
And then you can kind of build your code into that. I'm going to show that in a little minute. So we simply add that to the system. And we're good to go. So this can now be deployed by going to here and doing, OK, and going to Device.
Let's see where that went. Going to Device. Then you need to also configure your device. And you can do that in Properties, Debug.
Then you need Platform Time, or ARM. So you have to build it for ARM. And you're going to do it to, all right, there we go, a demo for awesome people. And that's about it. Then you can actually deploy it to your Raspberry Pi IoT core.
Hopefully. So this is actually a very powerful thing with Windows 10 IoT Core, that we can do this stuff. But, oops, we cannot do that. Why can we not do that?
All right, let's look at that later. It's not important right now. What we can do with this, all we need is an IP address. We can put it anywhere in the network. We can deploy to it directly. The thing is, though, that let's say that we want to do something really, really simple,
like manipulate the GPIO ports. So what we'll do for this is, first of all, we need to initiate the GPIO. And the GPIO is the pins on the Raspberry Pi that we want to talk to. We want to actually have TTL levels plus 3.3 volts
to control stuff. And the GPIO controller, when we do getDefaultAsync, would be null if we do not actually have a GPIO controller. So that's very, very simple to do tests for. Do I have the possibility to do this and stuff like that? Now, a lot of people do this, like their first app.
And they remember from when they would talk microprocessor programming in school. So they do, while true, and then do some work, do something, because that's how they learn microprocessor programming. But we're not working with a microprocessor anymore. We're working with a highly advanced computer. So there are better ways to do this nowadays.
You can go in and actually do this with a timer. That's one way to do it. So timer here, just a regular thread pool timer, will give us a tick where we can actually do work with the Raspberry Pi.
And actually, putting up the levels is just a pin write compared to a read. And doing the reads is also just as straightforward. Let me show you. Yeah, like this. But you do not use while loops anymore,
because in the modern world, we don't have to do reads anymore, because we can hook up event handlers to buttons. So previously, when we were doing while true read from button x, OK, if it gives us a value, we do this. But now we can put event handlers connected to our buttons. So our physical buttons is no different than our actual
would be in a web form's applications back in God knows when. You with me? So Microsoft has built quite a powerful thing. Now, like I told you, you don't actually have that much to build. You only have regular Windows Universal Apps to build for this.
But I don't know why, but you have to actually go through extensions and updates. And install a package called Windows 10 IoT Core Tooling. So here we go. Windows IoT Core Product Templates. Now, if you install this, you will get a whole barrage
of new tools. Let me show you. So when you install that, the first thing you get is this menu option called Windows 10 IoT Core, which contains the C Sharp background application for IoT.
This is called a headless app. So this means it doesn't have a display. It's just a background task doing work. You're probably going to be using these if you're going to start developing using the Windows 10 IoT Core. Because several background tasks will be doing jobs for you while you have a UI that performs the interaction with the user.
But what you're also going to get, and this is what I like the most about this new system that they built, is that you're going to get some C++ stuff. You're going to get, where is that? All right.
All right, Windows. So you're going to get this Windows 10 IoT Core option here for C++, where you also have the background application, you have the regular UBP application if you want to write in C++, but you also have this.
So how many here have used Arduino? About 50%. So this allows us to take Arduino code and run it directly as a background tasks in the Raspberry Pi on Windows 10 IoT Core. And there's no difference. It's fully compatible with the Arduino wiring language.
So you can take Arduino code and put it directly on the, yes? Sorry, one more time?
OK. So the question is if this includes the time and sensitivity, and if you can get the same kind of timing on the Raspberry Pi as you can get on Arduino. And the answer is actually yes, if you enable the lightning drivers. Without the lightning drivers, you will not have the speed you can get on an Arduino. But if you enable the lightning drivers, you actually have more speed and better speed.
You can get up to like 5 megahertz or something like that. So that's pretty good. So this is the rough things you can do with Windows 10 IoT Core. You can run one GUI app at a time. You can install apps and run apps. And you can run a lot of background tasks, as many background tasks you want until this machine starts going slowly.
So let's go back and start talking about why is Windows 10 IoT Core actually corny?
A couple of years ago, I got a really strange job. I was called by a company that works by, they actually make all their money by changing toilet paper and soap in public bathrooms. They make millions doing this.
They have a service. So your company pays them money, and they make sure that you always have a fresh bathroom. That's their core business. That's what they do. And they had decided to build an IoT device that would tell them how much toilet paper they were consumed in any given bathroom anywhere in the world
that they had customers. They would do this because they had statistics. They had statistics that could show them that, OK, they're using this much toilet paper. That means that we need to replace that, and we need to replace soap, and we need to do this many hours of cleaning. And they could do very much of that automatically, or so they thought.
Now, I was calling to consult because one of my old friends works at this company. And he said, well, the developers just came back with a solution, and it looks nice. It works well. But when they're going to install it, they say it's going to cost $1,500. A device. And he was shocked.
The original toilet paper dispenser that they put up cost $5. That's a $1,495 difference. He didn't like that. He didn't like that at all. So he called me up and said, could you come over? I'll pay you regular fees, and you can look at it and just tell me if they did something wrong. I said, OK, OK, I said so. I sat in this conference room with these nice developers
who built this, and they demonstrated the product, and it worked nicely and everything. And that's about it. So they left me to it, and I was going to look at it, and it looked nice. But you know, I'm a hardware guy, so I started taking it apart.
Oh, what is this? I wonder how that works. Oh, that's really nice mechanics to actually calculate how much the toilet paper's going out. And then, is this a Raspberry Pi? They put a Raspberry Pi in a device that were meant to be put in thousands of places.
I mean, that's a $50 investment. But the problem also was that you couldn't run this on battery. Even if people came here every other day, you cannot run a Raspberry Pi on battery power that long. It's impossible. Well, you could, but then you would have to add a car battery to it. It just defeats the purpose of having IT units,
which meant that for every installation, they had to call an electrician to join them, come up, give them a power socket, in a bathroom, by the way, to connect the Raspberry Pi to, which of course was very, very expensive and not very useful.
All right, so I know what you're thinking. They're idiots, right? You're thinking it. I can see it in you. Now, the Raspberry Pi is a very rapid prototyping tool.
You can do things that you cannot do in C or C++ really, really rapidly using the built-in, like the wiring system is really, really great because you can take examples from the internet, just paste it in and get it to run, and refactor it later. Because you know that.
As soon as you can get something out to marketing so they can look at it and get feedback, well, we're in business. We're doing agile stuff. We're doing things. We're getting feedback. We're prototyping. We're building a product. And the Windows 10 IT core for me, that is where I want it to be. I want it to be this awesome rapid prototyping tool.
And that's also kind of the corny part because it's not being marketed as a rapid prototyping tool. It's being marketed as a catch-all super device. And we have accepted it like that. So basically, it's our fault. So I don't think they were dumb. I don't think they were dumb at all because I remember one of my first jobs
had this developer. He was called Dan. Dan was super smart. He was at all the hackathons. He won all the hackathons. He was at all the user groups. He ruled all the user groups. He was the king of C++ development. He could write drivers, do everything. And I was so impressed by this guy. I was like 18 years old. I was really impressed with him.
I mean, one day, his company, the manager of his company calls me up on the phone and says, hi, hi. Yeah, you know, Dan tells me that you're a really good programmer. You know when your childhood idol said, what? Yeah, yeah. Oh, he said that. Wow. Well, that's amazing. Thank you, thank you very much. And it's like, would you guys come and work for us?
Yeah, yeah, I'd love to come and work for you. Because I was so happy then, so. Yeah, yeah, yeah, sure, absolutely. We're gonna build a switchboard. Actually, Dan has built a switchboard. But they want to help taking care of it, taking care of that software. So I drove up to his office. It was a beautiful summer day.
I was 18. I had a job. I had a job making a lot of money. I was gonna program with some of the best people. I came up to this big building where they had all the developers and all the technology and all the hardware and all the cool stuff. And I met Dan in a conference room. And he said, yes, I'm really happy. You want to come and work with us on this project?
And he showed me all the hardware that wrote in C++ and in C. And then he came. And yeah, and here's our PBX system that we wrote in Visual Basic 6.0. What? This was, I'm not that old. This was in the year 2000. Visual Basic 6.0?
What, for a PBX? Are you insane? But then we started talking. And he told me, no, I started this project as a consultant. I wasn't hired here when I started here. And the manager knew Visual Basic 6.0. So he asked me to write the software in Visual Basic
so he could see how it worked and perhaps take care of it himself. Now over time, the project grew and became actually very, very big, having millions of customers or thousands of customers, having millions of money, a lot of money coming in. And Dan got hired and wanted to rewrite the software.
Do you think he got to do that? Because it worked, kind of. And I remember this story when I talked to the developers. Because I realized what would happen. So I went back to the board of directors and said, all right, guys, we need to replace this Raspberry Pi that
runs Windows 10 IoT Core. And they told me, why would we do that when the product we use even got IoT in the name? Because people are mistaken. They think that the internet of things are hardware devices. They don't think of this huge global network
of connected devices that communicate in many different types of factions. And we, the developers, if you want to build this great cool thing called internet of things, or we want to actually build stuff like this using Raspberry Pis or whatever, we need to make sure that people understand that proof of concept is just that. It's nothing more, nothing less.
Microsoft isn't even pushing Windows 10 IoT Core and Raspberry Pi that much. They are doing it, but not that much, as a hardware platform for building regular hardware stuff. This is the pitch the first time I heard it for Windows 10 IoT Core. I'm going to read it for you in case you can't read.
The Windows 10 IoT Core is a version of Windows 10 that is optimized for smaller devices with or without a display that runs on Raspberry Pi 2 and 3, Arrow DragonBoard 420C, and MinovaBoard Max. Windows 10 IoT Core utilizes the rich, extensible, universal Windows platform, UBP, API, for building great solutions.
That sounds like a marketing pitch for MVC, right? Not a hardware device. Microsoft gets that. But we don't. I mean, so many people. They're smart hardware people. Yeah, we built it on Raspberry Pi.
Why? Because we built the prototype there. Because the prototype was all we had. For me, the Windows 10 IoT Core is superb at exactly one thing more than being a rapid prototyping tool. And I use it for this all the time. I use it for field gateways.
Do anyone know what a field gateway is? So when you talk about IoT, you talk about gateways, you talk about field gateways, and you talk about devices. So devices are hooked up to field gateways. And the field gateways are basically the internals of your network, the external ports
to the cloud services. Because you want to have the ability to control your devices even if the internet's down. You want to have something in the way. But you also, and I think in the future, are going to want to control what information is available in your location and what leaves it. Let's give an example of this.
So we're building an IoT device. You and I. We're building an IoT device. And we have a house. And in this house, we know if the doors are locked or not. Would we like to tell somebody if the doors are locked or not? Would we like to tell our neighbors if the doors are locked? No, we wouldn't. There's circular information.
There's information that we want to keep inside our systems. And I prefer it if it didn't even ever go on the internet. I would prefer it if it couldn't go on the internet. I'd like it to be separated from the internet. And I'd like, however, to know if somebody goes and checks my door handle, and the door is locked,
I'd like to tell my neighbors. I'd like my neighbor's house and my house to be able to communicate and say, hey, somebody just pulled my handle. Hey, somebody just pulled my handle too. And then the third house goes, yeah, somebody pulled my handle really hard. And it's inside my house. And we kind of figured out that, hey, maybe we
should alarm somebody. But maybe the rest of the world doesn't need to know that. Maybe we don't want to tell that to cloud service. Or maybe we don't want to share it with all of Oslo that somebody was pulling at our doors. Because our neighbor was drunk again and couldn't find the right house.
We need to think about this stuff, because this is where the Windows 10 IT core is really, really good. Because it has built-in MQTT stuff. It can take an entire array of MQTT devices in a location, take all that data, aggregate it, put the good stuff to a cloud service, like IoT Hub or AVS or stuff like that, and then keep the other parts.
You can communicate with perhaps Open Hub or something like that inside your house and control the things that are important to you. Make sense? But I mean, Windows 10 IoT Core isn't the only platform for this. Windows 10 IoT Core is one of two major platforms for Raspberry Pi and for most of the field gates and stuff.
The other one is Linux. So let's talk a little bit about Linux versus Windows 10 IoT Core. And Linux is on almost every platform. You cannot find a device almost today that is a computer
in some way that can't run Linux. And I think Windows is trying to catch up. That's the whole idea with Windows 10. They're trying to be on so many devices. And many people think that you can't run Windows 10 IoT Core on anything else than Raspberry Pi, Minova, and all, and the Dragon
Board and stuff like that. But that's absolutely not true. You can run the Windows 10 IoT Core on anything that has a 400 megahertz CPU, 2 gigabytes of storage, and 256 megabytes of ROM. But you're going to have to work to get it there because it doesn't have all the drivers, doesn't have all that stuff. But you can make it run.
Linux, on the other hand, if you look at, for example, Debian. Oh yeah, sorry, I forgot about that. It does need to have some of the modern PenSim supports. Like you need to have physical VADX extensions, no execute, and streaming SIMD extensions. You need to have all this stuff. No execute, that's the processing feature for marketing, like non-executable stuff.
So you can have some security things. And that's just a requirement for Microsoft since Windows 8. And it helps us not to get viruses, not to get attacked in our computers. Now Linux, on the other hand, if you look at Debian, it says it needs a one gigahertz processor.
It says it needs one gigabyte of storage. And it says it needs 128 megabytes of ROM. So that's why I put it here. I don't believe them. I ran Linux on 386 machines. I ran Linux, I ran Debian on 386 machines. But we're talking about the latest versions, so fine.
That may require this. But I mean, Linux is a very versatile software compared to Windows 10 IT Core. And I think if you would compare what they need to run, Linux would win every day of the week over Windows 10 IT Core.
Horribly bad slide. All right, so Windows 10 IT Core was a very, very slow system, especially for GPIO stuff. I like bit banging. I like reverse engineering things. I like taking protocols and making them do things they were not designed to do.
And that usually calls for a lot of bit banging and trying to actually do stuff with communication devices and microprocessors and 433 band transmitters. We couldn't do that with Windows 10 IT Core. Now when they release the Arduino wiring protocol stuff and the lightning drivers, we can actually get up to six megahertz with that,
which is plenty. So now we can suddenly do all that stuff. But it's still very, very, very much slow. So it's only one fourth of how fast you can make Linux run with Debian on C on the Raspberry Pi, because Raspberry Pi with Debian can get 22 megahertz. I don't know why you need that, but it's still faster.
On the other hand, six megahertz is enough. So maybe it's OK. Maybe it's good enough. Or maybe we'll get even faster drivers in the future. But at the moment, Linux is the fastest one when it comes to GPIO handling. And of course, if we're looking at device drivers,
I mean, I was trying to count how many network cards that Linux supported, and I just got tired. There's lists upon lists upon lists upon lists. And basically, if you can buy it in a store, it will work with Linux today.
Windows 1080 Core supports 7, which is a nuisance, because you actually have to check, does this support my platform? Is this OK for my platform? And you're doing prototyping, which I think that Windows 1080 Core is, that's a hindrance.
I do not wish to have a problem with hardware. I just want it to work. Windows is such a big company that this should not have been a problem to tell some intern, write 100 device drivers. It's good. Do it. I mean, this shouldn't be a problem. It should not be a problem. And even Bluetooth devices.
I mean, Bluetooth is a big part of an IoT system, and it's getting even bigger. And Windows 1080 Core supports three Bluetooth devices. Linux has 25 officially supported Bluetooth objects,
and over 50 that is supported, as they say, not 100%, but supported mostly. And it's growing all the time. This is just for Debian. This is probably the thing that has annoyed me the most, working with Windows 1080 Core, is the fact that a lot of the stuff just doesn't work. Even the build, I mean, Windows 1080 Core is advocating that we work on Raspberry Pi 3.
But by the way, the Bluetooth don't. It's just, that's something that I would have expected to work on this system. Now, there are no silver bullets. I know that. I prefer Linux over Windows when I'm building professional hardware stuff. I'm going to give you that.
If I have to choose, today there's still too much kind of jobs. It's too much a hassle to navigate around some of the problems, some of the shortcomings of the platform. So I use it for field gateways because it rocks at that.
It's quick to deploy. It sees debug. Has built-in MQTT support. So it's just awesome at that. And I use Azure for my IoT Hub. So of course, C Sharp and IoT Hub and the SDKs like married to each other, so they work perfectly. But apart from that, I tend to use Linux. And if you know a little bit of Linux,
I would probably go with that for now. And I hope that Microsoft will make this platform a little bit more mature. And I mean, they are going for it. They are really, really flirting with us. They're flirting with the makers. They're flirting with the makers. They want us to build stuff with this. They're giving out examples.
If you go to dev.microsoft.io. There are so many examples of what you can do with this platform. You can build robots. You can build example. You can build length detectors. You can build magic mirrors and do all sort of cool stuff. So somebody was asking me yesterday, what does Windows want to do with this? And I think it's just flirting with the makers.
They want to have a maker platform. And so I'd like to address that. Because a lot of people was like, no, no, no. They're evil. It's Microsoft. They're doing something bad to us. It must be. It's a free product. It works reasonably well. Why should they have to do something bad?
They're evil. No, they're not. And then I actually stumbled upon a blog post that is the originator of why is IoT Core evil. And a lot of people actually believe that Windows 10 IoT Core is not released to be a maker platform. You've probably heard this.
It is released to keep the Windows grip on all the ATMs around the world. Have you heard that? So there's kind of like an idea that Microsoft only built the Windows 10 IoT Core to keep their 10 million ATMs running Windows, not Linux. And that's a very interesting thing.
It also requires you to not know that there is something called Windows Embedded, which is a platform for ATMs, mostly. And it's quite interesting that people miss that when they're starting to build conspiracy theories. So that's actually Windows 10 IoT Core. I wouldn't recommend using it for anything professional.
Feel free to play with it. The Raspberry Pi in itself has a few shortcomings that I think it's important to mention. One of them is actually power handling. So let's say that we're done with everything. We want to shut this down. And this is in a remote location. How do we start it again?
So this is a premium platform for Microsoft. If I shut this down now, I have no way of starting it again. I will have to physically unplug the power and replug it. This is a premium platform.
This is the platform that they are demonstrating the new core cool operating system. There is one way, which is soldering a reset button to these two pins that you can see on screen. And if you short them out, it will actually boot up again. So if you take it down to power mode,
you can actually boot it up using those. That's the only way that I've found to actually do this without having to do anything, which is just annoying. The Raspberry Pi in itself is otherwise, I think, an ideal product for Microsoft to do this stuff. And I'm really happy for it to do it. So thanks for listening, guys.
If you have any questions, feel free. I have about nine minutes left. So we have a lot of time for questions if you want that. If you don't have any questions, but like beer, you should attend PubConf, which is tomorrow. No, Saturday, sorry. So check that out. They wanted me to mention that. Thanks for listening, guys.