Jetzt kommen die technischen Details…

Die visuellen Anpassungen waren ja noch recht einfach – hier ging es ja noch vorwiegend um persönliche Befindlichkeiten und ein wenig um Usability.

Spotify

Die für mich größte Herausforderung war – wie bereits im Eingangspost beschrieben – die Einrichtung des Spotify-Addons.

Hier kam ja nur das Spotify-Addon von marcelveldt in Frage, da die anderen Addonsleider nicht mehr funktionieren und – zumindest momentan – nicht weiter entwickelt werden.

Getestet hatte ich das Addonbereits auf dem Windows-Desktop-Kodi, hier funktionierte die Einrichtung mittels Browser problemlos. Dies war ja auch der Grund, warum ich mich gegen Libreelec/OSMC entscheiden musste.

Nach der Installation des Addons inkl. Eingabe der Credentials wird im Hintergrund ein Browserfenster geöffnet, in dem man bestätigen muss, dass das Addon auf den Spotify-Account zugreifen darf. In der Theorie hatte ich mir das mit Kodi unter Linux einfach vorgestellt.

Aber es sollte anders kommen…

Das Browserfenster öffnet sich zwar, jedoch lässt sich Kodi mit keinem Mittel minimieren – zumindest habe ich es nicht geschafft. Weder mit Shortcut noch mit irgendwelchen kodi-send-Befehlen in der parallel geöffneten Putty-Session. *argh*

Also erstmal Kodi geschlossen und siehe da, dort war das Browser-Fenster. Eben die Daten bestätigt und das Fenster geschlossen. Nochmal neu das Addon laden lassen, in der Hoffnung, dass das einmalige Bestätigen ausreicht. Leider nein… *grummel*

Also nochmal Kodi beendet, im offenen Browser-Fenster alles bestätigt und das Fenster geöffnet gelassen. Beim nächsten Start und Laden des Addons dann endlich die Erlösung: ES FUNKTIONIERT!

screenshot007

Zugriff auf Playlists / Alben funktioniert prima – wenngleich auch die Ladezeit ein wenig zu wünschen übrig lässt. Aber das lässt sich verschmerzen.

Auch nach dem nächsten Reboot funktioniert das Addon weiterhin, eine neue Authentifizierung ist nicht mehr nötig.

Damit die Playlisten direkt im Homescreen aufrufbar sind, musste ein Menü-Eintrag dafür her. Einzelne Alben wären auch möglich, aber meistens greife ich bei „nicht-interaktivem“ Hören eher auf Playlists zurück. Die Alben usw sind natürlich weiterhin ganz normal über das Addon-Menü aufrufbar.

Nicht ganz diffizil, da manche Views schlecht bis gar nicht mit dem Touchscreen bedienbar sind:

screenshot008

Radio

Dazu kam dann zunächst noch das radio.de-Addon, damit man auch auf Internetradio zugreifen kann. Ist bereits im Standard-Kodi-Repo enthalten, daher kein großes Problem. Schnell noch eben die persönlichen Favoriten unter „Meine Sender“ hinzugefügt – brauchen wir dann im späteren Verlauf noch.

Damit die Sender auch hier direkt vom Homescreen aus verfügbar sind, habe ich hier einen Menüeintrag hinzugefügt – bis ich das raus hatte, waren einige Versuche von Nöten…

screenshot006

Der Eintrag mit „noop“ kommt automatisch, wenn man im Einstellungsmenü abbricht.

Wecker

Damit man sich auch anständig Wecken lassen kann, habe ich das ebenfalls im Standard-Repo enthaltene XBMC Alarm clock Addon installiert. Einrichtung ist selbsterklärend, aber da ich nicht auf lokal gespeicherte Musik zugreifen möchte, war hier noch ein wenig Testen ( Beschreibung erspare ich hier und erkläre lediglich die Lösung ) nötig.

Die einfachste Lösung ist hier, einen benutzerdefinierten Befehl bei der „Play“-Einstellung im Addon einzutragen.

Hier wollte ich einen Internetradio-Sende von radio.de eintragen, jedoch ist die URL nirgendwo so abgelegt, dass man sie dem Plugin-Aufruf mitgeben kann.

Die Lösung ist schlussendlich recht einfach: Kodi-Log unter /.kodi/temp/kodi.log öffnen, das Radio-Addon öffnen und den Sender auswählen.

Im Logfile taucht dann ganz am Anfang eine Zeile aus, die in etwa wie folgt aussieht:

StartScript – calling plugin Radio(‚plugin://plugin.audio.radio_de/station/9120‚,’68‘,“)

Der fett markierte Teil ist der, den wir für unseren Aufruf brauchen. Also im Einstellungs-Feld des Alarm-Addons folgendes eintragen:

screenshot004

Würde natürlich mit Spotify usw. genauso funktionieren.

Damit man die Einstellungen – ohne jedes Mal ins Addon-Verzeichnis gehen zu müssen – direkt vom Homescreen aus administrieren kann, habe ich dann noch einen Eintrag im Hauptmenü erstellt:

screenshot005

Das soll es für diesen Post erst einmal gewesen sein… Im nächsten folgen dann noch die restlichen Einstellungen.

Die visuellen Anpassungen

Nachdem Kodi nun funktionierte, standen natürlich noch die ganzen Anpassungen und Erweiterungen an.

Zunächst einmal einen schönen Skin gesucht, der gleichzeitig auch mit Touch – da ich nicht permanent die Rii mini verwenden möchte – gut handlebar ist.

Estouchy ist dafür eigentlich gerade prädestiniert, jedoch fehlten mir hier einige Optionen. Auch der Standard-Estuary gefiel mir nicht zu 100%, gerade auch, was die Menü-Anpassungen usw angeht.

Ich habe dann jedoch einen Estuary-Mod gefunden, der dann gemäß dieser Anleitung noch ein ganzes Set sinnvoller Addons ergänzt wird.

Also zunächst die Repositories von Guilouz und marcelveldt installiert. Nachdem der Skin Estuary Mod aus dem Repo von Guilouz installiert und aktiviert wurde, müssen noch – falls dies nicht automatisch passiert (habe ich nicht mehr im Kopf) – die zusätzlichen Addons installiert werden. Dafür auf Settings – Skin Settings – Necessary addons gehen und alle installieren (teilweise werden hier Abhängigkeiten direkt aufgelöst ).

Den Skin haben wir also schon mal… Als Bildschirmschoner wollte ich – damit auch eine Zeit angezeigt wird – eine digitale Uhr haben. Es gibt im Standard-Repo bereits den Digital Clock Screensaver, aber dieser hat einen großen Nachteil: Damit der Bildschirm auf Dauer keinen Schaden nimmt, kann man – was ich ebenfalls wollte – ein Movement einstellen. Dieses ruckelt sich aber in so einer merkwürdigen Weise über den Screen, dass es wahrlich keine Freude ist.

Hier habe ich aber eine gute – zumindest vorläufige – Alternative gefunden: Der Digital Clock Screensaver von DudeHere ( auch im Superrepo enthalten ) lässt sich sehr schön einstellen und bewegt sich wesentlich ruhiger über den Bildschirm. Auch die Ziffern an sich sind viel schärfer. Schön wäre hier noch eine Wetter-Anzeige, so wie es beim anderen Screensaver möglich ist. Schauen wir mal, ob wir da in Zukunft was noch besseres finden 🙂

Als letzten Part der visuellen Anpassungen habe ich dann noch nach einer ordentlichen Visualisierung gesucht. Im Standard-Repo war hier kaum was Schönes zu finden, auch sonst ist hier die Auswahl eher gering. Letzten Endes habe ich mich dann für das Shadertoy aus dem Repo von popcornmix entschieden. Auch da ist mir zwar vieles zu bunt und zu unruhig, aber den Disco Tunnel kann man guten Gewissens laufen lassen.

Somit sind also die optischen Anpassungen fertig, weiter gehts im nächsten Post mit der Realisierung der technischen Funktionen.

Aller Anfang ist schwer

Zunächst einmal das aktuelle Ubuntu-Image für den Raspberry Pi heruntergeladen und sowohl auf die SD-Karte als auch auf die externe Festplatte geschrieben.

In Ubunta dann zunächst WLAN eingerichtet, da dies out-of-the-box nicht funktioniert.

Damit der Bildschirm „richtig herum“ ist, habe ich ein lcd_rotate=2 in die /boot/config.txt eingefügt.

Im ersten Versuchhatte ich mich beim Kodi-Build nach dieser Anleitung gerichtet, leider funktionierte das bei mir nicht. Einzig mitgenommen habe ich hier – was ich später erfahren musste -, dass beim Build die Einbindung einer extra-Swap-Partition durchaus Sinn macht…

Daher erstmal mittels sudo apt-get install gparted die Partitionsverwaltung installiert und dann in der GUI einen USB-Stick als Swap-Partition angelegt. Ein paar GB sollten hier ja reichen…

Danach ging es mit dem eigentlichen Build los.

Hierfür habe ich mich nach der offiziellen Build-Anleitung für Kodi gerichtet und folgende Schritte ausgeführt:

  1. sudo apt-get install git autoconf curl g++ zlib1g-dev libcurl4-openssl-dev gawk gperf libtool autopoint swig default-jre
  2. git clone https://github.com/raspberrypi/tools
  3. sudo cp -r tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64 /opt
  4. git clone https://github.com/raspberrypi/firmware
  5. sudo mkdir -p /opt/bcm-rootfs/opt
  6. sudo cp -r firmware/opt/vc /opt/bcm-rootfs/opt
  7. sudo mkdir -p /opt/xbmc-bcm
  8. sudo chmod 777 /opt/xbmc-bcm
  9. git clone -b Krypton https://github.com/xbmc/xbmc (hier hatte ich zusätzlich den Branch mit angegeben)
  10. cd xbmc/tools/depends
  11. ./bootstrap
  12. PATH=“$PATH:/opt/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin“ \
     ./configure –host=arm-linux-gnueabihf \
     –prefix=/opt/xbmc-bcm/xbmc-dbg \
     –with-toolchain=/usr/local/bcm-gcc/arm-bcm2708hardfp-linux-gnueabi/sysroot \
     –with-firmware=/opt/bcm-rootfs \
     –with-platform=raspberry-pi2 \
     –build=i686-linux
  13. make
  14. cd ../..
  15. CONFIG_EXTRA=“–with-platform=raspberry-pi2 \
       –enable-libcec –enable-player=omxplayer \
       –disable-x11 –disable-xrandr –disable-openmax \
       –disable-optical-drive –disable-dvdcss –disable-joystick \
       –disable-crystalhd –disable-vtbdecoder –disable-vaapi \
       –disable-vdpau –enable-alsa“ \
       make -C tools/depends/target/xbmc
  16. make
  17. sudo checkinstall (alternativ zu sudo make install, da beim checkinstall die Installation als „normales“ deb-Paket erfolgt. Dieses kann dann auch für zukünfigte Installationen verwendet werden.
  18. sudo ln -s /usr/lib/python2.7/plat-*/_sysconfigdata_nd.py /usr/lib/python2.7/

Ich hatte anfangs – ausgehend vom ersten Versuch mit der anderen Anleitung – den Ratschlag berücksichtigt und per edit in der /etc/boot/cmdline.txt das /-FS auf eine externe Festplatte gelegt. Grund hierfür ist, dass man damit die SD-Karte vor den vielen IO’s beim Build schützen möchte. Hier hatte ich jedoch bei beiden Versuchen jeweils das Problem, dass die Festplatte wohl teilweise zu langsam war. Hätte dann evtl. mit einem schnellen USB-Stick besser funktioniert.

Die einzelnen Build-Steps haben schon eine ganze Weile gebraucht – die Zeit habe ich hier jetzt nicht gestoppt, aber es waren einige Stunden. Daher nicht verzweifeln…

Nach dem Build bzw. der Installation mittels checkinstall wird wie gewohnt das Verzeichnis .kodi angelegt, das eigentliche Binary liegt jedoch im Verzeichnis xbmc -> kodi.bin

Weiter geht es im nächsten Post mit dem Customizing.

Der Beginn…

Intention meines Projektes war es, einen Radiowecker zu basteln, der die Möglichkeiten der zu kaufenden vereint…

Er sollte

  • auf Basis der Raspberry Pi 3 entstehen.
  • Eine graphische Touch-Oberfläche besitzen, denn mit Steuerung per Handy, Fernbedienung oder Knöpfchen möchte man dann doch auf Dauer nicht leben.
  • auf jeden Fall Internetradio beherrschen. Analoges Radio mag ja hier und da seinen Charme haben, aber Geknister und eingeschränkte Auswahl ist ein No-Go
  • Spotify beherrschen!!! Der größte Knackpunkt dieser Geschichte. Internetradios gibt es wie Sand am Meer. Es gibt auch ein paar, die Spotify-Connect beherrschen. Aber es gibt keines, welches nativ und eigenständig zu Spotify connecten kann. Immer per connect vom Handy auf den Wecker streamen – lieber nicht.
  • Im Standby-Modus (nachts) eine digitale Uhr angezeigt werden
  • natürlich die kleinen Gimmicks wie Sleep-Timer, Wecker usw besitzen.

 

Ich habe mich dann kreuz und quer durch das Internet gelesen um die möglichen Kombinationen / Möglichkeiten zu eruieren.

Selber schreiben / programmieren: Hier fehlt mir sowohl die Zeit als auch das Können. Sicherlich interessant, aber an so einer Eigenentwicklung sitzt man dann Jahre. Ganz zu schweigen von der Entwicklung der GUI – dann doch lieber Bekanntes anpassen.

Als Software-Lösung ist auf jeden Fall Kodi die erste Wahl. Es mag auch kleinere / andere Media-Center geben, aber keines davon hat auch nur im Ansatz die Fülle von Addons und Erweiterungen. Also war Kodi zumindest schnell gesetzt.

Aber auf was aufbauend? Zur Wahl standen

  • OpenELEC (früher LibreELEC), hier ist natürlich der große Vorteil, dass sich Kodi direkt öffnet und man keinen lästigen „Zwischendesktop“ hat. Anpassungen sind natürlich weiterhin – teilweise eingeschränkt – auch per ssh möglich. Konfiguration über die Oberfläche ist sowie nix sinnvolles…
  • OSMC (früher Raspbmc), gleiche Vor-/Nachteile wie bei OpenELEC. Aber anderes Repository…
  • XBian, gleiches Problem
  • Linux-Distribution mit Kodi als Software installiert. Nicht ganz so schön, da immer noch der Desktop dazwischen ist. Innerhalb der Distributionen gibt es nur wenig – für dieses Projekt – sinnvolles, was sich eignen würde. Manche Distributionen sind einfach „zu schlank“, mal fehlen Pakete, mal fehlt die GUI. Kann man alles selbst machen, macht aber eben Arbeit. Also auf folgende beschränkt:
    • Ubuntu Mate – Setze ich auch teilweise auf dem Desktop ein, ist also möglich. Ob der Pi damit klar kommt. Man wird sehen
    • Raspbian – Hatte ich schon bei anderen Projekten im Einsatz. Nicht immer ideal, aber eben genau ausgerichtet auf den Pi
    • ArchLinux – Leider ohne grafische Oberfläche im default

 

Da ich eigentlich auf den Desktop als Zwischeninstanz verzichten wollte, habe ich mein Glück mit OpenELEC und OSCM versucht. Hat auch beides gut funktioniert und wäre einsetzbar gewesen.

Mit einer Einschränkung: Es gibt kein funktionierendes Spotify Plugin. Ich hatte anfangs Spotimc als Plugin verwendet, das war von der Oberfläche nicht perfekt, funktionierte aber. Wird aber leider nicht weiterentwickelt und da Spotify seine API überarbeitet hat, funktioniert das Plugin nicht mehr. Auch mit Spotlight hatte ich hier kein Glück, es ließ sich nicht zum Funktionieren bewegen.

Es gibt mittlerweile ein neues Plugin (Details siehe Installationspost später) namens Spotify, welches auf der neuen API aufsetzt. PRIMA!!! Ist nicht im offiziellen Repository drin, aber Installation mit zusätzlichem Repo ist ja kein Thema. Also installiert und voller Hoffung… Es funktioniert nicht. Im Kodi-Log habe ich dann auch recht schnell gesehen, woran es lag: Er versucht, eine Webseite aufzurufen. Ist natürlich schwierig, wenn ausser Kodi keine GUI verfügbar ist. Also alles mögliche probiert… WebViewer installiert als Addon – geht nicht. Lynx installiert – geht nicht. Also komplizierter: Python-Skript von Spotify angepasst und URL in Datei geschrieben – eigentlich wartet er ja nur auf die Antwort auf dem entsprechenden Port. Also URL kopiert, im Browser auf dem PC ausgeführt und die Antwort dann per curl auf dem Pi zurückgegeben. Nimmt er auch an, aber funktioniert hat das Plugin trotzdem nicht. *ARGH*

Also letzte Möglichkeit: Kodi lokal auf dem Rechner installiert, Plugin rein – hier funktioniert das mit dem Browser dann ja. Die entsprechenden Unterordner mit dem Cache und damit dem Authkey kopiert und eingefügt. Ging auch nicht.

Also: Kein Spotify-Plugin unter OpenELEC oder OSMC 😦

Daher jetzt die Entscheidung, das ganze unter Linux mit Desktop zu realisieren. Hier kann man zum einen problemlos die aktuelle Kodi-Version kompilieren und das Kodi-Plugin hätte seinen Browser für die Authentifizierung…

Weiter gehts im nächsten Post…