Synology Diskstation DS213+

Aus FHEMWiki

Ab DSM 5.0 gibt es für die DS213+ (CPU: Freescale PowerPC, siehe hier) ein Paket für Perl, welches via Paketmanager installiert werden kann.

Diverse Perl-Module (z.B. Device::SerialPort) lassen sich jedoch nicht (einfach via cpan oder ipkg) installieren (Stand: Juni 2015).

Man kann Perl jedoch auch direkt auf der Diskstation kompilieren, mit dem Vorteil, dass dann cpan funktioniert und so diverse Perl-Module, die von Fhem bzw. von Fhem-Modulen verwendet werden, installiert werden können. So kommt man zu einer leistungsfähigeren Installation von Fhem, als z.B. auf einem RaspberryPi.

Perl Installation

Vorbereitungen

Sollte das Perl-Paket installiert sein - bitte das Perl-Paket zuerst deinstallieren!

Im Prinzip vorgehen wie in http://search.cpan.org/dist/perl-5.20.2/README.synology beschrieben: Für die DS213+ gibt es aktuell (Juni 2015) kein Synology Paket ("Bootstrap Installer Beta"), das ipkg installiert, also installieren via command line (ssh)

Synology ipkg installieren

siehe http://www.synology-wiki.de/index.php/IPKG

Für PowerPC (ppc_85xx, e500v?): http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh

cd /volume1/public
wget http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh
sh syno-e500-bootstrap_1.2-7_powerpc.xsh

... (PATH anpassen, start script..., reboot,...)

Compiler installieren

Um Perl auf der Synology Diskstation zu compilieren, installiert einen Compiler samt Zubehör auf der DS213+:

ipkg install make gcc coreutils patch expat

(expat wird später für die Perlmodule für das Fhem Sonosmodul gebraucht)

Symlinks zu system libraries

Der Compiler erwartet z.B. die library libm.so, das ist normalerweise ein symlink zu libm.so.6. Synology bietet nur das letztere und nicht den symlink. Das kann nachgeholt werden:

cd /lib
ln -s libm.so.6 libm.so
ln -s libcrypt.so.1 libcrypt.so
ln -s libdl.so.2 libdl.so
cd /opt/powerpc-linux-gnuspe/lib
ln -s /lib/libdl.so.2 libdl.so
ln -s /lib/libgdbm.so /lib/libgdbm.so.3
ln -s /lib/libdb-5.1.so /lib/libdb-4.2.so
ln -s /lib/libgdbm_compat.so /lib/libgdbm_compat.so.3

ACHTUNG: Nach einem Systemupdate (update der DSM) sind die symlink wieder weg und müssen gegebenenfalls wieder hergestellt werden.

Download perl

cd /volume1/public
mkdir perl_sources
cd perl_sources
wget http://www.cpan.org/src/5.0/perl-5.22.0.tar.gz
tar -xzvf perl-5.22.0.tar.gz
cd perl-5.22.0

Policy.sh

Im aktuellen Verzeichnis (/volume1/public/perl_sources/perl-5.22.0) die Datei Policy.sh erstellen (z.B.

vi Policy.sh

mit folgendem Inhalt:

# Administrivia.
perladmin="your.email@goes.here"
# Install Perl in a tree in /opt/perl instead of /opt/bin.
prefix=/opt/perl
# Select the compiler. Note that there is no 'cc' alias or link.
cc=gcc
# Build flags.
ccflags="-DDEBUGGING -Dusethreads"
# Library and include paths.
libpth="/lib"
locincpth="/opt/include"
loclibpth="/lib"

For threads support of Perl (for the SONOS module of Fhem): Fix the pthreads library symlink (Borrowed from Synology Forum)

rm /opt/powerpc-linux-gnuspe/lib/libpthread.so.0
ln -s /lib/libpthread.so.0 /opt/powerpc-linux-gnuspe/lib/

Perl compilieren

./Configure -Dplibpth=/opt/powerpc-linux-gnuspe/lib /lib /usr/lib -de -Dusethreads –Duseithreads
make
make test

Zwei Tests funktionieren nicht, sollte jedoch kein Problem sein.

make install

Perl ist nun im Verzeichnis /opt/perl/ installiert - diesen Pfad zu $PATH hinzufügen:

vi /etc/profile

Zur Zeile PATH=... /opt/perl/bin hinzufügen - könnte dann so aussehen:

PATH=/opt/bin:/opt/sbin:/opt/perl/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Das wirkt erst nach erneutem Anmelden an der Console ;-)

Perlmodule für Fhem-Module installieren

Für den EnOcean USB300

wohl auch für CUL, Zwave...

cpan Device::SerialPort

Für die EnOcean cryptographic functions

cpan Crypt::Rijndael
cpan Crypt::Random 

Für das SONOS-Modul

Man braucht die openssl header files

Openssl Version erfragen:

openssl version

Passende openssl Version downloaden

wget http://www.openssl.org/source/openssl-1.0.1m.tar.gz
tar -xzvf openssl-1.0.1m.tar.gz 
cd openssl-1.0.1m/ 
./config
make
cp include/openssl/* /opt/include/openssl/

Module installieren

cpan LWP::Simple
cpan LWP::UserAgent
cpan SOAP::Lite
cpan HTTP::Request

Für das ENIGMA2-Modul

cpan XML::Simple

(cpan XML::Parser::Lite)

Fhem installieren

Die Fhem Installation wie hier beschrieben abschließen

ToDo's nach DSM-Update

Bei einem DSM-Update gehen keine Daten von FHEM oder von der Perl-Installation verloren. FHEM startet nach einem Update des DSM nicht mehr, da einige Pfade beim Update gelöscht werden. Hier eine Kurzanleitung um die Pfade wieder herzustellen.

Symbolic links

Die symbolic links gehen beim DSM-Update verloren und müssen erneut (via Console) eingetragen werden:

cd /lib
ln -s libm.so.6 libm.so
ln -s libcrypt.so.1 libcrypt.so
ln -s libdl.so.2 libdl.so
ln -s libgdbm.so libgdbm.so.3
ln -s libdb-5.1.so libdb-4.2.so
ln -s libgdbm_compat.so libgdbm_compat.so.3

$PATH anpassen

Die Änderungen an der Umgebungsvariablen $PATH gehen beim DSM-Update verloren und müssen erneut eingetragen werden.

Perl-Pfad und ipkg-Pfad wieder zu $PATH hinzufügen (in den Dateien /etc/profile und /root/.profile):

vi /etc/profile

Zur Zeile PATH=... /opt/bin:/opt/sbin:/opt/perl/bin: hinzufügen - könnte dann so aussehen:

PATH=/opt/bin:/opt/sbin:/opt/perl/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Das wirkt erst nach erneutem Anmelden an der Console ;-)

Danach sollte sich FHEM starten lassen z.B. mit dem Kommando:

perl /usr/local/FHEM/bin/fhem.pl /usr/local/FHEM/etc/fhem.cfg