Hacker News new | past | comments | ask | show | jobs | submit login

When they released this a couple of months ago I was pretty excited to try it out. I think the barrier to installation is a bit high. First install Windows 10, then custom install of VS, install IoT Templates, then about 30 more steps before you get the image to flash on your SD. How about a link to the image I can blast on the SD and kick the tires without a couple hours of downloading and installing prerequisites?



Very funny considering the uneasiness people have towards "putting Linux on a computer". For the Raspberry Pi, the reality is completely reversed as NOOBS is the absolute easiest, most convenient way to put any OS on any computer ever.

I really don't understand people who want this, with closed source software the learning stops at some point, you can't learn everything about your Windows-Pi even though it was created for learning! Even the example code (read I2C temp sensor, display using webserver) they give on the home page starts with: "// Copyright (c) Microsoft. All rights reserved.". Why would you want this? Can there really be people that are willing and able to build their own IOT but do not want to learn about Linux?


>Why would you want this? Can there really be people that are willing and able to build their own IOT but do not want to learn about Linux?

Knowing about Linux doesn't mean assuming it's the best tool for the job at hand.

I've used Linux, I've installed Linux, I've fixed a couple of broken Linux installs etc. I've compiled software on Linux. I've imaged an SD card for a Pi from Windows pre-Noobs. I've installed Rasbian using NOOBS.

I've also played with Arduinos, although mainly using other peoples' libraries for time and network comms etc.

I have not, however, written any serious software for Linux and I am not a Linux developer. I mostly use VS on Windows to develop software that will end up on Windows computers to be used by Windows users.

I have the required physical equipment, software and skillset to make a solution that meets the end requirements using 10 Core on a Pi 2. I don't have that for Rasbian. I've no doubt Lady Ada has a tutorial somewhere to teach me enough to get it working, but why would I invest my time in that?

I'd be better off using the skills I already have to accomplish this task. Then learning something completely different that will allow me to accomplish an end result I can't presently achieve.


However, with the example... you can just use node under linux on the rPI, and get a decent experience. I have no idea what binary module support for node (bignum, sqlite, and others come to mind) under Win10Core that might be common for something like this are... In general if you don't have build environment support for node, there is always an edge/corner case binary module you need. It's better in windows, but I'm not sure if Win10Core has a compiler on the device target. (And Python 2.7 for that matter)


Or, you know, compile to mono and thus keep 100% control over your lower stack.


Having worked in both Linux and Windows shops, yes, there are people that would readily use Windows on a π, because that's what they know best. Could they use Linux? Yeah, probably, they're smart people. However, that's a bunch of extra steps when you really just want to get things working and hack around on some code.

At some point they might get curious and try Linux on it as well, but I'm all for whatever makes it easier for someone to get into trying something new without a lot of burden. For some people that means using Windows so they can use the platform and tooling they're most familiar with (Visual Studio and .net).

Yes, there's mono and such, but even that still brings its own complexity when you actually consider what else it takes to get set up and going for someone that's never used Linux before (or outside of some courses in college).

It's like wanting to build furniture, but then told you should plant a tree, wait for that tree to grow, chop it down, cut it up for wood, then you can start building some furniture. Most people would give up long before actually making any furniture in that case.


You're correct about Mono being complex. It was easier to install than IoT core though. Including installing the OS first. Having a package manager like apt is a revelation coming from a Windows and Mac world.

I previously tried Mono on the Pi and it had lots of bugs related to the processor architecture. Problems with the hard float support stopped things like Datetime from working properly.

This was a while ago so I imagine it's been fixed in a recent build. It shouldn't be a problem on the newer architecture of the Pi 2 either.

I think it's better to bite the bullet and just learn Linux and Python. You can then add those skills to your CV along with Windows and C#.


I also suspect, without having tried Win10 IoT, that the interface is more polished, and building apps are simpler. You don't have the same freedom, but as long as the developers can do what they like, it's more than enough.


> Can there really be people that are willing and able to build their own IOT but do not want to learn about Linux?

Absolutely, and especially in corporate environments. I'm not saying Windows 10 IoT is any better (I think it's very unlikely to be, but I also haven't evaluated it), but I can say for certain that I wish I had a single, identical python library for any IoT platform that handled interfaces as simply as:

    with pin_1 as p1:
        p1.output(1)
        time.sleep(2)
        p1.output(0)
Now, there are some libraries that approach that level of simplicity once you have your system configuration set up, but that doesn't lend itself to agile development. I want something that works like that out-of-box -- flash it, load code, press go button -- which simply doesn't exist. And, after spending a lot of time writing my own hardware IO library using direct memory access in Python, I don't think there's an OS out there that's capable of doing it (yet). I've spent just way too much time accommodating unfortunate abstractions taken at the linux kernel level (that I understand for historical reasons, but disagree with for future ones). An operating system for IoT done right is, in my opinion, a very lightweight exokernel with some really smart abstractions that just gets out of your way. Then you need a clever (and native) secure networking system, and you're in very good shape.


I'm not sure if you've dealt with Arduino in Processing, but it is exactly as you describe.

  void loop()  
  {
    digitalWrite(ledPin, HIGH);   // sets the LED on
    delay(1000);                  // waits for a second
    digitalWrite(ledPin, LOW);    // sets the LED off
    delay(1000);                  // waits for a second
  }


Arduino is awesomely easy in this regard, but lacks a proper operating system, and the individual pins have fewer modes than systems on a chip. That is, in a way, exactly my point: the operating systems we have are so bad at portable systems that going without one can actually make development easier. That's a big problem.


I think this is a 'right tool for the job' problem. Frequently you don't need an operating system to do basic tasks. I don't see this as a problem at all for simple things to a point.

Even something that seems as complex as as reading a sensor and writing data out to a CF card doesn't require an OS if the basic library support is there.


Like this?

  from time import sleep
  import RPi.GPIO as GPIO
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(2, GPIO.OUT)
  while 1:
       GPIO.output(2, False)
       sleep(2)
       GPIO.output(2, True)
Perhaps I'm not understanding what you want exactly, you seem to know what you're doing.


The problem is in pinmuxing. If you want to change the pins from their default modes, you're in for a world of pain. Systems on a chips (SoCs, basically run everything portable these days) are optimized to the point where different die pins can have different modes (GPIO, LCD framing, USB framing, might all be available, one at a time, on the same pin). Switching between them requires mucking about in the kernel and reconfiguring hardware and is, at least in my experience, incredibly painful.

Also, the sysfs mappings that the easy bindings tend to be written from are very, very slow (like ~3+ orders of magnitude slower than they should be: http://hackaday.com/2013/12/07/speeding-up-beaglebone-black-...).


If you use BabelJS (ES6) you can write async methods that are very close to that with Node + johnny-five.

https://github.com/rwaldron/johnny-five


How does Arduino (which I've never used) compare to your desired Python library?


I read the headline, considered it for a few moments, and the only response I could come up with was "No."

Why would I put an OS on a computationally constrained device that is essentially guaranteed to spend a portion of the CPU time doing things I likely don't want done, for someone else (Microsoft in this case)?


I've spent a decade and a half developing software for and deploying software to Linux, but never had to look at the code. Funnily enough, that's the same number of times I've had to look at the code for Windows and OSX, which I've been using for a comparable amount of time.


I'm not talking about "developing for" I'm talking about "learning about." I have learned a lot about hardware using Gentoo, compiling my own kernel. If I wanted to I could look at the source code. I also never did, like you, I'm just saying there may be youngsters out there who would.


I tried the technical preview of IoT core and was underwhelmed. The mouse didn't even work! It jumped around erratically making it unusable.

My experience with Linux on the Pi is that it just works out of the box. Simple things that you need to install a driver for on Windows are plug and play on Linux [0].

I installed the desktop Windows 10 preview just to flash the SD card. Although I read in the Mag Pi [1] that there is a Python script [2] to convert the image to a normal format.

I'm a big fan of C# and I'm a professional .NET developer. It's my go to stack. Yet, I believe that the best way to use a Raspberry Pi is with Python on Linux.

[0] https://unop.uk/dev/raspberry-pi-electricity-monitor

[1] https://www.raspberrypi.org/magpi/issues/34/

[2] https://github.com/t0x0/random


Someone badly just needs to make a bit for bit image. Or is that illegal? In anycase, as long as I keep it offline I'd at least be willing to try it out, without a win 10 machine it's my only option.


I've written up the process here: https://unop.uk/dev/windows-10-iot-core-public-release-for-r...

I'd host the file but I imagine it will go out of date pretty quickly as MS change the original.


It's not meant to be a desktop. It meant to be be an embedded system with no mouse or keyboard and maybe a touchscreen.


I completely get that but when the app you pushed to it requires interaction with a button then a mouse is more than just a nice to have.


While the tool to flash the SD that Microsoft built requires Windows 10, it doesn't require anything else besides a Pi: http://ms-iot.github.io/content/en-US/win10/SetupRPI.htm

Granted, if you go through the developer site, it points you towards installing what you need to develop software for it. shrug


You can use this python script to convert the image to standard raw format: https://github.com/t0x0/random

Then flash it with your normal tool such as dd or Win32DiskImager.


Thanks! Made a quick script with this to unpack the other stuff (I couldn't mount the ISO for some reason) however 7z seems to handle the ISO and the MSI file both just fine.

In case you're interested: https://github.com/lawl/Win10IOTRaspberryUnpacker


Looks good, thanks. I'm on Windows but it should be pretty easy to port to batch or PowerShell. I've used 7z command line before for automation.

The script makes an 8GB file by default but it should be possible to change that. Add a parameter for the size of the card or even auto-detect it.

I've documented the process and written up my thoughts on IoT core here: https://unop.uk/dev/windows-10-iot-core-public-release-for-r...


>A PC running Windows 10 (Prepared in the previous step)

That requirement itself is a big step:

http://ms-iot.github.io/content/en-US/win10/SetupPCRPI.htm


Especially considering my 8.1 -> 10 upgrade has failed spectacularly several times. I'm not going and buying 10 at retail to try this shit out.


For what it's worth, I found on two of my systems that had issues with the upgrade, if I followed the upgrade/activation with a clean install of Windows 10 (giving up the option to return to the previous version of Windows) the installation worked great. I had different but equally show-stopping bugs on my Windows 7 workstation and my wife's Windows 7 laptop until I did that.

On my wife's laptop I had even tried a fresh install of Windows 7 followed immediately by the upgrade and hit the same bugs as before (no "Modern" apps would load including Settings, and Explorer.exe was constantly crashing). A clean install of 10 fixed those issues and now it runs great.


Right on topic...


Quickly made an unpacker script in bash, couldn't test it yet, but it looks like it works. You'll need 7zip and a working installation of python,

https://github.com/lawl/Win10IOTRaspberryUnpacker



It was in the repo I got the ffu2img script from, forgot to remove it, see https://github.com/t0x0/random

Fixed now, thanks.


There are dozens of other tools available to do the same thing, and yet they had to go build their own?


Microsoft: Not Invented Here


Business as usual for Microsoft.

There must be something about their business model I'm not getting. Going to microsoft.com with the intent of buying Windows to install it on a naked PC or in a VM on OSX, I have yet to identify an option that allows me to: 1) buy a license, 2) download an ISO image.

The closest solution I've seen is to download some exe file that presupposes that I have Windows installed somewhere so I can....do god knows what to get an install going.

I know what I came to the site for. Instead the site spends all its energy on selling me on the idea of Windows and then fails to sell me the product.

Consistently.

For years.

Why? Do they not want my business? Is it really so horrible to sell their product to someone who wants to run their OS under VMWare?

This is neither hyperbole nor gratuitous negativism, but Microsoft is perhaps the worst company to buy a product from online. Microsoft fixing this is the litmus test for when they might, and I would like to emphasize might, be able to stop sucking.


I suffered this with a 2nd hand Windows 7 computer my mother was using that kept complaining about being counterfeit.

Windows is only £80 or so and there was a big button on the nag screens that took me to the Windows site to buy a licence. Great - credit card in hand I clicked on through and was instantly greeted with buy Windows 8.1 screens.

The problem is, I absolutely did not want under any circumstances to install 8.1. I just wanted a legit licence to the already installed 7, which the computer was quite happily running and required no learning/explaining of metro to my mother.

For nearly 1 hour I tried to find a way to buy that Windows 7 licence key and found absolutely no way to do it.


> I suffered this with a 2nd hand Windows 7 computer my mother was using that kept complaining about being counterfeit.

That has been known to happen [1] (it's never happened to me personally). I suspect it has something to do with buggy AV or anti-malware software.

> For nearly 1 hour I tried to find a way to buy that Windows 7 licence key and found absolutely no way to do it.

You don't have a Best Buy type store near you?

[1] http://www.infoworld.com/article/2859267/operating-systems/w...


"Why? Do they not want my business? Is it really so horrible to sell their product to someone who wants to run their OS under VMWare?"

Not really, they want the business of IT departments of medium/large companies, running full Windows stacks (Windows Enterprise, Office, Windows Server, MS Sql Server, Exchange), which buy licenses by the dozen (at least) through their purchasing department.

It's how they make(a lot of) money.


> The closest solution I've seen is to download some exe file that presupposes that I have Windows installed somewhere so I can...

My guess they did that because it's probably just like BartPE or other PE products - it copies files from the underlying OS.

> Is it really so horrible to sell their product to someone who wants to run their OS under VMWare?

There is nothing stopping you from running Windows in a VM - millions of people do it all over the world.


The is a link in the top right hand corner to the Microsoft Store, where you can buy Windows. When I bought Win7, I could download an ISO.


Yeah I was excited to try it out but I can't spend a whole day on getting things working at the moment, just too damn busy. I was hoping I would get an iso I can dd onto an SD card pop it in the RPi and it boot up and give me an IP address to connect and deploy an app to in a few clicks. You know like how I can do with Linux.

Still it is a step in the right direction for Microsoft. I am happy to see them doing such things. Competition in the IoT space is a good thing for all.


Maybe some selfless individual can slog through it all, and then use dd to make an image and post it somewhere (which I am sure violates thousands of pages of EULAs, but would be much more in keeping with how Raspbian etc. are distributed).



Most excellent.


Agreed. There is absolutely no excuse for having all that crap to go through.


> There is absolutely no excuse for having all that crap to go through.

I agree, too -- and this phrase has been on the minds of people while installing Microsoft products for decades now. It's in their DNA somehow, it seems.


I asked the very same question and got downvoted for it.


Do not discuss your own downvotes.

Do not interrupt the actual discussion to meta-discuss the scoring system.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: