Lenovo Thinkpad'lerde Mic Sessiz düğmesini ve ışığını etkinleştirme


26

Lenovo Thinkpad T420 aygıtımda mikrofonu kapatma düğmesi var, ancak çalışmıyor.

Bu yüzden xevbasın olayını izleme komutunu denedim ve bu anahtar ele geçirilmedi.

Ham anahtar kodu eklemek gibi, düzeltmek için yine de var mı?

İşletim Sistemi ve Dizüstü

Ubuntu 12.04 , aynı zamanda Arch Linux üzerinde çalıştığını umar, fakat çok da önemli değil;

Thinkpad Modülü: X220 4290LY9

Arch Linux için Çekirdek düzeltme eki

Buradan İndirin

EN SONUNDA

Biraz zor, ama çekirdek yaması ve acpid komut dosyası ile şimdi çalışıyor.

İhtiyacım olan geri kalanı, çıkış dilsizliği için olduğu gibi bir bildirim arka plan programı, ancak artık önemi yok.


Hangi Lenovo modeli?
imsi

@izx Thinkpad X220 4290LY9
papatya

Bunun yerine, izlemek için xevkullanın acpi-listenve basın gibi bir şey almalısınız ibm/hotkey HKEY 00000080 0000101b. Lütfen bu kodu buraya yazınız.
imsi

@izx, şans yok, ama diğer düğmeleri görebildim, örneğin vol up / vol down, vantage
daisy

Sessiz düğmesinin içinde bir ışık var mı? Ayrıca düğmeye birkaç kez basın vedmesg|tail
ish

Yanıtlar:


34

Bu çözüm tüm Thinkpad'lerde, aynı zamanda dahili bir ışığı olan sessiz bir düğmeyle çalışmalıdır. Diğer Thinkpad'ler için de işe yarayabilir.

Bildirim balonları dışında:

görüntü tanımını buraya giringörüntü tanımını buraya girin

İki olası "donanım" göstergesi vardır (dilsizin açık veya kapalı olduğunu göstermek için):

  1. Güç düğmesi ışığı (yeşil) sessiz durumdayken göstermek için yanıp söner
  2. Mikrofon sesini kapatma düğmesi ışığı (turuncu) susturma durumunu göstermek için açık veya kapalı olacaktır (Windows'taki gibi)

    2. Çözüm yamalı bir thinkpad_acpiçekirdek modülü gerektirir ve yalnızca ne yaptıklarını bilen ileri düzey kullanıcılar için önerilir. Bunun nedeni, yamanın varsayılan olarak thinkpad_acpi geliştiricileri tarafından dahil edilmemesidir ( Daha fazla ayrıntı için bu tartışmaya bakın ).

Ortak adımlar


a. Mic-Mute kısayol tuşu kodunu ve Mic giriş cihazını belirleme

  • Açık terminal Ctrl+Alt+T
  • Çalıştırın acpi_listenve sessiz tuşuna basın.
  • Sonuç gibi, ki bunun gibi bir şey olmalı: ibm/hotkey HKEY 00000080 0000101b

  • Ardından çalıştırın amixer scontrols, çıktıda aşağıdakilerden birini görmelisiniz:

Basit karıştırıcı kontrolü 'Internal Mic', 0

veya

Basit karıştırıcı kontrolü 'Capture', 0

Gördüğünüze bağlı olarak, "Internal Mic" veya "Capture" giriş cihazınızdır.

b. Mic-Mute ACPI olay işleyicisini oluşturun

  • Terminali gksudo gedit /etc/acpi/events/lenovo-mutemicaç, düzenleyiciyi açmak için yazın .
  • Editörde, ilk satırın önceki bölümde gösterilen kod olması gerekenleri aşağıya yapıştırın acpi_listen:
    olay = ibm / kısayol tuşu HKEY 00000080 0000101b
    etki = / etc / ACPI / lenovo-mutemic.sh
    
  • Editörden kaydedin ve çıkın.

Power Light veya Mic Sessiz göstergelerini seçme


c-1. Güç Düğmesi göstergeli Mic-Mute betiği

  • Kolay bir çözüm istiyorsanız ve yamalı çekirdek modülünü kullanmak istemiyorsanız bunu yapın (bakınız C-2).
  • Açık terminal, tip gksudo gedit /etc/acpi/lenovo-mutemic.sh
  • Editörde yapıştırın:

    #! / Bin / bash
    INPUT_DEVICE = "'Dahili Mikrofon'"
    Your_username "place_your_username_here" =
    eğer karıştırıcı sget $ INPUT_DEVICE, 0 | grep '\ [on \]'; sonra
        amixer sset $ INPUT_DEVICE, 0 geçiş
        yankı "0 yanıp sönme"> / / proc / acpi / ibm / led
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notify-send -t 50 \
                -i mikrofon duyarlılığı-sessiz-sembolik "Mic MUTED" '
    Başka
        amixer sset $ INPUT_DEVICE, 0 geçiş                       
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notify-send -t 50 \
                -i mikrofon duyarlılığı-yüksek-sembolik "Mic ON" '
        echo "0 on"> / proc / acpi / ibm / led 
    fi
    
  • INPUT_DEVICE değişkeninin değerini, Capturegiriş cihazınızın adıysa değiştirin (tüm onay işaretlerini aynı bırakın).

  • YOUR_USERNAME değişkeninin değerini, bildirim göndermek istediğiniz kullanıcının hesap adıyla değiştirin.
  • Editörden kaydedin ve çıkın.
  • Şimdi aşağıdakini çalıştırın (terminalden):
    sudo chmod + x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Çalıştığını onaylamak için Test bölümüne (d) geçin.

C-2. Resmi Mic-dilsiz Gösterge Işığı ile mikrofon susturma

Komut dosyasını ayarlama

  • Terminal / mermiyi bilmiyorsanız, lütfen bu yöntemi kullanmayın.
  • Bu yamalı bir thinkpad_acpimodülün derlenmesini gerektirir ve Ubuntu Precise 12.04 ve Quantal 12.10, 3.2.0-23 ve 3.2.0-24 ve 3.5.0-21 çekirdekleri ile çalıştığı doğrulanmıştır.
  • Önce senaryoyu oluşturalım: /etc/acpi/lenovo-mutemic.shc-1 bölümündeki gibi olmalı, aşağıdaki ilavelerle:

  • Bu satırı başlığın arkasına ekleyin ( #!/bin/bash):

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    
  • İlk echo...satırdan sonra şunu ekleyin:

    echo 1 > $MICMUTE
    
  • Ve ikinci echo...satırdan sonra şunu ekleyin:

    echo 0 > $MICMUTE
    
  • Tam komut nasıl görünmesi gerektiğine dair bir örnek bulabilirsiniz bu macun içinde

  • Sonra:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Sessiz düğmesine basılmasının yanıp sönen bir güç ışığına neden olduğunu onaylayın; tekrar basılması sabit bir güç ışığı verir.

Çekirdek modülünü kurma, test etme ve kurma

  • Şu anda çalışan çekirdeğiniz için başlıklara ve yerleşik araçlara sahip olduğunuzdan emin olun:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  • Geçici bir dizin oluşturun ve değiştirin:

    mkdir ~/tpacpi && cd ~/tpacpi
    
  • Kaynak dosyayı thinkpad_acpi.cUbuntu Çekirdeği git deposundan indirin:

    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" 
    
  • Şununla yama yap (tüm satırı kopyala ve yapıştır)

    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
    
  • thinkpad_acpi.cİndirilen aynı klasörde , bir "Makefile" e ihtiyacınız olacak. Aşağıdakileri kullanarak doğrudan bu Pastebin'den indirebilirsiniz :

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

    VEYA, aşağıdakileri bir dosyaya yapıştırın Makefile:

    obj-m + = thinkpad_acpi.o
    herşey: -C / lib / module / $ yapınız (kabuk uname -r) / build M = $ (PWD) modülleri
    temiz: -C / lib / module / $ (kabuk uname -r) / build M = $ (PWD) temizleyin
  • Şimdi makemodülü oluşturmak için yazın ; thinkpad_acpi.kotamamladığınızda klasörde bir dosya göreceksiniz .

  • Yamalı modülü yükledikten sonra test edin:

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    
  • Şimdi, mikrofon düğmesine basmanın turuncu mikrofon ışığını açıp kapatacağını ve güç ışığının yanıp söndüğünü / sabitlendiğini onaylayın.

  • Onaylanırsa, geçerli thinkpad_acpimodülünüzü değiştirmek için aşağıdakileri yapın:

    TPDIR = / lib / modülleri / $ (unr -r) / çekirdek / sürücüler / 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
    
  • Güç led çizgilerini yorumlayın veya silin lenovo-micmute.sh


d. Test yapmak

  • Gösterge seçiminizin yanı sıra, susturma işlemini aşağıdakiler aracılığıyla da onaylayabilirsiniz:

Mikrofon girişi

  • Sağ üst kısımdaki ses simgesine ve alt kısımdaki ses ayarlarına tıklayın:
  • "Giriş" sekmesine geçin.
  • Şimdi Mic Sessiz düğmesine basarak eğlenin, yansıyan görmelisiniz:

    1. Penceredeki Sessiz onay kutusu
    2. Bildirim balonları (Mic Mute tuşuna birkaç saniyede bir defadan fazla basarsanız anında görünmez!)
    3. Seçtiğiniz gösterge: yanıp sönen güç düğmesi ışığı veya dahili Mic Sessiz ışığı.

Gösterge olarak yanıp sönen bir güç ışığı eklendi - özel bir çekirdek olmadan gerçek mikrofon ışığının kullanılması imkansız.
imsi

1
@Andrey: Değiştirilen kaynağı indirmek yerine bir satır içi düzeltme eki ekledim. Lütfen cevap sayfasını arayın ve mikrofonun sessiz LED'ini etkinleştirmek için gerekli Patch it witholan sedsatırı bulun .
imsi

2
Maalesef artık derleyemiyorum thinkpad_acpi.c. Makeçıktı burada . Birisi lütfen bu sorunu çözmeme yardımcı olabilir mi?
Andrey,

1
13.10 (Saucy) farklı bir thinkpad_acpi.c gerektirir. Yama orijinal cevaptakiyle aynı kalır. Bu benim için 3.11.0-15 genel bir çekirdek (ve ilgili başlıklar) üzerinde çalıştı.
Daniel

1
16.10'da, ilk yöntemi kullandığınızda ve sessiz düğmesine bastığınızda, mikrofon sessiz ışığı yanıyor gibi görünüyor, bu nedenle yanıp sönen güç ışığı artık gerekli değildir.
PatlayanKittens

0

Bir linux masaüstü ortamı kullanarak da ilk kez Ubuntu 12.10'da çalışmaya başlayamadım.

Sadece tırnak ekleyerek ve virgülleri kaldırarak (ve kullanıcı adımı ekleyerek) düzeltildi:

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

ve ardından thinkpad_acpi'yi derleme adımlarınızı izleyin.

Hepsi NVS 4200M, Ubuntu 12.10 ile bir Thinkpad T520 üzerinde. Henüz yeniden başlatılmadı ancak ana hatlarıyla belirttiğiniz test aşamasıyla test ettim ve sessiz LED'i açıp kapatmak ve gerçekten susturmakla (bildirim ile) çalışır. Silahı atlamak biraz işe yarıyor gibi görünüyor. Teşekkürler.

İyi bir şekilde yeniden başlatıldı, betiğin kendisi sessize alma ve açma işleminin iyi sonuç vermesine rağmen, yamalı thinkpad_acpi ... oops'i yüklemedim.

Tamam, bu kez düzgün bir şekilde taktıktan sonra yeniden başlatıldı ve LED de yanıyor. Mikrofonun sessize alınıp alınmadığını kontrol etmek ve ışığı açmak / kapatmak için muhtemelen bir başlangıç ​​betiği olması gerekir, çünkü mevcut kurulum sadece düğmeye basıldığında ışığı açıp kapatacaktır.


Düğmeye ilk kez basıldığında değil, açılışta sessize alınıp alınmadığını göstermek için ışığın kaydedilmesini sağladım:

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

Yürütme izni verdi

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

Lenovo-mic-kontrolünü /etc/init.d/ kontrol edin ve ardından çalıştırın:

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

Ayrıca /etc/pm/sleep.d/ 'e kopyalamayı unutmayın

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

Şimdi bilgisayarı yeniden başlattıysam, ışık yanıyor, NOT: ikincisi ise başka bir şey olabilir.


@andrey Bu aptalca bir soru olabilir ama thinkpad_acpi.c'nin temiz bir kopyasını indirmeyi, yamayı ve derlemeyi denediniz mi?
JQuantum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.