Whilst the Raspberry Pi 2 has extensibility through GPIO, I2C, SPI and Single wire, the main interface for adding off-the-shelf peripherals is via USB. Unlike the desktop, there is though only a limited set of USB peripherals that can be used on the RPI2 running Windows 10 IoT in the first release. This series of articles looks at what is available and what the overarching issues are.
Windows 10 IoT RTM has two target platforms; one x86/64 (read x86 from here) and one ARM platform. Others are being developed. Regardless of the CPU target, Win 10 IoT apps are built from the same code as the desktop and mobile versions of Windows 10 .. the One Windows mantra. A Windows 10 Universal App (technically a Universal Windows Platform App in Windows 10) without any extensions will run on all three platforms. You just need to set the target CPU .. that is all There are extensions though that can be added to a Universal App which will limit the targets. There are extensions for the desktop, mobile and IoT:
For example, the IoT extensions give GPIO, SDI and I2C capabilities to the Universal App.
With Windows 8/8,1 there were desktop x86 and ARM versions of the OS; the ARM version being the RT Surface (or just Surface as opposed to Surface Pro which is x86). Many desktop USB peripherals would not run on the ARM version of Win 8 as there was only an x86 driver for them. A USB memory stick would work on both types of Windows 8 platforms whereas most USB WiFi peripherals would only run on the x86 platform. This is because USB memory sticks do not require a specific driver as they conform to the USB Mass Storage class. USB WiFi drivers are more complex and so were not in general ported to the ARM platform for Windows 8. Remote NDIS does add some universality to WiFi drivers though. Another example is the FTDI serial driver. Initially USB-serial dongles based upon an FTDI chip would not work on the RT Surface but FTDI later on developed the required driver::FTDI Win 8 RT Driver V 1.02 . This is documented at: FTDI RT Docs. With Windows 10 there is no desktop ARM, only mobile and IoT versions.
So what is this leading up to? The thing is, if there was a Windows 10 RT Surface then there would be an impetus for porting USB devices drivers to ARM that could, at least in principle, be used with Win 10 IoT on the Raspberry PI 2. But that isn’t true, so we are left being only able to use USB devices for classes of USB specifically implemented for that operating system and for other USB devices that have been specifically ported to ARM and included in OS. On the other hand, any USB device driver that runs on the desktop could in principle run MinnowMax board.
The official list of supported peripherals is at here.
The listed classes of USB devices that are “hosted” is
For some USB device classes the device class is generically supported whereas for some class only a specific device is supported.
USB Memory sticks, even though not listed appear to be supported. One interface not listed for the Raspberry PI 2 is the native UART. It would make interesting reading as to why this is not yet available. Currently those pins are listed as reserved for Win 10 IoT. This is definitely the Achilles heel, until it is resolved. Also, USB Wireless HID is also supported, such as the Microsoft (Wireless) Arc Mouse.
The following articles discuss the USB devices that have been found to work (and not work in some cases) with the Win 10 IoT RPI2. Included are some test apps. These documents are under development.
Nice article, I'm very interested in your upcoming "RPI2 USB Serial" article.