Seid gegrüßt Freunde,

für die Blockwoche an der FH-Dortmund werden wieder die Raspberry Pi ausgepackt. Diese werden benötigt, um die NRF51-DK bzw NRF52-DK Boards in das Mesh Netzwerk einzubinden und zu konfigurieren.

Warum wird nicht BlueZ aus dem Repository installiert?
Es wird die aktuellste Version von BlueZ benötigt, da erst ab Version 5.47 das Tool meshctl vorhanden ist, welches für den Provisioning Vorgang benötigt wird.

Auf der BlueZ Website kann das ".tar.xz"-Paket heruntergeladen werden. Diese ist vom 14.09.2017.
Es gibt jedoch bereits einige Patches, vor allem für das Mesh-Tool auf dem Git-Repository (vgl. Add Mesh management API oder Add config server response for loopback).
Daher builden wir BlueZ vom Repository.
Zunächst laden wir das Projekt herunter:

$ git clone git://git.kernel.org/pub/scm/bluetooth/bluez.git
$ sudo apt-get install autoconf libglib2.0-dev libtool libdw-dev libsbc-dev libspeexdsp-dev libjson-c-dev libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

Danach wechseln wir in das Verzeichnis bluez und konfigurieren den Build-Prozess.

$ ./bootstrap-configure --enable-mesh --disable-midi

Der Parameter--enable-mesh muss explizit mit angegeben werden, damit meshctl installiert wird (vgl. mesh/README).

Nun starten wir den Build-Prozess und installieren BlueZ

$ make
$ sudo make install

Nun sollte das Tool meshctl gefunden werden.
Wir testen es mit meshctl --version.

5.47

Weitere Einstellmöglichkeiten können den README und HACKING Dateien im bluez Ordner entnommen werden.

Anmerkung: Damit meshctl überhaupt startet wird ein Kernel mit Unterstützung der Crypto API benötigt. Dieser ist im Normalfall nicht installiert. Hier eine Anleitung zum Erzeugen eines Kernels mit Crypto.
Ansonsten erscheint folgende Fehlermeldung:

meshctl fails at loading the prov_db

Viele Grüße
Arthur