Aktivieren der Mikrofon-Stummschalttaste und -Leuchte bei Lenovo Thinkpads


26

Ich habe eine Mikrofon-Stummschalttaste an meinem Lenovo Thinkpad T420, aber sie funktioniert nicht.

Also habe ich versucht xev, das Presseereignis zu überwachen, und diese Taste wurde nicht erfasst.

Gibt es sowieso eine Möglichkeit, das Problem zu beheben, wie beispielsweise einen rohen Schlüsselcode hinzuzufügen?

Betriebssystem und Laptop

Ubuntu 12.04 Ich hoffe auch, dass es unter Arch Linux funktioniert, aber es macht nicht viel aus ;-P

Thinkpad-Modul: X220 4290LY9

Kernel-Patch für Arch Linux

Hier herunterladen

ENDLICH

Es ist ein wenig knifflig, aber mit dem Kernel-Patch und dem acpid-Skript funktioniert es jetzt.

Der Rest, den ich brauche, ist ein Benachrichtigungs-Daemon wie der für die Stummschaltung der Ausgabe, aber das macht jetzt nicht viel.


Welches Lenovo Modell?
ish

@izx Thinkpad X220 4290LY9
Daisy

xevVerwenden Sie stattdessen , um acpi-listenzu überwachen und zu drücken, sollten Sie so etwas wie erhalten ibm/hotkey HKEY 00000080 0000101b. Bitte poste diesen Code hier.
ish

@izx, kein glück, aber ich konnte andere knöpfe sehen, zb lauter / leiser, denke vantage
daisy

Sie haben ein Licht in die Stummschalttaste eingebaut? Drücken Sie auch die Taste ein paar Mal und poste die Ausgabedmesg|tail
ish

Antworten:


34

Diese Lösung sollte für alle Thinkpads mit einer Stummschalttaste funktionieren, die auch über eine eingebaute Beleuchtung verfügt. Es kann auch für andere Thinkpads funktionieren.

Abgesehen von den Benachrichtigungsblasen:

Bildbeschreibung hier eingebenBildbeschreibung hier eingeben

Es gibt zwei mögliche "Hardware" -Anzeigen (um anzuzeigen, dass die Stummschaltung aktiviert oder deaktiviert ist):

  1. Die Power-Taste (grün) blinkt, um anzuzeigen, dass die Stummschaltung aktiviert ist
  2. Die Mic Mute-Taste (orange) leuchtet nicht, um den Stummschaltungsstatus anzuzeigen (genau wie in Windows).

    Lösung 2 erfordert ein gepatchtes thinkpad_acpiKernelmodul und wird nur erfahrenen Benutzern empfohlen, die wissen, was sie tun. Dies liegt daran, dass der Patch standardmäßig nicht von den thinkpad_acpi-Entwicklern bereitgestellt wird. ( Weitere Informationen finden Sie in dieser Diskussion .)

Gemeinsame Schritte


ein. Bestimmen des Mic-Mute-Hotkey-Codes und des Mic-Eingabegeräts

  • Terminal mit öffnen Ctrl+Alt+T
  • Führen Sie aus acpi_listen, und drücken Sie die Stummschalttaste
  • Beachten Sie das Ergebnis, das ungefähr so ​​aussehen sollte: ibm/hotkey HKEY 00000080 0000101b

  • Führen amixer scontrolsSie dann Folgendes aus:

Einfache Mixersteuerung 'Internal Mic', 0

oder

Einfache Mixersteuerung 'Capture', 0

Je nachdem, was Sie sehen, ist "Internal Mic" oder "Capture" Ihr Eingabegerät.

b. Erstellen Sie den Mic-Mute ACPI-Ereignishandler

  • Terminal gksudo gedit /etc/acpi/events/lenovo-mutemicöffnen , geben Sie ein , um den Editor zu öffnen.
  • Fügen Sie im Editor Folgendes ein, wobei die erste Zeile der im vorherigen Abschnitt gezeigte Code sein sollte acpi_listen:
    event = IBM / Hotkey HKEY 00000080 0000101b
    action = /etc/acpi/lenovo-mutemic.sh
    
  • Speichern und beenden Sie den Editor.

Wählen Sie entweder die Power Light- oder die Mic Mute-Anzeige


c-1. Mic-Mute-Skript mit Power Button-Anzeige

  • Tun Sie dies, wenn Sie eine einfache Lösung suchen und das gepatchte Kernelmodul nicht verwenden möchten (siehe C-2).
  • Terminal öffnen, eingeben gksudo gedit /etc/acpi/lenovo-mutemic.sh
  • Fügen Sie im Editor Folgendes ein:

    #! / bin / bash
    INPUT_DEVICE = "'Internes Mikrofon'"
    YOUR_USERNAME = "place_your_username_here"
    Wenn amixer $ INPUT_DEVICE, 0 | grep '\ [on \]'; dann
        amixer sset $ INPUT_DEVICE, 0 toggle
        echo "0 blink"> / proc / acpi / ibm / led
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" benachrichtigen-senden -t 50 \
                -i Mikrofonempfindlichkeit stummgeschaltet-symbolisch "Mic MUTED" '
    sonst
        amixer sset $ INPUT_DEVICE, 0 toggle                       
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" benachrichtigen-senden -t 50 \
                -i Mikrofonempfindlichkeit-hochsymbolisch "Mic ON" '
        Echo "0 on"> / proc / acpi / ibm / led 
    fi
    
  • Ersetzen Sie den Wert der Variablen INPUT_DEVICE durch den CaptureNamen Ihres Eingabegeräts (lassen Sie alle Häkchen intakt).

  • Ersetzen Sie den Wert der Variable YOUR_USERNAME durch den Kontonamen des Benutzers, an den Sie Benachrichtigungen senden möchten
  • Speichern und beenden Sie den Editor.
  • Führen Sie nun (vom Terminal aus) Folgendes aus:
    sudo chmod + x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Wechseln Sie zum Abschnitt Testen (d), um zu bestätigen, dass es funktioniert.

c-2. Mic-Mute mit offizieller Mic-Mute-Kontrollleuchte

Einrichten des Skripts

  • Wenden Sie diese Methode nicht an, wenn Sie mit dem Terminal / der Shell nicht vertraut sind.
  • Dies erfordert das Kompilieren eines gepatchten thinkpad_acpiModuls und wurde für die Kompatibilität mit Ubuntu Precise 12.04 und Quantal 12.10, den Kerneln 3.2.0-23 und 3.2.0-24 und 3.5.0-21 überprüft.
  • Lassen Sie uns zuerst das Skript erstellen: /etc/acpi/lenovo-mutemic.shsollte wie in Abschnitt c-1 sein, mit den folgenden Ergänzungen:

  • Fügen Sie diese Zeile nach der Überschrift ( #!/bin/bash) ein:

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    
  • Fügen Sie nach der ersten echo...Zeile Folgendes ein:

    echo 1 > $MICMUTE
    
  • Und nach der zweiten echo...Zeile einfügen:

    echo 0 > $MICMUTE
    
  • In dieser Paste finden Sie ein Beispiel, wie das vollständige Skript aussehen soll

  • Dann:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Vergewissern Sie sich, dass durch Drücken der Stummschalttaste die Betriebsanzeige blinkt. Nochmaliges Drücken gibt ein konstantes Power-Licht.

Erstellen, Testen und Installieren des Kernelmoduls

  • Installieren Sie (oder stellen Sie sicher), dass Sie die Header und Tools für Ihren aktuell ausgeführten Kernel haben:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  • Erstellen Sie ein temporäres Verzeichnis und wechseln Sie dorthin:

    mkdir ~/tpacpi && cd ~/tpacpi
    
  • Laden Sie die Quelldatei thinkpad_acpi.caus dem Ubuntu-Kernel-Git-Repository herunter :

    wget -Othinkpad_acpi.c "http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-$(lsb_release -sc).git;\
    a=blob_plain;f=drivers/platform/x86/thinkpad_acpi.c;hb=HEAD" 
    
  • Patche es mit (kopiere und füge die ganze Zeile ein):

    sed -i -e 's/"tpacpi::thinkvantage",/"tpacpi::thinkvantage",\n\t"tpacpi::unknown_led4",\n\t"tpacpi::micmute",/g' -e 's/0x1081U/0x5081U/g' -e 's/0x1fffU/0x5fffU/g' thinkpad_acpi.c
    
  • In demselben Ordner, in thinkpad_acpi.cden Sie heruntergeladen haben, benötigen Sie ein "Makefile". Sie können es direkt von diesem Pastebin herunterladen :

    wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT
    

    ODER fügen Sie das Folgende in eine Datei mit dem Namen Makefile:

    obj-m + = thinkpad_acpi.o
    alle: Machen Sie -C / lib / modules / $ (Shell uname -r) / build M = $ (PWD) -Module
    reinigen: Machen Sie -C / lib / modules / $ (Shell uname -r) / build M = $ (PWD) sauber
  • Geben Sie nun Folgendes ein make, um das Modul zu erstellen. thinkpad_acpi.koWenn Sie fertig sind, sehen Sie eine Datei im Ordner.

  • Testen Sie das gepatchte Modul nach dem Laden mit:

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    
  • Vergewissern Sie sich nun, dass durch Drücken der Mikrofontaste das orange Mikrofonlicht ein- und ausgeschaltet wird UND die Betriebsanzeige blinkt / leuchtet.

  • Wenn dies bestätigt wurde, gehen Sie wie folgt vor, um Ihr aktuelles thinkpad_acpiModul zu ersetzen :

    TPDIR = / lib / modules / $ (uname -r) / kernel / drivers / platform / x86
    sudo mv $ TPDIR / thinkpad_acpi.ko $ TPDIR / thinkpad_acpi.ko.stock
    sudo mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $ TPDIR / thinkpad_acpi.ko
    
  • Kommentieren Sie die Strom-LED-Leitungen aus oder löschen Sie sie lenovo-micmute.sh


d. Testen

  • Abgesehen von Ihrer Auswahl der Anzeige können Sie die Stummschaltung auch folgendermaßen bestätigen:

Mikrofoneingang

  • Klicken Sie oben rechts auf das Lautstärkesymbol und unten auf die Toneinstellungen:
  • Wechseln Sie auf die Registerkarte "Input".
  • Nun viel Spaß beim Drücken der Mic Mute-Taste, sie sollte sich wie folgt widerspiegeln:

    1. Das Kontrollkästchen Stumm im Fenster
    2. Benachrichtigungsblasen (werden nicht sofort angezeigt, wenn Sie die Mikrofonstummschaltung mehr als einmal alle paar Sekunden drücken!)
    3. Ihre gewählte Anzeige: die blinkende Power-Taste oder die eingebaute Mic Mute-Anzeige.

Es wurde eine blinkende Power-LED als Anzeige hinzugefügt - ohne einen benutzerdefinierten Kernel ist es unmöglich, die tatsächliche Mic-LED zu verwenden.
ish

1
@Andrey: Ich habe einen Inline-Patch hinzugefügt, anstatt die geänderte Quelle herunterzuladen. Durchsuchen Sie die Antwortseite nach Patch it withund finden Sie die sedLeitung, die zum Aktivieren der Mikrofon-Stummschalt-LED erforderlich ist.
ish

2
Leider kann ich nicht mehr kompilieren thinkpad_acpi.c. MakeAusgabe ist hier . Könnte mir bitte jemand bei der Lösung dieses Problems helfen?
Andrey

1
13.10 (Saucy) benötigt ein anderes thinkpad_acpi.c. Der Patch bleibt derselbe wie in der ursprünglichen Antwort. Dies funktionierte für mich auf einem 3.11.0-15-generischen Kernel (und entsprechenden Headern).
Daniel

1
In 16.10 sieht es so aus, als würde sich die Mikrofon-Stummschaltanzeige bei der ersten Methode von selbst einschalten und die Stummschalttaste drücken, sodass die blinkende Betriebsanzeige nicht mehr erforderlich ist.
ExplodingKittens

0

Unter Ubuntu 12.10 konnte ich es nicht sofort zum ersten Mal mit einer Linux-Desktop-Umgebung zum Laufen bringen.

Es wurde durch einfaches Hinzufügen von Anführungszeichen und Entfernen des Kommas (und Hinzufügen meines Benutzernamens) behoben:

#!/bin/bash
MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness

ID='"Internal Mic"'
USERNAME="" #put your username here
if amixer sget "$ID"ntenter code herernal Mic" 0 | grep '\[on\]' ; then
    amixer sset "$ID" 0 toggle
    #echo "0 blink" > /proc/acpi/ibm/led #related to blinking power
    echo 1 > $MICMUTE
    su $USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
            -i microphone-sensitivity-muted-symbolic "Mic MUTED"'
    echo "MUTE ON"
else
    amixer sset "$ID" 0 toggle                       
    su $USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
            -i microphone-sensitivity-high-symbolic "Mic ON"'
    #echo "0 on" > /proc/acpi/ibm/led 
    echo 0 > $MICMUTE
    echo "MUTE OFF"
fi

und befolgte dann Ihre Schritte beim Kompilieren des thinkpad_acpi.

Alles auf einem Thinkpad T520 mit NVS 4200M, Ubuntu 12.10. Noch nicht neu gestartet, aber ich habe mit dem von Ihnen beschriebenen Testschritt getestet und er funktioniert, indem die Stummschalt-LED ein- und ausgeschaltet und tatsächlich stummgeschaltet wird (mit der Benachrichtigung). Die Waffe ein wenig zu springen scheint gut zu funktionieren. Vielen Dank.

Gut neu gestartet, das Skript selbst funktioniert einwandfrei, aber ich habe das gepatchte thinkpad_acpi ... oops nicht installiert

Okay, neu gestartet, nachdem es dieses Mal richtig installiert wurde und die LED ebenfalls aufleuchtet. Sollte wahrscheinlich ein Startskript haben, um zu überprüfen, ob das Mikrofon stummgeschaltet ist oder nicht, und das Licht ein- / ausschalten, da das aktuelle Setup das Licht nur ein- / ausschaltet, wenn der Knopf gedrückt wird.


Damit das Licht anzeigt, ob es beim Start stummgeschaltet wurde oder nicht, anstatt beim ersten Drücken der Taste, habe ich Folgendes gespeichert:

#!/bin/bash
MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
if amixer sget "Internal Mic" 0 | grep '\[on\]' ; then
    echo 0 > $MICMUTE
elif amixer sget "Internal Mic" 0 | grep '\[off\]' ; then
    echo 1 > $MICMUTE
else
    echo "No Mic Detected";
fi

Gab es die Erlaubnis auszuführen

sudo chmod +x /etc/init.d/lenovo-mic-check

Als lenovo-mic-check nach /etc/init.d/ und dann lief:

sudo update-rc.d lenovo-mic-check defauts 98 02

Vergessen Sie auch nicht, nach /etc/pm/sleep.d/ zu kopieren.

sudo cp /etc/init.d/lenovo-mic-check /etc/pm/sleep.d/lenovo-mic-check

Jetzt leuchtet das Licht, wenn ich den Computer neu starte. HINWEIS: Das zweite wenn könnte nur ein anderes sein.


@andrey Dies mag eine dumme Frage sein, aber haben Sie versucht, eine saubere Kopie von thinkpad_acpi.c herunterzuladen, zu patchen und zu kompilieren?
JQuantum
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.