Abilitazione del pulsante Disattiva microfono e della luce sui Thinkpad Lenovo


26

Ho un pulsante di disattivazione del microfono sul mio Lenovo Thinkpad T420, ma non funziona.

Quindi ho provato xeva controllare l'evento press e quel tasto non è stato catturato.

Esiste un modo per risolverlo, come aggiungere un codice chiave non elaborato?

Sistema operativo e laptop

Ubuntu 12.04 , spero anche che funzioni su Arch Linux, ma non importa molto ;-P

Modulo Thinkpad: X220 4290LY9

Patch del kernel per Arch Linux

Scarica qui

FINALMENTE

È un po 'complicato, ma con la patch del kernel e lo script acpid, funziona ora.

Il resto che mi serve è un demone di notifica come quello per l'output muto, ma non importa molto ora.


Quale modello Lenovo?
— Ish,

@izx Thinkpad X220 4290LY9
— margherita

Invece di xev, utilizzare acpi-listenper monitorare e premere, si dovrebbe ottenere qualcosa di simile ibm/hotkey HKEY 00000080 0000101b. Si prega di pubblicare questo codice qui.
— ish,

@izx, nessuna fortuna, ma ho potuto vedere altri pulsanti, ad esempio vol su / vol giù, pensa a vantaggio
— margherita

Hai una luce incorporata nel pulsante di disattivazione dell'audio? Premi anche il pulsante alcune volte e pubblica l'uscita didmesg|tail
— ish

Risposte:


34

Questa soluzione dovrebbe funzionare per tutti i Thinkpad con un pulsante di disattivazione dell'audio che ha anche una luce integrata. Potrebbe funzionare anche con altri Thinkpad.

Oltre alle bolle di notifica:

inserisci qui la descrizione dell'immagineinserisci qui la descrizione dell'immagine

Esistono due possibili indicatori "hardware" (per mostrare che il silenziamento è attivato o disattivato):

  1. La spia del pulsante di accensione (verde) lampeggerà per mostrare quando l'audio è disattivato
  2. La spia del pulsante Disattiva microfono (arancione) si accende o si spegne per mostrare lo stato di disattivazione dell'audio (proprio come in Windows)

    La soluzione 2 richiede un thinkpad_acpimodulo kernel con patch ed è consigliata solo agli utenti esperti che sanno cosa stanno facendo. Questo perché la patch non è inclusa dagli sviluppatori thinkpad_acpi per impostazione predefinita ( vedi questa discussione per maggiori dettagli ).

Passaggi comuni


un. Determinazione del codice tasto di scelta rapida Mic-Mute e del dispositivo di input Mic

  • Terminale aperto con Ctrl+Alt+T
  • Esegui acpi_listene premere il tasto muto
  • Nota il risultato, che dovrebbe essere qualcosa del tipo: ibm/hotkey HKEY 00000080 0000101b

  • Quindi esegui amixer scontrols, dovresti vedere una delle seguenti nell'output:

Semplice controllo del mixer 'Internal Mic', 0

o

Semplice controllo del mixer 'Capture', 0

A seconda di ciò che vedi, "Internal Mic" o "Capture" è il tuo dispositivo di input.

b. Creare il gestore eventi ACPI Mic-Mute

  • Apri terminale, digitare gksudo gedit /etc/acpi/events/lenovo-mutemicper aprire l'editor.
  • Nell'editor, incolla quanto segue, dove la prima riga dovrebbe essere il codice mostrato nella sezione precedente da acpi_listen:
    evento = IBM / tasto di scelta rapida HKEY 00000080 0000101b
    action = / etc / acpi / lenovo-mutemic.sh
    
  • Salva ed esci dall'editor.

Scelta degli indicatori Power Light o Mic Mute


c-1. Script Mic-Mute con indicatore del pulsante di accensione

  • Fallo se vuoi una soluzione semplice e non vuoi usare il modulo del kernel con patch (vedi C-2).
  • Terminale aperto, digitare gksudo gedit /etc/acpi/lenovo-mutemic.sh
  • Nell'editor, incolla:

    #! / Bin / bash
    INPUT_DEVICE = "'Microfono interno'"
    Nome_utente = "place_your_username_here"
    se l'amixer sget $ INPUT_DEVICE, 0 | grep '\ [on \]'; poi
        set di amixer $ INPUT_DEVICE, 0 attiva / disattiva
        echo "0 lampeggio"> / proc / acpi / ibm / led
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notifica-invia -t 50 \
                -i microfono-sensibilità-silenziato-simbolico "Mic MUTED" '
    altro
        set di amixer $ INPUT_DEVICE, 0 attiva / disattiva                       
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notifica-invia -t 50 \
                -i microfono-sensibilità-alto simbolico "Mic ON" '
        echo "0 su"> / proc / acpi / ibm / led 
    fi
    
  • Sostituisci il valore della variabile INPUT_DEVICE con Capturese è il nome del tuo dispositivo di input (lascia intatti tutti i tick).

  • Sostituisci il valore della variabile YOUR_USERNAME con il nome dell'account dell'utente a cui desideri inviare le notifiche
  • Salva ed esci dall'editor.
  • Ora esegui quanto segue (dal terminale):
    sudo chmod + x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Vai alla sezione Test (d) per confermare che funziona.

c-2. Mic-mute con indicatore luminoso mic-mute ufficiale

Impostazione dello script

  • Si prega di non utilizzare questo metodo se non si ha familiarità con il terminale / shell.
  • Ciò richiederà la compilazione di un thinkpad_acpimodulo con patch ed è stato verificato che funzioni con Ubuntu Precise 12.04 e Quantal 12.10, kernel 3.2.0-23 e 3.2.0-24 e 3.5.0-21.
  • Creiamo prima lo script: /etc/acpi/lenovo-mutemic.shdovrebbe essere come nella sezione c-1, con le seguenti aggiunte:

  • Inserisci questa riga dopo l'intestazione ( #!/bin/bash):

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    
  • Dopo la prima echo...riga, inserire:

    echo 1 > $MICMUTE
    
  • E dopo la seconda echo...riga, inserire:

    echo 0 > $MICMUTE
    
  • Puoi trovare un esempio di come dovrebbe apparire lo script completo in questo incolla

  • Poi:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Verificare che premendo il pulsante mute si accenda una spia di alimentazione lampeggiante; premendo di nuovo si ottiene una luce di potenza costante.

Compilazione, test e installazione del modulo kernel

  • Installa (o assicurati) di avere le intestazioni e gli strumenti creati per il tuo kernel attualmente in esecuzione con:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  • Crea una directory temporanea e modificala:

    mkdir ~/tpacpi && cd ~/tpacpi
    
  • Scarica il file sorgente thinkpad_acpi.cdal repository 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" 
    
  • Patch con (copia e incolla l'intera riga):

    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
    
  • Nella stessa cartella in cui thinkpad_acpi.cè stato scaricato, sarà necessario un "Makefile". Puoi scaricarlo direttamente da questo Pastebin , usando:

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

    O incolla il seguente in un file chiamato Makefile:

    obj-m + = thinkpad_acpi.o
    tutti: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) moduli
    pulito: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) pulito
  • Ora digita makeper creare il modulo; vedrai un thinkpad_acpi.kofile nella cartella quando hai finito.

  • Testare il modulo con patch dopo averlo caricato con:

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    
  • Ora conferma che premendo il pulsante mic accenderai / spegnerai la spia arancione del microfono E la spia di accensione lampeggerà / accenderà stabilmente.

  • Se confermato, procedere come segue per sostituire il thinkpad_acpimodulo corrente :

    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
    
  • Commenta o elimina le linee del led di alimentazione lenovo-micmute.sh


d. analisi

  • Oltre alla scelta dell'indicatore, puoi anche confermare l'audio tramite quanto segue:

Ingresso Mic

  • Fai clic sull'icona del volume in alto a destra e le impostazioni audio in basso:
  • Passa alla scheda "Input".
  • Ora divertiti a premere il pulsante Disattiva microfono, dovresti vederlo riflesso in:

    1. La casella Muto nella finestra
    2. Bolle di notifica (non appariranno all'istante se si preme il microfono Mute più di una volta ogni pochi secondi!)
    3. L'indicatore prescelto: la spia del pulsante di accensione lampeggiante o la spia del silenziamento del microfono integrata.

Aggiunta una spia di alimentazione lampeggiante come indicatore - impossibile usare la luce del microfono reale senza un kernel personalizzato.
— ish,

1
@Andrey: ho aggiunto una patch inline invece di scaricare il sorgente modificato. Cerca nella pagina di risposta Patch it withe troverai la sedlinea necessaria per attivare il LED di silenziamento del microfono.
— ish

2
Sfortunatamente, non posso più compilare thinkpad_acpi.c. Makel'output è qui . Qualcuno potrebbe aiutarmi a risolvere questo problema?
— Andrey,

1
13.10 (Saucy) richiede un thinkpad_acpi.c diverso. La patch rimane la stessa della risposta originale. Questo ha funzionato per me su un kernel generico 3.11.0-15 (e relative intestazioni).
— Daniel,

1
In 16.10, sembra che la spia di silenziamento del microfono si accenda quando si utilizza il primo metodo e si preme il pulsante di silenziamento, quindi la spia di alimentazione lampeggiante non è più necessaria.
— ExplodingKittens

0

Non riuscivo a farlo funzionare subito su Ubuntu 12.10 per la prima volta usando anche un ambiente desktop Linux.

È stato risolto aggiungendo solo virgolette e rimuovendo la virgola (e aggiungendo il mio nome utente):

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

e poi ho seguito i tuoi passi nella compilazione di thinkpad_acpi.

Tutto su un Thinkpad T520 con NVS 4200M, Ubuntu 12.10. Non ho ancora riavviato ma ho testato con il passaggio di test che hai delineato e funziona con l'accensione e lo spegnimento del LED di silenziamento e il silenziamento (con la notifica). Saltare un po 'la pistola sembra funzionare bene. Grazie.

Ben riavviato, lo script stesso funziona correttamente, disattivando e riattivando l'audio ma non ho installato il thinkpad_acpi con patch ... oops

Bene, riavviato dopo averlo installato correttamente questa volta e anche il LED si accende. Probabilmente dovrebbe avere uno script di avvio per verificare se il microfono è disattivato o meno e accendere / spegnere la luce, poiché l'impostazione corrente accenderà / spegnerà la luce solo quando viene premuto il pulsante.


Per far sì che la luce mostri se è stata disattivata o meno all'avvio invece che alla prima pressione del pulsante, ho appena salvato:

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

Gli è stata concessa l'autorizzazione per l'esecuzione

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

Come lenovo-mic-check in /etc/init.d/ e poi eseguito:

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

Inoltre, non dimenticare di copiare su /etc/pm/sleep.d/

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

Ora la luce è accesa se riavvio il computer, NOTA: il secondo se potrebbe essere solo un altro.


@andrey Questo potrebbe essere un stupido quesiton ma hai provato a scaricare, patchare e compilare una copia pulita di thinkpad_acpi.c?
— JQuantum,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.