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!
- 1960 megtekintés
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).
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Szia, köszi, azóta már google-ztam és beleástam magam az init scriptekbe, úgyhogy megcsináltam, minden nagyon szuper. (Én kihagytam a restart-ot a case-ből). Viszont most beleírom. Mégegyszer köszi!
- A hozzászóláshoz be kell jelentkezni
Javítás
Hozzáadás az rc*.d-hez: sudo update-rc.d amixer defaults kétjegyű szám PLUSZ EGY (add nem kell)
- A hozzászóláshoz be kell jelentkezni