Blog

Brick Daemon Beta for Windows 10 IoT Core (Part 1/2)

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.

https://www.tinkerforge.com/static/img/_stuff/brickd_uwp_beta1_700.jpg

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.