J'utilise Ubuntu Lucid (10.04). Dans mon script shell exécuté en tant que root, je souhaite détecter si un câble audio (prise analogique) est connecté ou non à l'ordinateur portable. Comment je fais ça? Je n'ai pas besoin d'une solution portable, j'ai besoin de quelque chose, aussi hacké soit-il, qui fonctionne sur mon ordinateur portable.
Réponse acceptée :
Une façon pourrait peut-être ê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
...
Prise non branchée :
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=off
...
Donc, pour celui-là en particulier, 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 commandes et spécifier par iface
+ name
etc. ex. :
Obtenir la liste par :
$ amixer -c 0 controls
Où -c 0
spécifie la carte, pas nécessaire si par défaut ou une seule. 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 logiciel une fois, je pense qu'il utilisait Tcl/Tk, qui affichait la puissance des broches pour tous les ports de l'ordinateur + de nombreuses autres informations matérielles. C'était un bon logiciel - mais je ne le retrouve plus. J'ai regardé à travers 12 vieux disques durs sans succès. Je l'ai utilisé pour déboguer certains ports jack. Alors oui, il est définitivement possible d'interroger l'état d'un port spécifique.
Jack est pénible à rechercher sur le Web à cause de JACK. Cela le rend presque impossible.
J'ai un code C qui effectue des sondages d'informations sur la carte son. Je dois chercher si je peux le trouver.