WLAN-DMX-Interface: Installation

Hier das WLAN-DMX-Interface das von Claus verwendet um sich und andere Musiker ins rechte Licht zu rücken.

Wie bereits beschrieben basiert das Interface auf der Open-Source-Software QLC+. Die Hardware besteht aus einer Raspberry PI (Modell 2 oder 3) so wie einem DMX interface for Raspberry pi von BitWizard. Alternativ zu der hier vorgestellten Lösung mit QLC+ kann das Interface natürlich alternativ mit der gleichen Hardware mit Open Lighting Architecture (OLA) oder ähnlichen betrieben werden. Claus hat sich jedoch für QLC+ entschieden da er dies auch für die zentrale Steuerung verwendet, die Interfaces mit Bildschirm, Maus und ggf. Tastatur oder Tablett auch Standalone verwenden lassen und hiermit nach dem Einschalten auch ohne eine zentrale Steuerung eine Standardbeleuchtung eingeschaltet werden kann. Hierzu später mehr.

Hier wird die Installation der Software QLC+ auf einer jungfräulichen PI beschrieben. Ich habe mir mühe gegeben dies möglichst Dummy-Geeignet zu schreiben. Sollte etwas fehlen bitte auf ein Bild in der nähe klicken und hier einen entsprechenden Kommentar hinterlassen.
Die Anleitung basiert im wesentlichen auf den Anleitungen unter https://github.com/mcallegari/qlcplus/wiki/Linux-build-Qt5 und https://bitwizard.nl/wiki/Dmx_interface_for_raspberry_pi

Die Beschreibung der Hardware so wie STL-Files zum Ausdrucken des Gehäuses sind hier zu finden.

Installation der Raspberry PI

Die hier beschriebene Installation wurde im Juni 2018 mehrfach sowohl auf einer PI Modell 2 als auch auf einer PI Modell 3 durchgeführt und funktioniert mit Raspbian Stretch with desktop Kernel version 4.14 und QLC+ Version 4.11.2.
Als Computer zum Erstellen der Boot-Speicherkarte ein Mini-Mac mit macOS High Sierra verwendet.

Installation Raspbian auf der PI (hier mit einem Mac)

  1. Raspbian von der Raspberry-Website herunterladen. (hier verwendet: Raspbian Stretch with desktop mit Stand vom 27.11.2017. Es kann die aktuelle Version 4.14 verwendet werden.)
    Hier ist auch eine Beschreibung zur Installation des Raspbian mit einem Windows-PC zu finden.
  2. SD-Karte in Mac stecken und Disk-Nummer ermitteln.
    Hierzu das Festplattendienstprogramm öffnen:
    Dann die Geräte-Bezeichnung der SD-Karte merken: (Steht unten rechts, hier disk3s1. Also disk3 merken):
  3. Unmount der SD-Karte (gelb markierte Gerätebezeichnung ggf. ersetzen):
    Mac-mini:~ claus$ diskutil unmountDisk /dev/disk3
  4. SD-Karte formatieren (gelb markierte Gerätebezeichnung ggf. ersetzen):
    Mac-mini:~ claus$ sudo newfs_msdos -F 16 /dev/disk3
  5. Das Image vom Raspbian auf die SD-Karte kopieren (gelb markierte Gerätebezeichnung ggf. ersetzen):
    Mac-mini:~ claus$ sudo dd if=/Users/claus/Documents/Robot/Roberry/ImageRaspian/2017-11-29-raspbian-stretch.img of=/dev/disk3

    Jetzt ist ein guter Moment sich einen Tee zu kochen. Das Kopieren dauert je nach Geschwindigkeit des Rechners und der SD-Karte 1/2 bis zu gut einer Stunde.

  6. Im Finder nachsehen ob SD-Karte neu Gemountet wurde und ggf. Auswerfen:

    Die SD-Karte wird nur manchmal neu gemountet – also keine Angst wenn diese nicht angezeigt wird.

Basiskonfiguration der PI

Nachdem das Rasbian-Image auf der SD-Karte ist kann diese in die PI eingesteckt werden, die PI mit Maus, Tastatur und Bildschirm verbunden werden und gestartet werden. Unmittelbar nach dem Start erweitert die Startprozedur automatisch den Speicherbereich auf der SD-Karte und nach kurzer Zeit ist der Desktop des Raspbian zu sehen:

Als erstes das System auf den neusten Stand bringen. Hierfür zuerst ein Update und dann ein Upgrade durchführen. Hierfür mit dem schwarzen Icon mit >_ in der Taskbar eine Konsole öffnen:

Und hier folgende Befehle ausführen:

pi@raspberry:~ $ sudo apt-get update
pi@raspberry:~ $ sudo apt-get upgrade

Nach dem Upgrade, das unter Umständen wieder länger dauern kann, wird die PI neu gestartet. Hierfür wieder die Himbeere anklicken und im Menü ganz unten Shutdown auswählen. Im folgenden Fenster Reboot anklicken.

Nach dem Neustart wird eventuell eine Infobox angezeigt das das System aktualisiert wurde. Diese kann ohne langes Lesen geschlossen werden (wer Meldungen liest ist feige).

Jetzt durch Klicken auf die Himbeere im Menü unter Preferences den Punkt Keyboard and Mouse auswählen und im folgenden Fenster unter Keyboard Layout die Tastatureinstellungen vornehmen:

Nach dem Schließen aller Fenster über OK unter Prereferences die Raspberry Pi Configuration aufrufen und wie folgt einstellen:

Der Hostname kann hier beliebig eingetragen werden, darf aber keine Leer- und Sonderzeichen enthalten.

Wichtig sind hier die Einstellungen Serialport Enable und Serial Console Disable. VNC zu aktivieren empfiehlt sich um die PI auch ohne Bildschirm und Tastatur über nahezu jeden PC oder Tablett fernsteuern zu können.

  Unter Performance braucht nichts geändert werden. Je nach Modell der PI können hier andere Werte stehen.

  Unter Set Locale wird die Sprache eingestellt.

  Unter Set Timezone wird die Zeitzone eingestellt.

Unter Set WiFi Country wird die WiFi-Länderkennung eingestellt.

Nach Bestätigung der Konfigurationen mit OK wird von dem System ein Neustart vorgeschlagen. Diesen mit Yes ausführen.

Zum Abschluss der Konfiguration wird noch die Auflösung für eine VNC-Session hoch gesetzt. Ohne dies macht das Arbeiten an der PI über VNC wenig Spaß. Hierfür wird wieder eine Konsole benötigt (schwarzes Icon mit >_ in der Taskleiste).

Die Auflösung wird in der Datei /boot/config.txt eingestellt. Da diese mit Administrationsrechten bearbeitet werden muss ist ein Öffnen über den Konsoleneditor nano mit sudo ein guter Weg:

pi@PI_DEV:~ $ sudo nano /boot/config.txt

In den Zeilen 21 und 22 der Datei die hier rot gekennzeichneten Hashtags (#) löschen:

# uncomment to force a console size. By default it will be display’s size minus
# overscan.
# framebuffer_width=1280
# framebuffer_height=720

Zusätzlich werden in der config.txt folgende Zeilen am Ende eingefügt:

# Parameter QLCplus
dtoverlay=pi3-disable-bt
init_uart_clock=16000000

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.

Installation OLA

In den meisten Anleitungen zur Installation von QLC+ auf einer Raspberry PI wird darüber geschrieben das die automatische Installation von OLA über apt-get fehlerhaft ist. Unter Raspbian Strech von ist dies nicht der Fall. Auch unter der Raspbianversion Jessy funktioniert die OLA-Installation über apt-get. Wichtig ist nur, dass nach der Installation der automatisch mit installierte Service olad gestoppt wird und der automatische Start dieses Dienstes deaktiviert wird. QLC+ verwendet OLA, beißt sich aber mit einem laufenden OLA-Service – was verständlich ist da der Service olad auch ohne OLC+ bei entsprechender Konfiguration eine ArtNet-DMX-Bridge, E1.31-DMX-Bridge so wie auch eine Bridge vieler anderer Formate darstellt. Mehr hierzu ist auf der OLA-Webpage zu finden und würde hier zu weit führen.

Die Installation von OLA erfolgt wieder über eine Konsole:

pi@PI_DEV:~ $ sudo apt-get update
pi@PI_DEV:~ $ sudo apt-get install ola

Die Installation erfordert eine Bestätigung mit J das entsprechender Speicherplatz verwendet wird und zahlreiche Komponenten installiert werden. Es gilt also wiedereinmal: Einfach bestätigen. Wer Meldungen liest ist feige.

Wie oben beschrieben muss der Service olad beendet und deaktiviert werden. Hierfür folgendes in der Konsole ausführen:

pi@PI_DEV:~ $ sudo service olad stop
pi@PI_DEV:~ $ sudo update-rc.d olad disable

Für QLC+ muss der UART-Port für OLA aus die serielle Schnittstelle ttyAMA0 konfiguriert werden. Hierfür die Datei /etc/ola/ola-uartdmx.conf mit nano bearbeiten:

pi@PI_DEV:~ $ sudo nano /etc/ola/ola-uartdmx.conf

Die Datei mit folgendem Inhalt füllen:

/dev/ttyAMA0-break = 100
/dev/ttyAMA0-malf = 24000
device = /dev/ttyAMA0
enabled = true

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.

Zu guter Letzt müssen die Benutzer olad und pi noch mit den notwendigen Rechten versehen werden. Hierfür wird olad zu der Gruppe tty und pi zu der Gruppe olad hinzugefügt. Dies erfolgt durch folgende Komandos:

pi@PI_DEV:~ $ sudo adduser olad tty
pi@PI_DEV:~ $ sudo adduser pi olad

wenn jetzt der Service olad mit

pi@PI_DEV:~ $ sudo service olad start

gestartet wird solte

pi@PI_DEV:~ $ service olad status

folgende Rückmeldung geben:

Jun 24 15:10:15 PI_DEV olad[1250]: common/thread/Thread.cpp:194: Thread , policy SCHED_OTHER, priority 0
Jun 24 15:10:15 PI_DEV olad[1250]: olad/plugin_api/DeviceManager.cpp:105: Installed device: UART native DMX:20-/
Jun 24 15:10:15 PI_DEV olad[1250]: olad/PluginManager.cpp:200: Started UART native DMX
Jun 24 15:10:15 PI_DEV olad[1250]: olad/PluginManager.cpp:195: Trying to start Open Pixel Control
Jun 24 15:10:15 PI_DEV olad[1250]: olad/PluginManager.cpp:200: Started Open Pixel Control
Jun 24 15:10:15 PI_DEV olad[1250]: plugins/uartdmx/UartDmxThread.cpp:136: Granularity for UART thread is GOOD
Jun 24 15:10:15 PI_DEV olad[1250]: olad/PluginManager.cpp:195: Trying to start GPIO
Jun 24 15:10:15 PI_DEV olad[1250]: olad/PluginManager.cpp:200: Started GPIO
Jun 24 15:10:20 PI_DEV olad[1250]: common/io/Serial.cpp:149: Device /dev/ttyUSB0 doesn’t exist, so there’s no po
Jun 24 15:10:25 PI_DEV olad[1250]: common/io/Serial.cpp:149: Device /dev/ttyUSB0 doesn’t exist, so there’s no po
~

Wichtig ist hier die gelb markierte Zeile. Die Statusanzeige wird mit der Tastenkombination <Ctrl>+<c> beendet.
Natürlich muss der Service olad jetzt wieder gestoppt werden:

pi@PI_DEV:~ $ sudo service olad stop

Damit ist die Installation und Konfiguration von OLA abgeschlossen.

GPIO auf outputmode setzen

Zum setzen des Boards auf outputmode wird unter /usr/bin ein kleines Script erstellt:

pi@PI_DEV:~ $ sudo nano /usr/bin/set_dmx_mode

Die Datei mit folgendem Inhalt füllen:

#!/bin/sh
# set_dmx_mode
if [ $# -lt 1 ] ; then
echo ‚on or off?‘
exit 1
fi
if [ ! -d /sys/class/gpio/gpio18 ] ; then
echo 18 > /sys/class/gpio/export
fi
echo out > /sys/class/gpio/gpio18/direction
echo $1 > /sys/class/gpio/gpio18/value

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.

Das Script muss jetzt noch mit entsprechenden Berechtigungen zur Ausführung versehen werden und ausgeführt werden:

pi@PI_DEV:~ $ sudo chmod 755 /usr/bin/set_dmx_mode
pi@PI_DEV:~ $ sudo set_dmx_mode 1

zur Sicherheit wird dieses Script bei jedem Systemstart ausgeführt:

pi@PI_DEV:~ $ sudo nano /etc/rc.local

Die gelb markierte Zeile in die Datei einfügen:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will „exit 0“ on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ „$_IP“ ]; then
printf „My IP address is %s\n“ „$_IP“
fi
 

set_dmx_mode 1exit 0

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.

Notwendige Ressourcen für QLC+ installieren

Die notwendigen Ressourcen für QLC+ werden mit folgenden drei Konsolenbefehlen installiert:

pi@PI_DEV:~ $ sudo apt-get install libqt5serialport5-dev
pi@PI_DEV:~ $ sudo apt-get install g++ make git build-essential qt5-default qtbase5-dev qtscript5-dev qtmultimedia5-dev libqt5multimedia5-plugins qttools5-dev-tools fakeroot debhelper devscripts pkg-config
pi@PI_DEV:~ $ sudo apt-get install libasound2-dev libusb-dev libftdi-dev libudev-dev libmad0-dev libsndfile1-dev libfftw3-dev

Installation QLC+

Jetzt erfolgt die eigentliche Installation von QLC+. Hierfür werden die Sourcen von QLC+ über git aus dem Internet geladen, Compiliert und die erstellte Anwendungen Installiert. Hierfür sind folgende Konsolenbefehle auszuführen:

pi@PI_DEV:~ $ git clone git://github.com/mcallegari/qlcplus.git
pi@PI_DEV:~ $ cd qlcplus
pi@PI_DEV:~/qlcplus $ git pull
pi@PI_DEV:~/qlcplus $ nano plugins/plugins.pro

In der jetzt geöffneten Datei die hier rot markierten Rauten löschen:

greaterThan(QT_MAJOR_VERSION, 4) {
#!macx:!win32:SUBDIRS += uart
#!macx:!win32:SUBDIRS += gpio
}

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.
Weiter mit:

pi@PI_DEV:~ $ qmake
pi@PI_DEV:~/qlcplus $ make -j 3

Jetzt ist der richtige Zeitpunkt den armen schwarzen Kater zu füttern und mit ihm zu spielen. Sollten Sie keinen schwarzen Kater haben können Sie sich alternativ ca. 45 Minuten lang an den Zehen spielen.
Nachdem das Compilieren von QLC+ abgeschlossen ist wird die Installation ausgeführt und QLC+ gestartet:

pi@PI_DEV:~/qlcplus $ sudo make install
pi@PI_DEV:~/qlcplus $ qlcplus

Jetzt wird die Oberfläche von QLC+ angezeigt. Hier die Ein- und Ausgänge konfigurieren, das Universum 1 auf Passthrough setzen:

Das Workset in dem neuen Verzeichnis  ~/Documents/QLC+ speichern. Das Verzeichnis ~/Documents ist im linken Fensterbereich auswählbar. Ein neues Verzeichnis QLC+ kann beim Speichern über das Ordnersymbol rechts unter dem Eingabefeld für den Dateinamen angelegt werden.
Dieses QLC+-Workset wird nach dem nächsten Schritt automatisch beim Einschalten der PI gestartet.

QLC+ automatisch starten

Da das Interface nicht laufend mit Bildschirm und Tastatur verbunden ist, ist es sinnvoll das QLC+ automatisch startet. Hierfür folgende Konsolenkomandos ausführen:

pi@PI_DEV:~/qlcplus $ nano /home/pi/Documents/QLC+/start_qlc.sh

In die Datei folgende Zeile einfügen:

qlcplus -o /home/pi/Documents/QLC+/autostart.qxw -p

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.
Die Datei ausführbar machen und zum Autostart hinzufügen:

pi@PI_DEV:~/qlcplus $ chmod g+rwx,u+rwx,o-rwx /home/pi/Documents/QLC+/start_qlc.sh
pi@PI_DEV:~/qlcplus $ sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

In die geöffnete Datei am Ende die hier gelb markierte Zeile einfügen:

@lxpanel –profile LXDE-pi
@pcmanfm –desktop –profile LXDE-pi
@xscreensaver -no-splash
@point-rpi

/home/pi/Documents/QLC+/start_qlc.sh

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.

Swap abschalten

Da das Interface vor dem Ausschalten mit Sicherheit nicht immer ordentlich heruntergefahren wird ist es sinnvoll den Swapspeicher zu deaktivieren. Der physikalische Speicher der PI reicht zum Ausführen von QLC+ alle male aus.

Hierfür folgende Konsolenbefehlen eingeben:

pi@PI_DEV:~/qlcplus $ sudo service dphys-swapfile stop
pi@PI_DEV:~/qlcplus $ sudo systemctl disable dphys-swapfile
pi@PI_DEV:~/qlcplus $ sudo apt-get purge dphys-swapfile

PI als WLAN-Router einrichten

Optional kann die PI auch als WLAN-Router dienen. Bitte hierbei beachten, dass die hier beschriebene Routerfunktion für ein kleines E1.31-Netz oder ArtNet ausreichend ist, aber nicht höchsten Sicherheitsstandards beinhaltet. Weiter ist die PI als Router bei weitem nicht so leistungsfähig wie übliche Hardware-WLAN-Router. Das Übertragen von Bild- oder Audiodaten über dieses Netz kann also problematisch sein.

Zum Einrichten der PI als WLAN-Router folgende Konsolenbefehle eingeben:

pi@PI_DEV:~/qlcplus $ sudo apt-get install hostapd
pi@PI_DEV:~/qlcplus $ sudo nano /etc/hostapd/hostapd.conf

Den Inhalt der jetzt geöffneten Datei hostapd.conf durch folgenden Inhalt ersetzen und das hier gelb markierte !geheim! durch ein eigenes Kennwort mit mindestens 8 Zeichen ersetzen so wie den hier gelb markierten Netzwerknamen Lichtnetz durch einen eigenen Namen ohne Leerzeichen und Sonderzeichen ersetzen:

# WLAN-Router-Betrieb
# Schnittstelle und Treiber
interface=wlan0
#driver=nl80211
# WLAN-Konfiguration
ssid=
Lichtnetz
channel=1
hw_mode=g
wmm_enabled=1
country_code=DE
ieee80211d=1
ignore_broadcast_ssid=0
auth_algs=1
# WLAN-Verschlüsselung
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=
!geheim!

Da die Datei jetzt das WLAN-Kennwort im Klartext enthält sollte der Zugriff auf die Datei auf Administratoren beschränkt werden:

pi@PI_DEV:~/qlcplus $ sudo chmod 600 /etc/hostapd/hostapd.conf

Jetzt wird die Konfigurationsdatei für den Service eingetragen:

pi@PI_DEV:~/qlcplus $ sudo nano /etc/default/hostapd

Die Zeile 10 der jetzt geöffnete Datei in die hier gelb markierte Zeile ändern:

# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#

DAEMON_CONF=“/etc/hostapd/hostapd.conf“

# Additional daemon options to be appended to hostapd command:-
# -d show more debug messages (-dd for even more)

Weiter unten sind in der Datei keine Änderungen vor zu nehmen. Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.
Weiter geht es mit:

pi@PI_DEV:~/qlcplus $ sudo apt-get install dnsmasq
pi@PI_DEV:~/qlcplus $ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf_org
pi@PI_DEV:~/qlcplus $ sudo nano /etc/dnsmasq.conf

In die jetzt geöffnete Datei folgende Zeile eintragen:

# DHCP-Server aktiv für WLAN-Interface
interface=wlan0
# DHCP-Server nicht aktiv für bestehendes Netzwerk
no-dhcp-interface=eth0
# IPv4-Adressbereich und Lease-Time
dhcp-range=192.168.11.2,192.168.11.254,24h
# DNS
dhcp-option=option:dns-server,192.168.11.1

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.
Und als letztes:

pi@PI_DEV:~/qlcplus $ sudo mv /etc/network/interfaces /etc/network/interfaces_org
pi@PI_DEV:~/qlcplus $ sudo nano /etc/network/interfaces

In die jetzt geöffnete Datei folgendes eintragen:

# Localhost
auto lo
iface lo inet loopback
# Ethernet
auto eth0
allow-hotplug eth0
iface eth0 inet manual
# WLAN-Interface
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.11.1
netmask 255.255.255.0
# NAT und Masquerading aktivieren
up /sbin/iptables -A FORWARD -o eth0 -i wlan0 -m conntrack –ctstate NEW -j ACCEPT
up /sbin/iptables -A FORWARD -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT
up /sbin/iptables -t nat -F POSTROUTING
up /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# IP-Forwarding aktivieren
up sysctl -w net.ipv4.ip_forward=1
up sysctl -w net.ipv6.conf.all.forwarding=1
# hostapd und dnsmasq neu starten
up service hostapd restart
up service dnsmasq restart

Gespeichert wird die Datei durch die Tastenkombination <Ctrl>+<o> gefolgt von einem <Return> zur Bestätigung des Dateinamens. Der Editor wird mit der Tastenkombination <Ctrl>+<x> geschlossen.
Jetzt das System nur einmal neu starten:

pi@PI_DEV:~/qlcplus $ sudo reboot now

Und schon sollte ein neues Netzwerk mit dem weiter oben festgelegten Namen vorhanden sein in das Sie sich mit dem festgelegten Kennwort anmelden können.

Weitere Informationen zur Konfiguration und Bedienung von QLC+ finden Sie auf der Homepage von QLC+ oder in der Onlinehilfe von QLC+.