Kezdőlap › Fórumok › Hangkártyákkal kapcsolatos problémák › Hangerő némítás leálláskor?
- This topic has 10 hozzászólás, 3 résztvevő, and was last updated 10 years, 2 months telt el by SeGa.
- SzerzőBejegyzés
- 2013-12-27-15:04 #1890705
Azt figyeltem meg, hogy a gép leállításakor a hangszóró “zizeG2 egy kissé, azaz nincs lenémítva.A hangrendszer alsa, az initscriptje (/etc/init.d/alsa-utils) szerint:case $1 in ...,stop)...#mute_and_zero_levels "$TARGET_CARD" || EXITSTATUS=1...azaz a lenémítást valaki valamiért kikommentezte.A hangszórót magát az alsa mixerből kézzel is le tudom némítani, de nyilván kényelmesebb lenne egy automata módszer.Valami ötlet, hogy miért nem így csinálták?Debian Wheezy van a gépen.Üdv,SeGa
2013-12-27-15:18 #2207661Gondolom, nem mindenki szereti, ha kikapcsoláskor lenémul a hangszórója, és a következő bekapcsoláskor nem hallja az indulót 🙂
2013-12-27-16:04 #2207662Ez azért nem olyan egyszerű!Az említett script a rendszer leállításakor elmenti, újraindításakor betölti a mixer beállításait.A kikommentezett némítás a beállítándításkor sok mentése után van. Tehát a szerző szándéka az lehetett, hogy a beállításokat megőrzi, a hangrendszert elnémítja (hogy leállításkor a hangszóró ne "zizegjen"), majd rendszerindításkor az elárolt értékeket visszaállítja (hogy mire a grafikus környezet feláll, már legyen hang).Ennek fényében a némítás kiiktatása nem logikus. Vagy odaírhatták volna, hogy "uncomment if you like".Üdv,SeGa
2013-12-27-18:08 #2207663Ja, értem. Hát akkor kommenteld ki, ha úgy jobbnak érzed 🙂
2014-01-18-18:51 #2207664Kikommenteltem, de nem némított minden esetben.Eddig jutottam.Egyrészt, ha az alsamixerrel minden egyes hangeszközt lenémítok _és_ elmentem az alsactl paranccsal az állapotot, akkor nincs zavaró zizegő hang leállításkor.Másrészt a scriptet böngészve az látszik, hogy a mute_and_zero_levels hivja a mute_and_zero_levels_on_card függvényt, ez utóbbi pedig a mute_and_zero_level függvényt minden egyes hangeszközre.A legutóbbi függvény már nem is az initscriptben van, hanem a /usr/share/alsa/utils.sh script tartalmazza. Ennek megfelelo sora: amixer $CARDOPT -q set "$1" "0%" mute 2>&1Ez tényleg nullázni és némítani akar mindent. Viszont mivel néma módban dolgozik, nem írja ki, mit állított be. Meg kellene buherálni, hogy valamit kiírjon vagy naplózzon.Üdv,SeGa
2014-01-19-08:08 #2207665Viszont mivel néma módban dolgozik, nem írja ki, mit állított be.
Mármint mit nem?Egyébként valóban az alsa szolgáltatás záró akkordjában (az elágazás stop cimkéje) kell elnémítani (ráadásul az elején), mert utána már hogy. (Az amixer meg nem permenens, de, ha pl. mégsem működnek az elmentett beállítások, akkor a fordítot műveletett megcsináltathatod a szolgáltatás indításánál és újraindításánál... persze ott meg akkor, amikor már fut.)
2014-01-19-14:03 #2207666Nem jól fogalmaztam.Tehát az amixer a -q kapcsolóval csendes módban dolgozik, és nem ír ki semmit. Így nem tudjuk, hogy mit sikerült némítania, mit nem.Barkácsoltam egy saját, nem init scriptet, ami ugyanezeket a kódrészleteket használja. Ezt csak úgy konzolból indítva vagy kiírja az adott mixer kontroll jellemzőit, meg azt, hogy nullázta és némította vagy azt írja ki, hogy nem talál ilyen komtrollt. Az alsamixer szerint tényleg nullázott és némított minden kontrolt. Kivétel a "beep", mert ilyen az eredeti scriptben nincs.A mindenrejó(?) kontrollok listája a forráskód szerint ez: Master, PCM, Synth, CD, Line, Mic, "PCM,1", Wave, Music, AC97, "Master Digital", DAC, "DAC,0", "DAC,1", Headphone, Speaker, Playback. Ebből persze nem következik, hogy a listából hiányzó "beep" okozná a hangszóró zizegését leállításkor.A kikommentezett némítás az init scriptben tényleg a stop cimkénél van, de nem az elején. Előtte vankártya/nincskártya ellenőrzés és a szintek tárolása található.Egyszóval: a rejtély számomra továbbra is rejtély.SeGa
2014-01-19-19:19 #2207667Akkor minek rakod bele 'q' opciót, ami direkt ellenkezőjét teszi, mint a szándékod.Itt egy példa:[bash]amixer cset numid=10 off | grep ":" | sed 's/.*=//'[/bash]Ez a 10-es id-jű vezérlőt elnémítja (természetesen 'Switch'-nek kell lennie) és kiírja a kapcsoló vezérlés utáni állapotát, ami 'off'.Vagy[bash]amixer cset numid=9 100% | grep ":" | sed 's/.*=//'[/bash]E a 9-est állítja 100%-ra és kiírja a vezérlő értékét pl. 255.Ez kiírja a maximum értéket:[bash]amixer cget numid=9 | grep ";" | sed 's/.*max=//' | sed 's/,.*//'[/bash]Így %-ot is lehet is számolni.Így aztán egy scrpttel bármit ki tudsz iratni, megváltoztatni, akár feltételesen is.
2014-01-21-20:18 #2207668“Akkor minek rakod bele 'q' opciót, ami direkt ellenkezőjét teszi, mint a szándékod.”Állj, itt valami félrecsúszott, de nagyon!A -q opciót nem én tettem bele.A sztori sorrendben ez volt:Tapasztaltam, hogy leállításkor a hangszóró "zizeg".Próbáltam megérteni, miért.Kiderült, hogy az Alsa init szkriptjében van egy némításért felelős sor, de ki van kommentezve.A kommentet kiszedve a hangszóró még mindíg "zizegett" leállításkor.Továbbelemezve az init szkriptet kiderült, hogy a sokadik hívott rutinban szerepel valahol az amixer, de -q opcióval, azaz üzenetei el vannak nyomva.A szkript megfelelő sorát idéztem ebben a fórumban, de egy szóval sem állítottam, hogy saját alkotásom.A nagyobbik baj, hogy a megoldást nem találom.SeGa
2014-01-22-14:25 #2207669Bocs, akkor nem értettem, hogy mit akarsz, azt hittem, hogy az egyik cél, vagy még meg nem oldott cél a kiíratás.Csak távolítsd el a "-q"-t, ha azt akarod tesztelni, hogy mit ír ki. Nem fog semmi galibát okozni.Utána beteheted, ha azt akarod, hogy a futáskor már ne írjon ki semmit.Az olyan mini scriptekkel el lehet némítani, sőt szelektíven lehet kiíratni valamit.Ha elnémítod (akár miyerből is) és azután állítod le, akkor zizeg?Ha teljesen kikapcsoltad akkor zizeg/inkább zúg?Ha ezek a "hibák" fennállnak, akkor inkább valamilyen illesztési hibát feltételeznek és szoftveresen nem fogod tudni javítani.
- SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz