[HP] HOTFIX Für Soundprobleme mit Elitebook 8xx G1 und ZBook14 mit Hybridgrafik unter Ubuntu 14.04 LTS (Linux ab Kernel 3.13)

  • Hallo Leute!


    Nachdem ich heute endlich eine (vorübergehende) Lösung für mein Problem ( Please login to see this link. ) gefunden habe wollte ich euch diese natürlich nicht vorenthalten:


    Herzlichen Dank jedenfalls an DI Robert Füricht von der JKU und Dominik Schrempf für die Ideen die schließlich zu diesem Hotfix geführt haben!



    Die Benutzung geschieht jedoch auf EIGENE GEFAHR! Ich übernehme keinerlei Haftung dafür, was ihr mit eurem PC anstellt!



    Wird Ubuntu 14.04 LTS oder eine Distribution mit einer Kernelversion die neuer ist als 3.11 verwendet schaltet sich die Radeon / FirePro GPU bei Verwendung des OpenSource Treibers automatisch ab. Das ist auch gut so, denn das spart Strom.
    Das Problem ist nur, dass auf der Grafikkarte ein zusätzlicher Soundchip verbaut ist der mit abgeschaltet wird. Das bringt das Soundsystem pulseaudio so durcheinander, dass sich fast das ganze System aufhängt.
    Um das zu Umgehen wird ALSA (das pulseaudio zu Grunde liegende System) angewiesen die Karte komplett zu ignorieren. (Treiber Blacklist geht nicht weil /proc/asound/modules für alle den selber Treiber listet).
    WICHTIG: Dieser Workaround deaktiviert die Soundkarte des DisplayPort. Ihr habt dann über diesen Port, bis ein endgültiger Bugfix draußen ist, kein DP/HDMI Audio.


    Wenn ihr HP Elitebooks (G1) oder ZBooks (14) verwendet sollte der Hotfix als Drop-In Lösung funktionieren, ohne, dass ihr etwas ändern müsst. Für alle anderen habe ich am Schluss noch eine kleine Anleitung wie ihr herausfindet welche Karte man bei euch deaktiveren muss.



    Leichter geht's mit den Skripten hier im UPDATE:Please login to see this link.



    HOTFIX für HP EliteBook 850 G1 Mit Intel / AMD Hybridgrafik (i965 / radeonsi)


    Den Dateimanger mit Administrator (root) Rechten öffnen
    KDE / Kubuntu

    Code
    1. kdesu dolphin


    GNOME / Xfce / Ubuntu

    Code
    1. gksu nautilus


    Im Dateimanager drück Strg+L und gebt dann in der Adresszeile

    Code
    1. /etc/modprobe.d/


    ein.
    Ihr solltet nun im Modprobe.d Verzeichnis sein.
    Dort erstellt ihr eine neue Textdatei (Rechte Maustaste Neu (erstellen) --> Textdatei / leere Datei) und nennt sie hotfix-alsa.conf


    Öffnet hotfix-alsa.conf und schreibt Folgendes hinein:

    Code
    1. options snd-hda-intel enable=0,1,0


    Dann speichert hotfix-alsa.conf und schließt den Dateimanager wieder.


    Damit der Fix auch funktioniert muss das InitRAM FS neu gebaut werden.
    Dazu öffnet unter KDE / Kubuntu mit

    Code
    1. kdesu konsole


    oder unter Ubuntu mit

    Code
    1. gksu gnome-terminal


    ein eingabefenster und gebt Folgendes ein:

    Code
    1. update-initramfs -k all -u


    Nachdem dieses Programm durchgelaufen ist könnt ihr den Rechner neustarten und eurer Sound sollte uneingeschränkt funktionieren.



    HOTFIX erklärt / für andere Notebooks:

    Code
    1. options snd-hda-intel enable=0,1,0


    Weist das Soundsystem ALSA an, die erste und die dritte Soundkarte im System bei der Konfiguration komplett links liegen zu lassen.
    enable=0,1,0 deswegen weil nur die zweite Karte aktiv sein soll.


    Um herauszufinden, welche Riehenfolge in eurem System vorherrscht benutzt bitte das Kommando

    Code
    1. cat /proc/asound/cards


    in der Konsole.
    Bei mir sieht das so aus:

    Code
    1. [root@elitebook-850-g1 paul]# cat /proc/asound/cards
    2. 0 [HDMI_1 ]: HDA-Intel - HDA Intel HDMI
    3. HDA Intel HDMI at 0xd0830000 irq 71
    4. 1 [PCH ]: HDA-Intel - HDA Intel PCH
    5. HDA Intel PCH at 0xd0834000 irq 67
    6. 2 [HDMI ]: HDA-Intel - HDA ATI HDMI
    7. HDA ATI HDMI at 0xd0540000 irq 68


    Karte 0 ist Intel HDMI was aber nicht auf den Displayport verkabelt wurde sondern auf die internen Lautsprecher. Diese Karte anzulassen bringt also nichts. Karte 2 ist die Radeon welche wegen der internen Verkabelung von HP Probleme bereitet. Deswegen kann man leider nur die mittlere Karte 1 PCH (enable=0,1,0) verwendet werden. Bei euch kann das anders sein.


    So ich hoffe das hilft Denjenigen mit dem selben Problem.


    Lg Paul


    P.S.:
    dg könntest Du den Beitrag pinnen bzw. eine eigene Linux Kategorie (pro Hersteller und/ oder Gerät) erstellen? So überfordern wir dann nicht die 0815 User im normalen Produktthread :D

  • Vielen Dank für den Beitrag!


    --> verschoben :)

    I hear you say "Why?" Always "Why?" You see things; and you say "Why?"
    But I dream things that never were; and I say "Why not?"


    —George Bernard Shaw (1856-1950)

  • UPDATE:
    (10.000 Zeichen sind bei so einem Artikel ganz schön schnell verbraucht :P:D )
    Um Euch und mir die Sache zu erleichtern, hab ich zwei kleine Skripte gebastelt um die Installation dieses Hotfix zu vereinfachen.
    Die Benutzung dieser Skripts geschieht jedoch auf EIGENE GEFAHR! Ich übernehme keinerlei Haftung dafür, was ihr mit eurem PC anstellt!


    Bevor ihr irgendwas macht, benennt die 2 Dateien hotfix-1 und hotfix-2-kde bitte von *.txt auf *.sh um. U:book lässt mich leider direkt keine Shellskripte uploaden (Was ich auch verstehe ^^)


    Teil 1:
    hotfix-1.sh deaktiviert die AMD Soundkarte und baut das InitRAM FS neu.
    Bitte achtet darauf, dass das Skript ausführbar ist. (Rechte Maustaste --> Eigenschaften --> Berechtigungen --> Ausführbar)
    Please login to see this picture.
    Öffnet das Skript danach mit Recher Maustaste --> Aktionen --> In Konsole ausführen
    Please login to see this picture.
    Er fragt euch dann noch nach eurem Passwort. Nachdem alles erledigt ist, zeigt er euch an, dass ihr das Fenster schließen könnt.


    Teil 2:

    Quote

    WARNUNG Teil 2 funktioniert automatisch nur in der Arbeitsumgebung KDE (Kubuntu). Ubuntu / GNOME/ Xfce/ etc User benutzen bitte ein entsprechendes Autostartskript für ihre Arbeitsumgebung mit dem Befehl

    Code
    1. xrandr --setprovideroffloadsink radeon Intel

    erstellen


    Bitte auch als Ausführbar markieren:
    Please login to see this picture.
    Bei diesem Skript reicht es, wenn ihr einmal draufklickt, nachdem es ausführbar ist. Es sollten entsprechende Meldungen in eurem Benachrichtigungsbereich angezeigt werden.
    hotfix-2-kde.sh richtet euer Hybridgrafiksystem korrekt ein, sodass ihr eure grafiklastigen Anwendungen auf der Radeon ausführen könnt.
    Außerdem kann das ein seltenes Problem beheben, bei dem die Radeon erst einmal gestartet werden muss bevor hotfix-1.sh funktioniert.
    Nähere Details findet ihr in dem Readme, das hoftix-2-kde.sh für euch erstellt.


    Die Skripte befinden sich im Anhang an diesen Post. Aus Gründen der Transparenz habt ihr hier aber noch den Code vorab:
    CODE hotfix-1.sh:


    CODE hotfix-2-kde.sh:


    Readme in hotfix-2-kde.sh:

  • ahoj,
    als Alternative zum kompletten deaktivieren der HDMI-Soundausgabe würde sich bis zur Behebung des Bugs noch die Verwendung von Veromix¹ anbieten, wo bequem der zu verwendende Anschluss ['Port'] mit 2 Klicks von der Taskleiste aus umgestellt werden kann.
    Please login to see this picture.


    bequem in openSUSE Please login to see this link. oder im Terminal f. 13.1 so installierbar:

    Code
    1. # falls nötig KDE:Extra hinzufügen - s.a. https://de.opensuse.org/Paket_Repositorys#Desktops
    2. zypper addrepo http://download.opensuse.org/repositories/KDE:/Extra/openSUSE_13.1/ KDE:Extra
    3. zypper install plasmoid-veromix


    hth!


    lg
    __
    ¹ Please login to see this link.

  • Vielen Dank für deinen Beitrag.
    Ich hätte eine generellere Frage zum Zbook 14 mit dem ich für das kommende Verkaufssemester liebäugle. Wie ist " schaltet sich die Radeon / FirePro GPU bei Verwendung des OpenSource Treibers automatisch ab." zu verstehen? Funktioniert das dynamische/automatische switchen zwischen den Grafikeinheiten also? Oder ist doch eine manuelle Umschaltung notwendig?

  • Man muss dabei zwei Sachen unterscheiden:


    • Bei Verwendung des offiziellen AMD Catalyst Treibers (fglrx) funktioniert das Umschalten leider nur manuell. Das hat damit zu tun, dass man die Puffer zwischen dem OpenSource Intel Treiber und dem Kernel-Treiber des Catalyst kopieren können muss. Das ist Lizenztechnisch aber nicht möglich, weil, damit Catalyst diese Interfaces (DMA-BUF) benutzen dürfte, der Treiber auch unter der GPLv2 lizensiert sein müsste. Deswegen muss AMD hier den Spagat gehen, dass man die Treiber über das Catalyst Control Centre auswechselt (durch umschreiben der xorg.conf). Damit dieser Wechsel auch auf dem Bildschirm ankommt, muss man sich ab- und wieder anmelden (oder den XServer neustarten). Bei NVIDIA geht nicht mal das offiziell, deswegen gibt es das Bumblebee Projekt welches NVIDIAs Job erledigt.
      NVIDIA wollte trotzdem Zugriff auf DMA-BUF und wurde eher unsanft darauf hingewiesen dass sie entweder den Treiber offenlegen werden oder eben keinen Zugriff auf den Mechanismus bekommen und verklagt würden. Siehe hier: Please login to see this link.
      Das hat in weiterer Folge auch dazu geführt, dass Linus Torvalds selbst sich ein "NVIDIA, F**k You!" hat entlocken lassen: Please login to see this link.


    • Bei Verwendung des OpenSource Treibers radeonsi ist die Umschaltung ein dynamischer Prozess, da beide Treiber auf ihre jeweiligen Puffer direkt zugreifen können. Die Treiber laufen parallel nebeneinander und nicht abwechselnd wie in Punkt 1.
      Seit Kernel Version 3.13 (Standard Kernel in Ubuntu 14.04 LTS) wird die Radeon / FirePro automatisch abgeschaltet, wenn sie nicht verwendet wird, um Strom zu sparen. Das kann man feststellen indem man cat auf /sys/kernel/debug/vgaswitcheroo/switch anwendet:

      Code
      1. paul@HP-EliteBook-850-G1:~$ sudo -i
      2. [sudo] password for paul:
      3. root@HP-EliteBook-850-G1:~# cat /sys/kernel/debug/vgaswitcheroo/switch
      4. 0:DIS: :DynOff:0000:03:00.0
      5. 1:IGD:+:Pwr:0000:00:02.0
      6. root@HP-EliteBook-850-G1:~#


      "DIS" also die diskrete GPU befindet sich im "DynOff"-Modus, also wurde dynamisch abgeschaltet. So weit, so gut.


      Um das dynamische Switching zu bekommen erstellt man am besten ein Autostart Skript, welches diesen Befehl beinhaltet:

      Code
      1. xrandr --setprovideroffloadsink radeon Intel

      (= hotfix-kde siehe oben.)


      Das sagt dem System dass es den Output von radeon in den Sink (die Anzeige) von Intel umleiten soll. Damit werden eben die auf der Radeon gerenderten Daten auf dem, am Intel-Chip angeschlossenen Laptop Display angezeigt.


      Um einem Programm zu sagen, dass es die AMD GPU auch verwenden soll stellt man jedem derartigen Konsolenbefehl / Launcher / Desktop-Icon den Befehl

      Code
      1. DRI_PRIME=1


      vor.
      Das sieht dann so aus:
      Please login to see this picture.


    Bei Steam gibt man bei einem Spiel unter "Eigenschaften" --> "Startparameter" (Set launch options) dann

    Code
    1. DRI_PRIME %command%


    ein, um es zu starten. Das sieht bei mit so aus.
    Please login to see this picture.
    Mit PRIME alleine läuft alles wunderbar. R600_HYPERZ=1 gibt noch einen Performanceschub, ist aber bei einigen Spielen noch instabil. Und "-console" aktiviert die Konsole von HL2:EP1.


    Die dynamische Umschaltung mit dem OpenSource Treiber funktioniert genau so wie man es zB von Windows gewohnt ist.
    Zum einfachen Test kannst Du auch


    Code
    1. DRI_PRIME=1 glxgears eingeben


    Dann sollte

    Code
    1. sudo cat /sys/kernel/debug/vgaswitcheroo/switch


    das

    Code
    1. root@HP-EliteBook-850-G1:~# cat /sys/kernel/debug/vgaswitcheroo/switch
    2. 0:DIS: :DynPwr:0000:03:00.0
    3. 1:IGD:+:Pwr:0000:00:02.0


    ausspucken und Dir sagen, dass "DIS" nun im "DynPwr" Modus ist. (Ansonsten sollte man es am aufdrehenden Lüfter merken ;) )


    Ich bin jedenfalls sehr zufrieden mit dem System. HL2 durchgezockt und mitten in HL2:EP1 ohne einen einzigen Absturz. Für CAD Anwendungen kann ich leider nicht sprechen weil ich keine solchen in Verwendung habe.


    Zusammenfassend funktioniert das ganze so:


    • Laptop fährt hoch, die diskrete GPU wird deaktiviert.
    • Ein Programm wird mit DRI_PRIME=1 gestartet, Linux schaltet die diskrete GPU wieder ein und rendert auf ihr.
    • Das Programm wird beendet, Linux schaltet die diskrete GPU wieder ab.


    Alles vollautomatisch und ohne An- und Abmeldung.


    Ich hoffe das hilft Dir bei deiner Entscheidung. Ich jedenfalls liebe mein EliteBook. Tolle Hardware und Design. Nur der Bug hat mich bis zu dem Workaround eben extrem frustriert, aber seither bin ich (bis auf fehlendes HDMI-Audio und nicht funktionierendes LTE-Modem) wunschlos glücklich.




    Kurzes Update zum Bugreport:


    Es handelt sich um kein Problem vom Soundsystem selbst sondern um ein Kernel Problem. Das müsste wahrscheinlich der Systemhersteller (HP) beheben. Ich setzte mich diesbezüglich mal mit Roman in Verbindung.

    Quote

    It takes 52 seconds to just open the ALSA device "hdmi:2". I assume this is what you mean with "the sound system hangs". And it is most definitely a kernel problem, nothing we can do about that in PulseAudio.

  • So, ich hab das Problem jetzt mal an die zuständigen Entwickler bei ALSA weitergeleitet. Ich hoffe mal dass die uns jetzt helfen können.