Activation du bouton et du voyant Mic Mute sur les Thinkpad Lenovo

26

J'ai un bouton de coupure du micro sur mon Lenovo Thinkpad T420, mais cela ne fonctionne pas.

J'ai donc essayé la xevcommande pour surveiller l'événement de presse, et cette clé n'a pas été capturée.

Y a-t-il un moyen de le réparer, comme ajouter du code de clé brute?

OS et ordinateur portable

Ubuntu 12.04 , espérons également que cela fonctionne sur Arch Linux, mais peu importe ;-P

Module Thinkpad: X220 4290LY9

Patch du noyau pour Arch Linux

Télécharger ici

ENFIN

C'est un peu délicat, mais avec le patch du noyau et le script acpid, cela fonctionne maintenant.

Le reste dont j'ai besoin est un démon de notification comme celui de la sourdine de sortie, mais cela n'a plus beaucoup d'importance maintenant.

Marguerite
la source
Quel modèle Lenovo?
ish
@izx Thinkpad X220 4290LY9
daisy
Au lieu de xev, utilisez acpi-listenpour surveiller et appuyez sur, vous devriez obtenir quelque chose comme ibm/hotkey HKEY 00000080 0000101b. Veuillez poster ce code ici.
ish
@izx, pas de chance, mais j'ai pu voir d'autres boutons, par exemple vol up / vol down, think vantage
daisy
Vous avez une lumière intégrée à l'intérieur du bouton muet? Appuyez également sur le bouton plusieurs fois et affichez la sortie dedmesg|tail
ish

Réponses:

34

Cette solution devrait fonctionner pour tous les Thinkpad avec un bouton de sourdine qui a également une lumière intégrée. Il peut également fonctionner pour d'autres Thinkpad.

Outre les bulles de notification:

entrez la description de l'image icientrez la description de l'image ici

Il existe deux indicateurs "matériels" possibles (pour indiquer que la sourdine est activée ou désactivée):

  1. Le voyant du bouton d'alimentation (vert) clignote pour indiquer que la sourdine est activée
  2. Le voyant du bouton de sourdine du micro (orange) sera allumé ou éteint pour afficher l'état de sourdine (comme dans Windows)

    La solution 2 nécessite un thinkpad_acpimodule de noyau corrigé et n'est recommandée que pour les utilisateurs avancés qui savent ce qu'ils font. En effet, le correctif n'est pas inclus par défaut par les développeurs de thinkpad_acpi ( voir cette discussion pour plus de détails ).

Étapes communes


une. Détermination du code de raccourci clavier Mic-Mute et du périphérique d'entrée Mic

  • Terminal ouvert avec Ctrl+Alt+T
  • Exécutez acpi_listenet appuyez sur la touche Muet
  • Notez le résultat, qui devrait ressembler à ceci: ibm/hotkey HKEY 00000080 0000101b

  • Ensuite, exécutez amixer scontrols, vous devriez voir l'un des éléments suivants dans la sortie:

Commande de mixage simple 'Internal Mic', 0

ou

Contrôle de mixage simple 'Capture', 0

Selon ce que vous voyez, "Micro interne" ou "Capture" est votre périphérique d'entrée.

b. Créer le gestionnaire d'événements Mic-Mute ACPI

  • Ouvrez le terminal, tapez gksudo gedit /etc/acpi/events/lenovo-mutemicpour ouvrir l'éditeur.
  • Dans l'éditeur, collez ce qui suit, où la première ligne doit être le code affiché dans la section précédente par acpi_listen:
    événement = ibm / raccourci clavier HKEY 00000080 0000101b
    action = / etc / acpi / lenovo-mutemic.sh
    
  • Enregistrez et quittez l'éditeur.

Choix des indicateurs Power Light ou Mic Mute


c-1. Script Mic-Mute avec indicateur de bouton d'alimentation

  • Faites-le si vous voulez une solution simple et que vous ne souhaitez pas utiliser le module du noyau corrigé (voir C-2).
  • Terminal ouvert, tapez gksudo gedit /etc/acpi/lenovo-mutemic.sh
  • Dans l'éditeur, collez:

    #! / bin / bash
    INPUT_DEVICE = "'Micro interne'"
    YOUR_USERNAME = "place_votre_nom_utilisateur_ici"
    si l'amixeur sget $ INPUT_DEVICE, 0 | grep '\ [on \]'; puis
        amixer sset $ INPUT_DEVICE, 0 bascule
        echo "0 clignotement"> / proc / acpi / ibm / led
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notify-send -t 50 \
                -i microphone-sensibilité-muet-symbolique "Mic MUTED" '
    autre
        amixer sset $ INPUT_DEVICE, 0 bascule                       
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notify-send -t 50 \
                -i microphone-sensibilité-haute-symbolique "Mic ON" '
        echo "0 on"> / proc / acpi / ibm / led 
    Fi
    
  • Remplacez la valeur de la variable INPUT_DEVICE par Captures'il s'agit du nom de votre périphérique d'entrée (laissez toutes les graduations intactes).

  • Remplacez la valeur de la variable YOUR_USERNAME par le nom de compte de l'utilisateur auquel vous souhaitez envoyer des notifications
  • Enregistrez et quittez l'éditeur.
  • Exécutez maintenant ce qui suit (à partir du terminal):
    sudo chmod + x /etc/acpi/lenovo-mutemic.sh
    redémarrage acpid du service sudo
    
  • Passez à la section Test (d) pour confirmer que cela fonctionne.

c-2. Mic-mute avec voyant officiel Mic-mute

Configuration du script

  • Veuillez ne pas utiliser cette méthode si vous n'êtes pas familier avec le terminal / shell.
  • Cela nécessitera la compilation d'un thinkpad_acpimodule corrigé et il a été vérifié qu'il fonctionne avec Ubuntu Precise 12.04 et Quantal 12.10, noyaux 3.2.0-23 et 3.2.0-24 et 3.5.0-21.
  • Créons d'abord le script: /etc/acpi/lenovo-mutemic.shdevrait être comme dans la section c-1, avec les ajouts suivants:

  • Insérez cette ligne après l'en-tête ( #!/bin/bash):

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    
  • Après la première echo...ligne, insérez:

    echo 1 > $MICMUTE
    
  • Et après la deuxième echo...ligne, insérez:

    echo 0 > $MICMUTE
    
  • Vous pouvez trouver un exemple de ce à quoi devrait ressembler le script complet dans cette pâte

  • Ensuite:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Confirmez qu'en appuyant sur le bouton de sourdine, le voyant d'alimentation clignote; une nouvelle pression donne un voyant d'alimentation fixe.

Construire, tester et installer le module du noyau

  • Installez (ou assurez-vous) que vous disposez des en-têtes et des outils intégrés pour votre noyau en cours d'exécution avec:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  • Créez un répertoire temporaire et changez-le:

    mkdir ~/tpacpi && cd ~/tpacpi
    
  • Téléchargez le fichier source thinkpad_acpi.cdepuis le référentiel git Ubuntu Kernel:

    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" 
    
  • Corrigez-le avec (copiez et collez la ligne complète):

    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
    
  • Dans le même dossier où thinkpad_acpi.ca été téléchargé, vous aurez besoin d'un "Makefile". Vous pouvez le télécharger directement depuis cette Pastebin , en utilisant:

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

    OU collez ce qui suit dans un fichier appelé Makefile:

    obj-m + = thinkpad_acpi.o
    tout: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) modules
    nettoyer: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) clean
  • Tapez maintenant makepour créer le module; vous verrez un thinkpad_acpi.kofichier dans le dossier une fois terminé.

  • Testez le module corrigé après l'avoir chargé avec:

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    
  • Confirmez maintenant qu'en appuyant sur le bouton du micro, le voyant orange du micro s'allumera / s'éteindra ET le voyant d'alimentation clignotera / restera fixe.

  • Si confirmé, procédez comme suit pour remplacer votre thinkpad_acpimodule actuel :

    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
    
  • Mettez en commentaire ou supprimez les lignes d'alimentation lenovo-micmute.sh


ré. Essai

  • Outre votre choix d'indicateur, vous pouvez également confirmer la sourdine via les éléments suivants:

Entrée micro

  • Cliquez sur l'icône de volume en haut à droite et les paramètres sonores en bas:
  • Basculez vers l'onglet "Entrée".
  • Amusez-vous maintenant en appuyant sur le bouton Mic Mute, vous devriez le voir reflété dans:

    1. La case à cocher Muet dans la fenêtre
    2. Bulles de notification (n'apparaissent pas instantanément si vous appuyez plusieurs fois sur le Mic Mute toutes les quelques secondes!)
    3. Votre indicateur choisi: le voyant du bouton d'alimentation clignotant ou le voyant Mic Mute intégré.
izx
la source
Ajout d'un voyant d'alimentation clignotant comme indicateur - impossible d'utiliser la lumière du micro réelle sans noyau personnalisé.
ish
1
@Andrey: J'ai ajouté un patch en ligne au lieu de télécharger la source modifiée. Veuillez rechercher la page de réponses Patch it withet vous trouverez la sedligne nécessaire pour activer la LED de sourdine du micro.
ish
2
Malheureusement, je ne peux plus compiler thinkpad_acpi.c. Makela sortie est ici . Quelqu'un pourrait-il m'aider à résoudre ce problème?
Andrey
1
13.10 (Saucy) nécessite un autre thinkpad_acpi.c. Le patch reste le même que dans la réponse d'origine. Cela a fonctionné pour moi sur un noyau générique 3.11.0-15 (et les en-têtes correspondants).
Daniel
1
Dans 16.10, il semble que la lumière de sourdine du micro s'allume lorsque vous utilisez la première méthode et appuyez sur le bouton de sourdine, de sorte que le voyant d'alimentation clignotant n'est plus nécessaire.
ExplodingKittens
0

Je n'ai pas pu le faire fonctionner immédiatement sur Ubuntu 12.10 pour la première fois en utilisant également un environnement de bureau Linux.

Il a été corrigé en ajoutant simplement des guillemets et en supprimant la virgule (et en ajoutant mon nom d'utilisateur):

#!/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

puis suivi vos étapes de compilation du thinkpad_acpi.

Le tout sur un Thinkpad T520 avec NVS 4200M, Ubuntu 12.10. Je n'ai pas encore redémarré mais j'ai testé avec l'étape de test que vous avez décrite et cela fonctionne en allumant et éteignant la LED de sourdine et en la coupant (avec la notification). Sauter un peu le pistolet semble bien fonctionner. Merci.

Bien redémarré, le script lui-même fonctionne bien en sourdine et en sourdine, mais je n'ai pas installé le thinkpad_acpi patché ... oups

D'accord, redémarré à nouveau après l'avoir installé correctement cette fois et la LED s'allume également. Devrait probablement avoir un script de démarrage pour vérifier si le micro est coupé ou non et allumer / éteindre la lumière, car la configuration actuelle n'allume / éteint la lumière que lorsque le bouton est enfoncé.


Pour que la lumière montre si elle a été coupée ou non au démarrage au lieu de la première pression sur le bouton, je viens de sauvegarder:

#!/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

Je lui ai donné la permission d'exécuter

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

En tant que lenovo-mic-check dans /etc/init.d/, puis exécuté:

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

N'oubliez pas non plus de copier dans /etc/pm/sleep.d/

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

Maintenant, le voyant est allumé si je redémarre l'ordinateur, REMARQUE: le second si pourrait simplement être un autre.

JQuantum
la source
@andrey Cela peut être une question stupide, mais avez-vous essayé de télécharger, patcher et compiler une copie propre de thinkpad_acpi.c?
JQuantum