Banana Pi als NAS mit SATA-Port Multiplier betreiben

Wer seinen Banana Pi als NAS betreiben will, bekommt sehr schnell Schwierigkeiten den Speicherplatz zu erweitern. Schließlich hat der Banana Pi nur einen Sata-Port und deswegen ist es standardmäßig nur möglich eine Festplatte mit SATA-Anschluss anzuschließen.

Glücklicherweise gibt es die Möglichkeit an den SATA-Port einen weiteren RAID-Controller anzuschließen über den mehrere SATA-Festplatten eingebunden werden können. Wie man das realisiert, werde ich im folgenden Blog-Eintrag zeigen.

Verwendete Hardware:

Syba Hardware Port Multiplier: Mit diesem SATA-Port-Multiplier ist es möglich einen SATA-Port auf mehrere Ports zu verteilen. Zusätzlich ist ein RAID-Controller integriert. Der verbaute Chipsatz ist JMB393.

„Festplatten-Rack“ Lian Li EX-36 für 3,5′ und 2,5′ Festplatten mit integriertem Lüfter: In diesem „Festplatten-Rack“ kann man verschiedene Größen von Festplatten sehr elegant und platzsparend verbauen. Die mitgelieferten Schrauben sorgen für optimalen Halt und sind dämmen Vibrationen. Weiterhin sorgt der integrierte Lüfter für ausreichend Kühlung.

Externe Stromversorgung für Festplatten und SATA-Port-Multiplier: Damit die Festplatten und der SATA-Port-Multiplier funktionieren, ist es natürlich notwendig diese mit ausreichend Spannung zu versorgen. Dies wird durch diese Netzteile gewährleistet.
Mit einem DELOCK Adapter Power SATA ist es möglich mit einem Netzteil gleich zwei Festplatten mit Spannung zu versorgen.
Der SATA-Port-Multiplier sollte allerdings mit einem eigenen Netzteil betrieben werden.

Verwendetete Software:

BananaPi Pro Jessie 4.2.6 mit PMP Support: Damit der SATA-Port Multiplier funktioniert, ist es notwendig, den Linux-Kernel zu patchen und neu zu kompilieren. Da es glücklicherweise schon vorgefertigte Images gibt, werde ich in dem Blog-Eintrag auf die detaillierte Erklärung zum Neukompilieren eines Kernels verzichten.

Installation:

Die Installation und Konfiguration des Banana Pi Betriebssystems ist auch sehr schnell erledigt.

  • Dazu downloadet man sich zunächst das vorgefertigte Image aus dem letzten Abschnitt und entpackt die Datei aus dem fertigen ZIP-Archiv
  • Die entpackte Image-Datei muss nun mit dem Tool „PhoenixCard Version 3.0.9“ auf eine SD-Karte geschrieben werden:
    1. Als erstes das Image für den Banana Pi und das Programm PhoenixCard herunterladen.
    2. Das rar-Archiv von PhoenixCard entpacken und die Datei „PhoenixCard.exe“ als Administrator starten.
    3. Die Micro-SD-Karte mit einem Klick auf „Format to Normal“ formatieren.
    4. Auf den Button „Img File“ klicken und das heruntergeladene Android Image „Banana.Pi.Pro.HTPCGuides.Installer.PMP.Jessie.4.2.6.img“ auswählen
    5. In der Sektion „Write Mode“ den Radio Button „Startup Mode“ auswählen. Diese Einstellung ist sehr wichtig, da sonst das gebrannte Image nicht bootet.
    6. Auf den Button „Burn“ klicken und PhoenixCard sollte mit dem Schreiben des Images auf die SD-Karte beginnen.
    7. In der unteren „Option“-Ausgabebox sollte nach erfolgreichen Schreiben die Meldung „Magic Complete“ erscheinen.
    8. Die SD-Karte entfernen und in den Banana Pi einlegen
  • Nachdem das System erfolgreich gestartet ist, kann man sich über „ssh“ anmelden. Natürlich sollte der Banana Pi vorher in das Heimnetzwerk integriert werden.
    Der Benutzername für die SSH-Anmeldung lautet „root“ mit dem dazugehörigen Passwort „htpcguides“.
  • Nun ist es abschließend noch notwendig, das Kernel-Modul, das für den Betrieb des SATA-Port Multipliers sorgt, zu aktivieren. Dafür öffnet man die Datei „ahci-sunxi.conf“ mit folgendem Befehl:
    $ nano /etc/modprobe.d/ahci-sunxi.conf
  • In diese Datei trägt man folgende Zeile ein:

    options ahci-sunxi enable_pmp=1
  • Und speichert die Datei mit STRG+O.
  • Abschließend muss der Banana Pi nur noch neu gestartet werden:$ reboot

Nun kann der SATA-Port Multiplier mit einem SATA-Kabel mit dem SATA-Port des Banana Pis verbunden werden. Außerdem sollte ein externes Netzteil der Port Multiplier mit Spannung versorgen. Dass dieser funktioniert, erkennt man an mehreren leuchtenden LEDs.

Anschließend können Festplatten in das Gehäuse verbaut und mit dem Port Multiplier verkabelt werden. Ich empfehle, den Banana Pi bei der Verkablung vom Strom zu trennen und erst danach wieder zu starten.

Wenn alles richtig installiert und konfiguriert wurde, sollten die Festplatten dem mit Befehl

$ fdisk -l

aufgelistet werden.

Bei Fragen nutzt gern die Kommentar-Funktion :-).

Google Drive als Laufwerk auf dem Banana Pi mounten

Wer seine Daten auf dem Google-Drive Cloud-Speicher lagert, möchte eventuell unkompliziert und transparent auf seine Daten zugreifen ohne vorher eine komplette Synchronisation durchzuführen. Gerade auf dem Banana Pi oder Raspberry Pi kann da schnell der Speicherplatz zur Neige gehen.

In diesem Blog-Eintrag werde ich beschreiben, wie man ein Google-Drive-Speicher im Banana Pi als Laufwerk mit Hilfe des Programms „google-drive-ocamlfuse“ einbindet. Für „Nicht-ARM“-Architekturen gibt es bereits fertige Debian-Pakete, die man einfach über den Paketmanager installieren kann. Für ARM-Prozessoren, wie den Banana Pi, müssen die entsprechenden Pakete zunächst manuell kompiliert und installiert werden.

Kompilieren und Installieren:

Glücklicherweise existiert ein fertiges Bash-Script, das die einzelnen Schritte zusammenfasst und automatisch hintereinander ausführt. Ich empfehle, das Script als „root“ auszuführen und danach die fertigen Pakete in das entsprechende User-Home-Verzeichnis zu kopieren. So erspart man sich, dass das Script aufgrund eventueller Berechtigungsprobleme, abbricht.

Weiterhin werden ungefähr 400 MB Speicherplatz benötigt. Entweder man hat noch genug Platz auf seiner SD-Karte oder man passt im Script den Pfad der Variablen „OPAMDIR“ so an, dass sie auf ein externes Speichermedium zeigt.
Dabei sollte man beachten, dass man die „${HOME}“-Einträge im Script auf den Eltern-Pfad von „OPAMDIR“ setzt. Lautet der Pfad von „OPAMDIR“ beispielsweise „/media/usb/opam“ so sollten alle „${HOME}“-Einträge durch „/media/usb“ ersetzt werden.

Hier das Script:

#!/bin/bash
OPAMDIR=${HOME}/opam
DRIVECFG=~/.gdfuse/default/config

sudo apt-get -y –force-yes install ocaml ocaml-findlib sqlite3 camlidl m4 libcurl4-gnutls-dev libfuse-dev libsqlite3-dev camlp4-extra fuse b$
cd $HOME
git clone https://github.com/OCamlPro/opam
cd $OPAMDIR
./configure && make && sudo make install
cd $HOME
opam init –yes && opam –switch=4.01.0dev+trunk –yes
echo „eval \`opam config env\`“ >> ~/.bashrc
opam install google-drive-ocamlfuse –yes
sudo usermod -a -G fuse $USER
newgrp fuse
sudo chmod a+rw /dev/fuse
sudo mkdir -p /mnt/drive
sudo chown $USER.fuse /mnt/drive
sudo sed -i ’s/\#user_allow/user_allow/g‘ /etc/fuse.conf #allows other users to allow_other \ users

Die obigen Zeilen kopiert man einfach in eine Datei (z.b. „installgoogleocaml“) und macht es mit dem Befehl „chmod +x installgoogleocaml“ ausführbar. Gestartet wird das Script dann mit „./installgoogleocaml„.

Das Script läd eine Reihe von Dateien herunter und kompiliert diese anschließend. Das Ganze kann eine ganze Weile dauern!

Nachdem das Script fertig ist, sollte sich – je nach Pfad – die Datei „google-drive-ocamlfuse“ im Verzeichnis „$OPAMDIR/opam/system/bin“ befinden. Falls man möchte kann man nun den kompletten Ordner „opam“ zu einem anderen Ort, zum Beispiel ins Heimatverzeichnis, verschieben.

Konfigurieren und Einbinden

Als nächstes müssen wir „google-drive-ocamlfuse“ konfigurieren.  Dazu starten wir das Programm mit folgendem Befehl:

 $ opam/system/bin/google-drive-ocamlfuse /mnt/drive

Falls man in einer grafischen Umgebung arbeitet, startet sich nun ein Browser-Fenster worin man den Zugriff von „google-drive-ocamlfuse“ auf sein Google-Drive-Konto erlauben kann. Natürlich sollte dieser Zugriff gestattet werden.
Dadurch werden über das OAuth2-Verfahren die Zugriffsrechte vergeben und das Google-Drive-Konto ist unter dem angegebenen Mount-Verzeichnis „/mnt/drive“ eingebunden.
In der Konfigurations-Datei „~/.gdfuse/default/config“ werden die ID und der „Secret-Cookie“ hinterlegt, sodass man beim erneuten Einbinden nicht nochmal den Zugriff gestatten muss.

Falls man keine grafische Umgebung auf dem Banana Pi zur Bestätigung des Zugriffs zur Verfügung hat, ist das Ganze etwas aufwendiger.
Zunächst ist es notwendig in seinem Google-Konto OAuth2-Zugangsdaten zu erstellen. Man sollte für folgende Schritte die „alte“ Developer-Konsole von Google benutzen. Dafür klickt man beim Aufruf der URL im ersten Punkt einfach auf „Abbrechen“. Die Schritte können auf einen beliebigen Client mit grafischer Oberfläche ausgeführt werden:

  • https://code.google.com/apis/console/ aufrufen und ein neues API-Project erstellen.
  • Links auf „Services“ klicken
  • Den Punkt „Drive API“ auf „On“ stellen
  • Links auf „API Access“ klicken
  • „Create another Client-ID …“ im Hauptbereich anklicken
  • „Installed Application“ auswählen und den Typ „Other“ anklicken

Nun werden die Zeilen „Client ID“ und „Client secret“ angezeigt. Das sind die Zeilen, die wir für den Aufruf von „google-drive-ocamlfuse“ benötigen:

$ opam/system/bin/google-drive-ocamlfuse -headless -id CLIENTID -secret CLIENTSECRET

Als Ausgabe bekommt man nun eine URL, die man in einen Browser einfügen und aufrufen muss. Dies kann auf einem x-beliebigen Client geschehen. Einzige Voraussetzung ist, dass man in sein Google-Account eingeloggt ist.
Das Browserfenster sollte nun eine ID anzeigen, die man wiederum in das Eingabefeld des wartenden Programms „google-drive-ocamlfuse“ (Please enter the verification code:) kopieren sollte.

Nach diesen Schritten kann man nun das Google-Drive-Konto mit dem folgenden Befehl einbinden:

$ opam/system/bin/google-drive-ocamlfuse /mnt/drive

Das war alles :-).

VNC Server auf Banana Pi über Kommandozeile installieren und nutzen

In diesem Blog-Eintrag zeige ich, wie man eine Remote-Desktop-Verbindung mit grafischer Oberfläche zum Banana Pi aufbaut.

Als Voraussetzung für den Aufbau einer Remote-Verbindung mit Anzeige der grafischen Oberfläche ist es natürlich notwendig, dass auch ein Banana-Pi Image mit einer grafischen Oberfläche genutzt wird. Beispielsweise bietet sich hier die auf Debian basierende Linux-Distribution „Bananian“ an (Download).

Zunächst ist es notwendig einen VNC-Server auf dem Banana-Pi zu installieren. Da wir noch keine Remote-Verbindung aufbauen können, müssen wir zunächst eine „herkömmliche“ SSH-Verbindung aufbauen. Natürlich ist es auch möglich Tastatur, Maus und Monitor am Banana Pi anzuschließen.  Diese Anleitung zur Einrichtung des VNC-Servers nutzt ausschließlich Kommandozeilen Parameter. Es ist nicht notwendig über SSH eine grafische X11-Session weiterzuleiten.

Als Windows-Client verwende ich für den Aufbau einer SSH-Verbindung das Programm „Putty“ (Download). Für den späteren Aufbau einer VNC-Verbindung nutze ich den VNC-Client „VNC Viewer“ von „RealVNC“ (Download).

Anleitung:

  • Aufbau einer SSH-Verbindung über Putty zu Banana Pi
  • Installation von VNC-Server mit dem Befehl „apt-get install vino“

Als nächstes ist es notwendig die Konfigurations-Einstellungen von dem Tool „vino-preferences“ über die Kommandozeile zu setzen. Es gibt keine Konfigurations-Datei, die direkt über ein Text-Editor bearbeitet werden kann. Vielmehr ist es notwendig die verwendete „GConfig“-Datenbank anzupassen. Diese befinden sich in der Datei „$HOME/.config/dconf/user„.
Um die Remotedesktop-Freigabe zu aktivieren sind folgende Befehle notwendig. Wichtig ist, dass die Befehle nicht als „root“ ausgeführt werden, da sonst die falsche „GConfig“-Datenbank bearbeitet wird.

~$ dbus-launch gsettings set org.gnome.Vino enabled true
~$ gsettings org.gnome.Vino use-upnp true
~$ gsettings org.gnome.Vino view-only false
~$ gsettings org.gnome.Vino require-encryption false

Nun sollten die notwendigen Konfigurations-Einstellungen gesetzt sein und es ist abschließend nur noch notwendig den Banana Pi mit dem Befehl „reboot“ als Root neuzustarten.

Herstellen einer Verbindung:

Nachdem die serverseitigen Einstellungen abgeschlossen sind, können wir mit einem VNC-Client eine Verbindung aufbauen. Dafür verwende ich den VNC-Client „VNC Viewer“ von „RealVNC“. Der Client kann hier ohne Anmeldung direkt heruntergeladen werden.

Nach der Installation kann der Client über „vncviewer.exe“ gestartet werden:

  • Als VNC-Server wird die IP und der VNC-Port des Banana Pis eingetragen (192.168.1.7:5900). Wir verwenden den Standard-Port „5900“.
  • Unter dem Punkt „Encryption“ verwenden wir „Prefer Off“.

Der Client ist nicht in der Lage eine verschlüsselte Verbindung zum „Vino“ VNC-Server aufzubauen. Daher ist es empfehlenswert diese Variante nur im heimischen Netzwerk zu verwenden wo eine Verschlüsslung nicht zwingend erforderlich ist.

Im Client-Menü „Options…“ können abschließend noch weitere Einstellungen wie „Full Screen“ und „Scale to Window-Size“ gesetzt werden.

 

 

 

Sky Go auf dem Banana PI mit Android

Im Dezember letzten Jahres war es endlich soweit:

Sky hat seine mobile Variante „Sky Go“ als App für die Plattform Android veröffentlicht. Einige Geräte werden direkt von Sky unterstützt und können aus dem PlayStore geladen werden. Für andere Geräte kann man versuchen direkt die APK-Datei herunterzuladen und zu installieren.

Dieser Blog-Eintrag soll zeigen wie man auf den Banana Pi ein lauffähiges Android-System mit der Sky Go App installiert und die Video – und Soundausgabe über den HDMI-Out in 1080p-Qualität auf einem externen Wiedergabegerät darstellt.

Warum ein Android Image und Banana Pi?

Leider gibt es weder für Raspberry Pi noch für Banana Pi angepasste Silver-Light-Plugins, die es ermöglichen Sky Go im Browser oder im Mediacenter XBMC zu betreiben. Zwar existiert das so genannte Pipelight-Plugin für Linux, jedoch ist dieses im Moment noch nicht für die ARM-Plattform verfügbar. So bleibt im Moment nur der „Umweg“ über Android. Für Raspberry iI ist kein mir bekanntes Android Image verfügbar, was wahrscheinlich in der fehlenden Prozessorleistung begründet ist. Daher verwende ich den leistungsstärkeren Banana Pi.

Benötigte Hardware:

  • Banana Pi mit Maus und Tastatur
  • Zwei Micro USB-Ladekabel für die Spannungsversorgung. Ein Micro USB-Kabel reicht zum Start von Android NICHT aus.
  • Micro-SD-Karte 8GB
  • HDMI Kabel
  • Monitor
  • Netzwerkkabel

Benötigte Programme:

Installation des Android Images

  • Als erstes das Android Image für den Banana Pi und das Programm PhoenixCard herunterladen.
  • Das rar-Archiv von PhoenixCard entpacken und die Datei „PhoenixCard.exe“ als Administrator starten.
  • Die Micro-SD-Karte mit einem Klick auf „Format to Normal“ formatieren.
  • Auf den Button „Img File“ klicken und das heruntergeladene Android Image „android_for_bananapi_4.4_beta1.img“ auswählen
  • In der Sektion „Write Mode“ den Radio Button „Startup Mode“ auswählen. Diese Einstellung ist sehr wichtig, da sonst das gebrannte Image nicht bootet.
  • Auf den Button „Burn“ klicken und PhoenixCard sollte mit dem Schreiben des Images auf die SD-Karte beginnen.
  • In der unteren „Option“-Ausgabebox sollte nach erfolgreichen Schreiben die Meldung „Magic Complete“ erscheinen.
  • Die SD-Karte entfernen und in den Banana Pi einlegen.

Starten vom Android Image

  • SD-Karte in Banana Pi einlegen
  • HDMI Kabel mit dem HDMI-Output des Banana Pi und dem HDMI-Eingang eines Ausgabegerätes (Monitor, Laptop, TV) verbinden
  • Maus und Tastatur in die USB-Ports stecken
  • Netzwerkkabel mit Router und Banana Pi verbinden und gewährleisten, dass ein Internetzugang besteht.
  • Beide Micro-USB-Kabel am Banana Pi anschließen
  • Die LED-Lampe sollte nun rot leuchten und der Schriftzug „Android“ auf den Monitor (oder TV) erscheinen. Falls keine Ausgabe zu sehen ist, kann es helfen die Power-Taste für 5 Sekunden gedrückt zu halten bis die rote LED erlischt. Danach nochmal kurz die Power-Taste betätigen.
  • Der erste Start von Android kann eine sehr lange Zeit dauern. Hier heißt es Geduld bewahren. Die nächsten Starts sollten sehr viel schneller über die Bühne gehen.

Konfigurieren von Android

  • Beim ersten Start von Android wird man zunächst durch die Erstinstallation geführt. Bis auf die Sprachauswahl kann man alle weiteren Schritte überspringen. Es ist nicht notwendig ein Google-Konto zu verbinden. Alle Apps werden wir manuell über heruntergeladene APKs installieren.
  • Nachdem die Erstinstallation abgeschlossen ist, wird automatisch die App XBMC Kodi gestartet. Auch diese vollführt eine Start-Setup. Nach dessen Abschluss muss man die App mit einen „Klick“ auf den Button unten links beenden. XBMC ist für das Betreiben der Sky Go App nicht notwendig, aber wird mit dem Image automatisch mitgeliefert. Das Image ist das einzig mir bekannte und funktionierende Android-Image, dass eine 1080p-Ausgabe gewährleistet. Es können jedoch auch andere Android-Images verwendet werden, die „nur“ eine 720p-Ausgabe unterstützen und kein mitgeliefertes XBMC nach dem Booten starten. Alle Schritte dieser Anleitung sollten unabhängig davon funktionieren.
  • Als nächstes öffnet man die Android-Einstellungen („Settings“) und überprüft, ob der Punkt „Ethernet“ aktiviert ist und der Banana Pi eine gültige Netzwerk-IP-Adresse erhalten hat. Wenn nicht, dann hilf ein Deaktivieren gefolgt von einem erneuten Aktivieren der „Activate-Ethernet“-Checkbox.
  • Wenn der Banana Pi erfolgreich mit dem Netzwerk verbunden ist, kann die App „Browser“ gestartet werden. Wurde eine Verbindung zum Internet erfolgreich aufgebaut, sollte die Adresse „www.google.com“ erfolgreich geladen werden können.
  • Als nächstes die Adresse dieses Blog-Beitrags aufrufen und alle restlichen Dateien auf den Banana Pi downloaden.
  • Das Android-Image ist zwar standardmäßig schon gerootet, jedoch fehlt die App „SuperSU“, die wir verwenden um dem Xposed-Framework Root-Zugriff zu gewähren.
  • Um die App „SuperSU“ zu installieren einfach die heruntergeladene Datei „eu.chainfire.supersu-2.45-245-Android-2.1.apk“ ausführen und den Button „Install“ klicken. Nach erfolgreicher Installation die App starten und das su-Binary aktualisieren.
  • Nun sind die Voraussetzungen für den Root-Zugriff geschaffen und das Xposed-Framework kann installiert werden. Dieses Framework ist notwendig, da wir der Sky Go App vorgaukeln müssen, dass eine bestehende WLAN-Verbindung besteht. Ansonsten verweigert die Sky Go App den Login-Vorgang mit der Meldung „Bitte checken Sie ihre Internetverbindung“.
  • Der Xposed-Installer wird zunächst wie die „SuperSU“-App über die dazugehörige APK-Datei installiert. Danach startet man die App und installiert das Framework. Wenn der Installer nach Root-Rechten fragt, müssen diese natürlich gestattet werden.
  • Nachdem das Framework installiert wurde, muss Banana Pi neu gestartet werden.
  • Danach kann die Sky Go App analog zu den anderen Apps installiert werden.
  • Damit eine Anmeldung in der Sky Go App möglich ist, muss man über das Xposed Framework das Modul „FakeWifiConnection“ installieren. Dazu startet man die App und wählt unter „Install Modules“ das entsprechende Modul aus und installiert es.
  • Das Modul sollte dann unter „Modules“ auftauchen. Klickt man das Modul an, kann man dort die App Sky Go auswählen für die eine WLAN-Verbindung gefakt werden soll.
  • Mit diesen Einstellungen sollte ein Login in die Sky Go App möglich sein.

Mögliche Probleme

  • Sollte die Videoausgabe nicht den kompletten Displaybereich ausfüllen, kann man unter „Settings -> Display“ die Ausgabe verbreitern.
  • Sky Go Videos ruckeln. Falls die Sky Go Videos eine zu hohe Auflösung haben, kann es vorkommen, dass die Videos ruckeln. Hierfür könnte die Nutzung eines anderen Android Images Abhilfe schaffen.