Seite 6 von 8
Re: AX HD51
Verfasst: Mo 6. Nov 2017, 08:29
von udog
moinsen..der Bau ansich scheint ok
das image landet aber im Buildverzeichniss
wo könnt ich das ändern ?
Code: Alles auswählen
zip -r /home/udog/buildsystem-ddt/hd51_multi_usb_06112017-082223.zip hd51/rootfs.tar.bz2 hd51/kernel.bin hd51/disk.img hd51/imageversion
adding: hd51/rootfs.tar.bz2 (deflated 0%)
adding: hd51/kernel.bin (deflated 0%)
adding: hd51/disk.img (deflated 84%)
adding: hd51/imageversion (stored 0%)
# cleanup
rm -rf /home/udog/buildsystem-ddt/build_tmp/image-build
[ -x /home/udog/buildsystem-ddt/custom/flashimage-local.sh ] && KERNEL_VER=4.10.12 && BOXTYPE=hd51 && /home/udog/buildsystem-ddt/custom/flashimage-local.sh /home/udog/buildsystem-ddt/tufsbox/release /home/udog/buildsystem-ddt/tufsbox/cdkroot /home/udog/buildsystem-ddt /home/udog/buildsystem-ddt/flash hd51 || true
Übergebene Variablen vom buildsystem:
-------------------------------------------------
RELEASE_DIR = /home/udog/buildsystem-ddt/tufsbox/release
TARGET_DIR = /home/udog/buildsystem-ddt/tufsbox/cdkroot
BASE_DIR = /home/udog/buildsystem-ddt
FLASH_DIR = /home/udog/buildsystem-ddt/flash
BOXTYPE = hd51
-------------------------------------------------
keine Dateien in: /home/udog/buildsystem-ddt/flash/hd51/out
udog@ubuntu:~/buildsystem-ddt$
Re: AX HD51
Verfasst: Mo 6. Nov 2017, 09:14
von thomas
Code: Alles auswählen
thomas@thomas:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 1908:2310 GEMBIRD
Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 006: ID 093a:2521 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
thomas@thomas:~$
nun usb raus und wieder rein
Code: Alles auswählen
thomas@thomas:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 025: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Bus 001 Device 005: ID 1908:2310 GEMBIRD
Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 006: ID 093a:2521 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
thomas@thomas:~$
Re: AX HD51
Verfasst: Mo 6. Nov 2017, 10:52
von DboxOldie
@udog:
Da steht es doch:
Code: Alles auswählen
zip -r /home/udog/buildsystem-ddt/hd51_multi_usb_06112017-082223.zip hd51/rootfs.tar.bz2 hd51/kernel.bin hd51/disk.img hd51/imageversion
Das Zip File: hd51_multi_usb_06112017-082223.zip
wird in : /home/udog/buildsystem-ddt
erzeugt.
Re: AX HD51
Verfasst: Mo 6. Nov 2017, 22:37
von udog
alles richtig...Ich bin und bleibe auch weiterhin "Anfänger" und trotzdem frage ich jetzt......
wenn alles aus einerm Git gebaut werden soll /kann und dießes
make flashimage zum Flash erstellen für jeden Boxtyp eingesetzt werden kann, wäre es dann nicht einfacher für jeden Boxtyp auch ein yaudscript vorzugeben ? in dem drinn steht wo es gegebenen Falls entpackt bzw dann auch auf den Server geladen werden kann ?
zB.
flashimage-local-ufs913.sh
flashimage-local-hd51.sh
usw.
hier mit der 913 klappt das mit dem flashimage-local.sh ausgezeichnet
Code: Alles auswählen
#!/bin/sh
#
# Custom Script für : make flashimage
# wird automatisch nach Fertigstellung aufgerufen
#
# Das Script kopiert das aktuellste erzeugte Image Zip File aus ../out
# in einen beliebig definierbaren Ordner.
# Default : 'flash_image_dir=$BASE_DIR/images-entpackt/$BOXTYPE'
# Bedingung :
# Das Datum am Ende des Zip File Namens muss in der Form: "DATETIME=_`date +%d.%m.%Y-%H.%M`"
# auch vorhanden sein. ( wie es in .../custom/gitversion.sh angehängt wird )
# Hintergrund:
# Der Datumausdruck wird umgewandelt in : mm/dd/yyyy hh:mm
# da das 'date' Kommando nur dieses Format in Unix Sekunden Zeit umwandeln kann !!
#
# Die von 'make flashimage' übergebenen Variablen einlesen
RELEASE_DIR=$1
TARGET_DIR=$2
BASE_DIR=$3
FLASH_DIR=$4
BOXTYPE=$5
# Übergebene Variablen anzeigen
echo -e "\033[01;32mÜbergebene Variablen vom buildsystem:"
echo -n -e "\033[01;33m"
echo "-------------------------------------------------"
echo "RELEASE_DIR = $RELEASE_DIR"
echo "TARGET_DIR = $TARGET_DIR"
echo "BASE_DIR = $BASE_DIR"
echo "FLASH_DIR = $FLASH_DIR"
echo "BOXTYPE = $BOXTYPE"
echo "-------------------------------------------------"
echo -n -e "\033[00m"
# ***************
#
# Hier werden die Zip Dateien entpackt
#
flash_image_dir=$BASE_DIR/images-entpackt/$BOXTYPE
[ ! -d $flash_image_dir ] && mkdir -p $flash_image_dir
#
# Hier liegen im BS (Standard) die vom BS erzeugten Zip Dateien mit den Flash-Files
#
build_flash_image_dir=$FLASH_DIR/$BOXTYPE/out
zip_name=""
file_name=""
#
unzip_image()
{
# Altes löschen
rm -f $flash_image_dir/*
# Neues kopieren
cp -a $build_flash_image_dir/$zip_name $flash_image_dir/
echo -n -e "\033[01;33m"
# Flash-Files auspacken
unzip $flash_image_dir/$zip_name -d $flash_image_dir/
echo -n -e "\033[00m"
# Token mit Image-Name erstellen, oder...
# ...die Zip Datei nicht löschen lassen ( damit man weis was da liegt :-)
# touch $flash_image_dir/$file_name
# Zip Datei löschen
# rm -f $flash_image_dir/$zip_name
}
#
search_image()
{
# Datei Liste in Variable speichern
max_val=0
file_list=""
#
file_array()
{
for i in `ls $1`;do
file_list="$file_list$i "
done
}
#
get_max_date()
{
# Datum im Image Namen in Unix Zeit umwandeln
# und das aktuellste in Variable speichern
old_max_val=0
for i in $*;do
name=$(echo $i | grep '.zip')
if [ -n "$name" ];then
strlen=${#i}
anfang=$((strlen-20))
name=$(echo ${name:0:strlen-4})
j=$(echo ${i:anfang:20})
tag=$(echo ${j:0:2})
monat=$(echo ${j:3:2})
jahr=$(echo ${j:6:4})
zeit=$(echo ${j:11:5} | tr '.' ':')
dtf="$monat/$tag/$jahr $zeit"
utime=$(date -d "$dtf" +"%s" 2> /dev/null)
[ "$?" != "0" ] && continue
#echo $utime
[ $utime -gt $old_max_val ] && old_max_val=$utime
fi
done
max_val=$old_max_val
#echo $max_val
}
#
get_newest_file()
{
# Das aktuellste Image anhand der gespeicherten Unix Zeit
# suchen und Name in Variablen speichern
for i in $*;do
name=$(echo $i | grep '.zip')
if [ -n "$name" ];then
strlen=${#i}
anfang=$((strlen-20))
name=$(echo ${name:0:strlen-4})
j=$(echo ${i:anfang:20})
tag=$(echo ${j:0:2})
monat=$(echo ${j:3:2})
jahr=$(echo ${j:6:4})
zeit=$(echo ${j:11:5} | tr '.' ':')
dtf="$monat/$tag/$jahr $zeit"
utime=$(date -d "$dtf" +"%s" 2> /dev/null)
[ "$?" != "0" ] && continue
#echo $utime
[ $utime -eq $max_val ] && break
fi
done
zip_name=$(echo $i | grep '.zip')
file_name=$name
}
#
file_array $1
[ -z "$file_list" ] && echo "keine Dateien in: $build_flash_image_dir" && exit 0
get_max_date $file_list
[ $max_val = 0 ] && echo -e "keine passende Datei gefunden in: \033[01;31m$build_flash_image_dir\033[00m" && exit 0
get_newest_file $file_list
}
#
# Main ###
if [ ! -d $build_flash_image_dir ];then
echo -e "Verzeichnis: \033[01;31m$build_flash_image_dir\033[00m ist nicht vorhanden" && exit 0
fi
search_image $build_flash_image_dir
echo -e "aktuellstes Image-Zip: \033[01;32m$zip_name\033[00m in \033[01;33m$build_flash_image_dir\033[00m"
echo -e "Image entpacken nach: \033[01;34m$flash_image_dir\033[00m"
unzip_image
#upload_image
cd /home/udog/buildsystem-ddt/images-entpackt/ufs913/ && wput -uBv * ftp://root:xxxxxxx@192.168.0.169/../../var/www/images/ufs913/
exit 0
vielleicht liege ich aber auch völlig daneben

Re: AX HD51
Verfasst: Di 7. Nov 2017, 00:02
von DboxOldie
Nun der Boxtyp wird ja dem -local.sh übergeben, das muss nicht im Namen stehen.
Die heissen ja deshalb Custom Scripte, weil da der User Aktionen nach seinen Vorstellungen mit Ausführen kann.
Daher halte ich das für eine falsche Lösung da feste Vorgaben mit und in den Scripten zu machen.
Im Falle der hd51 ist es ja so: das ist ja noch alles am Anfang, und sicherlich nicht der Endstand, dass das Zip File im BS Ordner abgelegt wird.
Re: AX HD51
Verfasst: Di 7. Nov 2017, 16:58
von fritz
Build bricht ab mit ..
Code: Alles auswählen
Start build of libglib2 2.54.0
rm -rf /home/fritz/bs-ddt/buildsystem-ddt/build_tmp/glib-2.54.0
tar -C /home/fritz/bs-ddt/buildsystem-ddt/build_tmp -xf /home/fritz/Archive/glib-2.54.0.tar.xz
set -e; cd /home/fritz/bs-ddt/buildsystem-ddt/build_tmp/glib-2.54.0; \
echo "glib_cv_va_copy=no" > config.cache; \
echo "glib_cv___va_copy=yes" >> config.cache; \
echo "glib_cv_va_val_copy=yes" >> config.cache; \
echo "ac_cv_func_posix_getpwuid_r=yes" >> config.cache; \
echo "ac_cv_func_posix_getgrgid_r=yes" >> config.cache; \
echo "glib_cv_stack_grows=no" >> config.cache; \
echo "glib_cv_uscore=no" >> config.cache; \
for i in libglib2-2.54.0-disable-tests.patch; do if [ -d $i ]; then for p in $i/*; do if [ ${p:0:1} == "/" ]; then echo -e "==> \033[00;31mApplying Patch:\033[0m $p"; patch -p1 -i $p; else echo -e "==> \033[00;31mApplying Patch:\033[0m $p"; patch -p1 -i /home/fritz/bs-ddt/buildsystem-ddt/Patches/$p; fi; done; else if [ ${i:0:1} == "/" ]; then echo -e "==> \033[00;31mApplying Patch:\033[0m $i"; patch -p1 -i $i; else echo -e "==> \033[00;31mApplying Patch:\033[0m $i"; patch -p1 -i /home/fritz/bs-ddt/buildsystem-ddt/Patches/$i; fi; fi; done; if [ A2.54.0A == "AA" ]; then echo -e "Patching \033[01;32mlibglib2\033[0m completed"; else echo -e "Patching \033[01;32mlibglib2 2.54.0\033[0m completed"; fi; echo; \
test -f ./configure || ./autogen.sh && CC=arm-cortex-linux-gnueabihf-gcc CXX=arm-cortex-linux-gnueabihf-g++ LD=arm-cortex-linux-gnueabihf-ld NM=arm-cortex-linux-gnueabihf-nm AR=arm-cortex-linux-gnueabihf-ar AS=arm-cortex-linux-gnueabihf-as RANLIB=arm-cortex-linux-gnueabihf-ranlib STRIP=arm-cortex-linux-gnueabihf-strip OBJCOPY=arm-cortex-linux-gnueabihf-objcopy OBJDUMP=arm-cortex-linux-gnueabihf-objdump LN_S="ln -s" CFLAGS="-pipe -O2 -I/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot/usr/include" CPPFLAGS="-pipe -O2 -I/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot/usr/include" CXXFLAGS="-pipe -O2 -I/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot/usr/include" LDFLAGS="-Wl,-rpath -Wl,/usr/lib -Wl,-rpath-link -Wl,/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot/usr/lib -L/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot/usr/lib -L/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot/lib " PKG_CONFIG_PATH=/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot/usr/lib/pkgconfig ./configure --build=x86_64-pc-linux-gnu --host=arm-cortex-linux-gnueabihf \
--prefix=/usr \
--mandir=/.remove \
--cache-file=config.cache \
--disable-fam \
--disable-gtk-doc \
--disable-gtk-doc-html \
--disable-libmount \
--with-threads="posix" \
--with-html-dir=/.remove \
--with-pcre=internal \
--enable-static \
; \
make -j2 all; \
make -j2 install DESTDIR=/home/fritz/bs-ddt/buildsystem-ddt/tufsbox/cdkroot
==> Applying Patch: libglib2-2.54.0-disable-tests.patch
patching file gio/Makefile.am
Hunk #1 succeeded at 244 (offset 11 lines).
patching file glib/Makefile.am
patching file Makefile.am
Hunk #1 FAILED at 6.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.am.rej
make/contrib-libs.mk:167: die Regel für Ziel „/home/fritz/bs-ddt/buildsystem-ddt/.deps/libglib2“ scheiterte
make: *** [/home/fritz/bs-ddt/buildsystem-ddt/.deps/libglib2] Fehler 1
fritz@ubuntu:~/bs-ddt/buildsystem-ddt$
Re: AX HD51
Verfasst: Di 7. Nov 2017, 17:36
von fritz
Der Build bricht jetzt mit einer anderen Meldung beim selben ab...
Code: Alles auswählen
config.status: executing chmod-scripts commands
cd . && /bin/sh /home/fritz/bs-ddt/buildsystem-ddt/build_tmp/glib-2.54.0/missing automake-1.15 --gnu Makefile
configure.ac:66: error: version mismatch. This is Automake 1.15,
configure.ac:66: but the definition used by this AM_INIT_AUTOMAKE
configure.ac:66: comes from Automake 1.15.1. You should recreate
configure.ac:66: aclocal.m4 with aclocal and run automake again.
WARNING: 'automake-1.15' is probably too old.
You should only need it if you modified 'Makefile.am' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'automake' program is part of the GNU Automake package:
<http://www.gnu.org/software/automake>
It also requires GNU Autoconf, GNU m4 and Perl in order to run:
<http://www.gnu.org/software/autoconf>
<http://www.gnu.org/software/m4/>
<http://www.perl.org/>
Makefile:901: recipe for target 'Makefile.in' failed
make[1]: *** [Makefile.in] Error 63
make/contrib-libs.mk:167: die Regel für Ziel „/home/fritz/bs-ddt/buildsystem-ddt/.deps/libglib2“ scheiterte
make: *** [/home/fritz/bs-ddt/buildsystem-ddt/.deps/libglib2] Fehler 2
fritz@ubuntu:~/bs-ddt/buildsystem-ddt$
Ganzes Log ist an gehangen
automake git es für ubuntu leider nur in der installierten Version
Code: Alles auswählen
fritz@ubuntu:~/bs-ddt/buildsystem-ddt$ sudo apt-get install automake
[sudo] Passwort für fritz:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
»automake« ist bereits die neuste Version (1:1.15-4ubuntu1).
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
linux-headers-4.10.0-35 linux-headers-4.10.0-35-generic
linux-image-4.10.0-35-generic linux-image-extra-4.10.0-35-generic
Verwenden Sie »sudo apt autoremove«, um sie zu entfernen.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 145 nicht aktualisiert.
fritz@ubuntu:~/bs-ddt/buildsystem-ddt$
Re: AX HD51
Verfasst: Di 7. Nov 2017, 22:47
von fritz
Re: AX HD51
Verfasst: Mo 27. Nov 2017, 16:20
von fritz
Fällt einen von euch eine Lösung ein wie man in der channel.cpp dass ...
Code: Alles auswählen
bool CZapitChannel::isUHD()
{
switch(serviceType) {
case 0x1f:
return true;
case ST_DIGITAL_TELEVISION_SERVICE:
case 0x19:
{
std::string uhd = "UHD";
if(strstr(name.c_str(),uhd.c_str()))
return true;
uhd = "4K";
if(strstr(name.c_str(),uhd.c_str()))
return true;
uhd = "4k";
if(strstr(name.c_str(),uhd.c_str()))
return true;
}
default:
return false;
}
}
bool CZapitChannel::isHD()
{
switch(serviceType) {
case 0x11: case 0x19:
//printf("[zapit] HD channel: %s type 0x%X\n", name.c_str(), serviceType);
return true;
case ST_DIGITAL_TELEVISION_SERVICE: {
const char *temp = name.c_str();
int len = name.size();
if((len > 1) && temp[len-2] == 'H' && temp[len-1] == 'D') {
//printf("[zapit] HD channel: %s type 0x%X\n", name.c_str(), serviceType);
return true;
}
return false;
}
case ST_DIGITAL_RADIO_SOUND_SERVICE:
return false;
default:
//printf("[zapit] Unknown channel type 0x%X name %s !!!!!!\n", serviceType, name.c_str());
return false;
}
}
ergänzt damit bei den DVB-T2 Sendern nicht fälschlich das UHD-Icon in der Kanalliste verwendet wird ?
screenshot-UHD-Icon-DVB_T2.png
Re: AX HD51
Verfasst: Mo 27. Nov 2017, 20:40
von TangoCash
Code: Alles auswählen
bool CZapitChannel::isUHD()
{
switch(serviceType) {
case 0x1f:
if (delsys == DVB_T2)
return false;
else
return true;
case ST_DIGITAL_TELEVISION_SERVICE:
case 0x19:
{
std::string uhd = "UHD";
if(strstr(name.c_str(),uhd.c_str()))
return true;
uhd = "4K";
if(strstr(name.c_str(),uhd.c_str()))
return true;
uhd = "4k";
if(strstr(name.c_str(),uhd.c_str()))
return true;
}
default:
return false;
}
}
bool CZapitChannel::isHD()
{
switch(serviceType) {
case 0x1f:
if (delsys == DVB_T2)
return true;
else
return false;
case 0x11: case 0x19:
//printf("[zapit] HD channel: %s type 0x%X\n", name.c_str(), serviceType);
return true;
case ST_DIGITAL_TELEVISION_SERVICE: {
const char *temp = name.c_str();
int len = name.size();
if((len > 1) && temp[len-2] == 'H' && temp[len-1] == 'D') {
//printf("[zapit] HD channel: %s type 0x%X\n", name.c_str(), serviceType);
return true;
}
return false;
}
case ST_DIGITAL_RADIO_SOUND_SERVICE:
return false;
default:
//printf("[zapit] Unknown channel type 0x%X name %s !!!!!!\n", serviceType, name.c_str());
return false;
}
}
Re: AX HD51
Verfasst: Mo 27. Nov 2017, 21:14
von fritz
thx, werde ich testen
Re: AX HD51
Verfasst: Mo 27. Nov 2017, 22:07
von fritz
@Tc, ich habe mal nach deinen Vorschlag einen git-patch erstellt ..
Code: Alles auswählen
diff --git a/src/zapit/src/channel.cpp b/src/zapit/src/channel.cpp
index 17c0cf2..fd8ccb5 100644
--- a/src/zapit/src/channel.cpp
+++ b/src/zapit/src/channel.cpp
@@ -204,7 +204,10 @@ bool CZapitChannel::isUHD()
{
switch(serviceType) {
case 0x1f:
- return true;
+ if (delsys == DVB_T2)
+ return false;
+ else
+ return true;
case ST_DIGITAL_TELEVISION_SERVICE:
case 0x19:
{
@@ -226,6 +229,11 @@ bool CZapitChannel::isUHD()
bool CZapitChannel::isHD()
{
switch(serviceType) {
+ case 0x1f:
+ if (delsys == DVB_T2)
+ return true;
+ else
+ return false;
case 0x11: case 0x19:
//printf("[zapit] HD channel: %s type 0x%X\n", name.c_str(), serviceType);
return true;
neutrino-mp, lies sich damit ohne Fehlermeldung durch bauen, aber auf der Box zeigte das gebaute weiterhin das uhd-Icon bei den dvb-t2 Sendern an.
Re: AX HD51
Verfasst: Fr 1. Dez 2017, 18:49
von DboxOldie
TC hatte ja erwähnt, das Uni2 / JESS bei der hd51 bockt, wobei Uni1 problemlos geht....
Stimmt > alle QPSK bringen Timeout, die DVB-S2 8PSK gehen.
Hiermit geht Uni2 / JESS komplett ( der Patch passt zu max-mp )
uni2.patch
Bei mp-cst-next oder tc-mp ist an der Stelle:
Code: Alles auswählen
if (config.diseqcType == DISEQC_UNICABLE && voltage != SEC_VOLTAGE_OFF) {
noch was mehr drinne, muss wohl durch mergen mit NI reingekommen sein.
Da muss der Patch entsprechend angepasst werden.
Ich habe schon länger cst-next für 913 nicht gebaut, daher weis ich nicht ob Uni2 da auch bockt....
Bin aber der Meinung, da an der Stelle auch mal Uni2 auch stand, denn:
Bei Uni1 oder Uni2 ist es zwingend notwendig das die Spannung nur 13 Volt hat und die 22kHz müssen aus sein.
Nur wenn ein Umschalt Kommando gesendet wird, muss die Spannung auf 18V erhöht werden und das Kommando wird mit den 22 kHz Puls gesendet.
Ansonsten ist der Uni-DiseqC Bus blockiert.
Re: AX HD51
Verfasst: Mi 6. Dez 2017, 22:07
von DboxOldie
Eine lustige Sache die passieren kann:
Brav wie immer das Aufnahme Verzeichnis mit /hdd/movie eingestellt.
Funktioniert auch mit der Platte an USB.....
Nun hatte ich die Platte abgestöpselt ( nicht mehr daran gedacht ) und eine Aufnahme gestartet.
Die Box hat auch bis zum Bersten wacker nach /hdd/movie aufgenommen.
Denn die Prüfung bei safe_mkdir() ist nur auf jffs2 oder yaffs ausgerichtet.
Das ext4 auf dem mmcblk wird als OK betrachtet.

Re: AX HD51
Verfasst: Mi 6. Dez 2017, 22:43
von BPanther
Hehe, recht hat's aber.
