Kích hoạt nút Mic Mute và đèn sáng trên Lenovo Thinkpad


26

Tôi có nút tắt tiếng mic trên Lenovo Thinkpad T420, nhưng nó không hoạt động.

Vì vậy, tôi đã thử xevlệnh để theo dõi sự kiện báo chí và phím đó đã không được ghi lại.

Có cách nào để sửa nó không, như thêm mã khóa thô?

Hệ điều hành và máy tính xách tay

Ubuntu 12.04 , cũng hy vọng nó hoạt động trên Arch Linux, nhưng không quan trọng lắm ;-P

Mô-đun Thinkpad: X220 4290LY9

Bản vá hạt nhân cho Arch Linux

Tải xuống ở đây

Cuối cùng

Đó là một chút khó khăn, nhưng với bản vá kernel và kịch bản acpid, nó hoạt động ngay bây giờ.

Phần còn lại tôi cần là một daemon thông báo giống như trình tắt tiếng đầu ra, nhưng giờ nó không còn quan trọng nữa.


Mẫu máy nào của Lenovo?
ish

@izx Thinkpad X220 4290LY9
cúc

Thay vì xevsử dụng acpi-listenđể theo dõi và nhấn, bạn sẽ nhận được một cái gì đó như ibm/hotkey HKEY 00000080 0000101b. Xin vui lòng gửi mã đó ở đây.
ish

@izx, không có may mắn, nhưng tôi có thể thấy các nút khác, ví dụ: tăng / giảm âm lượng, hãy suy nghĩ thuận lợi
daisy

Bạn có một đèn được xây dựng bên trong nút tắt tiếng? Đồng thời nhấn nút vài lần và đăng kết quả đầu ra củadmesg|tail
ish

Câu trả lời:


34

Giải pháp này sẽ hoạt động cho tất cả các Thinkpad có nút tắt tiếng cũng có đèn tích hợp. Nó cũng có thể hoạt động cho các Thinkpad khác.

Ngoài các bong bóng thông báo:

nhập mô tả hình ảnh ở đâynhập mô tả hình ảnh ở đây

Có hai chỉ số "phần cứng" có thể (để hiển thị rằng tắt tiếng hoặc tắt):

  1. Đèn nút nguồn (màu xanh lá cây) sẽ nhấp nháy để hiển thị khi bật tắt tiếng
  2. Đèn nút tắt tiếng Mic (màu cam) sẽ bật hoặc tắt để hiển thị trạng thái tắt tiếng (giống như trong Windows)

    Giải pháp 2 yêu cầu thinkpad_acpimô-đun hạt nhân được vá và chỉ được khuyến nghị cho người dùng nâng cao, những người biết họ đang làm gì. Điều này là do bản vá không được các nhà phát triển thinkpad_acpi đưa vào theo mặc định, ( Xem phần thảo luận này để biết thêm chi tiết ).

Các bước chung


a. Xác định mã phím nóng Mic-Mute và thiết bị nhập Mic

  • Mở thiết bị đầu cuối với Ctrl+Alt+T
  • Chạy acpi_listenvà bấm phím tắt tiếng
  • Lưu ý kết quả, sẽ là một cái gì đó như: ibm/hotkey HKEY 00000080 0000101b

  • Sau đó chạy amixer scontrols, bạn sẽ thấy một trong những điều sau đây trong đầu ra:

Điều khiển bộ trộn đơn giản 'Internal Mic', 0

hoặc là

Điều khiển bộ trộn đơn giản 'Capture', 0

Tùy thuộc vào những gì bạn thấy, "Mic nội bộ" hoặc "Chụp" là thiết bị đầu vào của bạn.

b. Tạo trình xử lý sự kiện Mic-Mute ACPI

  • Mở terminal, gõ gksudo gedit /etc/acpi/events/lenovo-mutemicđể mở trình soạn thảo.
  • Trong trình chỉnh sửa, dán vào phần sau, trong đó dòng đầu tiên phải là mã được hiển thị trong phần trước bằng cách acpi_listen:
    sự kiện = ibm / phím nóng HKEY 00000080 0000101b
    hành động = / etc / acpi / lenovo-mutemia.sh
    
  • Lưu và thoát khỏi trình soạn thảo.

Chọn đèn báo Power Light hoặc Mic Mute


c-1. Tập lệnh Mic-Mute với chỉ báo Nút nguồn

  • Làm điều này nếu bạn muốn một giải pháp dễ dàng và không muốn sử dụng mô-đun hạt nhân được vá (xem C-2).
  • Thiết bị đầu cuối mở, loại gksudo gedit /etc/acpi/lenovo-mutemic.sh
  • Trong trình chỉnh sửa, dán:

    #! / bin / bash
    INPUT_DEVICE = "'Mic nội bộ'"
    YOU_USERNAME = "place_your_username_here"
    nếu amixer quên $ INPUT_DEVICE, 0 | grep '\ [trên \]'; sau đó
        amixer đặt $ INPUT_DEVICE, 0 chuyển đổi
        tiếng vang "0 nháy"> / Proc / acpi / ibm / led
        su $ YOU_USERNAME -c 'HIỂN THỊ = ": 0,0" thông báo-gửi -t 50 \
                -i micrô-độ nhạy-tắt tiếng "Mic MUTED" '
    khác
        amixer đặt $ INPUT_DEVICE, 0 chuyển đổi                       
        su $ YOU_USERNAME -c 'HIỂN THỊ = ": 0,0" thông báo-gửi -t 50 \
                -i micrô nhạy cảm với tính biểu tượng cao "Mic ON" '
        tiếng vang "0 trên"> / Proc / acpi / ibm / led 
    fi
    
  • Thay thế giá trị của biến INPUT_DEVICE bằng Capturenếu đó là tên thiết bị đầu vào của bạn (giữ nguyên tất cả các dấu tick).

  • Thay thế giá trị của biến YOU_USERNAME bằng tên tài khoản của người dùng bạn muốn gửi thông báo tới
  • Lưu và thoát khỏi trình soạn thảo.
  • Bây giờ chạy như sau (từ thiết bị đầu cuối):
    sudo chmod + x /etc/acpi/lenovo-mutemia.sh
    sudo dịch vụ khởi động lại acpid
    
  • Chuyển đến phần Kiểm tra (d) để xác nhận rằng nó hoạt động.

c-2. Mic-câm với đèn chỉ báo Mic-câm chính thức

Thiết lập tập lệnh

  • Vui lòng không sử dụng phương pháp này nếu bạn không quen với thiết bị đầu cuối / shell.
  • Điều này sẽ yêu cầu biên dịch một thinkpad_acpimô-đun vá và đã được xác minh để hoạt động với Ubuntu Precise 12.04 và Quantal 12.10, hạt nhân 3.2.0-23 và 3.2.0-24 và 3.5.0-21.
  • Trước tiên hãy tạo tập lệnh: /etc/acpi/lenovo-mutemic.shnhư trong phần c-1, với các bổ sung sau:

  • Chèn dòng này sau tiêu đề ( #!/bin/bash):

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    
  • Sau echo...dòng đầu tiên , chèn:

    echo 1 > $MICMUTE
    
  • Và sau echo...dòng thứ hai , chèn:

    echo 0 > $MICMUTE
    
  • Bạn có thể tìm thấy một ví dụ về kịch bản đầy đủ sẽ trông như thế nào trong dán này

  • Sau đó:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Xác nhận rằng nhấn nút tắt tiếng sẽ dẫn đến đèn nguồn nhấp nháy; nhấn một lần nữa cho một ánh sáng năng lượng ổn định.

Xây dựng, thử nghiệm và cài đặt mô-đun hạt nhân

  • Cài đặt (hoặc đảm bảo) bạn có các tiêu đề và công cụ được xây dựng cho kernel hiện đang chạy của mình với:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  • Tạo một thư mục tạm thời và thay đổi nó:

    mkdir ~/tpacpi && cd ~/tpacpi
    
  • Tải xuống tệp nguồn thinkpad_acpi.ctừ kho lưu trữ 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" 
    
  • Vá nó bằng (sao chép và dán dòng đầy đủ):

    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
    
  • Trong cùng một thư mục thinkpad_acpi.cđã được tải xuống, bạn sẽ cần một "Makefile". Bạn có thể tải xuống trực tiếp từ Pastebin này , sử dụng:

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

    HOẶC dán bên dưới vào một tệp có tên Makefile:

    obj-m + = thinkpad_acpi.o
    tất cả các: tạo các mô-đun -C / lib / mô-đun / $ (shell uname -r) / build M = $ (PWD)
    dọn dẹp: làm cho -C / lib / mô-đun / $ (shell uname -r) / build M = $ (PWD) sạch
  • Bây giờ gõ makeđể tạo mô-đun; bạn sẽ thấy một thinkpad_acpi.kotập tin trong thư mục khi hoàn thành.

  • Kiểm tra mô-đun được vá sau khi tải nó bằng:

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    
  • Bây giờ hãy xác nhận rằng nhấn nút mic sẽ bật / tắt đèn mic màu cam VÀ đèn nguồn nhấp nháy / ổn định.

  • Nếu được xác nhận, hãy làm như sau để thay thế thinkpad_acpimô-đun hiện tại của bạn :

    TPDIR = / lib / mô-đun / $ (uname -r) / kernel / trình điều khiển / nền tảng / 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
    
  • Nhận xét hoặc xóa các đường dây dẫn điện trong lenovo-micmute.sh


d. Kiểm tra

  • Ngoài việc bạn chọn chỉ báo, bạn cũng có thể xác nhận tắt tiếng qua các mục sau:

Đầu vào mic

  • Nhấp vào biểu tượng âm lượng ở trên cùng bên phải và cài đặt âm thanh ở dưới cùng:
  • Chuyển sang tab "Đầu vào".
  • Bây giờ hãy vui vẻ nhấn nút Mic Mute, bạn sẽ thấy nó được phản ánh trong:

    1. Hộp kiểm Tắt tiếng trong cửa sổ
    2. Bong bóng thông báo (sẽ không xuất hiện ngay lập tức nếu bạn nhấn Mic Mute nhiều hơn một lần trong vài giây!)
    3. Đèn báo bạn đã chọn: đèn nút nguồn nhấp nháy hoặc đèn Mic Mute tích hợp.

Đã thêm đèn nguồn nhấp nháy làm đèn báo - không thể sử dụng đèn mic thực tế nếu không có hạt nhân tùy chỉnh.
ish

1
@Andrey: Tôi đã thêm một bản vá nội tuyến thay vì tải xuống nguồn sửa đổi. Vui lòng tìm kiếm trang trả lời Patch it withvà bạn sẽ tìm thấy seddòng cần thiết để kích hoạt đèn LED tắt tiếng mic.
ish

2
Thật không may, tôi không thể biên dịch thinkpad_acpi.cnữa. Makeđầu ra là đây . Ai đó, xin vui lòng, giúp tôi giải quyết vấn đề này?
Andrey

1
13.10 (Saucy) yêu cầu một thinkpad_acpi.c khác. Các bản vá vẫn giống như trong câu trả lời ban đầu. Điều này làm việc với tôi trên kernel 3.11.0-15 (và các tiêu đề tương ứng).
Daniel

1
Trong 16.10, có vẻ như đèn tắt tiếng mic sẽ tự bật khi bạn sử dụng phương pháp đầu tiên và nhấn nút tắt tiếng, vì vậy đèn nguồn nhấp nháy không còn cần thiết nữa.
ExplodingKittens

0

Tôi không thể làm cho nó hoạt động ngay trên Ubuntu 12.10 lần đầu tiên khi sử dụng môi trường máy tính để bàn linux.

Nó đã được sửa chỉ bằng cách thêm dấu ngoặc kép và xóa dấu phẩy (và thêm tên người dùng của tôi):

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

và sau đó làm theo các bước của bạn trong việc biên dịch thinkpad_acpi.

Tất cả trên Thinkpad T520 với NVS 4200M, Ubuntu 12.10. Chưa khởi động lại nhưng tôi đã thử nghiệm với bước kiểm tra mà bạn đã vạch ra và nó hoạt động với việc bật và tắt đèn LED tắt tiếng và thực sự tắt tiếng (với thông báo). Nhảy súng một chút dường như hoạt động tốt. Cảm ơn.

Được khởi động lại tốt, tập lệnh tự hoạt động tốt và tắt tiếng nhưng tôi không cài đặt thinkpad_acpi đã vá ... rất tiếc

Được rồi, khởi động lại một lần nữa sau khi cài đặt đúng cách vào lúc này và đèn LED cũng sáng lên. Có lẽ nên có một kịch bản khởi động để kiểm tra xem mic có bị tắt tiếng hay không và bật / tắt đèn, vì thiết lập hiện tại sẽ chỉ bật / tắt đèn khi nhấn nút.


Để ánh sáng hiển thị nếu nó bị tắt tiếng hay không khi khởi động thay vì khi nhấn nút lần đầu tiên, tôi chỉ lưu:

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

Đã cho phép nó thực thi

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

Khi lenovo-mic-kiểm tra tới /etc/init.d/ và sau đó chạy:

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

Cũng đừng quên sao chép vào /etc/pm/s ngủ.d /

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

Bây giờ đèn sẽ sáng nếu tôi khởi động lại máy tính, LƯU Ý: thứ hai nếu có thể chỉ là một cái khác.


@andrey Đây có thể là một quesiton ngu ngốc nhưng bạn đã thử tải xuống, vá và biên dịch một bản sao sạch của thinkpad_acpi.c chưa?
JQuantum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.