amixer futtatása hangkártya inicializálás után (init script), hogyan?

Fórumok

Sziasztok!

Vettem egy PCI TV tuner kártyát (Hauppauge WinTV-FM, bt878 chip), amiből úgy lehet csak hangot kicsiholni, hogy a tuner hangkimenetét rádugom a hangkártya bemenetére. A rendszer nagyon jól működik, TVtime-al nézem az adást. Sajnos van egy probléma:

A gép újraindításánál (miután a tuner és a hangkártya inicializálódott (és elindul az alsa)) a tuner kártya zajt kezd kinyomni magából (nincs ráállva értelmes frekvenciára), amit szorgalmasan rányom a hangkártyám bemenetére. Ezért aztán a zúgás a hangszóróból is bömböl.

A zúgás akkor hallgat el, mikor a TVtime-ban bekapcsolok egy csatornát, majd lekapcsolom a programot.

Workaround-nak azt találtam ki, hogy futtatnék egy init szkriptet az alsa elindulása után, ami némítja a hangkártyám bemenetét, majd a TVtime indítása (vagy épp a rádió elindítása) egy másik szkripttel történne, amely először elindítja megint a bemenetet, majd indítja a programot is.

A google-ben megtaláltam, hogy az amixer nevű alsa eszközzel tudom a csatornákat állítani parancssorból. Nálam:

Némítás: amixer -c 0 set Mic mute
Engedélyezés: amixer -c 0 set Mic unmute

A kérdésem, hogy hogyan tudnám betenni a némítás parancsát egy init szkriptben úgy, hogy az GARANTÁLTAN az /etc/init.d/alsa-utils szkript futása után induljon?

A rendszerem Ubuntu Intrepid, default kernellel.

Köszönöm a segítséget!

Hozzászólások

A kérdésem második fele (vagy másik megoldás) meg úgy is hangozhatna, hogy leállításnál/újraindításnál a szkript jó lenne ha (megint) futna, de ekkor mindenképpen az alsa/hangrendszer lekapcsolása előtt. Ekkor ha a szkript mute-ra állítaná a hangot, akkor a zúgás így is elkerülhető. (A TVtime-ot indító szkript megint belökné a hangot amúgyis).

Szevasz!

Előszöris meg kéne nézned, hogy az alsa-utils hányas szinten indul:

sudo ls /etc/rc*.d/S*alsa*

Valami ilyesmit fogsz látni:

/etc/rc2.d/SNN...alsa... /etc/rc3.d/SNN...alsa... /etc/rc4.d/SNN...alsa... /etc/rc5.d/SNN...alsa...

Ezek az /etc/init.d/alsa-utils -ra mutató szimbolikus linkek felelősek az alsa utils minden futási szinten történő indításáért (ezt a kezdő S betű jelöli).

Eztán létre kéne hoznod egy init scriptet, ami némítja/engedélyezi a mixert (ha már van ilyen, hagyd ki ezt a lépést).
Parancs: sudo mcedit /etc/init.d/amixer

Valahogy így néz ki a script (ha syntax error van benne, elnézést):


#!/bin/bash
# AMIXER init script by MisterZ

case "$1" in
	start)
		echo -n "amixer némítása... "
		amixer -c 0 set Mic mute
		echo "kész."
		;;
	stop)
		echo -n "amixer engedélyezése... "
		amixer -c 0 set Mic unmute
		echo "kész."
		;;
	restart|force-reload)
		$0 stop
		sleep 1
		$0 start
		;;
esac

Futtatási jog beállítása: sudo chmod 700 /etc/init.d/amixer
Hozzáadás az rc*.d-hez: sudo update-rc.d amixer add defaults kétjegyű szám PLUSZ EGY

Hozzáadva egyet biztosítod, hogy az alsa-utils után induljon.

Debianon így kell, gondolom Ubuntu-n is :)

Üdv.
mba