Samstag, 19. Dezember 2015

Windows 10 - alles easy?

Nachtrag 03.03.2016

Ich habe meine Desktop begonnen zu aktualisieren, schon zum dritten mal. Es gibt offenbar ein größeres Problem mit den Grafiktreibern. Allerdings habe ich an andere Stelle zwei PC und ein Notebook ohne jedes Problem aktualisiert! Ich habe eine AMD Radeon R9 200 Karte. Hier empfiehlt es sich offenbar auf der AMD Seite den aktuellen Treiber suchen zu lassen und über den AMD Installation Manager alles automatisch zu installieren. Dann kamen aktuell noch zwei Updates von Microsoft und nun funktioniert alles. Vorher hatte ich folgende Fehlerbilder:

  1. Monitor Standby führte zum dunklen Bildschirm forever, der PC lief irgendwie noch lies sich aber nicht mehr bedienen.
  2. Allerdings war Standby nicht Monitor aus, das Bild war dunkel aber der Monitor blieb an. Das war auch mit anderen Treibern und auf anderen PCs/Notebooks so, bei denen Fehler 1 nicht auftrat.
  3. Es gab immer mal "Löcher" im Bild, speziell Zeichen wurden nicht komplett dargestellt. Manchmal produzierte die Maus ein löchriges Viereck beim Bewegen.

Das Update

Windows 10 nervt penetrant in der unteren Ecke. Eine Möglichkeit das weg zu bekommen ist, dass Update auch auszuführen. Wer aber noch Geduld hat, sollte auch noch warten. Offenbar gibt es immer noch gravierende Verbesserungen - Bananenprodukt?

Seit Ende November 2015 gibt es die Version 1511, die ein Update auch durch Neuinstallation zulässt. Das Update erfolgt lediglich durch den alten Windows Key.

Jetzt war die Zeit für mich das Update zu versuchen!

Bei meinem Lenovo Yoga 2 Pro wurde der Key sogar sofort aus dem Bios ausgelesen und Windows 10 war sofort aktiviert.
Am längsten dauert auf dem Land das Download mit dem MediaCreationTool. Am Besten, man lädt die Installation als ISO Image, aus dem kann man im Handumdrehen auch einen bootfähigen USB Stick machen.

Den Stick einfach mit Diskpart einrichten und alle Dateien von dem gemounteten ISO Image auf den Stick kopieren.

Der EFI PC hat 7 Partitionen, die Datenträgerverwaltung zeigt uns aber nicht alle. Ich habe Partitionierung beibehalten um aber wirklich eine Neuinstallation zu machen habe ich die Windows Systempartition (die Fünfte bzw. in der angezeigten Datenträgerverwaltung die Vierte) formatiert.

Zur Sicherheit habe ich natürlich vorher die gesamte Platte mit einem Windows Image Backup gesichert und zusätzlich mit dem Dateiversionsverlauf die wichtigsten Dateien auf einem Netzlaufwerk gesichert. Leider übernimmt Windows 10 nicht alle Einstellungen und den Dateiversionsverlauf wie bei einer Neuinstallation Windows 8.1.

Nach dem Setup fehlen zunächst 8 Geräte mit Treibern im Gerätemanager. Video und Maus(Touchpad) laufen nur im Standardmodus, Bluetooth fehlt ganz.
Jetzt bloss nicht die Ruhe verlieren und hektisch irgendwelche Treiber von der Lenovo oder Komponenten-Hersteller Seite laden. Ich habe das Windows Setup zweimal gemacht! Offenbar ist es wichtig zunächst Windows Update zu bemühen. Windows Update ist allerdings unter Windows 10 echt verschlimmbessert, dazu später mehr.
Beim Update werden 7 Geräte mit Treibern versorgt, nur Intel Smart Connect (iSCT) erkennbar an der Geräte ID ACPI\INT33A0 bleibt unerkannt. Da hilft mir der Treiber von der von der Lenovo Seite weiter.
Das Update  lief über zwei Stunden (das Setup keine 15 min)! Früher konnte man den Update Verlauf einfach an einer Stelle erkennen, heute kämpft man sich durch Ereignis Protokolle. Von 11 Hardware Treiber Updates schlagen 10 laut Windows Update Protokoll fehl, aber am Ende sind wie gesagt 7 Geräte mit Treibern versorgt!? Den Intel HD Grafik Treiber will er in zwei Versionen installieren

Nach dem ersten Installationsversuch hatte ich einige Probleme, die offenbar dadurch verursacht wurden, dass ich versucht habe aktuelle Treiber zu installieren. Das kann ich derzeit nicht empfehlen!
  • Der Bildschirm flackerte ohne erkennbaren Zusammenhang, so das eine Arbeit und Bedienung unmöglich war. Unklar blieb auch welche Aktion das Flackern beendete.
  • Mehrfingergesten auf dem Touchpad funktionierten nicht immer.
  • Wenn sie funktionierten, würde häufig beim Scrollen (zwei Finger noch oben oder unten schieben) der Zoom aktiviert. Dies geht eigentlich durch die Kneifgeste, die wiederum wurde praktisch nicht erkannt.
Ich habe den Bildschirmtreiber nach der zweiten Installation sofort konfiguriert:

  1. Intel / HD / Grafik Eigenschaften / Energie / Batteriebetrieb
  2. Die "Automatische Bildschirmaktualisierung" (PSR) in der "Steuerung für Intel HD Grafik" deaktivieren.
  3. Helligkeitssteuerung deaktivieren


Die Helligkeitssteuerung des Displays ist an zwei Stellen aktiv: In den Energieoptionen von Windows und im Grafiktreiber. Entweder kämpfen diese beiden miteinander oder die Helligkeitssteuerung im Grafiktreiber ist inkompatibel. Auf alle Fälle muss man mindestens eine deaktivieren, offenbar arbeiten die wirklich separat - was keinen Sinn macht! Mit der Helligkeitssteuerung von Windows kann ich ganz gut leben, die des Grafiktreibers flackert derart und reagiert oft sehr eigentümlich. Ich finde diese unbrauchbar.

Das Verhalten des Touchpads konnte ich nach der ersten Installation nicht korrigieren. Alle Versuche der gründlichen Treiberdeinstallation und Registry Bereinigung haben die ordentliche Funktion nicht wieder hergestellt.
Deshalb habe ich die zweite Installation durchgeführt, jetzt funktioniert das Touchpad wie gewünscht, auch die Mehrfingergesten.
Allerdings wird beim 2 Finger Scrollen öfters gezoomt, man kann das zwar wieder "zusammenkneifen", aber mich hat das gestört. Ich habe die Kneifgeste deaktiviert (Windows + I und dann Maus und Touchpad Optionen Erweitert...). 

Update ziemlich streng

Und nun - alles gut? Naja Microsoft ist auch bei den Updates für mich etwas über das Ziel hinausgeschossen. Man hat nur noch die Wahl zwischen Update und Update. Die frühere Wahl Neue Updates suchen und benachrichtigen ist gestrichen wurden. Dafür kann man jetzt bestimmte Updates "verschieben". Sehr schön wenn nach dem Aufklappen des Notebooks die 2 Mbit DSL Leitung für 2 Stunden dicht ist und man sich nicht wehren kann. Kann man doch ...


Donnerstag, 10. Dezember 2015

Lenovo Yoga 2 Pro vom USB Laufwerk starten

In Vorbereitung eines Windows 10 updates wollte ich mal sehen ob mein Boot Stick funktioniert. Das war ziemlich frustrierend! Ich kann nicht mit Sicherheit sagen, unter welchen Umständen ein USB Boot Medium am Lenovo Yoga 2 Pro erkannt wird, wenn man es einfach nur ansteckt.
Eventuell ist das Ganze ja auch eine Besonderheit von "EFI PCs" mit spezieller Partitionierung und Recovery.
Ich will hier beschreiben mit welchen Schritten es bei mir nachvollziehbar funktioniert hat.

Ausgangszustand

Das Y2P wurde mit installiertem Windows 8 pro ausgeliefert.
Der Windows Key ist im BIOS (ACPI / MSDM) hinterlegt.
Als Default im BIOS ist EFI Secure Boot und USB Boot ist aktiviert.

Frustierend

Jeder Versuch über Bootmenü oder BIOS Setup einen USB Stick oder ein USB CD-ROM zum Booten zu überreden wurde zunächst ignoriert. Egal ob EFI Bootmedium oder Legacy Medium, egal ob EFI USB Stick mit MBR Partition oder GPT/GUI Partition.

Wiederherstellungmodus


Das Betriebssystem steuert den EFI Start wesentlich, dass muss man offenbar im Hinterkopf behalten. Will man also zuverlässig von einem USB Gerät booten geht man so vor:

entweder Kurz

Mit Windows-I Windows X oder wie auch immer zu dem Menü navigieren wo man mit der Maus auf Neustart drücken kann. Vor dem Klick auf die Maustaste aber die "Shift Taste" der Tastatur gedrückt halten. Es wird die Wiederherstellungskonsole gestartet.


oder Lang

Man hangelt sich über verschiedene Charm Leisten, Suche oder die Systemsteuerung zu dem Punkt
Update / Wiederherstellung
Der dritte Punkt in der Wiederherstellung ist der "Erweiterte Start"

Dann wird Windows beendet und startet ohne BIOS Schirm in die Wiederherstellungskonsole. Dort geht man auf den Punkt "Ein Gerät verwenden".


Jetzt sieht man alle angeschlossenen Boot Datenträger, wenn man im BIOS Legacy Mode gewählt hat sogar die EFI Datenträger doppelt, einmal EFI einmal Legacy. (Der Y2P hat kein CD/DVD Laufwerk, ein USB CD/DVD Laufwerk wird beim Start als USB Laufwerk behandelt.)

Auf alle Fälle bleiben die USB Sticks nach meiner Erfahrung im Bootmenü sichtbar, die CD/DVD Laufwerke verschwinden sobald man sie einmal abgesteckt hat. Man hat also in Zukunft die Chance auch direkt aus dem Bootmenü vom USB Stick zu starten - oder auch nicht.


Wie startet man den Y2P überhaupt?

Der Y2P hat einen kleinen runder Knopf neben dem normalen Einschaltknopf. Den kann man nicht mit dem Finger, maximal mit dem Fingernagel betätigen.

Dieser funktioniert als spezieller Einschaltknopf und hat im normalen Betrieb keine Bedeutung.
Danach erscheint ein Menü:


Jetzt kann man neben dem Setup auch das Bootmenu auswählen.
Im Bootmenü kann man einfach den Ausschalter drücken um eventuell noch einmal den "OKR Knopf" zu drücken, es gibt nämlich kein "zurück". Den "OKR Knopf" kann auch während eines Neustarts in den Moment drücken, wo die Beleuchtung des Ausschaltknopfes (und die Tastaturbeleuchtung, falls aktiviert) ausgeht.




BIOS und Default Werte

Ich habe bei meinen Einstellungen im BIOS festgestellt, dass es offenbar nicht das Gleiche ist, wenn man die EFI Boot Parameter einzeln im Menü einstellt (Boot Menü und Security Menü) oder per F9 als Default Werte lädt. Deswegen gebe ich die klare Empfehlung - Den Boot Mode auswählen:
Man will von einem EFI Medium starten









Man will von einem Legacy oder EFI Medium starten










Und anschließend mit F9 die Default Werte laden und mit F10 sichern!

Donnerstag, 3. Dezember 2015

Backup und Restore von FHEM

Backup ist immer eine gute Idee und sollte regelmäßig erfolgen. Noch viel wichtiger ist, dass man das Backup auch durch einen Restore verifiziert hat!
Viele machen Backup - aber kontrollieren?
Oder wie geht Restore?

Was soll gesichert werden? 

Wichtig ist die Applikation (FHEM) getrennt vom System (Raspbian) zu sichern. Man will ja mal das System neu machen, neue Hardware, neue Raspbian Version usw. Man kann nicht immer davon ausgehen, das man ein komplettes System Image auf einer anderen Hardware wieder einfach zum laufen bekommt.
Meine Vorgehensweise für ein komplettes Restore:
  • Systemimage neu aufspielen
  • Anpassung machen: Hostname, ev. IP, Sprache, Zeit usw. (geht auch per Script)
  • Install Script laufen lassen (siehe hier)
  • Restore FHEM 

Backup FHEM

Backup kann man direkt in FHEM in der Oberfläche machen:
  • backup in der Kommandozeile eingeben oder
  • als Automatik vorm Update einrichten
  • oder per FHEM Geräte Definition als regelmäßiger Job
Wichtig ist in jedem Fall, dass man dafür sorgt, dass das Backup auch auf ein anderes Gerät übertragen wird und nicht nur lokal auf der SD Card liegt. Wenn die mal kaputt geht wäre es sonst blöd...
FHEM führt das backup seit geraumer Zeit  im Hintergund aus, dass Problem mit doppelten Backups durch Browser Refresh ist damit Geschichte (hier noch beschrieben). Im Log entsteht ein Eintrag beim Start, und ein Eintrag wenn es fertig ist:
 Backup with command: tar -cf - fhem.cfg ...  
 Backup done  

Restore FHEM

Mit Winscp kopiere ich die gewünschte/aktuelle Backup Datei aus meinem Sicherungs-Verzeichnis auf das neue System nach /home/pi. Damit umgehe ich Schreibrechte, muss nichts verbiegen und es bleibt quasi eine temporäre Datei. 
FHEM sollte jetzt beendet sein! Entweder mit shutdown in der FHEM Kommandozeile oder über Terminal (siehe unten).
Die eigentliche Wiederherstellung des Programmpfades erfolgt so:
 sudo tar -xvzf /home/pi/FHEM-201xxxxx_xxxxxx.tar.gz -C /opt/fhem/  
FHEM wieder starten und fertig, vorausgesetzt man hat System seitig bei der Neuinstallation nichts vergessen. Die alten Befehl funktioniert auch unter Jessie noch:
 sudo invoke-rc.d fhem start  
 sudo invoke-rc.d fhem stop  

Unter Jessie funktioniert es jetzt mit Systemd: 
 sudo systemctl start fhem  
 sudo systemctl stop fhem  

Mittwoch, 25. November 2015

Alles automatisch

Ich bin absoluter Fan von automatischen, Script gesteuerten Installationen. Die Vorteile scheinen enorm. Vor allem:
  • Man dokumentiert mit den Scripts exakt den Installationsablauf.
  • In Zukunft läuft eine Neuinstallationen von ganz alleine.
Zumindest in der Theorie, in der Praxis bedeutet es vor allem viel Zeit bis so eine Installation läuft.
Ich hätte wahrscheinlich in der Zeit, die ich für meine "Forschung" vertan habe, gut und gerne 50 Raspberry Systeme per Hand installieren können. Egal, ich habe es gemacht und will gerne meine Ergebnisse und Erfahrung teilen.

Ursprünglich wollte ich nicht warten bis das offizielle Jessie Raspbian Image von raspberrypi.org verfügbar ist. Aber dann hat alles etwas länger gedauert. In den meisten Fällen wird das offizielle Image die bessere Wahl sein, um seinen Raspberry Pi aufzusetzen. Ich habe deshalb auch Wert darauf gelegt, dass meine Scripts weitestgehend unabhängig davon laufen ob man ein fertiges Image oder ein gerade "aktuell" heruntergeladenes mit raspbian-ua-netinst hat.
Bei mir dauert das gesamte Image mit den grundlegenden Paketen für mein FHEM System ca. 73 min für download und Setup auf der SD Card.
Selbst das Basisimage dauert zwischen 30 und 42 min. Also nicht gerade schnell und ich empfehle für denjenigen der mit den Installationsscripts experimentieren will, dieses Image abzuspeichern (analog zu meinem Beitrag) und es immer wieder als Ausgangspunkt zu verwenden. Das Image auf eine SD Card zurück schreiben dauert bei 12 MB/sec Schreibgeschwindigkeit nur ca. 4,5 min.
Wer mit raspbian-ua-netinst an sich spielen will: die absolute minimal Installation dauert bei mir ca. 28 min (DSL 2300, netinst Version 1.0.7).
Man braucht nur im Fehlerfall den lokalen Monitor und Tastatur. Nach erfolgreicher Installation greift man mit ssh (putty) auf den raspberrypi (Hostname) zu.

Basisimage

Wer das Original Image von raspberrypi.org verwenden will, kann es einfach herunterladen und mit einem Image Tool seiner Wahl (z.B. win32diskimager) auf die SD Card (=> 8 GB) schreiben.  Die SD Card muss hierfür nicht separat formatiert werden. Mit raspi-config sollte das System nach dem ersten Start konfiguriert werden.
Für die automatische Installation ist dann nur mein Script system-install.sh notwendig.

Für ein schmales "netinst" Image laden wir die aktuelle Zip Datei von hier.

  • Die SD Card (=> 4GB) wird mit SD-Formatter formatiert, falls die SD Card schon im Raspberry steckte: Resize Option verwenden!
  • Der Inhalt der ZIP Datei (ca. 17 MB groß) wird auf die SD Card kopiert, es ist kein Image Tool notwendig!
  • Soll die Installation komplett automatisch erfolgen, werden einfach alle notwendigen Script und Textdateien mit auf die SD Card kopiert.
  • Netzteil anschließen, warten - fertig.

Wichtig!:

Es ist wichtig, die SD Card mit dem Programm SD Formatter zu formatieren und nicht einfach mit Windows. Obwohl in beiden Fällen von der SD Card gestartet werden kann, funktioniert die Installation und Umpartitionierung der SD Card nur nach der Formatierung mit SD Formatter.

Die von mir bereitgestellten Dateien müssen/können angepasst werden. Dies macht man z.B. mit Notepad ++.
Ganz wichtig ist darauf zu achten, dass die Dateien im Unix Format (nur LF als Zeilenende) erzeugt werden um Fehler zu vermeiden. Notepad von Windows erzeugt Dateien im Windows Format (CR und LF als Zeilenende). Obwohl die Dateien im Windows/Dos Format ohne Fehlermeldung akzeptiert werden und durchaus auch funktionieren können, gibt es völlig unerwartete Reaktionen die ausschließlich auf das falsche Dateiformat zurückzuführen sind. Das hat mich einiges an Zeit gekostet weil ich mal schnell etwas per cut&paste aus Notepad kopiert habe und nicht auf das Dateiformat geachtet habe.

Die Datei "installer-config.txt"

Jede Zeile in der installer-config.txt hat einen default Wert. Dieser Wert ist offenbar Versionsabhängig und sollte im Zweifelsfall weggelassen werden. Also bitte nur Zeilen eintragen die vom default Wert abweichen.
Allerdings funktionierte eine Datei nur mit der Zeile "release=jessie) nicht, ich habe immer mindestens die ersten vier Zeilen angeben.
Die Datei darf keine zusätzlichen Leerzeichen enthalten, also packages=pkt1,pkt2 und nicht packages= pkt1,pkt2

packages=alsa-utils,apt-utils,build-essential,console-setup,fonts-freefont-ttf,git,keyboard-configuration,nano,rng-tools,strace,sudo,unzip,usbutils
release=jessie
hostname=RaspberryPi
bootsize=+128M
rootsize=+3200M

Die Installation mit dieser Datei (und ohne post-install.txt) dauert bei mir ca. 42 min. Es werden nur einige notwendige Packages installiert die im Original Raspbian Image auch enthalten sind.

Anmerkung

Aufgrund der verwendeten Paketquellen können nicht alle Pakete installiert werden. Je nach Lage der Pakete kann sich das jederzeit auch mal ändern. Ich habe mir so geholfen, dass ich bestimmte Pakete über die post-install.txt installiere. Das könnte man auch mit allen zusätzlichen Paketen machen und in der installer-config.txt nur release, hostname und Partitionsgrößen definieren.

Partitionsgröße

Die Angaben zur Partitionsgröße werden mit dezimalen Faktoren umgesetzt. Meine Angabe mit 128M erzeugt eine Partition die unter Windows mit 122 MByte (exakt MiB) angezeigt wird. Will man eine Partition mit binärem Teiler von 128 MiB erzeugen müsste man 134217728 (128*1024*1024) eintragen. Hier findet man etwas zu diesem Thema.
Im Installationsscript von netinst wird die Größe mit fdisk umgesetzt, man könnte also mit fdisk Parametern experimentieren: +123000000, +123000K, +123M

Account

Da ich hier keine Anpassung vorgenommen habe, wird der Standard Account root mit dem Passwort raspbian erzeugt.


Die Datei "post-install.txt"

Die Readme sagt dazu:
There is also another configuration file you can provide, post-install.txt, and you place that in the same directory as installer-config.txt. The post-install.txt is executed at the very end of the installation process and you can use it to tweak and finalize your automatic installation.
The configuration files are read in as shell scripts, so you can abuse that fact if you so want to.

Die Datei post-install.txt wird als Shell Script ausgeführt. Prinzipiell kann man darin also "alles" machen. Es gibt aber Einschränkungen:
Das Dateisystem unterscheidet sich vom fertig installierten raspbian:
  • Suchpfade sind nicht vorhanden
  • Es existiert keine "Root" man muss vor jede Pfadangabe /rootfs bzw /bootfs hängen.
  • Programme die davon ausgehen, dass eine Root existiert muss man mit "chroot /rootfs" aufrufen.
Das wird zum Einen leicht nervig, zum Anderen ist dann dieses Script nicht ohne weiteres an andere Stelle verwendbar. Deshalb habe ich mich dazu entschlossen aus der post-install.txt lediglich weiter Scripts aufzurufen. Da die Root Dateiumgebung an den Prozess vererbt wird, gilt diese dann für das gesamte Script. Damit wird der Syntax im Script wieder halbwegs normal und man kann das Script auch manuell im fertigen System aufrufen. Ich habe mich dazu entschlossen zwei Scripts zu machen. Diese kann man beliebig aufgliedern oder zusammenfassen. Um config Dateien zu schreiben und zu verändern habe ich bewusst unterschiedliche Techniken/Möglichkeiten eingebaut.

 chroot /rootfs /bin/bash /boot/system-config.sh  
 chroot /rootfs /bin/bash /boot/system-install.sh  

Das Script "system-config.sh"

In dem Script will ich Dinge einbauen, die man vielleicht typischerweise auch mit raspi-config oder anderen, interactiven Tools erledigt. Damit soll diese Script Einstellungen tun und Pakete installieren, die im offiziellen Raspbian Image vorhanden sind.
  • Zeitzone einstellen
  • Keyboard einstellen
  • System Sprache einstellen 
  • Benutzer pi anlegen
  • Firmware und dazu notwendige Software installieren
  • Wlan einrichten
  • Raspi Tools installieren
  • Startumgebung des pi anpassen
Mein aktuelles Script läuft ca. 10 min. Die Zeit hängt auch wesentlich davon ab, ob die apt-get Datenbasis aktuell ist oder durch das Script wesentlich aktualisiert wird. Das Script verwendet weitere Textdateien mit Konfigurationsinformationen. Diese müssen mit auf die SD Card kopiert werden: config.txt.org, wpaconfig.txt.

Das Script "system-install.sh"

In dem Script soll vor allem zusätzliche Software installiert werden und es soll auch auf einem offiziellen Raspbian Image ausgeführt werden können.
  • Software installieren
  • Samba konfigurieren
  • Scripts kopieren und Rechte setzen
  • Dienste konfigurieren
  • FHEM herunterladen und eventuell installieren
Mein aktuelles Script läuft ca. 20 min. Es benötigt keine weiteren Dateien.

Hier gibt es alle besprochenen Scripts zum download.
Ich übernehme keine Verantwortung für Funktion und eventuelle Schäden!
Alle Scripts sind als Beispiele zu verstehen! Insbesondere die Datei wpaconfig-Public.txt muss editiert werden und als wpaconfig.txt gespeichert werden.
Der Inhalt des Links kann sich jederzeit der aktuellen Situation anpassen.

Tipps

Wer den Benutzer Root deaktivieren will (wie im Original Image) kann dies tun:
 sudo passwd -l root  

Der Installationsprozess ist von der Download Geschwindigkeit und der Schreibgeschwindigkeit der SD Card abhängig. Schnelle SD Card und Raspberry Pi 2 verkürzen die Installationszeit.

Die Code Zeilen wurden mit Hilfe vom dieser Seite formatiert:
http://codeformatter.blogspot.de/2009/06/how-to-format-my-source-code-for.html

Samstag, 14. November 2015

FHEM und Jessie

Ich hatte ja mal aufgeschrieben wie man FHEM auf dem Raspberry Pi ziemlich geradlinig neu einrichtet. Nun gibt es seit kurzem ein offizielles Raspbian Image auf der Basis von Jessie, der neuen Debian Version. Die Welt hat sich insgesamt ein wenig weiter gedreht und es ergeben sich ein paar Änderungen.
Das aktuelle Raspbian Jessie Images (1,3 GB) gibt es wie immer auf der offiziellen Seite.  Die Zip Datei wird entpackt, sie ist wesentlich größer als noch mit Wheezy. Die Image Datei passt nicht mehr auf eine 4 GB SD Card ist auch für das FAT32 Dateisystem zu groß.
Jetzt startet man den Raspberry wie gewohnt und alles weitere funktioniert über Terminalzugang. Mit Raspi-config sollte mindesten die "Internationalisation Options" eingestellt werden. Vor allem Zeitzone und Zeit, damit man von Beginn an richtige Zeitstempel hat.
Das Jessie Image startet per default in die graphische Oberfläche, für einen FHEM Server wahrscheinlich sinnlos. Das kann man auch gleich mit raspi-config abschalten.
Überhaupt ist ziemlich viel in das Image gepackt, was die meisten auf einem Raspberry Pi nicht brauchen werden.

Als Erstes auf alle Fälle:
sudo apt-get update && sudo apt-get upgrade 

Dann die gesamte notwendige Software, das funkioniert wie bisher:
sudo apt-get install expect libdevice-serialport-perl libdigest-md5-file-perl libgd-graph-perl libimage-librsvg-perl libio-socket-ssl-perl libjson-perl liblwp-protocol-http-socketunix-perl liblwp-protocol-https-perl libnet-ssleay-perl libsoap-lite-perl libwww-perl libxml-simple-perl msttcorefonts perl python-dev python-rpi.gpio samba samba-common-bin sendemail telnet && sudo cpan install Digest::SHA1

Aufräumen:
sudo apt-get clean && sudo apt-get autoremove

Meine Konfiguration von damals mit FHEM auf der Fritzbox ist obsolete, aber die das Taster gesteuerte Shutdown und Neustart ist nach wie vor aktuell. Also das Script kopieren und anschließend Rechte setzen und Sonos Soundausgabe vorbereiten.
sudo chmod 777 /home/pi/shutdown.py && sudo mkdir /mnt/SonosSpeak && sudo chmod 777 /mnt/SonosSpeak/

Ab jetzt kommen ein paar Neuerungen ins Spiel. Für den Start des Scripts wird unter Systemd ein Dienst eingerichtet. Als erstes wird eine Datei angelegt, am Einfachsten gleich mit dem Editor:
sudo nano /etc/systemd/system/pishutdown.service

Inhalt:
[Service]
ExecStart=/usr/bin/python /home/pi/shutdown.py
WorkingDirectory=/home/pi
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=pishutdown
User=root
Group=root
[Install]
WantedBy=multi-user.target

sudo chmod 777 /etc/systemd/system/pishutdown.service

Der Dienst muss aktiviert und gestartet werden. Der Start hat bei mir erst nach dem nächsten reboot funktioniert.
sudo systemctl enable pishutdown.service
sudo systemctl start pishutdown.service

Das läuft bei mir wie bisher, es gibt aber auch hier andere Möglichkeiten und andere Scripts. Im ursprünglichen Post ist eine heftige Diskussion mit jede Menge Vorschlägen entstanden.

Email mit sendEmail verschicken hat sich in der Einrichtung auch vereinfacht. Im FHEM Wiki wurde mittlerweile eine wichtige Korrektur zu meinem ursprünglichen Artikel veröffentlicht. Stand heute ist das aber nicht mehr notwendig. Die dort beschrieben Änderung in der ehemaligen Zeile 1907 ist jetzt in Zeile 1933 schon wie im Wiki beschrieben enthalten. 
Damit funktioniert sendEmail auf Anhieb.

Der Samba Service muss noch konfiguriert werden, da ich Dateien für SonosSpeak bereitstellen will.
sudo mkdir /mnt/SonosSpeak
sudo chmod 777 /mnt/SonosSpeak/
sudo nano /etc/samba/smb.conf

Folgende Zeilen hinzufügen:
[SonosSpeak] comment = Audio-Files for SonosPlayer to Speak 
read only = false 
path = /mnt/SonosSpeak 
guest ok = yes

Normalerweise ist per default in der Global-Sektion kein Eintrag für den Parameter Security vorhanden und steht damit auf user. Hier muss normal nichts eingetragen werden!
[global]
security = user

Der Restart des Samba-Servers funktioniert nun so:
sudo systemctl restart smbd.service
Die Installation von FHEM mache ich nach wie vor über Paket Download und Paketverwaltung dpkg. Die Einrichtung über Aptitude wie hier beschrieben habe ich mal probiert. Ich konnte da keine Vorteile erkennen.
wget http://fhem.de/fhem-5.6.deb && sudo dpkg -i fhem-5.6.deb

Das so aktualisierte Image kann man natürlich wieder als eigenes Image ablegen.

Das Jessie Image ist 4224000000 Byte groß, das sind 4125 Sektoren a 1024 byte. Zum Kopieren starten wir wieder den Raspberry mit einem anderen System, das zu kopierende System muss "offline" sein. Die SD Card kommt in einen USB Reader und wir benötigten einen Stick mit einem Dateisystem für Dateien größer 4GB. 
Ich habe auf die "Schnelle" probiert, das Image auf der SD Card des laufenden Systems zu erzeugen, da diese genug freien Platz hatte (16 GB). Anschließend habe ich die Imagedatei mit Winscp übers Netzwerk kopiert, dass dauert allerdings ca. 35 Minuten bei 2 MBit/sec - die Netzwerkschnittstelle des Raspbberry ist eben nicht die Schnellste.
sudo dd bs=1M count=4125 if=/dev/sda of=/home/pi/raspbian.img

Dies dauert mit 7,6 MB/s knapp 10 min. 

Will man kleinere Images und benötigt nicht ein komplettes Raspbian, kann man mit dem netinst Image ein minimales aktuelles System erstellen. Dazu wird es einen extra Beitrag geben.

Mittwoch, 7. Oktober 2015

Preiswerter 4 fach potentialfreier Schalter Homematic

Es gibt von Homematic eine 4 fach Hutschienenaktor (72 mm) der zwar potentialfreie Schaltkontakte hat aber laut Beschreibung und expliziter Angabe in Servicehinweisen nur für einphasigen Anschluss zugelassen ist. Es gibt einzelne Hutschienenaktoren die beliebige Phasen schalten können. Es gibt einen Feuchtraumaufputzschalter (171 mm) für den keine Angaben zu mehrphasigen Schaltvermögen gemacht werden. Diese Aktoren kosten aktuell etwa 100 bzw. 150 €. Der einzelne Aktor (35 mm) kostet als Bausatz für 4 Phasen, also 4 Stck in Summe ca. 176 €
Ich habe mir eine Alternative überlegt: unabhängige Phasen schalten, geringer Standby Verbrauch, 16 A pro Kanal, Hutschienenmontage, 191,25 mm breit, Kosten 79,02 € davon Gehäuse 21,76 €.

Einkaufsliste mit Artikelnummern für Conrad bzw. Elv:


Das montierte Ergebnis sieht so aus:


Die Relais Module gibt es auch ohne bestücktes Relais, wer also Wert auf ein bestimmtes Relais legt kann diese separat und wenn gewünscht auch mit Sockel montieren.  Die Bilder im Conrad Katalog entsprechen nicht der tatsächlichen Bestückung. Die bei mir gelieferten Module waren HF14FW  012-ZST.
Die Relais Module haben eine Statusanzeige und die Schutzdioden an Board, sie können also direkt mit den Transistor/Mosfet Stufen angesteuert werden.
Nirgendwo ist der Schaltplan der Module zu finden, deswegen liefere ich den mal nach.


Das Schaltnetzteil hat einen Standby Verbrauch von ca 0,15 Watt. Die verbauten Relais ziehen jeweils 60 mA, das Netzteil hat damit maximal 245 mA zu liefern und damit noch etwas Luft.
Der Aufbau des Bausatzes HM-LC-Sw4-Ba-PCB ist relativ simpel, nur die Anschlussklemmen und das Funkmodul müssen aufgelötet werden. Die Antenne wurde leicht verändert montiert. Die Empfangseigenschaften sind trotz Einbau im Schaltschrank überraschend gut.
Das Schaltnetzteil passt mit seinen Befestigungslaschen und geringem Druck in die Leiterplatten Fugen der Gehäuseteile. Die geringfügige Lücke zwischen Leiterplatte und Netzteil wurde mit Heißkleberpunkten geschlossen, wer will kann auch einen zusätzlichen Abstandstreifen einfügen. Die Verdrahtung der Module ist simpel, die Relais Module erhalten gemeinsam den Pluspol, der HM-LC-Sw4-Ba-PCB schaltet gegen Minus.

Nachteil der Lösung: Das Modul ist relativ breit, bei mir war der Platz aber vorhanden.

Dienstag, 25. August 2015

Notizen zu Wake On LAN

Manchmal muss man ja "umgekehrt denken". Ein alter Spruch von mir ist: Wenn Copy sagt er kann das Ziel nicht schreiben, bedeutet das in Wahrheit er kann die Quelle nicht lesen. Ich glaube dieser Fehler ist irgendwann um 1980 in die Copy Routine von CP/M oder MS-DOS eingebaut wurden und hat sich seither gehalten.
Warum diese Vorbemerkung? Ganz einfach, will man erfolgreich Wake On LAN (WOL - aufwachen über das Netzwerk) machen muss man die Maschine vorher richtig herunterfahren. WOL selbst ist relativ easy, aber die Maschine in den Zustand versetze, dass sie auf die Magic Packets lauscht ist (immer noch) nicht ganz selbstverständlich.
Hintergrund: Die Netzwerkkarte muss zumindest zum Teil aktiv bleiben, ein Link zum Netzwerk existieren und die Netzkarte muss dem Computer den Startbefehl geben können. Diese Einstellung erreicht man zu meist im Computer BIOS, früher waren auch noch Jumper oder spezielle Kabel notwendig. Aber all das führt nur zum Erfolg, wenn das Betriebssystem den Computer auch richtig herunter gefahren hat. Zuständig dafür ist ACPI. Das bedeutet im Umkehrschluss: War der Strom wirklich weg, geht anschließend kein WOL, dann ist die Wachsamkeitsphase der Netzwerkkarte gestört wurden. Erst ein Start des Systems und ein anschließender ordentlicher Shutdown führt den Computer wieder zu der Fähigkeit durch WOL aufzuwecken. Mir ist zumindest kein System bekannt, wo das ohne geht. In Wahrheit ist Strom weg also wirklich aus und Shutdown ein tiefer Standby.
Falls Wake on Lan also nicht einfach so funktioniert (es gibt schon System, da geht es einfach so) sollte man zuerst im Bios nachschauen.

BIOS

APM        - Advanced Power Management
Wake UP - Aufwachen durch PCI oder PCIe
Power Off - Zustand nach Stromausfall

Sind die Punkte nach denen man im Bios suchen muss, in jedem Bios bei jedem Hersteller sind diese Punkte immer wieder unterschiedlich einsortiert und benannt.
Nachdem man im BIOS alles aktiviert hat kann man sich durch Windows hindurch arbeiten. Es gibt keine allgemein gültige Vorgehensweise, man kann die Punkte in der folgenden Reihenfolge kontrollieren/einstellen und jedes Mal versuchen ob es funktioniert. Die Link LED am Switch (nicht die an der Netzkarte) ist übrigens das Indiz ob die Einstellungen erfolgreich war. Sie geht in der Regel auf einen "Low Speed" Linkstatus, aber ohne Link geht es nicht.

Strom weg?

Es ist häufig so, das nach Stromausfall die Netzkarte nicht mehr im "Bereitschaftszustand" ist. Eigentlich relativ normal habe ich früher gedacht. Aber neuere Systeme können auch dies: Man muss im BIOS nach den Punkt "APM/Restore AC Power loss" oder so ähnlich suchen. Dort kann man quasi einstellen "Last State - vorher wie nachher".
Bei vielen System wird dadurch auch der Zustand der Netzwerkkarte wiederhergestellt.

Unter Windows gibt es folgende "Hürden"

  • Netzkartentreiber - Muss ein Shutdown für WOL generell unterstützen. Manchmal hilft ein neuer Treiber. Auch wenn die Einstellungen alle vorhanden und aktiv sind, hilft manchmal nur ein neuer Treiber. Offenbar sind manche Treiber die von Windows (scheinbar aktuell) mitgeliefert werden genau dort beschnitten. Ich rede von bekannten Herstellern die Allianzen mit Microsoft haben, z.B. Intel!
  • Energieverwaltung am Netzkartentreiber - unterschiedliche Konfigurationsmöglichkeiten unter dem Reiter Energieverwaltung, Erweitert und eventuell weitere treiberspezifische Reiter. Intel hat aktuell zusätzliche Reiter, diese fehlen in den Treibern die von Windows 10 mitgeliefert werden. Der Atheros Treiber hat einen zusätzlichen Punkt für "Shutdown Wake Up"  
  • Energieverwaltung des Systems - hier kann man versuchen Windows Schnellstart auszuschalten - wenn WOL nicht geht. (völlig unlogisch!) Diese Option wird erst eingeblendet wenn man auswählt was beim Drücken von Netzschaltern geschehen soll - auch logisch!?!
  • Herunterfahren - aber wie? In der Kommandozeile shutdown -s eingeben ist nicht immer dasselbe wie Herunterfahren über den Menüpunkt. Eigentlich dachte ich immer, das ist genau das Gleiche. Aber offenbar nicht. (Ob ich hier noch Informationen bekomme?) Im Übrigen wirkt ein Remote Befehl von linux (net rpc shutdown ...) wie ein lokales shutdown auf Kommandozeile, wenn WOL damit geht, funktioniert es auch von linux Remote.
Das Verhalten unter Windows kann sich leider bei jedem Update ändern. Wenn man sich also darauf verlassen muss dass WOL noch geht, sollte man es regelmäßig nach Updates überprüfen wenn man vor Ort ist.

Herunterfahren Button auf dem Desktop

Irgendwo auf dem Desktop rechte Maustaste - neu - Verknüpfung
Hier shutdown -s eintippen, weiter und einen Namen seiner Wahl eingeben.
Rechte Maustaste auf die neue Verknüpfung und dann Eigenschaften - Anderes Symbol.
Hier ein Symbol seiner Wahl auswählen.
Rechte Maustaste auf das neue Symbol und dann - Anheften an Taskleiste - nach belieben verschieben.
Mit einem Klick fährt der PC WOL tauglich herunter!

Linux

Da habe ich keine Tipps. Entweder es geht oder es geht nicht, hängt von der Distribution, den Treibern und den Einstellungen ab. Mal sehen ob ich hier noch Infos einsammeln kann.

Donnerstag, 20. August 2015

Hilfe! Mein Log File läuft über

Gestern habe ich mit einem FHEM Modul für LG Fernseher gespielt. Es war das Falsche wie sich schnell herausgestellt hat. Nun ja, gelöscht und gut!?
Heute konnte ich mein Log File nicht öffnen, bzw. hat es ewig gedauert. Toll plötzlich 132 MB groß!
Das LGTV Device war zwar gelöscht aber das Modul noch aktiv und das hat ca. 70 mal in  der Sekunde rumgejammert, dass da kein Fernseher ist. Um das Problem erstmal zu stoppen:
shutdown in der FHEM Befehlszeile eingeben. Oder im Terminal:
 sudo invoke-rc.d fhem stop  
Und nun? Log File weg schmeißen und neu anfangen? Muss nicht sein, Linux hilft und ist genial wenn man weiß wie. Ich weiß die Linuxer werden jetzt müde lächeln. Also Terminal auf und los:
 sudo cat /opt/fhem/log/fhem-2015-08.log |grep -v "LGTV" > /opt/fhem/log/fhem-2015-08.txt  
Damit wird das Logfile neu geschrieben und alle Zeilen mit LGTV werden ausgelassen (Option -v)  (es waren ca 3,3 Mio Zeilen). Das dauert wenige Sekunden, ein Benchmark der besonderen Sorte.
Jetzt stimmt der neue Name nicht und die Berechtigung (Ich war als pi angemeldet).
Anschließend FHEM wieder starten.
 sudo rm /opt/fhem/log/fhem-2015-08.log  
 sudo mv /opt/fhem/log/fhem-2015-08.txt /opt/fhem/log/fhem-2015-08.log  
 sudo chown fhem:dialout /opt/fhem/log/fhem-2015-08.log  
 sudo invoke-rc.d fhem start  

Hinweis

Je nach konkreter Systemumgebung kann es sein, dass die erste Zeile so nicht läuft, da grep die sudo Rechte nicht erbt. Dann hilft die sudo "shell" mit
 sudo -i  
und man kann die ganzen sudo weglassen. Mit exit wird die sudo shell wieder verlassen.

Wer es öfters braucht: man kann auch ein kleines Script machen, wo lediglich der Suchbegriff angepasst werden muss. Achtung die eigentliche Version des Scripts schafft Tatsachen. Deshalb erstmal testen und dann die entscheidenden Kommentarzeichen löschen.
Grep sucht nach Regular Expressions - man kann die Suche auch komplexer oder feiner machen. Mein Script sucht einfach nach der Textkette (Auch mit Leerzeichen):
#!/bin/bash
# Script entfernt Zeilen aus dem aktuellen Log File von FHEM
# Suchbegriff für die Zeile die entfernt werden soll
STR="LGTV"
month=$(date +%Y)-$(date +%m)
service fhem stop

cat /opt/fhem/log/fhem-$month.log |grep -v "$STR" > /opt/fhem/log/fhem-$month.txt$
#rm /opt/fhem/log/fhem-$month.log
#mv /opt/fhem/log/fhem-$month.txt /opt/fhem/log/fhem-$month.log
#chown fhem:dialout /opt/fhem/log/fhem-$month.log

service fhem start

Zwei Jahre später habe ich dazu gelernt: Es geht auch mit einem Einzeiler, sed kann einfach Zeilen aus dem Textfile löschen:
sed -i /<Suchmuster in der Zeile>/d <Logfile>

Bitte Vorsicht! Der Parameter -i schafft sofort Tatsachen, er editiert die Quelldatei direkt.
Man sollte es vorher prüfen -> den Parameter -i erst einmal weglassen und das Ergebnis wird nur am Bildschirm ausgegeben.
Das funktioniert übrigens noch einfacher direkt aus FHEM heraus. Hier die Ausgabe des korrigierten aktuellen Logfiles direkt im Browser:
{`sed /<Suchmuster in der Zeile>/d $currlogfile`}
Mit dem Parameter -i kann man dann die Korrektur direkt durchführen.

Mittwoch, 19. August 2015

Zeitschalter mit Homematic Aktoren

Hier wird gezeigt wie man die Reaktion von internen Tasten an Homematic Aktoren am Beispiel einer Zeitschaltung beeinflussen kann. Eine normale Zeitschaltung innerhalb von FHEM sollte einfacher mit dem on-for-timer erfolgen!

Zustände

Die Homematic Aktoren (Schalter) schalten so wie es der verknüpfte (peering) Sender vorgibt. Sie haben dazu Registersätze die für jede Verknüpfung (peer) neu angelegt und gespeichert werden. Man kann also mit einem Taster ein und aus schalten. Mit einem anderen Taster eine Zeitschaltung für 10 sec starten. Dabei wird nicht der Taster oder der Schalter auf "Zeitschalter" programmiert, sondern die Verknüpfung Taster mit Schalter wird im Schalter entsprechend gespeichert. Der Schalter macht dabei dann das, was der letzte Tastendruck als Aktion hinterlegt hat. Kleines Beispiel:
 T1 schaltet S1 für 10 sec an  
 T3 schaltet S1 an  
 T4 schaltet S1 aus.  

Diese Tabelle ist im Schalter S1 gespeichert.

Schaltet man mit T3 den S1 an und drückt dann nach beliebiger Zeit kurz T1 geht S1 nach weiteren 10 sec aus.
Schaltet man mit T1 kurz den S1 für 10 sec an aber innerhalb dieser Zeit mit T3 nochmal an, dann bleibt S1 nach Ablauf der 10 sec an.

Tasten sichtbar machen

Jeder Schalter hat interne oder eigene Tasten. Die Steckdose z.B. den Knopf der als Toggle funktioniert. Der Lichtschalter für Markensystem hat einen EIN und einen AUS Knopf.

Die internen Tasten kann man in FHEM sichtbar machen:
 set <device> regSet intKeyVisib visib  
 attr <device> expert 1  

normalerweise sieht man nach kurzer Wartezeit und Aktualiserung der Oberfläche jetzt die internen Register. Eventuell muss man noch die Register abholen:
 set <device> getConfig  

Zeitschalter direkt

Um z.b. eine Steckdose für 10 sec bei Knopfdruck lokal einzuschalten kann man folgendes programmieren:
 set <device> regSet shOnTime 10 self01  

shOnTime ist dabei das zuständige Register für kurzen (sh=short) Tastendruck. Es gibt auch Register für langen Tastendruck lg=long. Eine kurze Beschreibung der Register erhält man durch:
 get <device> regList  

In den Readings werden die Register mit dem jeweiligen verknüpften Taster angezeigt, in unserem Fall also:
 R-self01-shOnTime  

Der Defaultwert für shOnTime ist übrigens 111600 und bedeutet unendlich. D.h. die maximale einstellbare Zeit ist 111599 sec (knapp 31 Stunden). So kann man die Zeit löschen:
 set <device> regSet shOnTime 111600 self01  
oder
 set <device> regSet shOnTime unused self01  

Tastendruck simulieren
Das geht mit
 set <device> press short self01  

Kurz oder lang

Die internen Taster sind oft als Toggle und config Taster ausgelegt. Ein langer Tastendruck (4 sec) versetzt den Schalter in den config/Anlern Modus. Damit scheint es so zu sein, das bei diesen Schaltern kein long press von außen vorgesehen ist, obwohl die Register existieren und man lang press auch simulieren kann.

Praktisches Beispiel: Pool für eine Stunde schalten

Ich habe einen HM-LC-SW4-DR und der channel_01 schaltet die Poolzirkulationspumpe. Dies passiert Zeit gesteuert zweimal am Tag. Manchmal möchte ich im Keller diese Pumpe einfach für eine Stunde aktivieren, der Aktor ist bequem erreichbar an der Wand.
Die internen Tasten vom Hauptdevice (der Aktor hat vier Channel die in FHEM einzeln dargestellt werden) sichtbar machen:
 set LichtKeSW1 regSet intKeyVisib visib  
 attr LichtKeSW1 expert 1  

Jetzt sieht man im Channel 01 - LichtKeSW1_Sw01 den internen peer self01. (Channel 02 ist self02 usw.)
Also jetzt einfach die Zeit eintragen:
 set LichtKeSW1 regSet shOnTime 3600 self01  

Die Toggle Funktion der Taste bleibt erhalten. Ein zweiter Tastendruck schaltet die Pumpe auch sofort wieder aus.

Mittwoch, 5. August 2015

Installation der Openmediavault

Möglichkeiten zur Installation für den H340  

Ich habe noch einen alten Acer H340 den ich im letzten Artikel beschrieben habe. Den will ich jetzt ganz konkret mit openmediavault installieren, dazu hatte ich mehrere Ideen und Möglichkeiten. Was ich konkret probiert habe will ich hier zusammenfassen. Der Artikel soll keine komplette Installationsanleitung sein, sondern die Sammlung dessen was ich konkret getan habe. Zuerst hatte ich zwei Ideen wie ich den H340 installiere, obwohl er so etwas nicht ganz einfach unterstützt.

H340 User mode


  • JP3 auf dem Motherborad geschlossen
  • USB Tastatur
  • VGA am debug connector oder VGA Karte im PCI Stecksteckplatz
  • ISO Image auf USB Stick, wird im Front USB gesteckt
  • SDD oder HDD steckt im SATA Slot 0
  • Bootvorgang per Reset: power on, warten bis i blau blinkt, jetzt sofort Reset Knopf an der Rückseite drücken und nachdem i rot blinkt bootet die Installation vom USB Stick
  • Bootvorgang per Bootmenü: Im BIOS müssen einmal die Setup defaults geladen werden. Beim Bootvrogang F12 drücken und den USB Stick auswählen. Auf den Namen achten, nicht den SMI USB Stick auswählen.

Virtual Box


  • HDD / SDD mit USB Adapter am Host anschließen
  • Aktuell war es keine gute Idee USB 3 Anschlüsse zu verwenden.
  • in der Datenträgerverwaltung die Festplattennummer (X) abfragen
  • Eingabeaufforderung als Administrator starten
  • Mit diesem Befehl die physikalische Platte für Virtual Box verfügbar machen:
     "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands createrawvmdk -filename "<Pfad\Dateiname>.vmdk" -rawdisk "\\.\PhysicalDrive<X>"   
  • Virtual Box als Administrator starten
  • debian System mit Wizard erzeugen, IDE Controller löschen, SATA Controller verwenden
  • vorhanden Platte (vmdk von oben) verwenden 
  • ISO Image als CD Laufwerk einbinden
  • Virtuelle Maschine starten und mit F12 Start von CD erzwingen

Allgemein

Ich habe die Sprache deutsch ausgewählt und durch leeres root Kennwort den Benutzer "root" deaktiviert. Der erste Benutzer erhält damit die Möglichkeit mit "sudo" - gefällt mir besser.
Ist nur ein Laufwerk außer dem Installationslaufwerk vorhanden wird diese automatisch und Nachfrage neu und komplett partitioniert!
Sind mehrere Laufwerke vorhanden fragt die Installation nach.
Meine Festplatte wird so angezeigt:

SCSI1 (0,0,0) (sda) - 126.0 GB ATA SanDisk SDSSDP12

Nach der Konfiguration der System Festplatte vergeht einiges an Zeit zur Installation.
Am Ende wird nach dem Neustart gefragt. Der USB Stick kann stecken bleiben.
Die Installation und Konfiguration von openmediavault ganz allgemein ist hier ganz gut beschrieben

Abschluss der Basis Installation

Direkt am H340
Entfernen von Monitor und Tastatur
Entfernen USB Stick

An der Virtual Box
An der Console anmelden und eine Datei löschen:
sudo rm /etc/udev/rules.d/70-persistent-net.rules
sudo poweroff
HDD vom Host auswerfen und in den H340 einbauen.
H340 neu starten, durch einen kurzen Piep wird erfolgreiche Start bestätigt

Anmelden an der openmediavault

Mit http://openmediavault kann man auf die Weboberfläche zugreifen wenn man den vorgeschlagenen Namen verwendet hat und im internen Netzwerk Namensauflösung funktioniert.
Der Benutzer für die Admin Oberfläche ist admin und das Passwort openmediavault.

Konfiguration der openmediavault

Folgendes habe ich nach der Installation durchgeführt

  • Allgemeine  Einstellungen / Sitzungslimit auf 0
  • Datum und Uhrzeit / ntp Server verwenden
  • Netzwerk / Schnittstellen / Bearbeiten / WOL einstellen
  • Benachrichtigungen / Email konfigurieren
  • Energieverwaltung / Einschaltknopf konfigurieren
  • Aktualisierungsverwaltung / Aktualisierung installieren (Nach der Installation von OMV 3 erhielt ich zunächst einen Fehlermeldung und die Aktualisierung lief nicht wie gewohnt. Es gab zwei Pakete mit 0 Byte Größe angezeigt. Ich habe diese Paket nicht mit ausgewählt und nur den Rest installiert. Danach war dieser Fehler für immer verschwunden)
  • Benutzer / Meinen Benutzer in die Gruppe SSH stecken
  • Dienste / SSH aktivieren

Einrichtung und Feinarbeiten

Festplatten konfigurieren

  • Reale Festplatten / bearbeiten / physikalische Platteneinstellungen 
  • S.M.A.R.T / Einstellungen / Laufwerke / Planmäßige Tests
  • RAID Verwaltung/ (nach einer Neuinstallation werden vorhandene Raids automatisch erkannt)
  • Dateisysteme / Erstellen / Einbinden

Freigabe einrichten

  • SMB/CIFS / aktivieren / Einstellungen
  • SMB/CIFS / Freigaben  / Hinzufügen / + /
  • Name eintippen / Datenträger auswählen / Öffentlich + Nur Gäste auswählen / Speichern (Freigegebenen Ordner) / Speichern (Freigabe) 
  • Anwenden
  • Die somit erzeugte Freigabe ist ohne Authorisierung nutzbar!

Im Terminal

Benutzer zum sudoer machen (nur Beispiel, die Datei kann beliebig heißen)

  • nano /etc/sudoers.d/22_<Benutzer>-nopasswd
  • <Benutzer> ALL=(ALL) NOPASSWD: ALL

Nacharbeit für die spezielle Hardware H340

  • Ansteuerung der i LED blau/rot
  • Ansteuerung der einzelnen HDD LED blau/rot
  • LED und Taster über Front USB


Es gibt diverse Varianten von Treibern für diese LEDs. Einfach nach mediasmartserverd googeln und man wird fündig z.B. hier oder hier. Es ist relativ einfach diesen Treiber selbst kompilieren:

  • Die Quelle herunterladen und entpacken oder als Pfad bereitstellen
  • per Winscp (SFTP) die entpackte Datei (also den kompletten Pfad) z.B. adaptation-mediasmartserverd-730c5806100d nach /home/<Benutzer> kopieren

per ssh (putty) anmelden und Software installieren, das zweite Paket ist ein virtuelles und muss je nach System speziell ausgewählt werden. Es war in OMV 3 schon vorhanden, oder wurde durch g++ installiert.
sudo apt-get update
sudo apt-get install g++
sudo apt-get install libstdc++-dev
sudo apt-get install libudev-dev make

Die Quelle kompilieren
cd adaptation-mediasmartserverd-730c5806100d/
make

Probestart (ctrl+c zum Beenden)
sudo ./mediasmartserverd

Funktioniert alles, kann man die Datei nach /opt/ kopieren und in der /etc/rc.local eintragen

# start our monitor daemon
/opt/mediasmartserverd -D --brightness 8

cp mediasmartserverd /opt/
nano /etc/rc.local
Hier wird auch noch ein fertiger Daemon beschrieben.

Erweiterungen installieren

Für openmediavault stehen zahlreiche Erweiterungen zur Verfügung. Und da in den grundlegenden Erweiterungen nicht allzu viel vorhanden ist gibt es noch die Erweiterung der Erweiterung. Hier vor allem "Autoshutdown"
Die Erweiterungen von omv-extras.org werden wie folgt hinzugefügt
Für OMV 2 diese Datei herunterladen.
Für OMV 3 diese Datei herunterladen.
Erweiterungen / hochladen / lokale Datei auswählen
Erweiterungen ganz unten / omvextrasorg x.xx / installieren

Es dauert irgendwie eine Weile und man muss die Ansicht aktualisieren aber dann sind die zusätzlichen Erweiterungen zu sehen und  unter System gibt es einen zusätzlichen Administrationspunkt für weitere Erweiterungen.

Nützliche Befehle

Ausschalten per Kommandozeile
sudo poweroff

Links und Hinweise

Aktuelle Anleitung Installation OMV
Automatische Installation debian


Dienstag, 4. August 2015

NAS - oder alte Technik recyclen

Windows Homeserver und der Fortschritt

2009 habe ich mir mal einen Acer H340 Homeserver zugelegt. Es war ursprünglich mal ne gute Idee, der Windows Home Server (Basis Windows Server 2003) war eigentlich wirklich für den Heimanwender als zentrale Sicherung gut geeignet. Vieles automatisch und simpel gelöst. Aber wie so immer: neue Windowsversion und man muss ringsherum auch alles neu machen. Microsoft macht manchmal unklare "strategische Versuche" - die dann schnell wieder irgendwie verrecken. Home Server 2011 war nochmal ein liebloser Versuch der Produktpflege auf Basis Server 2008 dann kam das Aus.
Ich hatte noch den Versuch unternommen Windows Homeserver 2011 auf dem H340 zu betreiben, aber das war ziemlich elend.
Die Hardware sieht nach 6 Jahren eigentlich noch schick aus und läuft nach wie vor. Der kleine Würfel fasst 4 SATA Platten, eigentlich zu Schade für den Schrott. Also ein Versuch für neue Verwendung.

Es gab vor ca. 4 Jahren schon viele Projekte, den H340 mit einem Linux NAS System auszurüsten. Ich habe die alten Blogs und How To's hervorgekramt und versucht es nachzuvollziehen. Es gibt im Wesentlichen die Möglichkeiten:

  • fertige NAS Systeme mit Web basierter Administration (FreeNAS, openmediavault) oder 
  • einfach ein Linux System(Ubuntu, debian) nach persönlichen Geschmack und alles selber machen.

Tja: was will ich eigentlich? Einfach nur etwas Storage im Netz? Oder ein Linux System was "alles" kann?

Noch VGA im Haus?

Die erste Hürde ist noch eine Andere. MS hatte mit Windows Home Server die bescheuerte Idee, die Hardware müsse "headless" funktionieren, also keine Grafikkarte, kein Tastatur, keine Maus und kein CD Rom Laufwerk. Über einen Flash speicher konnte eine Art Bootloader gestartet werden, der das System über das Netzwerk von einem Windows PC installiert. Wie installiert man damit jetzt ein Linux System? Da das Ganze unpraktisch von Anfang war, haben die Hersteller der Hardware schon eine VGA Karte und alle nötigen Anschlüsse spendiert, aber an einem "debug connector" intern enden lassen. Dafür hatte ich mir schon vor Jahren ein Adapter Kabel für VGA geholt und mittels Jumper die Tastatur Erkennung aktiviert. Also war ich vorbereitet? Wie man es nimmt, ich hatte mittlerweile einen neuen Monitor und einen neuen Fernseher im Haus und damit waren alle analogen VGA Anschlüsse weggefallen! Also musste erstmal ein VGA HDMI Konverter her, ein bloßer Kabeladapter (HDMI - DVI - VGA) reicht nicht, da die Monitore kein analoges VGA Signal verarbeiten.

Entscheidung für ein System

Ubuntu Server 14.04 LTS als Iso Datei herunterladen, mit Universal-USB-Installer die ISO Datei auf einen bootfähigen USB Stick geschrieben und los geht es. Die Installation läuft ohne irgendwelche Ecken und Kanten. Das wäre also machbar.

Da ich viel mit dem Raspberry Pi und debian mache, wäre es ja schick vielleicht auch hier debian zu nutzen, damit kenne ich mich mittlerweile etwas aus. Denn Linux ist ja nicht gleich Linux, genau wie Windows nicht gleich Windows ist! Mit dem Unterschied, dass die "offene Gemeinde" es mittlerweile geschafft hat die Varianten ins uferlose zu treiben!
Debian netinst.iso lautet die Empfehlung auf der Homepage für effizientes download und es handelt sich um ein "isohybrid" Image. Das bedeutet, man braucht kein Image extra für den USB Stick, auch kein besonderes Tool, sondern schreibt diese Iso Datei einfach als Image auf den USB Stick. Die Empfehlung für Windows ist der win32diskimager.
Auch hier läuft die Installation tadellos und intuitiv. Nach dem Start und der lokalen Anmeldung merke ich aber: ziemlich zäh alles. Die Grafik scheint mir das System etwas zu überfordern. Ja wollte ich das überhaupt?

Von dem Projekt FreeNAS hatte ich schon vor Jahren gelesen und gehört, also einfach mal schauen und probieren. Das sah jetzt plötzlich etwas anders aus, relativ hohe Hardware Anforderung. Egal probieren. FreeNAS bietet auch ein Iso welches genau wie bei Debian mit win32diskimager auf den USB Stick geschrieben wird. FreeNAS basiert übrigens auf FreeBSD.
USB Stick booten (F12 am H340 drücken und Bootdevice auswählen) und siehe da: Bildschirm bleibt dunkel...

Das FreeNAS Projekt hat sich mal aufgespalten und es existiert ein Ableger NAS4Free, also probiere ich den noch. NAS4Free liefert neben Iso auch noch mehrere Image Dateien, welche nimmt man jetzt? LiveUSB klingt nach der Probepackung, download und dann wieder mit windiskmager auf den Stick geschrieben --> Bildschirm bleibt dunkel. Das Image war kein .img sondern ein .img.gz - muss man das erst entpacken? Also mit 7zip ausgepackt und das img auf den Stick geschrieben, booten --> Bildschirm bleibt dunkel. Aber irgendwas passiert im Dunkeln, da läuft ein System!? Es piept im H340 und wenn man den Ausschalter drückt fährt das System offenbar herunter! Ist was übers Netzwerk erreichbar? Fehlanzeige!

Ok irgendetwas ist anders, Treiber Problem? Ja in dem Artikel von Jerret war beschrieben, dass die Netzwerkkarte in FreeBSD nicht direkt unterstützt wird. Ok also versuche ich das Ganze erstmal unter VirtualBox, aha so sieht dieses LiveSystem aus! Feste Netzwerkadresse, nach der Umstellung auf DHCP erreiche ich das Live System über den Browser. Na gut, was ist mit meiner Hardware? ist FreeBSD das Problem? Also kurz mal FreeBSD "ohne alles". Hier gibt es ein img.xz. Entpacken, schreiben und starten --> Bildschirm bleibt dunkel.

Gut dann openmediavault, das basiert auf debian, deswegen gibt es auch wieder ein Iso welches man einfach auf den Stick schreiben kann. Installation läuft problemlos, nach kurzer Zeit kann ich die NAS per Browser erreichen und etwas rumspielen. Ist etwas tricky sich in den Menus zurecht zu finden und eine vorhanden Platte als Netzfreigabe einzurichten, aber es gelingt. Ok das sieht ganz gut aus, dass könnte es ja werden. Vor allem, Shutdown, LED aus und Wake On Lan funktioniert einwandfrei! Das funktionierte unter Windows Home Server auch, aber unter Home Server 2011 konnte ich nicht mehr herunterfahren machen sondern nur noch "Energie sparen" also Hibernate auf Platte. Die blaue Power LED blieb dabei am Blinken.

VGA oder VGA?

So und nun? Einfach so lassen? Mich interessiert schon, warum FreeBSD einen schwarzen Bildschirm liefert? Ist die VGA Karte vom debug System keine vollwertige? Was könnte da sein? Nutzt FreeBSD eine andere Ausgabe - etwa serielle Schnittstelle? Es war in den damaligen Artikel immer die Rede davon, man solle eine VGA Karte in den H340 stecken. Er hat einen Low Profile x4 PCI-Express Slot der rechts nicht offen ist. Die preiswerten PCI Express Karten haben aber alle einen x16 (langen) Connector. Die wenigen x1 PCI-Express Karten sind kaum verfügbar und teuer! Eine Neuanschaffung lohnt für diesen Versuch einfach gar nicht.
Es gibt aber einen interessanten Adapter für ca. 11€ bestehend aus einem x1 PCI-Express Stecker mit USB 3 Buchse (kein USB 3 Anschluss nur Kabel Adapter!) USB 3 Kabel, x16 PCI-Express Slot und einem Sata Strom Anschluss. Mit dieser etwas wüsten Konstruktion kann man tatsächlich test weise eine 16x PCI-Express Karte in einem 1x Slot betreiben.

Siehe da, jetzt macht auch FreeBSD alle Ausgaben sichtbar auf dem Schirm und ich kann die FreeNAS Systeme testen. Dank Live System geht das relativ einfach und schnell. Ich mache auch ein Probeinstallation auf eine USB Stick, das Live System kann keine Konfiguration speichern, nach einem Neustart ist alles verloren. Was relativ schnell auffällt, kein WOL auswählbar, auch nicht Hibernate. Das wird wohl das Kriterium sein.

Mir fällt dann bei weiteren Versuchen auf, dass auch bei den debian Systemen plötzlich viel mehr Ausgaben auf dem Bildschirm landen als mit der eingebauten VGA Karte. Scheinbar funktionieren da ein paar vorausgesetzte Videomodi nicht.

Suche Antworten

In den ursprünglichen Artikel stand auch immer, dass man den integrierten Flash speicher nutzen kann. Obwohl man sich damit eventuell den Rückweg zum Home Server verflasht. Macht das Sinn? Kann man einen USB Stick nutzen? Was ist mit der Geschwindigkeit und Zuverlässigkeit?
FreeNAS baut eine RAM Disk um den USB Stick zu schonen. Openmediavault sagt explizit nein zum normalen USB Stick, wenn dann einen mit SLC-Speicherchips, besser gleich eine SSD.

Einfach eine kleine SATA Platte als System und ich habe 3 Slots frei und könnte sogar RAID 5 machen.
Man könnte den PCI-Express Slot ja noch mit SATA + USB 3 erweitern, so eine Karte liegt auch noch in der Kiste.

H340 User versus debug Mode

Die Steuerung erfolgt mit einem auf dem Board befindlichen Jumper Nr. 3.

User Mode (JP 3 offen)

  • Tastaturerkennung im Bios deaktiviert
  • VGA Ausgabe im Bios teilweise deaktiviert
  • VGA und Tastatur funktionieren allerdings im gestarteten Betriebssystem
  • mit PCI-e VGA Karte sieht man alle Ausgaben Bios und POST, Menü vom Grub loader aber debian startet nicht.


Debug Mode (JP 3 geschlossen)

  • Tastaturerkennung im BIOS aktiviert, Bios und Bootmenü erreichbar.
  • VGA onboard Ausgabe im BIOS aktiviert
  • mit PCI-e VGA Karte sieht man alle Ausgaben Bios und POST, Menü vom Grub loader und debian startet. Allerdings erscheint auf keinem VGA Ausgang die Konsole von debian.

Bootvorgang 

Meine Beobachtungen zum Bootvorgang, diese sind nicht zu 100% reproduzierbar!
Wichtig während des Bootvorganges ist die Beobachtung des "i" Symbols.
Auf der Rückseite befindet sich ein kleiner versenkter Reset Taster den man mit einem spitzen Gegenstand (Draht oder Büroklammer) betätigen kann.

Manchmal blinkt beim einschalten kurz die blaue LED über USB Front und i rot.
Wenn sofort nach dem Einschalten das Netzwerk auf der Vorderseite Aktivität anzeigt (und auf der Rückseite auch wenn das Gerät aus ist) wurde der H340 vom Betriebssystem beim Shutdown in einen WOL fähigen Zustand versetzt.

Nach Power on Knopf drücken passiert folgendes:

Ohne bootfähiges System (keine HDD kein USB)
  • USB vorn blinkt kurz blau
  • nach 11 sec i blinkt blau
  • nach ca 17 sec Netzwerk wird aktiviert und blinkt vorn blau
  • nach 1:15 min leuchtet i und die  HDD LED 1 +2  statisch rot, das Netzwerk wird deaktiviert
  • es erfolgt zu keiner Zeit eine Ausgabe eine Start oder BIOS Meldung
  • es wird nicht vom internen Flash gebootet


Steckt  hinten oder vorn ein bootfähiger USB Stick und keine HDD wird nach ca. 16 sec von dem gebootet. Die i LED blinkt weiter blau.
Steckt eine HDD (und wahlweise ein bootfähiger USB Stick) wird nach ca. 20 sec von dieser gebootet und es erfolgt beim einschalten meistens eine kurze BIOS und Startmeldung.

Um den Start vom USB Stick zu erzwingen, muss man unmittelbar nachdem i blau blinkt den Reset Taster kurz drücken. Steckt kein USB Stick wird jetzt vom internen Flash gebootet. Dort befindet sich ein Windows PE System welches den Windows Home Server Recovery Vorgang startet.

Einfach noch ein paar Links und Zahlen

openmediavault vom USB Stick
https://wiki.debian.org/InstallOpenMediaVaultOnDebian

Startzeiten
- bis zum Bootmenü des H340 --> 26 sec
- NAS4Free USB Stick 2.0 für den Start total -->  2 min 37 sec
- openmediavault auf USB 2.0 Festplatte für den Start total --> 1 min 32 sec
- debian SATA HDD ab Bootmenü bis zum login --> 1 min
- openmediavault auf SATA HDD ab Bootmenü bis zum login --> 1 min 8 sec
- openmediavault auf SDD für den Start total --> 40 sec

Zugriffsgeschwindigkeit
Eine Samsung HD103SJ im H340 am internen SATA, ohne aktivierten Schreibcache, freigegeben über SMB/CIFS und als Laufwerk Z: unter Windows 8.1 eingebunden bringt mit CrystalDiskMark folgende Werte:

           Sequential Read :    74.478 MB/s
          Sequential Write :    91.900 MB/s
         Random Read 512KB :    75.524 MB/s
        Random Write 512KB :    88.363 MB/s
    Random Read 4KB (QD=1) :    12.281 MB/s [  2998.3 IOPS]
   Random Write 4KB (QD=1) :     9.646 MB/s [  2354.9 IOPS]
   Random Read 4KB (QD=32) :    12.319 MB/s [  3007.7 IOPS]
  Random Write 4KB (QD=32) :     9.960 MB/s [  2431.6 IOPS]

Sie ist damit in fast allen Disziplinen wesentlich schneller als eine unter Windows 8.1 lokale  ST31000528AS

           Sequential Read :    77.426 MB/s
          Sequential Write :    74.452 MB/s
         Random Read 512KB :    25.344 MB/s
        Random Write 512KB :    43.597 MB/s
    Random Read 4KB (QD=1) :     0.336 MB/s [    81.9 IOPS]
   Random Write 4KB (QD=1) :     0.685 MB/s [   167.2 IOPS]
   Random Read 4KB (QD=32) :     0.879 MB/s [   214.6 IOPS]
  Random Write 4KB (QD=32) :     0.679 MB/s [   165.7 IOPS]

Der Praxistest mit einer Windows 10 Maschine unter VirtualBox belegt das eindrucksvoll.

Samstag, 25. Juli 2015

Himbeere mit Blauzahn

Für Anwesenheitserkennung im Haus gibt es viele Varianten. Mittels Bluetooth ist eine davon, die wollte ich schon immer mal probieren. Jetzt steht vielleicht eine Umstellung durch das neue FRITZ!OS an, deshalb schnell mal getestet. Wie installiert man Bluetooth auf dem Raspberry? Das hat mir grundlegend geholfen. Ich schreibe hier mal wieder genau auf, wie ich es gemacht habe:

Zuerst den Stick bestellt, der hier funktioniert am Raspberry unter debian wheezy problemlos: "CSL USB Nano Stick V4.0 Model BSN23966"
Je nach Modell ist der Raspberry sensibel, wenn man USB Geräte steckt, also besser runterfahren und erst dann anstecken. Obwohl bei einem Versuch der BT Stick nach dem einstecken erkannt wurde, lief trotzdem nach der Installation der Bluetooth Dienst nicht. Nach einem Reboot funktionierte alles.
Der Befehl
 lsusb  
listet mir diese Gerät:
 Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)  
Sieht also erstmal gut aus.

Jetzt noch Software installieren, update muss einmal am Tag sein, upgrade und autoremove kann man ab und zu mal machen um aktuell zu sein
 sudo apt-get update  
 sudo apt-get upgrade  
 sudo apt-get autoremove  

Die eigentlichen Dinge werden jetzt installiert
 sudo apt-get install bluetooth bluez-utils blueman  

Danach kann man den Status abfragen:
 /etc/init.d/bluetooth status  
Die Quittung sollte so aussehen
 [ ok ] bluetooth is running.  

Jetzt aktiviert man z.B. am Smartphone Bluetooth und macht es für einen Zeitraum sichtbar. Dann kann man folgendem Befehl die Bluetooth Umgebung scannen.
 hcitool scan  

Die Ausgabe sieht dann etwa so aus
 11:22:33:44:55:66    Nexus  

Auch wenn Bluetooth am Smartphone jetzt wieder nicht mehr auf sichtbar steht, kann man die Erreichbarkeit testen solange Bluetooth aktiv ist.
 sudo l2ping -c 1 11:22:33:44:55:66  

Damit ist die Einrichtung und der Test abgeschlossen. Jetzt kann man Bluetooth zur Anwesenheitserkennung von Geräten nutzen.

Die Reichweite ist nicht hoch, es geht also wirklich Zimmer oder Etagenweise. Ein paar Meter und eine Wand schafft er aber schon. Die Erkennung ist schneller als mit Wlan, dass werde ich mir vor allem für die "Ich bin wieder da" Erkennung zu nutze machen.