Blog

Brick Daemon Beta für Windows 10 IoT Core (Teil 1/2)

Vor einer Weile hat Microsoft Windows 10 IoT Core veröffentlicht, dass auf verschiedenen Embedded Boards, wie z.B. dem Raspberry Pi läuft. Der normale Brick Daemon für Windows läuft allerdings nicht auf Windows 10 IoT Core. Wir haben aber jetzt eine Beta Version des Brick Daemons, die auch auf die auf Windows 10 IoT Core läuft.

Installation

Diese Brick Daemon Version wurde auf einem Raspberry Pi 2 Model B mit den Windows 10 IoT Core Versionen 10.0.10586, 10.0.14295 und 10.0.14376 getestet.

Im Moment kann Brick Daemon für Windows 10 IoT Core nur aus dem Quelltext kompiliert und installiert werden. Dazu muss Visual Studio 2015 für Windows 10 IoT Entwicklung installiert sein. Falls dies noch nicht der Fall ist gibt es hier eine Installationsanleitung von Microsoft dazu.

Als nächstes muss der benötigte Quelltext für Brick Daemon und die daemonlib von GitHub heruntergeladen werden. Der daemonlib Quelltext muss ins src\daemonlib Verzeichnis im Brick Daemon Quelltext Verzeichnis entpackt werden:

brickd-2.2.2-uwp-beta1
-> src
   -> brickd
      -> client.c
      -> ...
   -> daemonlib
      -> daemon.c
      -> ...

Zuletzt src\brickd\brickd_uwp.sln in Visual Studio 2015 öffnen und das Projekt kompilieren und starten. Brick Daemon sollte jetzt auf Windows 10 IoT Core laufen.

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

Beta-Status

Dies ist eine Beta Version, da momentan noch ein größeres Problem vorhanden ist: die automatische Erkennung von USB Geräten funktioniert nicht für alle Bricks korrekt.

Die Windows.Devices API für den Zugriff auf USB Geräte setzt voraus, das jedes USB Gerät eine DeviceInterfaceGUID zugewiesen hat. Normalerweise funktioniert dies von sich aus für alle Bricks, aber Windows 10 IoT Core (zumindest Versionen 10.0.10586, 10.0.14295 und 10.0.14376) scheinen einen Bug zu haben, der dies für alle Bricks außer dem RED Brick behindert. Es ist nicht klar, warum der RED Brick von diesem Problem nicht betroffen ist.

Daher ist für alle Bricks außer dem RED Brick ein manueller Eingriff in die Windows Registry nötig, damit sie von der Windows.Devices API erkannt werden. Folgenden Schritte müssen für jeden Brick einmal ausgeführt werden:

Als ersts den Brick per USB anschließen, dann mit Power Shell eine Verbindung zu Windows 10 IoT herstellen und den folgenden Befehl anpassen und ausführen:

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}"

Dies fügt die fehlenden DeviceInterfaceGUID für einen Brick mit der UID 6K9mW5 hinzu. Um die DeviceInterfaceGUID für deinen Brick hinzuzufügen muss im Befehl 6K9mW5 durch die UID deines Bricks ersetzt werden.

Nach einem Reset des Bricks sollte Brick Daemon ihn jetzt finden. Es kann allerdings vorkommen, dass der reg add Befehl aus unbekanntem Grund hängt. Falls dies passiert muss Windows 10 IoT Core neugestartet und der Befehl erneut ausgeführt werden.

In unserem Forum gibt es einen Thread zu diesem Thema.

Der zweite Teil befasst sich dann mehr mit den technischen Details und den Problemen Brick Daemon für Windows 10 IoT Core zu portieren.