事件发生时 udev 脚本未启动

事件发生时 udev 脚本未启动

每次连接 HDMI 电缆时都需要手动更改声音设置,这让我很恼火。

我开始研究 udev 规则,得到了这两个文件:

/etc/udev/rules.d/99-hdmi_sound.rules

SUBSYSTEM=="drm", RUN+="/lib/udev/hdmi_sound_toggle.sh"

/lib/udev/hdmi_sound_toggle.sh

#!/bin/bash

HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
if [ $HDMI_STATUS = "connected" ]
then
    sudo -u root pactl set-card-profile 0 output:hdmi-stereo
else
    sudo -u root pactl set-card-profile 0 output:analog-stereo
fi

当我在终端中运行 hdmi_sound_toggle.sh 时,它可以工作。但它不会自动运行。

我究竟做错了什么?

答案1

您是否尝试过重新加载 udev?它应该会自动识别新规则,但也许没有……

sudo udevadm control --reload-rules ; sudo udevadm trigger

答案2

  • 尝试将其重命名为99-hdmi_sound.rules(仅限 2 位数字)
  • RUN&改为使用并省略ACTION

    SUBSYSTEM=="drm", RUN+="/lib/udev/hdmi_sound_toggle.sh"
    
  • 这可能是环境问题(不是同一个用户,或者未声明的env变量)。尝试添加一些echotouch命令来跟踪您的脚本。示例:

    echo `date --rfc-3339='ns'` START >> /home/<your-username>/Desktop/udev_test_log.txt
    

    在开头、结尾、里面各放一个ifelse...

相关内容