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.