Mengaktifkan tombol dan cahaya Mic Mute pada Lenovo Thinkpads

26

Saya memiliki tombol bisu mik pada Lenovo Thinkpad T420 saya, tetapi tidak berfungsi.

Jadi saya mencoba xevperintah untuk memonitor acara pers, dan kunci itu tidak ditangkap.

Apakah ada cara memperbaikinya, seperti menambahkan kode kunci mentah?

OS & Laptop

Ubuntu 12.04 , juga berharap ini berfungsi di Arch Linux, tetapi tidak terlalu penting ;-P

Modul Thinkpad: X220 4290LY9

Patch kernel untuk Arch Linux

Unduh disini

AKHIRNYA

Agak sulit, tetapi dengan patch kernel dan skrip acpid, ia berfungsi sekarang.

Sisanya yang saya butuhkan adalah notifikasi daemon seperti yang untuk output mute, tetapi tidak terlalu penting sekarang.

bunga aster
sumber
Model Lenovo mana?
ish
@izx Thinkpad X220 4290LY9
daisy
Alih-alih xev, gunakan acpi-listenuntuk memantau, dan menekan, Anda harus mendapatkan sesuatu seperti ibm/hotkey HKEY 00000080 0000101b. Silakan kirim kode itu di sini.
ish
@izx, tidak berhasil, tetapi saya bisa melihat tombol lain, mis. vol naik / turun, pikir menguntungkan
daisy
Anda memiliki lampu yang dibangun di dalam tombol bisu? Juga tekan tombol beberapa kali dan posting outputdmesg|tail
ish

Jawaban:

34

Solusi ini harus bekerja untuk semua ThinkPad dengan tombol bisu yang juga memiliki cahaya bawaan. Ini juga bisa digunakan untuk ThinkPad lain.

Terlepas dari gelembung pemberitahuan:

masukkan deskripsi gambar di sinimasukkan deskripsi gambar di sini

Ada dua kemungkinan indikator "perangkat keras" (untuk menunjukkan bahwa bisu hidup atau mati):

  1. Lampu tombol Daya (hijau) akan berkedip untuk menunjukkan kapan sunyi
  2. Lampu tombol bisu Mic (oranye) akan menyala atau padam untuk menampilkan status bisu (seperti di Windows)

    Solusi 2 membutuhkan thinkpad_acpimodul kernel yang ditambal , dan hanya disarankan untuk pengguna tingkat lanjut yang tahu apa yang mereka lakukan. Ini karena tambalan tidak disertakan oleh pengembang thinkpad_acpi secara default, ( Lihat diskusi ini untuk detail lebih lanjut ).

Langkah-langkah umum


Sebuah. Menentukan kode hotkey Mic-Mute dan perangkat input Mic

  • Buka terminal dengan Ctrl+Alt+T
  • Jalankan acpi_listen, dan tekan tombol bisu
  • Perhatikan hasilnya, yang seharusnya berupa: ibm/hotkey HKEY 00000080 0000101b

  • Kemudian jalankan amixer scontrols, Anda akan melihat salah satu dari berikut ini di output:

Kontrol pencampur sederhana 'Internal Mic', 0

atau

Kontrol pencampur sederhana 'Capture', 0

Tergantung pada apa yang Anda lihat, "Mic Internal" atau "Capture" adalah perangkat input Anda.

b. Buat pengendali acara Mic-Mute ACPI

  • Buka terminal, ketik gksudo gedit /etc/acpi/events/lenovo-mutemicuntuk membuka editor.
  • Di editor, tempel di yang berikut, di mana baris pertama harus kode yang ditunjukkan pada bagian sebelumnya oleh acpi_listen:
    event = ibm / hotkey HKEY 00000080 0000101b
    action = / etc / acpi / lenovo-mutemic.sh
    
  • Simpan dan keluar dari editor.

Memilih indikator Power Light atau Mic Mute


c-1. Skrip Mic-Mute dengan indikator Tombol Daya

  • Lakukan ini jika Anda menginginkan solusi yang mudah dan tidak ingin menggunakan modul kernel yang ditambal (lihat C-2).
  • Buka terminal, ketik gksudo gedit /etc/acpi/lenovo-mutemic.sh
  • Di editor, tempel:

    #! / bin / bash
    INPUT_DEVICE = "'Mic Internal'"
    YOUR_USERNAME = "place_your_username_here" di sini
    jika amixer mendapatkan $ INPUT_DEVICE, 0 | grep '\ [on \]'; kemudian
        amixer sset $ INPUT_DEVICE, 0 toggle
        gema "0 blink"> / proc / acpi / ibm / led
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0,0" beri tahu-kirim -t 50 \
                -i mikrofon-sensitivitas-diredam-simbolis "Mic MUTED" '
    lain
        amixer sset $ INPUT_DEVICE, 0 toggle                       
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0,0" beri tahu-kirim -t 50 \
                -i mikrofon-sensitivitas-simbolik tinggi "Mic ON" '
        gema "0 pada"> / proc / acpi / ibm / led 
    fi
    
  • Ganti nilai variabel INPUT_DEVICE dengan Capturejika itu adalah nama perangkat input Anda (biarkan semua kutu tetap utuh).

  • Ganti nilai variabel YOUR_USERNAME dengan nama akun pengguna yang ingin Anda kirimi pemberitahuan
  • Simpan dan keluar dari editor.
  • Sekarang jalankan yang berikut (dari terminal):
    sudo chmod + x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Lompat ke bagian Pengujian (d) untuk mengonfirmasi bahwa itu berfungsi.

c-2. Mikrofon bisu dengan Lampu Indikator Mik Bisu resmi

Menyiapkan skrip

  • Tolong jangan gunakan metode ini jika Anda tidak terbiasa dengan terminal / shell.
  • Ini akan membutuhkan kompilasi thinkpad_acpimodul yang ditambal dan telah diverifikasi untuk bekerja dengan Ubuntu Precise 12.04 dan Quantal 12.10, kernel 3.2.0-23 dan 3.2.0-24 dan 3.5.0-21.
  • Mari kita buat skrip dulu: /etc/acpi/lenovo-mutemic.shharus seperti pada bagian c-1, dengan tambahan berikut:

  • Masukkan baris ini setelah tajuk ( #!/bin/bash):

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    
  • Setelah echo...baris pertama , masukkan:

    echo 1 > $MICMUTE
    
  • Dan setelah echo...baris kedua , masukkan:

    echo 0 > $MICMUTE
    
  • Anda dapat menemukan contoh tampilan script lengkap di tempel ini

  • Kemudian:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Konfirmasikan bahwa menekan tombol bisu menghasilkan lampu daya yang berkedip-kedip; menekan lagi memberi cahaya daya yang stabil.

Membangun, menguji, dan memasang modul kernel

  • Instal (atau pastikan) Anda memiliki tajuk dan alat bantu yang dibangun untuk kernel Anda yang sedang berjalan dengan:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  • Buat direktori sementara dan ubah menjadi:

    mkdir ~/tpacpi && cd ~/tpacpi
    
  • Unduh file sumber thinkpad_acpi.cdari repositori Ubuntu Kernel git:

    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" 
    
  • Tambalan dengan (salin dan tempel baris lengkap):

    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
    
  • Dalam folder yang sama dengan yang thinkpad_acpi.ctelah diunduh, Anda memerlukan "Makefile". Anda dapat mengunduhnya langsung dari Pastebin ini , menggunakan:

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

    ATAU rekatkan di bawah ini ke dalam file bernama Makefile:

    obj-m + = thinkpad_acpi.o
    semua: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) modul
    bersih: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) bersih
  • Sekarang ketik makeuntuk membuat modul; Anda akan melihat thinkpad_acpi.kofile di folder setelah selesai.

  • Tes modul yang ditambal setelah memuatnya dengan:

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    
  • Sekarang konfirmasikan bahwa menekan tombol mic akan menyalakan / mematikan lampu oranye DAN lampu daya berkedip / stabil.

  • Jika dikonfirmasi, lakukan hal berikut untuk mengganti thinkpad_acpimodul Anda saat ini :

    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
    
  • Mengomentari atau menghapus saluran yang dipimpin daya lenovo-micmute.sh


d. Pengujian

  • Terlepas dari pilihan indikator Anda, Anda juga dapat mengonfirmasi bisu melalui yang berikut:

Input Mic

  • Klik pada ikon volume di kanan atas, dan pengaturan suara di bawah:
  • Beralih ke tab "Input".
  • Sekarang bersenang-senang menekan tombol Mic Mute, Anda akan melihatnya tercermin dalam:

    1. Kotak centang Bungkam di jendela
    2. Gelembung pemberitahuan (tidak akan muncul seketika jika Anda menekan Mic Mute lebih dari sekali setiap beberapa detik!)
    3. Indikator pilihan Anda: lampu tombol daya berkedip atau lampu Mic Mute bawaan.
izx
sumber
Menambahkan lampu daya berkedip sebagai indikator - tidak mungkin menggunakan lampu mic sebenarnya tanpa kernel khusus.
ish
1
@ Andrew: Saya telah menambahkan inline-patch alih-alih mengunduh sumber yang dimodifikasi. Silakan cari halaman jawaban Patch it withdan Anda akan menemukan sedjalur yang diperlukan untuk mengaktifkan LED bisu mik.
ish
2
Sayangnya, saya tidak dapat mengkompilasi thinkpad_acpi.clagi. Makeoutput di sini . Bisakah seseorang, tolong, bantu saya mengatasi masalah ini?
Andrey
1
13.10 (Cakep) membutuhkan thinkpad_acpi.c berbeda. Tambalan tetap sama seperti pada jawaban asli. Ini bekerja untuk saya pada kernel 3.11.0-15-generik (dan header yang sesuai).
Daniel
1
Pada 16.10, sepertinya lampu bisu mikrofon menyala dengan sendirinya saat Anda menggunakan metode pertama dan menekan tombol bisu, sehingga lampu daya kedip tidak lagi diperlukan.
ExplodingKittens
0

Saya tidak bisa langsung bekerja di Ubuntu 12.10 pertama kali menggunakan lingkungan desktop linux juga.

Itu diperbaiki dengan hanya menambahkan tanda kutip dan menghapus koma (dan menambahkan nama pengguna saya):

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

dan kemudian ikuti langkah-langkah Anda dalam menyusun thinkpad_acpi.

Semuanya menggunakan Thinkpad T520 dengan NVS 4200M, Ubuntu 12.10. Belum dinyalakan ulang tetapi saya menguji dengan langkah uji yang telah Anda uraikan dan berfungsi dengan menyalakan dan mematikan LED bisu dan benar-benar mematikannya (dengan pemberitahuan). Melompat sedikit gunanya sepertinya bekerja dengan baik. Terima kasih.

Nah, reboot, skrip itu sendiri berfungsi dengan baik dan tidak bersuara tapi saya tidak menginstal thinkpad_acpi yang ditambal ... oops

Oke, reboot lagi setelah menginstalnya dengan benar kali ini dan LED menyala juga. Seharusnya mungkin memiliki skrip start-up untuk memeriksa apakah mic dimatikan atau tidak dan menyalakan / mematikan lampu, karena pengaturan saat ini hanya akan menyalakan / mematikan lampu ketika tombol ditekan.


Untuk mendapatkan cahaya untuk ditampilkan jika sudah dimatikan atau tidak saat start-up alih-alih ketika tombol pertama kali ditekan, saya hanya menyimpan:

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

Memberi izin untuk dieksekusi

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

Sebagai lenovo-mic-periksa ke /etc/init.d/ lalu jalankan:

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

Juga jangan lupa menyalin ke /etc/pm/sleep.d/

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

Sekarang lampu menyala jika saya me-reboot komputer, CATATAN: yang kedua jika bisa menjadi yang lain.

JQuantum
sumber
@andrey Ini mungkin pertanyaan bodoh, tetapi apakah Anda sudah mencoba mengunduh, menambal, dan menyusun salinan thinkpad_acpi.c yang bersih?
JQuantum