Sto usando Ubuntu Lucid (10.04). Nel mio script di shell in esecuzione come root, voglio rilevare se un cavo audio (jack analogico) è collegato al laptop o meno. Come lo faccio? Non ho bisogno di una soluzione portatile, ho bisogno di qualcosa, non importa quanto hacky, che funzioni sul mio laptop.
Risposta accettata:
Un modo potrebbe essere quello di usare amixer
.
Jack collegato:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=on
...
Jack non collegato:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=off
...
Quindi per quello specifico potrei fare:
amixer -c 0 contents | \
awk -F"," '
$1 == "numid=29" {
c=1
} c && /: values/ {
split($0, a, "=")
print a[2];
exit
}'
dando l'output di on
o off
.
Si possono anche usare comandi e specificare tramite iface
+ name
ecc. es.:
Ottieni elenco per:
$ amixer -c 0 controls
Dove -c 0
specifica la carta, non necessaria se predefinita o solo una. Quindi ad es.:
$ amixer -c 0 cget numid=29,iface=CARD
$ amixer -c 0 cget numid=29,iface=CARD | awk -F"=" 'NR == 3 {print $2;}'
Una volta mi sono imbattuto in un software, credo che usasse Tcl/Tk, che mostrava pin-power per tutte le porte del computer + molte altre informazioni HW. Era un bel pezzo di software, ma non riesco a trovarlo di nuovo. Ho guardato attraverso 12 vecchi HDD senza fortuna. L'ho usato per eseguire il debug di alcune porte jack. Quindi sì, è definitivamente possibile eseguire il polling dello stato di una porta specifica.
Jack è una seccatura cercare sul web a causa di JACK. Lo rende quasi impossibile.
Ho del codice C che esegue il polling delle informazioni sulla scheda audio. Devo cercare se riesco a trovarlo.