Wie deaktiviere ich den Stromsparmodus an den Subwoofer-Audio-Pins meines Lenovo Y50?

3

Follow-up von: Wie bringe ich den Subwoofer meines Lenovo Y50 unter Linux zum Laufen?

Um es kurz zu machen, ich habe ein Lenovo Y50 mit integriertem Subwoofer, das unter Linux Mint nur funktioniert, wenn ich mit HDA Analyzer einige Einstellungen an zwei Pins vorgenommen habe. Die gleiche Lösung funktioniert nicht mit Fedora und anderen Distributionen. Weitere Infos im obigen Link.

Ich hatte etwas Zeit, um etwas genauer nachzuforschen, und bemerkte, dass es Unterschiede in den Text-Dump-Registerkarten von HDA Analyzer gibt, die mir für jeden Pin und für jede Distribution angezeigt werden (Linux Mint links, Fedora rechts):

Bild 1

Bild 2

Ich habe gelernt, dass D0 den vollen Leistungszustand und D3 den niedrigen Leistungszustand bedeutet. Ich habe nachgeforscht, wie ich die Stromsparfunktion meiner Audiokarte vollständig deaktivieren kann. Daher habe ich unter Fedora Folgendes versucht, das Terminal eingegeben und vor und nach dem Neustart getestet, aber mein Problem wurde dadurch nicht gelöst:

echo 0 > /sys/module/snd_hda_intel/parameters/power_save

echo N > /sys/module/snd_hda_intel/parameters/power_save_controller

Ich habe auch versucht , unter Linux Mint den Energiesparmodus zu aktivieren. Der Subwoofer wurde vor dem Neustart deaktiviert (und war nach dem Neustart immer noch deaktiviert).

Ich würde gerne wissen, ob jemand andere Ideen hat, wie man den Stromstatus dieser beiden Pins (0x17 und 0x1a) weiter von D3 auf D0 umschalten kann, damit mein Subwoofer-Ausgang klingt. Vielen Dank!

EDIT: Hier ist eine Lösung, die auf einem Python-Skript basiert, das ich hier erstellt habe . Ignorieren Sie nicht die Antworten unten, die geholfen haben (nochmals vielen Dank!).

Dragoș
quelle

Antworten:

3

Erhöhen Sie nicht nur den Energiezustand für die Pins 0x17 und 0x1a auf D0, sondern auch die Ausgangslautstärke des Knotens 0x3 (AUD_OUT).

Getestet auf demselben Laptop-Modell, auf dem Debian-Tests ausgeführt werden, funktioniert der Subwoofer jetzt.

Eine einfache Möglichkeit, dies zu testen, ist das Anschließen von Kopfhörern. Der Subwoofer wird nicht stummgeschaltet.

leneb
quelle
Es klappt. Sie haben auch Recht damit, dass die Kopfhörer und der Subwoofer nicht stumm geschaltet werden, aber das ist ein weiteres Kapitel, das Sie beim Linux-Basteln lösen müssen.
Dragoș,
Oh cool, ich habe meiner Antwort ein Skript hinzugefügt, das alle Schritte in einem Schritt ausführt und nur hda-verb verwendet, ohne hda analyzer. Ich bin mir jedoch nicht sicher, ob es sich um eine vernünftige Anfangslautstärke handelt. (Aber danach scheint es sich mit den regulären Lautstärkereglern anzupassen?) Schöne Zusammenarbeit!
Miyalys
3

Mit Hilfe debianuserdes #alsa IRC-Kanals auf freenode hätte ich uns vielleicht ein bisschen näher gebracht. Es scheint, dass die Energiezustände mit dem Tool hda_verb festgelegt werden können, das Teil von alsa-tools ist. Es scheint jedoch keine Option zu geben power_save_controller, die nur spezifisch gesteuert werden kann power state. Sie können Informationen darüber erhalten, was parametersdurch Ausführen festgelegt werden kannhda-verb -L

Beispiel für das Abrufen des Energiezustands eines Geräts:

sudo hda-verb / dev / snd / hwC1D0 0x1a GET_POWER POWER_STATE

Beispiel für das Einstellen des Energiezustands eines Geräts:

sudo hda-verb / dev / snd / hwC1D0 0x17 SET_POWER 0x0 POWER_STATE

Im Einzelnen müssen Sie also Folgendes ausführen:

sudo hda-verb / dev / snd / hwC1D0 0x17 SET_POWER 0x0
sudo hda-verb / dev / snd / hwC1D0 0x1a SET_POWER 0x0

Beachten Sie, dass dies nicht funktioniert, während HDA Analyzer ausgeführt wird. Sie können es jedoch später starten, um zu überprüfen, ob die Änderung erfolgreich war. In meinem Fall wurde es in D0 geändert.

Ich frage mich, ob das Ihr Problem löst.
Wie gesagt, ich habe denselben Computer, obwohl ich nicht ganz sicher bin, ob mein Subwoofer tatsächlich ausgeschaltet ist, da ich keinen großen Unterschied zu einer Beispielsounddatei höre, die ich bei der Wiedergabe in Windows oder Archlinux erstellt habe. Vielleicht ist die Frequenz (65 Hz) zu hoch? Falls jemand anderes es testen möchte:
http://miyalys.eu.org/files/65hzsine.wav

Vielleicht können wir eine Möglichkeit finden, die normalen Lautsprecher zu deaktivieren, sodass nur der Subwoofer eingeschaltet ist?

Bearbeiten: Mit Hilfe der Antwort von leneb habe ich dieses Skript erstellt, das als root ausgeführt werden muss und all diese Dinge nur mit hda-verb ausführt. Ich bin mir jedoch nicht sicher, ob der Lautstärkepegel völlig normal ist. (Rückmeldung erwünscht) Und das Problem mit eingesteckten Kopfhörern, die den Subwoofer nicht ausschalten, bleibt bestehen.

#! /usr/bin/env sh

# Run this script as root!

dev="/dev/snd/hwC1D0"

hda-verb $dev 0x17 SET_POWER 0x0
hda-verb $dev 0x1a SET_POWER 0x0
hda-verb $dev 0x03 0x300 0xa055
hda-verb $dev 0x03 0x300 0x9055
hda-verb $dev 0x17 0x300 0xb000
hda-verb $dev 0x17 0x707 0x40
hda-verb $dev 0x1a 0x707 0x25

Wenn nötig, können alle diese Schritte auch ohne hda-verb ausgeführt werden, nur mit Python, aber dies würde den Code viel weniger sauber machen.

miyalys
quelle
Leider klickt der Subwoofer, wenn ich die Befehle verwende, aber es funktioniert immer noch nicht. Was das Deaktivieren von normalen Lautsprechern angeht, würde ich HDA Analyzer verwenden, um eine Option zum Stummschalten zu finden. (Ich würde Linux Mint live booten, den Subwoofer aktivieren, die Lautsprecher mit HDA Analyzer deaktivieren und die Einstellungen in Arch reproduzieren.)
Dragoș,
Ach, schade! Bedeutet "nur" nicht, dass die Subwoofer nicht spielen oder dass der Energiezustand nicht auf D0 geändert wird? Was das Deaktivieren von Lautsprechern angeht, haben Sie wahrscheinlich recht.
Miyalys
Der Energiezustand ändert sich in der Tat zu D0. Nur dass der Subwoofer nicht spielt. Sie haben jedoch die ursprüngliche Frage beantwortet:
Dragoș,
Okay, das wichtige Problem ist immer noch nicht gelöst (vielleicht sind wir näher dran), also hoffentlich kommt jemand mit einer besseren Antwort, wenn einer von uns es nicht tut.
Miyalys