Používám Ubuntu Lucid (10.04). V mém shell skriptu běžícím jako root chci zjistit, zda je k notebooku připojen audio kabel (analogový konektor) nebo ne. Jak to udělám? Nepotřebuji přenosné řešení, potřebuji něco, bez ohledu na to, jak náročné je, co funguje na mém notebooku.
Přijatá odpověď:
Jedním ze způsobů by mohlo být použití amixer
.
Jack zapojený:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=on
...
Jack není připojen:
$ amixer -c 0 contents
numid=29,iface=CARD,name='Front Headphone Jack'
; type=BOOLEAN,access=r-------,values=1
: values=off
...
Takže pro tento konkrétní bych mohl udělat:
amixer -c 0 contents | \
awk -F"," '
$1 == "numid=29" {
c=1
} c && /: values/ {
split($0, a, "=")
print a[2];
exit
}'
dává výstup on
nebo off
.
Lze také použít příkazy a specifikovat pomocí iface
+ name
atd. např.:
Získejte seznam podle:
$ amixer -c 0 controls
Kde -c 0
specifikuje kartu, není potřeba, pokud je výchozí nebo pouze jedna. Pak např.:
$ amixer -c 0 cget numid=29,iface=CARD
$ amixer -c 0 cget numid=29,iface=CARD | awk -F"=" 'NR == 3 {print $2;}'
Jednou jsem narazil na software, věřte, že používal Tcl/Tk, který zobrazoval pin-power pro všechny porty na počítači + spoustu dalších HW informací. Byl to pěkný software – ale nemůžu ho znovu najít. Bez úspěchu jsem prohlížel 12 starých HDD. Použil jsem to k odladění některých jack-portů. Takže ano, je definitivně možné dotazovat se na stav konkrétního portu.
Jacka je těžké hledat na webu kvůli JACKovi. Je to téměř nemožné.
Mám nějaký C-kód, který dělá průzkum informací o zvukové kartě. Musím se podívat, jestli to najdu.