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

  • [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 ( Pulseaudio fails to detect card (probably due to hybrid graphics) ) 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: forum.ubook.at/index.php?page=Thread&postID=27950#post27950


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

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

    Quellcode

    1. kdesu dolphin

    GNOME / Xfce / Ubuntu

    Quellcode

    1. gksu nautilus


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

    Quellcode

    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:

    Quellcode

    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

    Quellcode

    1. kdesu konsole

    oder unter Ubuntu mit

    Quellcode

    1. gksu gnome-terminal

    ein eingabefenster und gebt Folgendes ein:

    Quellcode

    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:

    Quellcode

    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

    Quellcode

    1. cat /proc/asound/cards

    in der Konsole.
    Bei mir sieht das so aus:

    Quellcode

    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

    Dieser Beitrag wurde bereits 14 mal editiert, zuletzt von Paul K. ()

  • 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)

    Öffnet das Skript danach mit Recher Maustaste --> Aktionen --> In Konsole ausführen

    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:
    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

    Quellcode

    1. xrandr --setprovideroffloadsink radeon Intel
    erstellen

    Bitte auch als Ausführbar markieren:

    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:

    Quellcode

    1. #! /bin/bash
    2. echo "HOTFIX Für Elitebook 850 G1 mit Intel HD4400 / Radeon HD8750M Teil 1 von 2"
    3. echo "Robert Füricht / Paul Konecny / Dominik Schrempf"
    4. echo "Die Installation dieses Hotfix geschieht auf EIGENE GEFAHR! Es wird keinerlei Haftung übernommen!"
    5. echo "Zum Abbruch, dieses Fenster schließen. Zum Fortfahren bitte Passwort unten eigeben."
    6. echo "Bitte gib dein Passwort ein:"
    7. (( EUID != 0 )) && exec sudo -- "$0" "$@"
    8. echo "Schreibe HOTFIX nach /etc/modprobe.d/hotfix-alsa.conf"
    9. cat << EOF > /etc/modprobe.d/hotfix-alsa.conf
    10. options snd-hda-intel enable=0,1,0
    11. EOF
    12. echo "Erledigt!"
    13. echo "Baue initiale RAM-Disk neu..."
    14. update-initramfs -k all -u
    15. echo "Erledigt!"
    16. echo "Bitte Teil 2 des Hotfix installieren und dann den Computer neustarten!"
    17. echo "Dieses Fenster kann nun geschlossen werden."
    18. exit 0
    Alles anzeigen


    CODE hotfix-2-kde.sh:

    Quellcode

    1. !# /bin/bash
    2. echo "HOTFIX Für Elitebook 850 G1 mit Intel HD4400 / Radeon HD8750M Teil 2 von 2 für KDE"
    3. echo "Robert Füricht / Paul Konecny /Dominik Schrempf"
    4. echo "Die Installation dieses Hotfix geschieht auf EIGENE GEFAHR! Es wird keinerlei Haftung übernommen!"
    5. cat << EOF > ~/.kde/Autostart/hotfix2kde.sh
    6. #!/bin/bash/
    7. xrandr --setprovideroffloadsink radeon Intel
    8. exit 0
    9. EOF
    10. chmod +x ~/.kde/Autostart/hotfix2.sh
    11. cat << EOF > ~/README-HOTFIX
    12. README zum Hotfix für EliteBook 850 G1
    13. Robert Füricht, Paul Konecny 2014
    14. Die Installation dieses Hotfix geschieht, wie bei der Ausführung von hotfix-1.sh erwähnt, auf EIGENE GEFAHR. ES WIRD KEINE HAFTUNG ÜBERNOMMEN!
    15. Teil 1 (hotfix-1.sh)
    16. dieses Hotfix umgeht das Problem, dass Pulseaudio derzeit nicht mit dem Hybridgrafiksystem dieses Laptops umgehen kann.
    17. Die HDMI Audio Ausgabe über die AMD Radeon Karte funktioniert nun nicht mehr!
    18. Bitte den Hauptkanal in der Audio Verwaltung auf "Internes Audio Analog Stereo" umschalten. (Rechte Maustaste --> Hauptkanal auswählen")
    19. Teil 2 (hotfix-2-kde.sh)
    20. Richtet das Hybridgrafiksystem des EliteBook 850 G1 korrekt ein.
    21. Eine Anwendung kann nun mit dem Befehl DRI_PRIME=1 ANWENDUNGSNAME auf der Radeon HD8750M ausgeführt werden.
    22. Wird die Karte nicht benutzt, schaltet sie sich automatisch zum Stormsparen ab.
    23. Manchmal kann es sein, dass der Hotfix nur funktioniert, wenn die Radeon fḱurz gestartet wurde.
    24. Bitte dann kurz "Alt+F2" drücken und konsole eingeben, um das Terminal zu starten.
    25. In diesem Terminal bitte "DRI_PRIME=1 firefox" eingeben und Enter drücken.
    26. Nachdem Firefox geöffnet ist, kann man sowohl dieses Fenster als auch das Terminal schließen.
    27. Der Sound sollte nun jedenfalls funktionieren.
    28. EOF
    29. kdialog --passivepopup 'Hotfix Teil 2 für KDE installiert!'
    30. sleep 10
    31. kdialog --passivepopup 'Bitte die Readme Datei im persönlichen Ordner lesen!'
    32. exit
    Alles anzeigen


    Readme in hotfix-2-kde.sh:

    Quellcode

    1. README zum Hotfix für EliteBook 850 G1
    2. Robert Füricht, Paul Konecny 2014
    3. Die Installation dieses Hotfix geschieht, wie bei der Ausführung von hotfix-1.sh erwähnt, auf EIGENE GEFAHR. ES WIRD KEINE HAFTUNG ÜBERNOMMEN!
    4. Teil 1 (hotfix-1.sh)
    5. dieses Hotfix umgeht das Problem, dass Pulseaudio derzeit nicht mit dem Hybridgrafiksystem dieses Laptops umgehen kann.
    6. Die HDMI Audio Ausgabe über die AMD Radeon Karte funktioniert nun nicht mehr!
    7. Bitte den Hauptkanal in der Audio Verwaltung auf "Internes Audio Analog Stereo" umschalten. (Rechte Maustaste --> Hauptkanal auswählen")
    8. Teil 2 (hotfix-2-kde.sh)
    9. Richtet das Hybridgrafiksystem des EliteBook 850 G1 korrekt ein.
    10. Eine Anwendung kann nun mit dem Befehl DRI_PRIME=1 ANWENDUNGSNAME auf der Radeon HD8750M ausgeführt werden.
    11. Wird die Karte nicht benutzt, schaltet sie sich automatisch zum Stormsparen ab.
    12. Manchmal kann es sein, dass der Hotfix nur funktioniert, wenn die Radeon fḱurz gestartet wurde.
    13. Bitte dann kurz "Alt+F2" drücken und konsole eingeben, um das Terminal zu starten.
    14. In diesem Terminal bitte "DRI_PRIME=1 firefox" eingeben und Enter drücken.
    15. Nachdem Firefox geöffnet ist, kann man sowohl dieses Fenster als auch das Terminal schließen.
    16. Der Sound sollte nun jedenfalls funktionieren.
    Alles anzeigen
    Dateien
    • hotfix-1.txt

      (885 Byte, 28 mal heruntergeladen, zuletzt: )
    • hotfix-2-kde.txt

      (1,86 kB, 30 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von Paul K. ()

  • veromix-plasmoid

    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.


    bequem in openSUSE via 1click von hier oder im Terminal f. 13.1 so installierbar:

    Quellcode

    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
    __
    ¹ code.google.com/p/veromix-plasmoid/

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von User1555 ()

  • 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:

    1. 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: phoronix.com/scan.php?page=news_item&px=MTIwNDI
      Das hat in weiterer Folge auch dazu geführt, dass Linus Torvalds selbst sich ein "NVIDIA, F**k You!" hat entlocken lassen: Aalto Talk with Linus Torvalds [Full-length]

    2. 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:

      Quellcode

      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:

      Quellcode

      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

      Quellcode

      1. DRI_PRIME=1

      vor.
      Das sieht dann so aus:



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

    Quellcode

    1. DRI_PRIME %command%

    ein, um es zu starten. Das sieht bei mit so aus.

    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

    Quellcode

    1. DRI_PRIME=1 glxgears eingeben


    Dann sollte

    Quellcode

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


    das

    Quellcode

    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:

    1. Laptop fährt hoch, die diskrete GPU wird deaktiviert.
    2. Ein Programm wird mit DRI_PRIME=1 gestartet, Linux schaltet die diskrete GPU wieder ein und rendert auf ihr.
    3. 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.
    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.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Paul K. ()

  • 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.

    Hi all,

    I'm having a problem with my HP EliteBook 850 G1.
    This machine features Intel/AMD(CIK, mesa-radeonsi) hybrid-graphics
    which is handled by vgaswitcheroo/PRIME and runtime power management.

    When the discrete GPU and it's soundchip are deactivated by runtime
    power management it seems that it is still reported to ALSA as
    available. This "hangs" my entire sound system. I don't get any sound
    out of this machine anymore.

    At first I believed it to be a pulseaudio problem and after several bug
    reports I think I have traced the bug to the ALSA drivers.

    This report is the main/original one:
    bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1310260

    Canonical's David Henningsson pointed out here:
    bugs.freedesktop.org/show_bug.cgi?id=83446

    that he believes the bug to be in the alsa driver used by my machine.
    This is why he changed the affected package in launchpad from
    "pulseaudio" to "alsa-driver". He is also the one who suggested posting
    this issue here as the alsa bug tracker was taken offline.

    "David Henningsson 2014-09-04 05:46:29 UTC

    From your log:

    ( 0.118| 0.000) D: [pulseaudio] alsa-mixer.c: Checking for playback
    on Digital Stereo (HDMI) (hdmi-stereo)
    ( 0.118| 0.000) D: [pulseaudio] alsa-util.c: Trying hdmi:2 with
    SND_PCM_NO_AUTO_FORMAT ...
    ( 53.036| 0.011) D: [pulseaudio] alsa-util.c: Managed to open hdmi:2
    ( 53.036| 0.000) D: [pulseaudio] alsa-util.c: Maximum hw buffer size
    is 371 ms
    ( 53.041| 0.004) D: [pulseaudio] alsa-util.c: Set buffer size first
    (to 3528 samples), period size second (to 441 samples).

    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."

    A workaround that involves disabling the card via etc/modprobe.d (see
    ubuntu bugreport) circumvents this issue for the time being but the
    problem is that this kills my audio output via the laptop's DisplayPort.

    The output of my alsa-info.sh run can be found here:
    alsa-project.org/db/?f=fd4de60…c48e41f7ac451030bbe79a9d7

    I hope you can help me!
    Thanks in advance!

    Paul