Lenovo Thinkpads에서 Mic Mute 버튼 및 표시 등 활성화


26

Lenovo Thinkpad T420에 마이크 음소거 버튼이 있지만 작동하지 않습니다.

그래서 xev프레스 이벤트를 모니터링하라는 명령을 시도했지만 해당 키가 캡처되지 않았습니다.

원시 키 코드를 추가하는 것처럼 어쨌든 수정해야합니까?

OS 및 노트북

Ubuntu 12.04 , 또한 아치 리눅스에서 작동하기를 희망하지만별로 중요하지 않습니다.

씽크 패드 모듈 : X220 4290LY9

아치 리눅스 용 커널 패치

여기에서 다운로드하십시오

마지막으로

약간 까다 롭지 만 커널 패치와 acpid 스크립트로 작동합니다.

필요한 나머지는 output mute와 같은 알림 데몬이지만 지금은 중요하지 않습니다.


어떤 Lenovo 모델입니까?
ish

@izx Thinkpad X220 4290LY9
데이지

대신을 xev사용 acpi-listen하여 모니터링하고 누르십시오 ibm/hotkey HKEY 00000080 0000101b. 해당 코드를 여기에 게시하십시오.
ish

@izx, 행운은 없지만 vol up / vol down과 같은 다른 버튼을 볼 수 있습니다. vantage를 생각하십시오
데이지

음소거 버튼 안에 조명이 내장되어 있습니까? 또한 버튼을 몇 번 누르고dmesg|tail
ish

답변:


34

이 솔루션은 내장 된 표시등이있는 음소거 버튼이있는 모든 Thinkpad에서 작동합니다. 다른 Thinkpad에서도 작동 할 수 있습니다.

알림 거품과 별도로 :

여기에 이미지 설명을 입력하십시오여기에 이미지 설명을 입력하십시오

음소거가 켜져 있거나 꺼져 있음을 나타내는 두 가지 "하드웨어"표시기가 있습니다.

  1. 음소거가 켜져 있으면 전원 버튼 표시 등 (녹색)이 깜박입니다.
  2. 음소거 상태를 표시하기 위해 마이크 음소거 버튼 표시 등 (주황색)이 켜지거나 꺼집니다 (Windows에서와 같이).

    솔루션 2에는 패치 된 thinkpad_acpi커널 모듈이 필요하며 자신이하는 일을 알고있는 고급 사용자에게만 권장됩니다. 이는 기본적으로 thinkpad_acpi 개발자가 패치를 포함하지 않기 때문입니다 ( 자세한 내용은이 토론 참조 ).

일반적인 단계


에이. Mic-Mute 단축 키 코드 및 Mic 입력 장치 결정

  • 터미널 열기 Ctrl+Alt+T
  • 를 실행 acpi_listen하고 음소거 키를 누릅니다.
  • 결과는 다음과 같아야합니다. ibm/hotkey HKEY 00000080 0000101b

  • 그런 다음을 실행 amixer scontrols하면 출력에 다음 중 하나가 표시됩니다.

간단한 믹서 컨트롤 '내부 마이크', 0

또는

간단한 믹서 컨트롤 '캡쳐', 0

보이는 내용에 따라 "내부 마이크"또는 "캡처"가 입력 장치입니다.

비. Mic-Mute ACPI 이벤트 핸들러 작성

  • 터미널 gksudo gedit /etc/acpi/events/lenovo-mutemic을 열고 편집기를 열려면 입력 하십시오.
  • 편집기에서 다음을 붙여 넣으십시오. 첫 번째 행은 이전 섹션에서 표시된 코드 여야합니다 acpi_listen.
    event = ibm / hotkey HKEY 00000080 0000101b
    액션 = / etc / acpi / lenovo-mutemic.sh
    
  • 편집기를 저장하고 종료하십시오.

전원 표시 등 또는 마이크 음소거 표시기 선택


c-1. 전원 버튼 표시등이있는 마이크 음소거 스크립트

  • 쉬운 해결책을 원하고 패치 된 커널 모듈을 사용하지 않으려면이 작업을 수행하십시오 (C-2 참조).
  • 개방형 터미널 gksudo gedit /etc/acpi/lenovo-mutemic.sh
  • 편집기에서 다음을 붙여 넣습니다.

    #! / bin / bash
    INPUT_DEVICE = " '내부 마이크'"
    YOUR_USERNAME = "place_your_username_here"
    믹서가 $ 경우 $ INPUT_DEVICE, 0 | grep '\ [on \]'; 그때
        믹서 sset $ INPUT_DEVICE, 0 토글
        에코 "0 깜박임"> / proc / acpi / ibm / led
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0"알림 보내기 -t 50 \
                -i 마이크 감도 음소거 기호 "Mic MUTED" '
    그밖에
        믹서 sset $ INPUT_DEVICE, 0 토글                       
        su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0"알림 보내기 -t 50 \
                -i 마이크 감도 높음 기호 "Mic ON" '
        에코 "0 켜짐"> / proc / acpi / ibm / led 
    fi
    
  • Capture입력 장치 이름 인 경우 INPUT_DEVICE 변수의 값을 바꾸 십시오 (모든 틱은 그대로 두십시오).

  • YOUR_USERNAME 변수의 값을 알림을 보내려는 사용자의 계정 이름으로 바꾸십시오.
  • 편집기를 저장하고 종료하십시오.
  • 이제 터미널에서 다음을 실행하십시오.
    sudo chmod + x /etc/acpi/lenovo-mutemic.sh
    sudo 서비스 acpid 재시작
    
  • 테스트 섹션 (d)으로 이동하여 작동하는지 확인하십시오.

c-2. 공식 마이크 음소거 표시등이있는 마이크 음소거

스크립트 설정

  • 터미널 / 쉘에 익숙하지 않은 경우이 방법을 사용하지 마십시오.
  • 이를 위해서는 패치 된 thinkpad_acpi모듈을 컴파일해야 하며 Ubuntu Precise 12.04 및 Quantal 12.10, 커널 3.2.0-23 및 3.2.0-24 및 3.5.0-21에서 작동하는 것으로 확인되었습니다.
  • 먼저 스크립트를 작성해 봅시다 : /etc/acpi/lenovo-mutemic.sh섹션 c-1에서와 같으며, 다음 내용이 추가됩니다 :

  • 헤더 ( #!/bin/bash) 뒤에이 줄을 삽입하십시오 .

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    
  • echo...줄 뒤에 다음을 삽입하십시오.

    echo 1 > $MICMUTE
    
  • 두 번째 echo...줄 뒤에 다음을 삽입하십시오.

    echo 0 > $MICMUTE
    
  • 이 붙여 넣기에서 전체 스크립트의 모양에 대한 예를 찾을 수 있습니다.

  • 그때:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • 음소거 버튼을 누르면 전원 표시등이 깜박이는지 확인하십시오. 다시 누르면 전원이 계속 켜집니다.

커널 모듈 빌드, 테스트 및 설치

  • 다음을 사용하여 현재 실행중인 커널에 대한 헤더 및 빌드 된 도구를 설치하십시오 (또는 확인하십시오).

    sudo apt-get install linux-headers-$(uname -r) build-essential
    
  • 임시 디렉토리를 작성하고 변경하십시오.

    mkdir ~/tpacpi && cd ~/tpacpi
    
  • thinkpad_acpi.cUbuntu 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" 
    
  • 그것을 패치하십시오 (전체 줄을 복사하여 붙여 넣으십시오).

    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다운로드 한 동일한 폴더에 "Makefile"이 필요합니다. 다음을 사용 하여이 Pastebin 에서 직접 다운로드 할 수 있습니다 .

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

    또는 아래의 파일에 아래를 붙여 넣습니다 Makefile.

    obj-m + = thinkpad_acpi.o
    모든: -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) 모듈 만들기
    깨끗한: -C / lib / modules / $ (shell uname -r) / build M = $ (PWD)를 정리하십시오
  • 이제 입력 make하여 모듈을 작성하십시오. thinkpad_acpi.ko완료되면 폴더에 파일 이 표시 됩니다.

  • 다음과 같이 패치 된 모듈을로드 한 후 테스트하십시오.

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    
  • 이제 마이크 버튼을 누르면 주황색 마이크 표시등이 켜지거나 꺼지고 전원 표시등이 깜박이거나 켜져 있는지 확인하십시오.

  • 확인 된 경우 다음을 수행하여 현재 thinkpad_acpi모듈 을 교체하십시오 .

    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
    
  • 전원 LED 라인을 주석 처리 또는 삭제 lenovo-micmute.sh


디. 테스팅

  • 선택한 인디케이터 외에 다음을 통해 음소거를 확인할 수도 있습니다.

마이크 입력

  • 오른쪽 상단의 볼륨 아이콘을 클릭하고 하단의 사운드 설정을 클릭하십시오.
  • "입력"탭으로 전환하십시오.
  • 이제 Mic Mute 버튼을 누르면 재미있게 볼 수 있습니다.

    1. 창의 음소거 확인란
    2. 알림 풍선 (몇 초마다 한 번 이상 마이크 음소거를 누르면 즉시 나타나지 않습니다!)
    3. 선택한 표시기 : 깜박이는 전원 버튼 표시 등 또는 내장 마이크 음소거 표시 등.

표시등으로 깜박이는 전원 표시등을 추가하여 사용자 지정 커널없이 실제 마이크 표시등을 사용할 수 없습니다.
ish

1
@Andrey : 수정 된 소스를 다운로드하는 대신 인라인 패치를 추가했습니다. 답변 페이지를 검색하면 마이크 음소거 LED를 활성화하는 데 필요한 라인을 Patch it with찾을 수 sed있습니다.
ish

2
불행히도 thinkpad_acpi.c더 이상 컴파일 할 수 없습니다 . Make출력은 여기에 있습니다 . 누군가이 문제를 해결하도록 도와 줄 수 있습니까?
Andrey

1
13.10 (Saucy)에는 다른 thinkpad_acpi.c가 필요합니다. 패치는 원래 답변과 동일하게 유지됩니다. 이것은 3.11.0-15 일반 커널 (및 해당 헤더)에서 나를 위해 일했습니다.
Daniel

1
16.10에서는 첫 번째 방법을 사용할 때 마이크 음소거 표시등이 켜지고 음소거 버튼을 누르면 더 이상 깜박이는 전원 표시등이 필요하지 않습니다.
ExplotingKittens

0

리눅스 데스크톱 환경을 사용하여 Ubuntu 12.10에서 처음으로 바로 작동하지 못했습니다.

따옴표를 추가하고 쉼표를 제거하고 내 사용자 이름을 추가하여 수정되었습니다.

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

그런 다음 thinkpad_acpi를 컴파일하는 단계를 수행하십시오.

NVS 4200M, Ubuntu 12.10이 장착 된 Thinkpad T520 아직 재부팅하지 않았지만 개요에서 설명한 테스트 단계로 테스트했으며 음소거 LED를 켜고 끄고 실제로 알림과 함께 음소거하는 방법으로 작동합니다. 총을 약간 튀기는 것은 잘 작동하는 것 같습니다. 감사.

제대로 재부팅하면 스크립트 자체가 음소거 및 음소거 해제로 작동하지만 패치 된 thinkpad_acpi를 설치하지 않았습니다 ...

이번에 올바르게 설치 한 후 다시 부팅하면 LED도 켜집니다. 현재 설정에서 버튼을 누를 때만 조명이 켜지거나 꺼 지므로 마이크가 음소거되었는지 여부를 확인하고 표시등을 켜거나 끄는 시작 스크립트가 있어야합니다.


버튼을 처음 눌렀을 때가 아니라 조명이 음소거되어 있거나 시동되지 않았는지 표시하기 위해 방금 저장했습니다.

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

실행 권한을 부여

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

lenovo-mic-check로 /etc/init.d/를 실행 한 후 다음을 실행하십시오.

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

또한 /etc/pm/sleep.d/에 복사하는 것을 잊지 마십시오

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

컴퓨터를 재부팅하면 표시등이 켜집니다. 참고 : 두 번째는 다른 것일 수 있습니다.


@andrey 이것은 바보 같은 질문 일지 모르지만 thinkpad_acpi.c의 깨끗한 사본을 다운로드, 패치 및 컴파일 해 보셨습니까?
JQuantum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.