ubuntuusers.de

HP ENVY x360 kein Sound

Status: Gelöst | Ubuntu-Version: Kubuntu 23.04 (Lunar Lobster)
Antworten |

mitAnanda

Anmeldungsdatum:
12. Oktober 2015

Beiträge: 204

Guten Abend,

nach der Installation der aktuellen Kubuntu-Version auf einem neuen Notebook (HP ENVY x360 15-ey0157ng) funktioniert der Sound nicht. Vielleicht müssen zusätzliche Treiber installiert werden oder ähnliches, allerdings stellt HP für dieses Gerät nur Treiber für Windows 11 zur Verfügung.

Habt ihr bitte Tipps, wie dieses Thema gelöst werden kann? Die Sound Problembehebung im Wiki brachte bedauerlicherweise keinen Erfolg und die Ausgabe lautet wie folgt:

cat /proc/asound/cards
 0 [Generic        ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xd05c8000 irq 91
 1 [Generic_1      ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xd05c0000 irq 92
 2 [acp            ]: acp - acp
                      HP-HPENVYx3602_in_1Laptop15_ey0xxx-Type1ProductConfigId-8A31

aplay /usr/share/sounds/alsa/Front_Center.wav 
ALSA lib pcm_dmix.c:999:(snd_pcm_dmix_open) unable to open slave
aplay: main:831: audio open error: No such file or directory

sudo aplay /usr/share/sounds/alsa/Front_Center.wav 
ALSA lib pcm_dmix.c:999:(snd_pcm_dmix_open) unable to open slave
aplay: main:831: audio open error: No such file or directory

echo normal:; aplay -l; echo sudo:; sudo aplay -l 
normal:
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Generic [HD-Audio Generic], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic_1 [HD-Audio Generic], device 0: ALC245 Analog [ALC245 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
sudo:
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Generic [HD-Audio Generic], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic_1 [HD-Audio Generic], device 0: ALC245 Analog [ALC245 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Viele Grüße mitAnanda

mitAnanda

(Themenstarter)

Anmeldungsdatum:
12. Oktober 2015

Beiträge: 204

PS: Die zuletzt beschriebene Vorgegehnsweise bei einem ähnlichen Gerät hat das Problem leider auch nicht behoben: https://forum.ubuntuusers.de/topic/hp-envy-x360-15-sound-nach-update-auf-ubuntu-2-2/

Es sind nun plötzlich auch keine Einträge unter "Audio" in den Systemeinstellungen mehr vorhanden. Hoffentlich lässt sich dieses Thema lösen.

Danke schon einmal für Eure Unterstützung.

mitAnanda

(Themenstarter)

Anmeldungsdatum:
12. Oktober 2015

Beiträge: 204

Es wurden nun auch andere Derivative und Distributionen mit einem aktuelleren Kernel probiert, wie z.B. Fedora KDE, EndeavourOS und Pop!_OS. Aber kein Live ISO hat bislang funktioniert.

Hat jemand von Euch noch Ideen wie man das Gerät zum Laufen bringen könnte?

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Hast du ganz konkret den Kernel probiert: 6.4-rc7 ?

Ich kenne die Hardware nicht, vielleicht kommt man irgendwie an die Device IDs und kann gezielter recherchieren.

Falls es mit dem aktuellsten Kernel nicht klappt, es gibt einen Patch: https://lore.kernel.org/lkml/20220811053950.11810-1-faenkhauser@gmail.com/

der jemandem mit ähnlicher Hardware half:

Even after the release of Linux 6.1, the problem is not solved yet. But I solved it by applying this patch and recompiling the kernel: ...

https://unix.stackexchange.com/questions/722205/hp-envy-x360-2022-ryzen-edition-speakers-not-working

Ich habe nicht recherchiert, ob das spezifisch bei deiner Hardware hilfreich sein kann, jedenfalls ist in der Mailingliste davon die Rede:

This patch fixes speaker output on the HP Envy x360 ey0xxx The mic/speaker mute LEDs are still non-functional but they aren't required for basic funtionality

Viel Glück.

mitAnanda

(Themenstarter)

Anmeldungsdatum:
12. Oktober 2015

Beiträge: 204

verdooft schrieb:

Hast du ganz konkret den Kernel probiert: 6.4-rc7 ?

Ich kenne die Hardware nicht, vielleicht kommt man irgendwie an die Device IDs und kann gezielter recherchieren.

Falls es mit dem aktuellsten Kernel nicht klappt, es gibt einen Patch: https://lore.kernel.org/lkml/20220811053950.11810-1-faenkhauser@gmail.com/

der jemandem mit ähnlicher Hardware half:

Even after the release of Linux 6.1, the problem is not solved yet. But I solved it by applying this patch and recompiling the kernel: ...

https://unix.stackexchange.com/questions/722205/hp-envy-x360-2022-ryzen-edition-speakers-not-working

Ich habe nicht recherchiert, ob das spezifisch bei deiner Hardware hilfreich sein kann, jedenfalls ist in der Mailingliste davon die Rede:

This patch fixes speaker output on the HP Envy x360 ey0xxx The mic/speaker mute LEDs are still non-functional but they aren't required for basic funtionality

Viel Glück.

Vielen Dank für Deine Rückmeldung.

Gibt es überhaupt Live Images mit Kernel 6.4? Man muss ja schon froh sein, wenn man welche mit zumindest 6.3.x findet.

Wie lassen sich die Device IDs herausfinden?

Und gibt es für den Patch bitte genauere Anleitungen? Ist das auch mit wenig technischem Linux Know-How möglich?

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Aktuell habe ich keine Kernels mehr kompiliert, man braucht wohl jetzt auch Rust dazu. Ansonsten lese ich den Mailinglistenartikel so, dass man nach dem Laden des Sources die beiden Dateien wie angegeben bearbeiten muss, das geht sogar grafisch:

sound/pci/hda/cs35l41_hda.c
sound/pci/hda/patch_realtek.c

Welcher Kernel ist denn in Kubuntu 23.04 gerade installiert? Möglich dass per "sudo apt build-dep" schon alles, was man zum Bauen eines neueren/gepatchten Kernels braucht - inklusive Rust, installiert wird.

6.4 ist noch nicht fertig, habe ich nur genannt, weil jeder neue Kernel Verbesserungen mit sich bringt und ich davon ausging, dass du 6.3 bereits getestet hast.

Zum technischen KnowHow: 2012 hab ich keinerlei Ahnung von Linux gehabt, aber unter Debian nach Anleitung schon Kernels kompiliert. Man kann da die Konfiguration eines vorhandenen Kernels übernehmen, dann werden nur die neuen Optionen abgefragt, oder mit dem Standardwert abgenickt.

Wenn du eh patcht, kannst du vermutlich auch den Source vom gerade installierten Kernel laden und entsprechend bearbeiten. 6.4 war nur eine Idee, um ungepatcht noch zu testen, ob damit die Soundausgabe funktioniert. Ich hab mir eben eine zu patchende Datei angesehen:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/sound/pci/hda/patch_realtek.c?h=v6.4-rc7

Da ist die Zeile

SND_PCI_QUIRK(0x103c, 0x8a31, "HP ENVY x360 2-in-1 Laptop 15-ey0xxx", ALC287_FIXUP_CS35L41_I2C_2),

aus dem Diff nicht enthalten, also entweder geht die Audioausgabe auch nicht im aktuellen 6.4 RC Kernel, oder das wurde anders gelöst.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Ich hab was wichtiges vergessen:

Also the quirk is labeled ALC287_FIXUP_CS35L41_I2C_2 however it does not only apply to ALC287 Its function is the generic cs35l41 fixup telling the driver that there's 2 i2c speakers. It isn't actually specific to ALC287

https://lore.kernel.org/lkml/20220811053950.11810-1-faenkhauser@gmail.com/

mitAnanda

(Themenstarter)

Anmeldungsdatum:
12. Oktober 2015

Beiträge: 204

verdooft schrieb:

Aktuell habe ich keine Kernels mehr kompiliert, man braucht wohl jetzt auch Rust dazu. Ansonsten lese ich den Mailinglistenartikel so, dass man nach dem Laden des Sources die beiden Dateien wie angegeben bearbeiten muss, das geht sogar grafisch:

sound/pci/hda/cs35l41_hda.c
sound/pci/hda/patch_realtek.c

Welcher Kernel ist denn in Kubuntu 23.04 gerade installiert? Möglich dass per "sudo apt build-dep" schon alles, was man zum Bauen eines neueren/gepatchten Kernels braucht - inklusive Rust, installiert wird.

6.4 ist noch nicht fertig, habe ich nur genannt, weil jeder neue Kernel Verbesserungen mit sich bringt und ich davon ausging, dass du 6.3 bereits getestet hast.

Zum technischen KnowHow: 2012 hab ich keinerlei Ahnung von Linux gehabt, aber unter Debian nach Anleitung schon Kernels kompiliert. Man kann da die Konfiguration eines vorhandenen Kernels übernehmen, dann werden nur die neuen Optionen abgefragt, oder mit dem Standardwert abgenickt.

Wenn du eh patcht, kannst du vermutlich auch den Source vom gerade installierten Kernel laden und entsprechend bearbeiten. 6.4 war nur eine Idee, um ungepatcht noch zu testen, ob damit die Soundausgabe funktioniert. Ich hab mir eben eine zu patchende Datei angesehen:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/sound/pci/hda/patch_realtek.c?h=v6.4-rc7

Da ist die Zeile

SND_PCI_QUIRK(0x103c, 0x8a31, "HP ENVY x360 2-in-1 Laptop 15-ey0xxx", ALC287_FIXUP_CS35L41_I2C_2),

aus dem Diff nicht enthalten, also entweder geht die Audioausgabe auch nicht im aktuellen 6.4 RC Kernel, oder das wurde anders gelöst.

Herzlichen Dank für deine Antwort. "Source vom gerade installierten Kernel laden und entsprechend bearbeiten" klingt leider etwas zu technisch für reine Anwender. Eine Anleitung für noobs gibt es wahrscheinlich nicht, oder? 🤣

Kopfhörer funktionieren übrigens, falls dies relevant ist.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Im Web gibts zahlreiche Anleitungen, wie man Kernels unter Debian baut und Deb-Pakete erhält. Da ich keine mehr getestet habe, möchte ich keine empfehlen. In meinem System muss ich auch erstmal Paketquellen für Sourcepakete aktivieren, sonst klappt schon der Anfang nicht.

Mittlerweile im Archiv, vielleicht bringt dich das trotzdem weiter, vergiss aber nicht, vor dem Bau, die notwendigen Änderungen am Source vorzunehmen, die aus der Mailingliste.

https://wiki.ubuntuusers.de/Archiv/Kernel/Kompilierung/

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Wenn der Kopfhörer funktioniert, kannst du auch einfach externe Boxen anschließen. Ist vermutlich dann auch besserer Ton. Irgendwann funktioniert dann vielleicht auch ein aktueller Standardkernel, so dass die internen Lautsprecher Ton ausgeben. Kernek 6.4 ist draussen, ich hab jetzt nicht geschaut, ob der Patch schn drin ist. Im RC 7 war er nicht.

mitAnanda

(Themenstarter)

Anmeldungsdatum:
12. Oktober 2015

Beiträge: 204

Alles klar, danke. Dann heißt es wohl warten oder in der Zwischenzeit Windows nutzen ☹

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Sollte 6.4.2 oder gar noch neuer verfügbar sein (siehe https://www.kernel.org/), wenn du das hier liest/probierst, nimm ruhig den neuen Kernel.

Ich hab gerade mal 6.4.1 gebaut, erst heute, weil ich auf ein Update von tuxedo-keyboard gewartet habe, damit ich nichts für 6.4x Kompatibilität patchen musste ☺), ist kein Hexenwerk, allerdings kann es sein, dass bei mir schon Zeugs, das notwendig ist, drauf war. Zudem hatte ich vorher den Mainline Kernel 6.4 drauf, so dass sich nicht viel an der Konfiguration geändert hat. Grob habe ich mich an dem Artikel orientiert, allerdings ohne git zu verwenden:

https://saveriomiroddi.github.io/A-precise-guide-to-build-a-custom-linux-kernel/

  • Benötigtes installieren

    sudo apt install build-essential libncurses5 libncurses5-dev libncurses-dev qtbase5-dev-tools flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf

    3 Linksklicks markieren bei mir die ganze Zeile.

  • Kernel laden (habs in einem neuen Ordner abgelegt, gegebenenfalls vorher mkdir neuerordner, cd neuerordner)

    wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.4.1.tar.xz
  • Archiv entpacken

    tar xfv linux-6.4.1.tar.xz
  • In das Unterverzeichnis wechseln

    cd linux-6.4.1/
  • Konfiguration des gerade laufenden Kernels kopieren, für den neuen Kernel als Basis verwenden, neue Optionen werden auf Standardwerte gesetzt

    make olddefconfig
  • Ich weiß nicht, ob das notwendig ist, geschadet hat es bei mir nicht (siehe Artikel)

    scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
    scripts/config --set-str SYSTEM_REVOCATION_KEYS ""
  • Debugzeugs abstellen

    scripts/config --undefine DEBUG_INFO
    scripts/config --undefine DEBUG_INFO_COMPRESSED
    scripts/config --undefine DEBUG_INFO_REDUCED
    scripts/config --undefine DEBUG_INFO_SPLIT
    scripts/config --undefine GDB_SCRIPTS
    scripts/config --set-val  DEBUG_INFO_DWARF5     n
    scripts/config --set-val  DEBUG_INFO_NONE       y
  • Optional weitere Anpassungen hier vornehmen

    make menuconfig

    Ich habs nicht angepasst, damit, wenn wieder von der Konfiguration des laufenden Kernels ausgegangen wird, alles ungefähr so ist und ich nicht meine Verschlimmbesserung übernehme.

  • Den Kernel patchen (Quelle: https://lore.kernel.org/lkml/20220811053950.11810-1-faenkhauser@gmail.com/), damit bei dir Sound geht, dazu öffnest du die Datei in einem Editor:

    linux-6.4.1/sound/pci/hda/

    suchst die Zeile (aktuell Zeile 1240) mit dem Inhalt:

    if (strncmp(hid, "CLSA0100", 8) == 0) {

    ersetzt die Zeile durch die 2 Zeilen:

    if ((strncmp(hid, "CLSA0100", 8) == 0) ||
    	    (strncmp(hid, "CSC3551", 7) == 0)) {

    Dann speicherst du die Datei und öffnest:

    linux-6.4.1/sound/pci/hda/patch_realtek.c

    suchst die Zeile, die das enthält:

    HP Envy x360

    machst nach der Zeile (aktuell 9392) einmal Enter, fügst eine neue Zeile ein, so dass die markierte Zeile an der Stelle eingefügt ist:

    	SND_PCI_QUIRK(0x103c, 0x8497, "HP Envy x360", ALC269_FIXUP_HP_MUTE_LED_MIC3),
    	SND_PCI_QUIRK(0x103c, 0x8a31, "HP ENVY x360 2-in-1 Laptop 15-ey0xxx", ALC287_FIXUP_CS35L41_I2C_2),
    	SND_PCI_QUIRK(0x103c, 0x84da, "HP OMEN dc0019-ur", ALC295_FIXUP_HP_OMEN),

    Dann speicherst du die Änderungen. Man kann Diffs auch anders anwenden, mit den Vorgehensweisen bin ich allerdings nicht vertraut.

  • Kernel kompilieren und Debianpakete bauen

    make -j 16 bindeb-pkg LOCALVERSION=-"custombuild-001"

    LOCALVERSION kannst du anpassen oder auch komplett weglassen. Je nach Prozessor die Threadzahl, hier 16, auch anpassen.

  • In das Verzeichnis mit den Debianpaketen wechseln

    cd ..
  • Den neuen, gepatchten Kernel installieren

    sudo dpkg -i *.deb

    Auf meinem System wurde das Paket linux-libc-dev von einer Uraltversion auf den aktuellen Stand gebracht, ich hoffe, dass das keine Nachteile hat (bei den fertigen Mainlinekerneln gab es das Paket nicht, weshalb es immer auf dem 5.15er Stand von Buntu 22.04 blieb).

  • Checken, ob der Kernel nach einem Reboot läuft

    uname -a
    Linux nb0 6.4.1-custombuild-001 #1 SMP PREEMPT_DYNAMIC Wed Jul  5 03:10:09 CEST 2023 x86_64 x86_64 x86_64 GNU/Linux

Viel Erfolg. Wenn es nicht klappt, kannst du den vorherigen Kernel booten und diesen hier entfernen.

Der wichtigste Hinweis am Ende: Kernelupdates kommen auf die Art nicht mehr automatisch, baust du neue Kernel, musst du diese vorher solange patchen, bis der Originalsource entsprechend angepasst wurde, so dass bei dir die internen Lautsprecher auch so Ton ausgeben. In dem Fall könntest du ab dann (ab der Kernelversion) auch auf fertige Debianpakete zurückgreifen.

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Ah, ich habe wichtiges vergessen:

  • das Source Tar-Archiv kann man per pgp prüfen

  • verwendest du irgendwelche Hardware mit manuell installierten Treibern/Kernelmodulen, kann das zu Problemen führen

  • ich habe das ganze unter Tuxedo OS durchgeführt, es ist nicht gesagt, dass das 1:1 auch unter deiner Distribution so funktioniert

  • ein Rustcompiler war bei mir bereits installiert, falls der benötigt wird, könnte es reichen, das Paket zu installieren: rustc

mitAnanda

(Themenstarter)

Anmeldungsdatum:
12. Oktober 2015

Beiträge: 204

verdooft schrieb:

Ah, ich habe wichtiges vergessen:

  • das Source Tar-Archiv kann man per pgp prüfen

  • verwendest du irgendwelche Hardware mit manuell installierten Treibern/Kernelmodulen, kann das zu Problemen führen

  • ich habe das ganze unter Tuxedo OS durchgeführt, es ist nicht gesagt, dass das 1:1 auch unter deiner Distribution so funktioniert

  • ein Rustcompiler war bei mir bereits installiert, falls der benötigt wird, könnte es reichen, das Paket zu installieren: rustc

Wow! Herzlichen Dank. Das sieht nach einem Projekt für das Wochenende aus und da werden sicher noch Fragen auftreten. Aber einen Versuch ist es auf alle Fälle wert und das Notebook wird schon nicht in die Luft fliegen wenn man Mist baut 🤣

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4422

Ja, im Makefile steht das: HOSTRUSTC = rustc

Also wird Rust wohl wirklich benötigt, ich bin die Anleitung hier eben für 6.4.2 durchgegangen, es hat funktioniert. Was ich nicht hinbekomme, den Kernel mit gcc-13 und g++13 zu bauen, trotz

HOSTCC	= gcc-13
HOSTCXX	= g++-13

in der Makefile, kommt wieder das raus:

cat /proc/version
Linux version 6.4.2-custombuild-001 (linux@nb0) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #1 SMP PREEMPT_DYNAMIC Wed Jul  5 20:40:44 CEST 2023

Da müsste ich die gcc und g++ Versionen scheinbar doch in das Alternativen-System einpflegen und auf 13 setzen.

Weil mir der Thread später als Dokumentation dient, ging doch, und zwar so:

make CC=/usr/bin/gcc-13 CXX=/usr/bin/g++-13 KCFLAGS="-march=native" -j 16 bindeb-pkg LOCALVERSION=-"custombuild-003"

Du kannst ohne Weiteres Standard gcc und g++ lassen. 23.04 ist sowieso aktueller.

Antworten |