A while ago Microsoft released Windows 10 IoT Core that can run on different
embedded boards, such as the Raspberry Pi. The normal Brick Daemon for Windows
does not work on Windows 10 IoT Core. But now we have a beta version of Brick
Daemon that works on Windows 10 IoT Core.
Installation
This version of Brick Daemon has been tested on a Raspberry Pi 2 Model B with
the Windows 10 IoT Core versions 10.0.10586, 10.0.14295 and 10.0.14376.
At the moment Brick Daemon for Windows 10 IoT Core can only be installed from
source code. If you don’t have Visual Studio 2015 for Windows 10 IoT
development installed yet then you can follow Microsoft’s Getting Started guide to install it.
Now you can download and unpack the required Brick Daemon
and daemonlib
source code from GitHub. The daemonlib source code has to be unpacked to
src\daemonlib directory in the Brick Daemon source code directory:
brickd-2.2.2-uwp-beta1
-> src
-> brickd
-> client.c
-> ...
-> daemonlib
-> daemon.c
-> ...
Now open src\brickd\brickd_uwp.sln in Visual Studio 2015 and compile and
run the project. You should now see a running Brick Daemon app.
It’s a beta!
This is a beta version because there is currently one major issue: USB device
auto-detection doesn’t work properly for all Bricks.
The Windows.Devices API to access USB devices requires that every USB device has
a DeviceInterfaceGUID assigned. Normally this would just work out-of-the box with all Bricks,
but Windows 10 IoT Core (at least versions 10.0.10586, 10.0.14295 and 10.0.14376) seem
to have a bug that breaks this for all Bricks except the RED Brick. It’s
unclear why the RED Brick is not affected by this problem.
Becasue of this all Bricks except the RED Brick need a manual change in the Windows
Registry to make the Windows.Devices API accept them. Here’s what you need to once
do for every Brick:
Connect the Brick to USB first, then connect to Windows 10 IoT Core using Power Shell
and modify and execute the following command:
reg add "HKLM\System\CurrentControlSet\Enum\USB\VID_16D0&PID_063D\6K9mW5\Device Parameters" /v DeviceInterfaceGUIDs /t REG_MULTI_SZ /d "{870013DD-FB1D-4BD7-A96C-1F0B7D31AF41}"
This adds the missing DeviceInterfaceGUID for a Brick with UID
6K9mW5. To add the DeviceInterfaceGUID for your Brick replace 6K9mW5
with the UID of your Brick in the command.
Afterwards you need to reset the Brick. Now Brick Daemon should find it. But
sometimes the reg add command hangs for some unknown reason. If this happens
restart Windows 10 IoT Core and try again.
There is a thread in our forum for your feedback.
The second part will discuss the technical details and challenges of porting
Brick Daemon to Windows 10 IoT Core.