Hey Leute,
lange lange Zeit war es nicht möglich HD-Sound unter Linux zu verwenden wenn man sein System auf AMD aufgebaut hat. Doch seit Kurzem ist dies nun möglich. Warum, weshalb und vor allem wie findet ihr im nachstehenden HowTo:
Vorgeschichte:
Unter Linux war es lange Zeit ein Graus den richtigen Treiber zu finden, da die Abteilung für die propiertären Treiber die ganze Zeit nicht aus den Füßen kam. Quasi 2 Jahre lang stand der xvba-Treiber still im Development. Daraufhin kam Team-XBMC in Kontakt mit den Entwickler von AMD OSS Treibern und es machte innerhalb von 2 Wochen große Sprünge. Ja, auch HD-Sound ist jetzt dabei. Dadurch wurde der xvba-Support für XBMC komplett abgeschrieben (eine Kopie liegt nur noch in fernetmantas’ Git-Branch).
Was ist aktuell möglich:
- Bitstreaming Audio (inklusive DTS-HD, TrueHD und LPCM 7.1)
- maximale Auflösung 2048×1152 (Somit kein FullSBS)
- Hardwarebeschleunigung für mpeg2, mpeg4, h264 und VC1
- BOB deinterlacing via VDPAU
Wo hakt es aktuell noch:
- bestimmte VC1 Videos werden nicht richtig dekodiert
- Hardwaredecoding für h264 ist limitiert auf 36fps
- HDMI Audio Clock manchmal unsynchron (Grund noch nicht gefunden)
- XBMC hängt beim Beenden (Deaktivieren des Service Addon für Versionscheck schafft Abhilfe)
Systemvoraussetzung:
AMD System mit einem Ubuntu Minimal x64 installiert
Grundinstallation:
Dann wollen wir doch mal mit der Grundeinrichtung des Ubuntu und ein bisschen Feintuning am System beginnen, beovr wir uns auf das XBMC stürzen. Dazu einfach folgende Schritte im Linux-Terminal ausführen:
Zuerst installieren wir benötigte Dependencies auf dem System:
sudo apt-get update
sudo apt-get install ssh python-software-properties software-properties-common udisks upower xorg alsa-utils mesa-utils git-core librtmp0 lirc libmad0 lm-sensors libmpeg2-4 avahi-daemon libnfs1
sudo apt-get dist-upgrade
Als nächstes erlauben wir jedem User eine X11 Oberfläche starten zu können:
sudo dpkg-reconfigure x11-common
Im nächsten Schritt erstellen wir den User “xbmc” und fügen Ihn zu den relevanten Gruppen hinzu. Sollte der User “xbmc” schon während der Installation angelegt worden sein, dann macht einfach nur die untere Zeile mit dem “usermod”:
sudo adduser xbmc
sudo usermod -a -G cdrom,audio,video,plugdev,users xbmc
Als nächstes sorgen wir dafür, dass XBMC automatisch startet als Oberfläche wenn das System gestartet wird. Dazu erstellen wir die Datei xbmc.conf in /etc/init/ :
# starts XBMC on startup by using xinit.
# by default runs as xbmc, to change edit below.
env USER=xbmcdescription “XBMC-barebones-upstart-script”
author “Matt Filetto”start on (filesystem and stopped udevtrigger)
stop on runlevel [016]# tell upstart to respawn the process if abnormal exit
respawn
respawn limit 10 5script
exec su -c “xinit /usr/bin/xbmc –standalone :0″ $USER
# the following two are to get an idea, if you want to user a window manager
# exec su -c “xinit /usr/bin/fluxbox :0″ $USER
end script
Als nächstes passen wir die Datei /etc/security/limits.conf an. Das sorgt dafür, dass der Audio-Thread priorisiert behandelt wird. Dazu ergänzt ihr folgende Zeile am Ende der Datei:
xbmc - nice -1
ACHTUNG: Mit xbmc ist hier der User gemeint und nicht die Anwendung. Somit muss das angepasst werden, falls ihr also einen anderen Usernamen habt müsst ihr das anpassen!
Das letzte Feintuning am System was wir machen ist die Anpassung um die Rechte für Shutdown, Suspend etc. zu haben. Dazu erstellen wir die Datei /etc/polkit-1/localauthority/50-local.d/custom-actions.pkla mit folgendem Inhalt:
[Actions for xbmc user]
Identity=unix-user:xbmc
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesktop.udisks.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes[Untrusted Upgrade]
Identity=unix-user:xbmc
Action=org.debian.apt.upgrade-packages;org.debian.apt.update-cache
ResultAny=yes
ResultInactive=yes
ResultActive=yes
ACHTUNG: Aufpassen auf die Zeilenumbrüche! Vor allem die Zeile mit Action= darf nur eine Zeile sein! Bitte bei euch prüfen!
Installation der Grafiktreiber mit den MESA-Patches:
sudo apt-add-repository ppa:oibaf/graphics-drivers
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install libg3dvl-mesa vdpauinfo linux-firmware
ACHTUNG: Solltet ihr eine Fehlermeldung bekommen (meist Wayland-Probleme), dann führt bitte ein
sudo dpkg -i –force-all
für alle fehlerhaften/problematischen Pakete in /var/lib/ aus gefolgt von einem
sudo apt-get -f install PAKET
Weitere Infos siehe: XBMC Forum – Force install of packages
Installation des XBMC Repositories und der Packages:
Mit folgendem Befehl fügt ihr das benötigte PPA zu euren verfügbaren PPAs hinzu und installiert XBMC:
sudo apt-add-repository ppa:wsnipex/xbmc-fernetmenta-master
sudo apt-get update
sudo apt-get install xbmc xbmc-bin
Updaten des Kernels auf eine Version >= 3.11.3:
mkdir ~/kernel
cd ~/kernel
wget https://dl.dropboxusercontent.com/u/55728161/linux-headers-3.11.4_0.1_amd64.deb https://dl.dropboxusercontent.com/u/55728161/linux-image-3.11.4_0.1_amd64.deb
sudo dpkg -i *deb
Diese Kernelversion enthält wichtige Bugfixes für unter anderem korrekten Audio Support im 24p Modus bei Filmen. Somit ist dieser Schritt extrem wichtig!
Genaueres zu den Patches: ANSSI HDA Radeon Patch und CEA Fixes für Audio@24p
Dann passen wir vor dem Neustart noch GRUB an damit auch die richtige Konfig geladen wird. Dazu editieren wir die Datei /etc/default/grub so, dass die Zeile CMDLINE_LINUX_DEFAULT wie folgt aussieht:
GRUB_CMDLINE_LINUX_DEFAULT=”radeon.audio=1 radeon.dpm=1 quiet splash”
Falls bei euch “nomodeset” oder “vga=normal” auftauchen sollte, dann löscht dies bitte raus. Damit die Änderungen noch aktiv werden führt ihr folgenden Befehl aus:
sudo update-grub
HINWEIS: Solltet beim Hinzufügen eines Displaydevices immer wieder ein Freeze haben entfernt die Option radeon.audio=1 wieder und führt das GRUB Update erneut aus.
Als letztes Starten wir das System einmal neu bevor wir uns an die Konfiguration von XBMC machen:
sudo reboot
Video-Konfiguration von XBMC:
Als erstes schalten wir unter System—>Einstellungen—>System—>Video das Vertical Sync auf “Immer aktiv”
Als nächstes wechseln wir nach System—>Video—>Wiedergabe und richten es wie folgt ein:
- VDPAU = AN
- Bevorzuge VDPAU = AN
- VAAPI = AUS
- Passe Bildwiederholrate an Video an = AN
- Sync Anzeige zum Display = AN
- Sync-Methode = Video Clock (Drop / Dupe)
Nun benötigen wir noch die richtige advancedsettings.xml und sind beinahe am Ziel. Wir erstellen diese in /home/xbmc/.xbmc/userdata/advancedsettings.xml als Benutzer xbmc, NICHT ALS ROOT, und fügen den Inhalt ein:
<advancedsettings>
<loglevel hide=”false”>0</loglevel>
<cputempcommand>sensors|sed -ne “s/temp1: \+[-+]\([0-9]\+\).*/\1 C/p”</cputempcommand>
<gui>
<algorithmdirtyregions>3</algorithmdirtyregions>
<nofliptimeout>0</nofliptimeout>
</gui>
<video>
<latency>
<delay>0</delay>
<refresh>
<min>23</min>
<max>24</max>
<delay>175</delay> <!– set to zero or adjust if audio seems out of sync with 24p movies –>
</refresh>
</latency>
</video>
</advancedsettings>
Jetzt folgt der finale Reboot und euer System ist fertig konfiguriert:
sudo reboot
Problembehandlung:
Falls ihr Probleme mit HD-Audio habt oder euer Kernel sich über kaputte EDID Infos beschwert, dann macht folgendes:
Ladet euch die CUSTOM EDID-Datei herunter und speichert diese ab unter /lib/firmware/edid (ACHTUNG: Dieses Verzeichnis müsst ihr euch anlegen). Bitte vergewissert euch direkt, dass die Datei 256Byte hat. Falls nicht, bitte neu laden. Danach editieren wir wieder die Datei /etc/default/grub wie folgt:
GRUB_CMDLINE_LINUX_DEFAULT=”drm_kms_helper.edid_firmware=HDMI-A-1:edid/marantz.bin radeon.audio=1 radeon.dpm=1 quiet splash”
Das überschreibt die EDID Werte und sollte das Problem beheben.
HINWEIS: Weitere Infos zu diesem HowTo findet ihr im original xbmc.org Foren – Thread “HowTo – Radeon OSS with VPDAU”
Dann viel Spass mit eurem neuen Linux System inklusive HD-Audio Support!
mad-max – (Artikel wurde 4739 mal gelesen)
gute Arbeit
sehr ausführlich, sollte jeder verstehen
Klasse Arbeit! Danke fürs übersetzten, bzw bearbeiten des Tutorials. Ich arbeite es gerade dankbar ab.
Ein ist mir dabei aufgefallen:
Updaten des Kernels auf eine Version >= 3.11.3
ist nicht mehr aktuell! Da die per wget abgerufenen Files nicht mehr existieren, bzw. ein Update erhalten haben.
Heute (30.10.2013) ist dies nun aktuell:
Update your kernel to a version >= 3.12-rc6
Remember to wget both files wget file1 file2
Code:
mkdir ~/kernel
cd ~/kernel
wget https://dl.dropboxusercontent.com/u/55728161/linux-headers-3.12.0-rc7%2B_0.1_amd64.deb https://dl.dropboxusercontent.com/u/55728161/linux-image-3.12.0-rc7%2B_0.1_amd64.deb
sudo dpkg -i *rc7*deb
Patches applied:
Anssi hda radeon patch: http://onse.fi/files/atihdmi5.patch
Audio Clock patch to use same values as fglrx: http://sprunge.us/RgAH
Audio clock patch: http://www.mail-archive.com/stable@vger….55994.html
Radeon_si patch someone wanted.
Danke für das Update!
mad-max