Detectar quando a placa de áudio é alimentada (usando alsa)

2

Como posso detectar em um script se minha placa de áudio está sendo alimentada?

Motivação: Eu tenho um mini computador Linux ( Odroid U3 ), usado como player de música. E eu quero ligar um amplificador conectado somente quando há algum som sendo tocado. Para isso, preciso detectar de alguma forma se o áudio está sendo ligado e desligado.

Esta postagem sugere que é possível ler o ALSA de estado de alguns arquivos em /proc , que na verdade não são arquivos, então inotify não funciona, e a pesquisa não é uma opção, pois desperdiça energia, e eu preciso de detecção imediata de energia de áudio.

Existe algum evento do sistema ou evento alsa que eu possa esperar em um script, que me informaria sobre alterações no hardware de áudio que está sendo ligado / desligado? Então eu escreveria um roteiro com um loop sem fim, aguardando o evento, ligando meu amplificador e repetindo a espera.

    
por Pointer Null 17.05.2015 / 22:33

1 resposta

0

Se o kernel tiver suporte de auditoria ativado (o que é improvável para uma distribuição incorporada), você poderá ser notificado quando alguém acessar os arquivos do dispositivo de som.

Caso contrário, isso deve ser feito no espaço do usuário. A biblioteca da ALSA tem suporte para dispositivos virtuais que podem chamar uma função de gancho em uma biblioteca compartilhada. Isso é bastante indocumentado; o único exemplo é a função _snd_pcm_hook_ctl_elems_install() , que altera e restaura alguns controles do mixer enquanto o dispositivo PCM está sendo usado.

    
por 18.05.2015 / 20:28