更改 ThinkPad 麦克风静音 LED 行为

更改 ThinkPad 麦克风静音 LED 行为

我想知道是否有人能够做到以下几点。

LED 指示灯亮 = 麦克风开启 //
LED 指示灯灭 = 麦克风关闭

我认为这是它应该工作的方式,而不是默认方式(在 WINDOWS 中也不是,我检查过因为我有双启动)。我只是在 Linux 中寻找解决方案。

我希望大多数时候麦克风都处于关闭状态,没有讨厌的 LED。此外,如果 LED 能提醒我麦克风何时开启,那就太好了。

我正在使用 Linux Mint,计算机是ThinkPad x390型号 20Q0CTO1WW

我唯一知道的是,LED 不会根据按键打开/关闭,因为当我从 GUI 将麦克风静音时它也会打开。

有任何想法吗?

关于该问题的更多见解和一些“进展”:

我发现这个旧主题与我的问题相关 https://askubuntu.com/questions/125367/enabling-mic-mute-button-and-light-on-lenovo-thinkpads?noredirect=1&lq=1

我发现如果我能够启用它,我就能禁用或改变它的行为。

我可以通过在以下位置创建文件将麦克风功能键映射到“电源指示灯” /etc/acpi/events/lenovo-mutemic

event=button/f20 F20 00000080 00000000 K 
action=/etc/acpi/lenovo-mutemic.sh

还有 bash 脚本/etc/acpi/lenovo-mutemic.sh

#!/bin/bash
INPUT_DEVICE="'Capture'"
YOUR_USERNAME=$USER
if amixer sget $INPUT_DEVICE,0 | grep '\[on\]' ; then
    amixer sset $INPUT_DEVICE,0 toggle
    echo "0 on" > /proc/acpi/ibm/led
    su $YOUR_USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
            -i microphone-sensitivity-muted-symbolic "Mic MUTED"'
else
    amixer sset $INPUT_DEVICE,0 toggle                       
    su $YOUR_USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
            -i microphone-sensitivity-high-symbolic "Mic ON"'
    echo "0 blink" > /proc/acpi/ibm/led 
fi

通过这样做,我可以让电源按钮在麦克风打开时闪烁,在麦克风关闭时保持稳定。但麦克风 LED 默认工作。此外,当我按下麦克风静音键时,两个过程都会触发(原来的过程会将其关闭,新的过程会将其再次打开。)

我可以从命令上方的脚本中删除该内容amixer sset,并通过电源按钮闪烁来提醒人们麦克风已打开,但这并不能解决麦克风关闭时烦人的麦克风 LED 按钮的问题。

这篇文章建议通过修改内核模块来控制麦克风指示灯:

添加MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness到前一个脚本并echo 1 > $MICMUTE//echo 0 > $MICMUTE来控制这个led。

以下是我遇到的麻烦:

  • 他们建议使用以下命令为你的内核安装标头并构建工具:

    sudo apt-get install linux-headers-$(uname -r) build-essential

  • 创建一个临时目录来尝试修改后的模块:

    mkdir ~/tpacpi && cd ~/tpacpi

  • 从 Ubuntu Kernel git 存储库下载源文件 thinkpad_acpi.c:

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
  • 下载“Makefile”:
wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT
  • 输入make以下命令进行编译:

这是我遇到的问题。首先,thinkpad_acpi.c文件无法通过命令下载wget,而且即使没有修补,我也无法编译我下载的文件。

我的内核是:5.3.0-46-generic

答案1

这还不是答案,但可能是进一步寻找答案的开始。我找到了一种手动控制麦克风指示灯的方法。您可以以 root 身份通过以下命令将其关闭:

echo 0 >/sys/class/leds/platform::micmute/brightness

答案2

我已经找到了一种简单的方法来实现这一点

在 T460p 上运行拱门。

alsamixer -c0将会调出一个 TUI 界面,如链接图片所示。只需使用鼠标,您就可以在关闭 LED、跟随 LED 进行捕获或静音和其他一些选项之间切换。按您想要的方式设置它,然后退出并运行以下命令,以使新的 alsa 状态在启动过程中保持不变。

sudo alsactl store

alsamixer-tui

相关内容