Comment détecter si le câble audio est connecté?

J'utilise Ubuntu Lucid (10.04). Dans mon script shell s'exécutant en tant que root, je veux détecter si un câble audio (jack analogique) est connecté à l'ordinateur portable ou non. Comment je fais ça? Je n'ai pas besoin d'une solution portable, j'ai besoin de quelque chose, peu importe comment hacky, cela fonctionne sur mon ordinateur portable.

Une façon pourrait être d'utiliser amixer .

Jack branché:

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

Jack non branché:

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

Donc, pour ce spécifique, je pourrais faire:

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

donnant la sortie de on ou off .


On peut aussi utiliser des commands et spécifier par iface + name etc. par exemple:

Obtenir la list par:

 $ amixer -c 0 controls 

-c 0 spécifie la carte, non nécessaire si elle est par défaut ou seulement une. Alors par exemple:

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

Je suis tombé sur un morceau de logiciel une fois, croient qu'il a utilisé Tcl / Tk, qui affiche la puissance de la broche pour tous les ports sur l'ordinateur + beaucoup d'autres informations matérielles. C'était un bon logiciel, mais je ne le retrouve plus. J'ai regardé à travers 12 vieux disques durs sans chance. Je l'ai utilisé pour déboguer certains ports jack. Alors oui, il est définitivement possible d'interroger le statut d'un port spécifique.

Jack est une douleur à chercher sur le web en raison de JACK . Cela rend presque impossible.


J'ai un code C qui font des sondages d'information sur la carte son. Je dois regarder si je peux le find.

Depuis que vous avez dit "peu importe comment hacky". . .

Obtenez une carte son externe que vous pouvez connecter à votre ordinateur portable via USB. Branchez la prise analogique dans cela. Branchez votre carte son externe lorsque vous souhaitez connecter la prise audio et que votre script bash détecte si la carte son externe est connectée via USB.