Ich verwende Ubuntu Lucid (10.04). In meinem als root ausgeführten Shell-Skript möchte ich feststellen, ob ein Audiokabel (analoge Buchse) mit dem Laptop verbunden ist oder nicht. Wie mache ich das? Ich brauche keine tragbare Lösung, ich brauche etwas, egal wie hackig, das auf meinem Laptop funktioniert.
Akzeptierte Antwort:
Ein Weg könnte vielleicht sein, amixer
zu verwenden .
Klinke eingesteckt:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=on
...
Buchse nicht eingesteckt:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=off
...
Also für dieses spezielle könnte ich tun:
amixer -c 0 contents | \
awk -F"," '
$1 == "numid=29" {
c=1
} c && /: values/ {
split($0, a, "=")
print a[2];
exit
}'
Ausgabe von on
oder off
.
Man kann auch Befehle verwenden und per iface
spezifizieren + name
etc. z.B.:
Liste abrufen durch:
$ amixer -c 0 controls
Wobei -c 0
gibt Karte an, nicht erforderlich, wenn Standard oder nur eine. Dann z.B.:
$ amixer -c 0 cget numid=29,iface=CARD
$ amixer -c 0 cget numid=29,iface=CARD | awk -F"=" 'NR == 3 {print $2;}'
Ich bin einmal auf eine Software gestoßen, glaube, sie verwendete Tcl/Tk, die Pin-Power für alle Ports auf dem Computer + viele andere HW-Informationen anzeigte. Es war ein nettes Stück Software – aber ich kann es nicht wiederfinden. Ich habe 12 alte Festplatten durchsucht, ohne Erfolg. Ich habe es verwendet, um einige Jack-Ports zu debuggen. Also ja, es ist definitiv möglich, den Status eines bestimmten Ports abzufragen.
Aufgrund von JACK ist es mühsam, nach Jack im Internet zu suchen. Das macht es nahezu unmöglich.
Ich habe einen C-Code, der Soundkarteninformationen abfragt. Muss mal schauen ob ich es finde.