XBMC als PVR/TV-Anwendung

Gestern wurde nun endlich XBMC-Dharma released. Das bedeutet das nun endlich der PVR-Testing Branch sterben kann. Für alle die mit XBMC – TV schauen wollen wird es dann wesentlich einfacher. Da sie nicht mehr auf alternative Launchpad-Quellen oder gar Eigencompilierung angewiesen sind. Zu mindestens was XBMC betrifft.

Die Entwickler von XBMC beschreiten dabei den gleichen Weg, den die ganzen „großen“ PVR-Lösungen auch beschritten haben. Es gibt eine Trennung von Wiedergabe (frontend) und Empfang (backend) des TV-Programms. XBMC Dient dabei nur als Frontend. Eine direkte Unterstützung von TV-Karten oder Video-Recording-Devices gibt es nicht. Dafür ist die PVR-Frontend-Schnittstelle modular gehalten. So das man über Plugins fast jedes erdenkliche Backend anbinden kann. Diese Plugins benötigen jedoch Änderungen im XBMC-Code, so dass es nicht reicht einfach nur das Plugin scharf zu schalten. Es benötigt einen XBMC Build aus den PVR Testing Branch.

Aktuell werden im PVR-Testing fünf Backend-Plugins angeboten. Unterstützt werden jedoch nur drei Backends. Hier eien kurze gegenüberstellung der verfügbraren Technologien:

  • MediaPortal – TVServer: Das ding läuft außer Konkurenz. Da es Windows-Only ist, konnte und will ich es nicht testen. Für WIndows-User die eine Konsole scheuen sicherlich die beste Wahl.
  • MythTv: Eine der ältestens und wohl umfangreichsten MediaPC-Lösungen. Auf der „Haben“-Seite verbucht MythTv einem enormen Funktionsumfang und eine große Community. Für meinen Geschmack ist das Backend aber zu aufgeblasen. Das Backend bietet den vollen Funktionsumfang einer MediaPortal – Lösung. Alles Dinge die man nicht braucht, wenn man XBMC dafür nutzen will. Hinzu kommt, dass das Plugin momentan „gebrochen“ ist. Soll heißen: das Plugin spricht nur mit einer alten version von MythTv und auch dort alles andere als stabil!.
  • VDR: Das VDR Backend kann gleich mit zwei Plugins angesprochen werden. VNSI oder StreamDev. Für beides muss auf VDR Seite jeweils ein Plugin mitcompiliert und aktiviert werden. Wo wir schon beim großen Negativ-Faktor. Man darf/muss alles selber machen. Es gibt noch keine gut gepflegten Packetquellen die VSNI bieten. Ausnahme das PPA des TeamVDR. Allerdings wird dort nur für Karmic angeboten (da kann man tricksen) und sie setzten beim VDR noch auf 1.7.14. Wenn man einen neueren VDR benötigt muss man sich an diese Anleitung halten und den VDR selber bauen. Danach hat man jedoch ein sehr schlankes und robustes backend mit sehr aktiver Entwickler-Community.
  • HTS – TVHeadend: Dieses Backend ist zwischen MythTv und VDR angesiedelt. Mit dem Launchpad-Archive von Lars Op den Kamp hat man eine einfache Installationsart und dazu noch eine unkoplizierte Pflege des Systems. Das Backend liefert gleich einen eigenenes Web-AdministrationsInterface mit (Achtung: Passwörter werden im Klartext gespeichert) samt eigenem Webserver mit. Mit diesem kann man sofort loslegen und alles einrichten. Hat man den VLC installiert kann man auch gleich ohne jegdliches Frontend mal schnell die Streams abrufen.

Aktuell nutze ich TVHeadend. Das Umschalten (Zappen) zwischen den Sendern geht etwas langsamer als bei VNSI, das liegt wohl an dem verwendeten Streaming-Protokoll. Dafür ist das Plugin etwas ausgereifter und die Administration ist komfortabler. Zudem gibt es unter beim Bundle VDR-VNSI-XBMC noch einige kleinere Probleme bei der wiedergabe mancher Sender. Ich habe aber keinen Zweifel das VDR hier nachziehen wird.

Aktuallisierung des XBMC-Addon-Repositories

Seit ca einer Woche bin ich dabei meine Addons in das offizielle Addon-Repo zu bekommen. Dennoch (wegen der langen Integrationszeiten) werde ich mein Entwicklungs-repo weiter pflegen.

Leider hab ich mir beim erstellen meiner bisherigen Addons einen kleinen Foupa geleistet: großbuchstaben verwendet. Deshalb müssen interessierte sowohl das Mediathek als auch das PodCatcher-addon erst deinstallieren und dann wieder installieren.

Änderungen:

  • Mediathek: kleinere Bugfixes, optische Aufhübschung usw
  • PodCatcher: Verbesserung der Performance (XML ersetzt durch ‚pickle‘), bessere Menüführung.

Ubuntu – Suspend to Disk nach SWAP-Wechsel

Wer bei seinem Ubuntu-System in die Verlegenheit kommt die SWAP-Partition zu wechseln (z.B. Vergrößerung, Wechsel der HDD gesamt) wird Feststellen, dass danach kein Suspend to Disk (Hibernate/Ruhezustand) mehr funktioniert. Das System wird zwar in den S4 Zustand versetzt, beim booten meckert der Kernel aber irgendwas von „das eine IntiRam-Signatur gefunden wurde aber nicht genutzt werden konnte“. Danach wird das System normal gestartet…

um das Problem zu lösen muss man unter /etc/initramfs-tools/conf.d/resume die UUID der neuen SWAP angeben und ein dpkg-reconfigure hinterher schicken.

sudo dpkg-reconfigure initramfs-tools

Danach will der Hibernate-Modus auch wieder 😉

Asus AT3IONT – Suspend

Bei meinem HTPC bin ich auf folgendes Problem gestoßen. Kaltstart will nicht so recht, da dort das USB tot gelegt wird und somit mein IR-Empfänger kein Signal empfangen kann. Suspend to RAM will auch nicht, da der (closed source) Nvidia Treiber sich quer stellt (hab ich schon mal erwähnt das ich so was hasse …). Suspend to Disk funktioniert auch nicht so wirklich, hier wird irgendwie die ramdisk nicht geladen. Was aber ganz gut ist.  Somit kommt das einem „reset“ gleich. Leider ist hier auch das USB tot gelegt. Ein kleiner blick ins Handbuch bringt mich auch „Control UeP“. Ist das aktiviert, wird wohl alle Peripherie runter stromlos geschaltet (scheinbar auch im S4 obwohl im Handbuch S5 steht)

Lange rede kurzer Sinn: XBMC mittels default auf Suspend to Disk stellen, dieses UEP ausschalten und schon kann man von der Couche den HTPC hochfahren.

Media-PC (HTPC) marke Eigenbau.

Seit nunmehr zwei Monaten schraube ich an einem MediaPC/HTPC auf basis LucidLync, XBMC und VDR. Es gibt zwar einen Haufen spezialisierter Distributionen wie mythTV, yaVDR, GeexBox usw. Oder man kauf gleich eine spezielle Box beim Hardwarehändler seiner Wahl. Ich hab mich für den Eigenbau entschieden. Beginnen möchte ich mit der Hardware. Verbaut habe ich folgendes:

  • Asus AT3IONT: Atom 330: Ein lüfterloses „all in one“ Motherboard mit einem PCI-E Port. Einziger negativpunkt: Der RAM-Controller kann nur mit 32Bit adressieren. Soll heißen, man hat zwar einen 64 Bit Chip, kann 4GB stecken, es werden aber nur 3GB angesprochen (auch mit PAX)
  • Lian Li PC-C39B: Zu diesem Chassis hab ich eine gespaltene „Meinung“. Auf der einen Seite ist das Chassis qualitativ hochwertig verarbeitet, sieht schick aus und das Design ist LianLi-typisch gut durchdacht. Auf so engen Raum hab ich noch nie so frei Hardware einbauen können., ohne mir dabei die Finger zu verbiegen. Der Haken an dem Chassis ist die mitgelieferte Fernbedienung. Es handelt sich dabei um eine RF-Fernbedienung (TSBX-2404). Was an sich genial ist, da man keine Sichtverbindung zum Empfänger braucht. Es braucht auch keinen LIRC, da der Receiver Tastencodes sendet, dummerweise auch welche mit 2Byte, die der XServer nicht verarbeiten kann. Richtig doof kommt aber der Verbauort. Man merkt, dass das Case früher mit einer IR Fernbedienung ausgeliefert wurde. Es wurde eine kleines Acryl-Fenster auf der Front vorgesehen, wohinter der Receiver montiert ist. Blöd nur, dass RF-Signale sich für Acryl nicht interessieren. Schon eher für ein vollständig geschlossenes Alu-Case. Mann nennt so was in der Physic auch Faradayscher Käfig. Die Folge: die Reichweite sinkt auf unter 2 Meter, ist lagebedingt und es macht keinen Spaß das Gerät zu bedienen.
  • IR – Adapter: Als Ersatz für den verbauten RF – Controller hab ich mir einen RC6 IR-Controler verbaut.
  • Logitech Harmony One: Eine teure Fernbedienung. Logitech halt. Aber Logitech Like richtig schick, richtig praktisch. Über Umwege (Concordance) auch unter Linux programmierbar.
  • Thermaltake Litepower 350W. Sehr leises Netzteil nicht zu hören.
  • CZ Agility2 E 2,5″ SSD 60 GB: Will SSDs haben 3 Vorteile: sie sind Lautlos, extrem schnell (diese hier 250MB/s read), brauchen kaum Strom. Letzteres ist bei Festrechner uninteressant. Der Rest macht die Dinger echt praktisch. Booten in 3 Sek (nach BIOS) und absolut keine Geräuschkulisse
  • Seagate ST3250311SV 250GB: für Mitschnitte oder lokalen Cache (dazu später mehr) braucht es etwas mehr Platz.

Als Distribution kommt Ubuntu 10.04 Lucid Lynx zum Einsatz. Allerdings mit Einschränkungen. Anfangs versuchte ich mein Glück mit dem NetbookRemix. Es stellte sich jedoch bald herraus, dass einfach sehr viel mit installiert wird, was man auf einem HTPC einfach stört, ihn bremst oder anderweitig unbrauchbar ist. Zu nennen währe da der Auto-Mount sammt Notification. Dieser brachte immer XBMC in den Background. Alles in allen war es einfacher, alles komplett selber aufzusetzen als den UNR abzuspecken. Ich hab mit der Alternate-InstallCD ein reines KonsolenSystem installiert (im BootMenu F4 drücken und dann „Nur Konsole“). Dieses System ist innerhalb von einer Sekunde einsatzbereit (Login-Prompt). Als erstes brauch man den NoDM. Das ist eine „Display-Manager“ der zum Ziel hat, kein DisplayManager zu haben 😉 Kurz es gibt keinen Loginsreen. Es wird einfach eine Default-Session mit einem vordefinierten Nutzer gestartet und doe .xsession datei ausgeführt. Alles ohne Passwort. Bei der Installation wird gleich der XServer mitinstalliert und man hat eine „grafische Oberfläche“ . Nun noch den NVidia-Treiber installiert (kostet beim boot ca 1 Sek). Anschließend nach dieser Anleitung XMBC und VDR installiert.

Danach noch HAL, LIRC und DBUS nachinstallieren und schon hat man ein Funktionierendes MediaCenter mit XBMC und VDR. Und man muss gestehen XBMC ist ein extrem schicker Eyecandy…

Ein hinweis noch, sollte XBMC den HTPC nicht herrunter fahren könne, muss man sich noch dieses Kniffes betätigen damit das auch funktioniert.

Logitech Harmony One

XBMC Repository

Seit einiger Zeit ist es sehr ruhig in diesem Blog. Der Grund: bei meinem Arbeitgeber brummt es wieder und ich muss Überstunden schieben und zu Hause hält mich die Arbeit an einigen XBMC-Plugins vom Bloggen ab.

Heute ist es nun so weit, ich veröffentliche meine arbeiten in meinem Repository:  repository.raptor2101.zip

Enthalten sind bis jetzt:

  • PodCatcher: Ein Plugin zum hören von Podcastes. Verwaltung erfolgt über OPML. Mit „was wurde gehört“ verwaltung.
  • gamestar:  Zugriff auf das VideoPortal von gamestar.de
  • Mediathek: Zugriff auf die VideoPortale möglichst vieler öffentlich Rechlicher (zur zeit implementiert ARTE,ZDF,ARD)

XBMC und Podcasts

XBMC hat einen „Build-in“-Support für RSS-Feeds. Einfach die entsprechende URL beim Anlegen einer neuen Quelle als Adresse angeben. Leider wird dann der RSS-Inhalt ohne jeden Schnörkel einfach nur angezeigt. Ich wollte etwas mehr Komfort und habe daher ein kleines Plugin geschrieben, was folgendes beherrscht:

  • Verarbeiten von OPML – Files.
  • Darstellen von „gelesenen“ und „ungelesenen“ Beiträgen (ja ich weiß, klingt scheiße bin ich aber so von den Feedreadern gewohnt, wer was anderes will einfach die string.xml anpassen;) )
  • Abspielen von Enclosures
  • „Als gelesen Markieren“ von ganzen Ordnern oder einzelnen Beiträgen.

Ich versuch gerade die File in ein offizielles Repository zu bekommen. So lange kann der geneigte Tester das Plugin hier herunterladen: http://blog.raptor2101.de/wp-content/uploads/2010/10/plugin.audio_.PodCatcher.zip

WebRadio aus XBMC Hauptmenu starten

Will man unter XBMC WebRadios hören braucht man nicht unbedingt das Shoutcast oder ListenLiveEU-Plugin. Diese Plugins werden nur benötigt um die verfügbaren Radiostreams „bequem“ zu browsen. Hat man ersteinmal seine „bevorzugten“ Radios gefunden, will man diese nicht ständig neu suchen, sondern „per Knopfdruck“ starten.

Um das zu bewerkstelligen muss man erstmal eine Playlist erstellen die alle gewunschten Webstreams entällt. Unterstützte Formate sind:PLS und M3U. Hat man diese Datei einmal erstellt muss man sie unter ~/.xbmc/userdata/playlists/ ablegen. Beispiel-Datei:


File1=http://stream1.wazee.org:8000/wazee.mp3
Title1=[radio.wazee] Chicago
Length1=-1

File2=http://69.163.209.221:8000/
Title2=[radio.wazee] Los Angeles
Length2=-1

File3=http://radio.addictedtotheinter.net/wazee.mp3
Title3=[radio.wazee] Chicago
Length3=-1

File4=http://69.163.34.214/
Title4=[radio.wazee] Portland
Length4=-1

File5=http://209.188.16.85/
Title5=[radio.wazee] Phoenix
Length5=-1

NumberOfEntries=5

Version=2

Hat man das erledigt, kommt es zum spannenden Teil: das anpassen des Skins. Jeh nach Installationsart findet man die Skins entweder unter „/usr/share/xbmc/addons/skin.*“ oder unter „~/.xbmc/addons/skin.*“. Im Skinordner selber gibt es unterschiedliche Ordner, ein oder mehrere sind nach einer auflösung benannt: 720p,1080p,… Den Wunschordner davon öffnen und die Home.xml aufmachen. Jetzt wird es kryptisch. In XBMC wird fast ausschließlich mit referencen, statt mit festen Strings gearbeitet. Ergo bringten einen das suchen nach einem String nicht weit. Die Funktionsaufrufe („onclick“) sind jedoch gut lesbar, und wer es ganz genau braucht, kann die strings in der /usr/share/xbmc/language/*/strings.xml nachschlagen und nach der gewünschten ID suchen. Will man z.B Beim Confluence-Skin im SubMenü zur Musik den Eintrag WebRadio, muss das so aussehen:

  ButtonHomeSubCommonValues
  
  ActivateWindow(MusicFiles)



  ButtonHomeSubCommonValues
  
  ActivateWindow(musicfiles,special://musicplaylists/WebRadio.pls,return)

  ButtonHomeSubCommonValues
  
  ActivateWindow(MusicLibrary)
  Library.HasContent(Music)

Anschließend wird beim klick auf diesen Button die Playlist geladen und man kann den Wunschsender auswählen

XBMC, TV-Serien und die falsche Reihenfolge

Wenn man seine Medien nicht mehr über den Dateiexplorer verwalten will, sondern den Zugriff über ein ausgewachsenes MediaCenter wie XBMC verwalten will, wird schnell darauf stoßen, dass die Mete-Info-Qullen im Netz nicht unbedingt, die Serien-Reihenfolge einhalten, wie sie den Staffel-DVDs entspricht. Mal ist das korrekt, mal nervt es. Wie bei Firefly. Dort hält sich thetvdb.com an die Reihenfolge wie die Episoden ursprünglich ausgestrahlt wurden, leider ist das nicht die von Regisseur geplante  Reihenfolge gewesen.. So wird der Pilot erst an 11 stelle gelistet. Will man in der Reihenfolge die Serien betrachten, fehlen einem unweigerlich die Zusammenhänge.

Um in XBMC  die Reihenfolge zu verändern gibt es zwei Möglichkeiten. Bei beiden muss man erstmal die Medien-Datenbank exportieren. Am besten speichert man alle Informationen in separaten Dateien pro Film/Episode. Nun findet man neben den eigendlichen Medien-Dateien eine gleichnamige NFO-Datei.

  • Variante 1: Man benennt die Dateien so wie sie auf der DVD vorkommen. Dann muss man die NFO Files ggf. so Umbenennen, dass die enthaltenen Informationen zu den Serien passen. Anschließend muss man den episode-Tag in der nfo Datei anpassen.
  • Variante 2: Man bennent die Dateien gleich so, dass sie der Scrobbler richtig zuordnet. Dann muss man nur den displayepisode entsprechend überschreiben.

Anschließend muss man XBMC anweisen den Ordner auf neue Inhalte zu prüfen und ggf die Datei-Informationen abrufen und aktualisieren. Bei diesem Dialog wird man dann gefragt ob man die lokalen Inhalte überschreiben will, was man verneint. Anschließen passt das auch mit der Sortierung.

Links:

High Definition Audio und das „Anschluss-Sharing“

Wer ein halbwegs modernes Board sein eigenen nennt (ich zb ein AT3IONT, wie der name schon sagt, mit ION-Chipsatz) wird zwangsweise mit einer HDA – Karte (bei mir Realtek ALC 887) konfrontiert, die mehr Kanäle zur verfügung stellt, als sie Anschlüsse hat. In meinem fall 8 Kanäle (7.1) bei nur 5 Anschlüssen wovon 2 "eigendlich" nur Duplikate der Anschlüsse auf dem Board sind, die über eine Audio-Panel rausgeführt werden. Ergo hat man 3 Anschlüsse, davon einer als standart Stereo Output. Der Trick der Herrsteller ist, dass alle Anschlüsse je nach Kanal-Config anders belegt werden. Geht man auf 8 Kanal-Sound hoch, kann man kein Micro mehr anschließen und die Front-Buchse für den dezenten Kopfhörereinsatzt ist auch dahin. Das alles wird dann auf die 8 Kanale gemappt.

Startet man ins Linux werden einem auch nur diese drei Anschlüsse zur Verfügung gestellt, ergo Stereo-Sound. Man muss dem "hda_intel"-Treiber (darunter werden wohl alle Karten die sich HDA schimpfen) ein bisschen unter die Arme greifen. Den grund findet man hier. Was in der Beschreibung ein wenig unter geht, ist der umstand, dass man nicht unbedingt den "richtigen" Modulname erwischen muss. Zumindestens bei meinem ION-Board kann ich die soundkarte mit 6 verschieden Configs ansprechen:

  1. 3stack – normaler stereo sound
  2. 3stack-digout – normaler stereo Sound, SPDIF verfügbar (hab ich aber nicht testen können, da ich noch kein SPDIF Receiver hab)
  3. 3stack-2ch – normaler stereo sound
  4. 3stack-2ch-digout – das selbe wie oben
  5. 3stack-6ch – 5.1 sound über alle 3 hinteren Klinke-Anschlüsse
  6. 3stack-6ch-digout -5.1 und SPIDF verfügbar

Was nun fehlt sind eigendlich 4stack-8ch und 3stack-4ch. Auch wenn es nicht ganz korrekt ist, kann man so die Konfig bestimmen, mit der man seine Soundkrarte ansteuert.

Die Konfig muss in eine config-Datei unter /etc/modprobe.d geschrieben werden. Entweder nimmt man dazu eine bestehende oder legt eine neue an. Ich hab letzteres gemacht. Die Datei /etc/modprobe.d/alsa-hda-intel.config sieht wie folgt aus:

options snd-hda-intel model=3stack-6ch enable=1 index=0
alias snd-card-0 snd-hda-intel

Damit wird mein Soundsystem über die analogen Anschlüsse mit einem 5.1 Signal versorgt. Die Feinabmischung kann man über den alsamixer vornehmen.