Como faço para detectar se o cabo de áudio está conectado?

5

Estou usando o Ubuntu Lucid (10.04). No meu shell script rodando como root eu quero detectar se um cabo de áudio (tomada analógica) está conectado ao laptop ou não. Como faço isso? Eu não preciso de uma solução portátil, eu preciso de algo, não importa o quão hacky, que funciona no meu laptop.

    
por pts 19.05.2013 / 17:57

2 respostas

7

Uma maneira talvez seja usar amixer .

Jack conectado:

$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=on
...

Jack não está conectado:

$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=off
...

Então, para esse específico, eu poderia fazer:

amixer -c 0 contents | \
awk -F"," '
$1 == "numid=29" {
    c=1
} c && /: values/ {
   split($0, a, "=")
   print a[2];
   exit
}'

dando saída de on ou off .

Também é possível usar comandos e especificar por iface + name etc., por exemplo:

Obter lista por:

$ amixer -c 0 controls

Onde -c 0 especifica o cartão, não necessário se padrão ou somente um. Então, por exemplo:

$ amixer -c 0 cget numid=29,iface=CARD

$ amixer -c 0 cget numid=29,iface=CARD | awk -F"=" 'NR == 3 {print $2;}'

Eu encontrei uma parte do software uma vez, acredito que ele usou o Tcl / Tk, que exibia o poder de pinagem para todas as portas no computador + muitas outras informações de HW. Foi um bom software - mas não consigo encontrá-lo novamente. Eu olhei através de 12 HDDs antigos sem sorte. Eu usei para depurar algumas portas de entrada. Então, sim, é definitivamente possível pesquisar o status de uma porta específica.

Jack é difícil de pesquisar na web devido a JACK . Isso torna quase impossível.

Eu tenho um código C que faz algumas pesquisas de informações de placa de som. Tem que procurar se eu puder encontrar.

    
por 19.05.2013 / 21:21
0

Desde que você disse "não importa o quão hacky". . .

Obtenha uma placa de som externa que você pode conectar ao seu laptop via USB. Ligue o jack analógico a isso. Conecte sua placa de som externa quando quiser conectar a tomada de áudio e faça com que seu script bash detecte se a placa de som externa está ou não conectada via USB.

    
por 19.05.2013 / 21:01