Kodi und „fehlende“ Visualisierung

Im neuen Kodi Pakage,das über das PPA des XBMC/Kodi Team verteilt wird, sind die Visualisierungen in eigene Sub-Pakages ausgelagert. Will man also die Balken während des Abspielens von Musik, muss man erst mal die fehlenden Pakages nachinstallieren.

apt-get install kodi-visualization-spectrum
apt-get install kodi-visualization-projectm
apt-get install kodi-visualization-goom
apt-get install kodi-visualization-shadertoy
apt-get install kodi-visualization-waveform

Wenn man nun Kodi startet und die Visualisierungen auswählbar sind, aber nicht dargestellt werden muss man ins log schauen. Dort taucht dann folgende Meldung auf:

ADDON: Could not locate visualization.spectrum.so
...
ADDON: Could not locate visualization.projectm.so
...
ADDON: Could not locate visualization.goom.so

Die Addon-Pakages werden nicht mehr in den Kodi-Path entpackt, sondern nach „/usr/lib/x86_64-linux-gnu/addons“. Kodi selbst prüft diesen Pfad nicht. Nun kann man mit der Path-Variable rummspielen oder einfach ein Symbolik Link setzten …

ln -s /usr/lib/x86_64-linux-gnu/addons/* /usr/lib/kodi/addons/

HTPC mit Ubuntu 14.04

In den letzten zwei Wochen hab ich alle meine Rechner auf Ubuntu 14.04 umgestellt. Eine richtige Bruchlandung hab ich dabei nur bei meinem HTPC (auf Basis XBMC) erlebt. Hier eine kurze Zusammenfassung.

Da mein HTPC minimal aufgesetzt ist und keine unnötigen Dienste enthält hab ich erst mal versucht ein einfaches Upgrade aus dem System heraus zu machen. Die hätte den Vorteil gehabt, dass ich mir die folgenden 4 Stunden sparen hätte können. Das nvidia-337 Package hat das „zunichte“ gemacht. In den Trusty Sources zieht das gleich eine ganze Gnome Installation nach sich, die mir dann mein NoDM-Setup zerschossen hat und gleichzeitig die Platte gesprengt hat.

Danach folgte eine Neuinstallation. Eine stunde ging für ein fehlerhaft erstelltes USB-Image drauf, geschenkt, das ist Murphey, aber danach wurde es haarig. Unter Trusty fehlen einigen Paketen schlicht Abhängigkeiten. Ich hab 30 Minuten rumgefriemelt bis ich gemerkt habe, dass ein nodm kein xserver mehr mitinstalliert. Fehlende libraries werden auch nicht im Log erwähnt. Wozu auch ?

Hier meine manuell installierten Pakete:

  • xinit – wird von nodm benötigt
  • alsa-base/alsa-utils – für den sound
  • consolekit, pm-utils – für den shutdwon/suspend aus xbmc herraus.

Nachdem ich XBMC am laufen hatte, hat mich dann noch der „Shutdown/Suspend“ geärgert. Zum einen sind die oben erwähnten Pakete nicht installiert zum anderen wurde etwas an der Struktut geändert, so dass die Beispiele auf xbmc.org einfach nicht mehr passen.

Die korrekte polickit file sieht wie folgt aus:

[Actions for some-user]
Identity=unix-user:some-user
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesktop.udisks.*;org.freedesktop.login1.*
ResultAny=yes
ResultInactive=no
ResultActive=yes

Wichtig ist die Angabe org.freedesktop.login1.*. Die kann auf Suspend udn Hibernate auch eingeschränkt werden.

Danach lief mein HTPC wieder wie vor der Migration.

XBMC unter 12.04

Im Rahmen meines Wechsels von Ubuntu 10.04 bis 12.04 musste als erstes mein HTPC dran glauben. Das ganze ging recht Problemlos von statten. Einzig der NoDM hatte Probleme bereitet. NoDM erwartet den XServer unter /usr/bin/X. Ubuntu 12.04 stellt selbigen aber (ohne Link) unter /usr/bin/Xorg zur Verfügung. Da musste mit einem Link nachgeholfen werden.

Danach lief sofort XBMC hoch, ohne weitere Probleme. Danach begann jedoch die Detailarbeit.

Wie gehabt muss nachgeholfen werden, wenn man vie XBMC den Rechner runter fahren möchte. Dazu bedarf es der Packete policykit-1, upower und acpi-support.

sudo aptitude install policykit-1 upower acpi-support

anschließend müssen dem XBMC-User die entsprechenden Rechte eingeräumt werden:
File /var/lib/polkit-1/localauthority/50-local.d/xbmc-actions.pkla

[Actions for xbmc user]
Identity=unix-user:xbmc-user
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesktop.udisks.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Danach kann man über die entsprechenden Menüs/Kommandos aus XBMC heraus den Rechner Ausschalten, Schlafen legen oder in den Hibernate schicken.

Um den Rechner wieder aufzuwecken bedurfte es eines weiteren Kniffs. Die Schnittstelle, wie man ein USB Device für das Aufwecken markiert hat sich verändert. Ich musste es wie folgt erweitern:

#!/bin/sh
echo "USB0" > /proc/acpi/wakeup
echo "USB2" > /proc/acpi/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup

Interessanterweise war die „Breitbandfreigabe“ nur für den Suspend nötig. Um aus den Hibernate aufzuwachen reichte es das 3-1 Device zu „enablen“. Ich hab das Script auch nicht mehr in der rc.local verlink sondern lasse es vor und nach jeden Suspend/Hibernate ausführen, indem es unter /etc/pm/sleep.d abgelegt wurde.

Ein letzer Kniff war nötig damit sich das DVD-Laufwerk nach dem mounten auswerfen lies. Dazu musste ich in der /lib/udev/ruled.d/60-cdrom_id.rules die folgende Zeile ändern.

IMPORT{program}="cdrom_id --lock-media $tempnode"

So sollte es aussehen, dann lässt sich das Laufwerk jederzeit öffnen.

IMPORT{program}="cdrom_id $tempnode"

Quellen:

HDMI Output und Ruckler in HD

So nun hoffentlich der finale Artikel zum Thema „Ruckler während des HD Playbacks“. Nachdem ich mir sogar ein neues Board (AMD Fusion) zum Test geholt hatte , musste ich leider feststellen, dass das Thema alles andere als einfach zu Debuggen ist.

Nach nunmehr mehreren Monaten des Suchens hab ich den letzten Verursacher von Bildrucklern gefunden. Am Ende liefen nicht mal H264 Videos im Baseline-Profile ordentlich ruckelfrei. Da hab ich in meiner Verzweifelung (und Hoffnung) mal das HDMI Kabel getauscht. Zum Glück hatte ich kein Ersatz und fand den Input-Converter DVI-HDMI meines TVs nicht. Folglich musste ich auf das „gute alte“ VGA-Kabel ausweichen. Sowohl Board als auch TV hatten den Anschluss noch. Und siehe da, ruckelfreies H264 in allen Lebenslagen! Kein störendes Bildstottern oder Fragmente. Alles so wie es sein soll.

Da ich nicht glauben wollte, dass das Kabel defekt war oder gar ein genereles Problem mit HDMI vorliegt, hab ich mich mal auf die Suche nach „Bildverbesserern“ auf Seitens des TVs gemacht. Ich wurde fündig. Ein bisschen vergraben wendet mein TV allerhand Algorithmen auf das Eingangssignal an. Allerdings nur auf das HDMI Signal. Standardmäßig waren die Einstellung wohl zu viel für die kleine CPU des TVs. So dass es statt zu Verbesserungen zu Fragmenten und Stottern kam. Sehr brauchbar.

Fazit: Wer ein modernes Display mit HDMI Input betreibt, kann nicht davon ausgehen, dass sein Eingangssignal auch ohne Veränderung ausgegeben wird. Kommt es zu Rucklern, Fragmenten oder anderen sporadischen Bildfehlern, einfach mal nachschauen ob nicht irgendwo ein Bilderverbesserer wie „Rauschunterdrückung“,“Bewegungsglättung“ oder gar „Upscaler“ sein Unwesen treibt.

NVidia – HD-Video – MicroRuckler

Nach meinen ersten Maßnahmen gegen MicroRuckler hat es ein wenig gedauert bis ich den letzten Verursacher gefunden hatte. Das Problem war, dass die Ruckler nur sporadisch ab und zu auftraten. Mal 30 Minuten lang gar nicht, dann wieder im 5 Minuten Takt.

Als Verursacher hat sich das PerformanceManagement der NVidia-Karte herausgestellt. Die Taktet die Karte runter, sobald wenig Leistung gebraucht wird. Scheinbar dauert das Justieren zu lange, so dass es zu FrameDrops kommen kann.

Zur Behebung hab ich folgendes in die ‚/etc/X11/xorg.conf‘ eingepflegt:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option              "NoLogo"        "True"
    Option         "NvAGP" "1"
    Option      "RenderAccel"  "true"
    Option         "TripleBuffer" "True"
    Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefault=0x1; PowerMizerDefaultAC=0x1"
EndSection

Die Vorletzte Zeile aktiviert den TripleBuffer, so werden 3 statt zwei Bilder vorgehalten. In 2D Anwendungen (Videodarstellung) ist der Performanceverlust und Speicherverbrauch verkraftbar gegenüber der ruckelfreiem Abspielen.

Der letzte Befehl erzwingt vom NVidia-Treiber, dass die Grafikkarte immer mit maximaler Leistung arbeitet.

Sollte es immer noch zu leichten Ruckler kommen, kann man den Treiber nochmals mittels nvidia-settings dazu zwingen, endlich in den PerformanceMode zu gehen…:

nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'

XBMC – FullHD – Micro-Ruckler

Wenn man durch die Foren schaut, stolpert man immer mal wieder über das Problem, dass einige Nutzer Micro-Ruckler bekommen wenn sie 720p oder 1080p Quellen abspielen. Ich gehörte auch zu dieser Problemgruppe und will hier kurz beschreiben wie man das Problem angehen kann.

Als erstes muss man die Mikro-Ruckler erst mal eindeutig einer „Quelle“ zuordnen. Es gibt sehr viele Möglichkeiten, wie Mikro-Ruckler zu Stande kommen können:

  • Kodierfehler – die Ruckler z.B. tretet nur bei einem Film auf.
  • Frame-Drops – Das passiert wenn ein Bildwiederholfrequenz der Quelle höher ist als die Abspielfrequenz.
  • Falsche Timings bei der Ansteuerung des Bildschirms.
  • „andere Störenfriede“…

In meinem Fall konnte ich Kodierfehler ausschließen. Alle Filme wiesen sporadisches extrem kurzes Ruckeln auf. Einige Leute haben es nicht mal war genommen, mich hat es hingegen schon genervt (besonders wenn man weiß auf was man achten muss).

Um der Fehlerquelle einzugrenzen hab ich mir einige Naturaufnahmen mit langen ruhigen Schwenks in FullHD ausgesucht, dazu noch Batman – The Dark Knight wegen den starken Hell-Dunkel Kontrasten.

Als erstes hab ich die Timings wie in diesem Beitrag beschrieben korrigiert: Fixing the 24p issue.

Das hat die Ruckler zwar reduziert, aber sie waren immer noch vorhanden, das hat mich jedoch auf eine zweite Fährte gelockt. In dem Beitrag wird beschrieben wie man die Timings korrigiert und XBMC auf die Wiederholfrequenz der Quelle anpasst (Option). Durch test wurde mit ziemlich schnell klar, dass in meinen Fall nicht die Wiederholfrequenz das Problem darstellten, sondern die Timings. Eine Änderung von 60Hz auf 50Hz oder gar 24Hz hatte faktisch keinen Einfluss. Was jedoch auffällig war: sobald ich VSync abgeschaltet hatte, waren die Ruckler weg, aber die Bildfehler beim abspielen einer Testsequenz enorm. VSync musste also aktiviert bleiben. Ein kurze Suche im Internet hat mich auf die Composite-Extension aufmerksam gemacht.

Ich hab die automatische Anpassung abgeschaltet und in der xorg.conf nur einen Bild-Modus hinterlegt. Zusätzlich habe ich die Composite-Extension abgeschaltet.

Section "Extensions"
 Option "Composite" "disable"
EndSection

Nach einem Neustart kommt es nun zu keinen Mikrorucklern mehr.

XBMC Mediathek Addon für XBox

Nach langem hin und her mit Andy haben wir den Fehler/Änderung in den Interfaces zwischen XBox und „normalem“ XBMC gefunden.

Ich hab ein Addon-Zip bereit gestellt: plugin.video.mediathek

 

Sollte sich was ändern werde ich es hier Veröffentlichen

Update – 19.09.2011 : BR Alpha hinzugefügt
Update – 20.09.2011: ARTE wieder ans Laufen gebracht.
Update – 30.09.2011: BayernFS wieder ans Laufen gebracht
Update – 18.10.2011: WDR gepatched
Update – 20.11.2011: WDR gepatched, ZDF HD Inhalte hinzugefügt, ORF aktualisiert
Update – 17.02.2012: KIKA (Without Kikaninchen) und NDR hinzugefügt. 3SAT gepatched
Update – 22.06.2012: XBOX Version auf Eden Niveau hochgezogen. (ARD läuft wieder)

XBMC Repository Änderungen

Wie jeder mitbekommen hat, ist die Entwicklungsphase von  XBMC Dharma abgeschlossen und es wird sich dem Eden-Release zugewandt. Mit diesem Wechsel geht ein lang ersehnter Wunsch der Entwickler einher, endlich die Interne PythonEngine gegen eine externe (vom Betriebssystem bereitgestellte) Engine zu tauschen. Vorteil: viele neue Features. Nachteil: Addons für Eden sind nicht unbedingt Dharma tauglich und umgekehrt.

Bei meinem Addons gilt das noch und so hab ich sie einfach auf Eden umgelabelt. Ab heute wird es aber für die Dharma-Versionen meiner PLugins maximal noch Fehlerbehebungen geben, keine neue Features.

Mein eigenes TestRepository stellt nur die Eden-Versionen bereit. Die Dharma-Versionen können über die offiziellen Kanäle bezogen werden.

VDR und der automatische Sendersuchlauf

Nutzt man den VDR in Zusammenarbeit mit XBMC läuft man auf kleinere Probleme. Zum Beispiel nervt der automatische Spendersuchlauf ein wenig. Er kann sehr hilfreich sein, kann aber unnütz sein, wenn man z.b. die update-zeiten gering halten will.

Standartmäßig merkt sich VDR alle Kanäle die er über ein Update (tune in ein neues Band) mitbekommt. Das kann man abschalten. Dazu braucht es neben der channels.conf eine setup.conf. Dort trägt man den Parameter „UpdateChannels“ ein.

UpdateChannels = 0

Möglichkeiten:

  • 0 – Kein automatischer Sendersuchlauf
  • 1 Update der Kanal-Namen
  • 2 Update der PIDs
  • 3 Update von Kanal-Namen und PIDs
  • 4 Update von Kanal-Namen, PIDs und neu gefundenen Kanälen
  • 5 Update von Kanal-Namen, PIDs sowie neu gefundenen Kanälen und Transpondern (Standard)

Quelle: Benutzerhandbuch-VDR