script udev não inicia quando o evento acontece

3

Eu estava chateado que toda vez que eu conecto meu cabo HDMI eu preciso alterar manualmente a configuração do som.

Eu comecei a investigar as regras do udev, o que eu descobri são esses dois arquivos:

/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

Quando estou executando o hdmi_sound_toggle.sh no terminal, ele funciona. Não é executado automaticamente, no entanto.

O que estou fazendo de errado?

    
por guy 05.10.2014 / 23:02

2 respostas

0

Já tentou recarregar o udev? Ele deve reconhecer novas regras automaticamente, mas talvez não ...

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

    
por Frederick Nord 15.10.2014 / 16:01
0
  • Tente renomeá-lo para 99-hdmi_sound.rules (com apenas 2 dígitos)
  • & amp; use RUN e omitir ACTION

    SUBSYSTEM=="drm", RUN+="/lib/udev/hdmi_sound_toggle.sh"
    
  • Pode ser um problema de ambiente (não é mesmo usuário, ou env variáveis não declaradas). Tente adicionar alguns comandos echo ou touch para rastrear seu script. Exemplo:

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

    Coloque um no início, no final, dentro de if , else ...

por user.dz 24.10.2014 / 15:55

Tags