Witam! Od pewnego czasu używam już udeva, i udało mi się zwalczyć niedogodności jakie wynikają z jego stosowania w przypadku alsy. Podczas jednej z dyskusji na users z Jakubem Cłapą, zostałem poproszony o dopieszczenie swoich rozwiązań i przygotowania tego dla PLD. Przygotowałem więc zestaw skryptów do obsługi alsy w udevie, razem ze specem. Pakiet składa się z następujących plików. 1. alsa.rules Plik wywołujący mój skrypt w momencie dodania/usunięcia urządzeń /dev/snd/controlC* 2. alsa.sh Skrypt, który odtwarza ustawienia miksera, oraz w zależności od ustawień w /etc/sysconfig/alsa_udev ładuje dodatkowe moduły i/lub odpala dodatkowe skrypty. 3. alsasave.init Jest to przerobiony sktypt z alsa-utils-init, który ma za zadanie zachowywanie ustawień miksera podczas zamknięcia systemu. 4 i 5. spec oraz plik konfiguracyjny.
Na wszelki wypadek w alsa.sh dodałem również obsługę zdażenia remove. Nie działa to dla kart pci, ale możliwe, że zadziała dla dzwięku na usb. Proszę o komentarze i ewentualne dodanie ro zasobów cvs. -- Pozdrawiam Przemysław Białek
SUBSYSTEM=="sound", KERNEL=="controlC*", RUN+="/etc/udev/scripts/alsa.sh %n"
alsa.sh
Description: Bourne shell script
# set this to yes if you want to load oss emulation # OSS_EMULATION=yes # list additional modules for first sound card # MODULES_0="" # postinstal script for first sound card # POST_INSTALL_0=""
#!/bin/sh
#
# alsasave This shell script takes care of stopping ALSA sound driver.
#
# This script requires /usr/sbin/alsactl program from alsa-utils package.
#
# Copyright (c) by Jaroslav Kysela <[EMAIL PROTECTED]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#
# For PLD Linux Distribution:
# chkconfig: 2345 80 14
# description: ALSA driver
#
# Source function library.
.. /etc/rc.d/init.d/functions
alsactl=/usr/sbin/alsactl
detect_stop()
{
#
# remove all sound modules
#
/sbin/lsmod | awk '/^snd/ { print $0 }' | while read line; do \
/sbin/rmmod `echo $line | cut -d ' ' -f 1`; \
done
}
driver_stop()
{
#
# store driver settings
#
if [ -x $alsactl ]; then
$alsactl store
else
show '!!!alsactl not found!!!'; fail
fi
}
# See how we were called.
case "$1" in
start)
#Not Needed, its for udev
;;
stop)
# Stop daemons.
if [ -d /proc/asound ]; then
show "Shutting down sound driver:"
busy
if [ -f /proc/asound/detect ]; then
detect_stop
else
driver_stop
fi
(rmmod isapnp; rmmod soundcore) 2> /dev/null
ok
else
msg_not_running "ALSA driver"
fi
;;
save)
driver_stop
;;
status)
# TODO
;;
*)
msg_usage "$0 {start|stop|save|status}"
exit 3
esac
exit 0
# $Revision:$, $Date:$ Summary: udev rules and scripts for Advanced Linux Sound Architecture Summary(pl): reguły i skrypty udev dla Advanced Linux Sound Architecture Name: alsa-udev Version: 0.1 Release: 0.1 License: GPL Group: Applications/Sound Source0: alsa.rules Source1: alsa.sh Source2: alsa_udev.conf Source3: alsasave.init URL: http://www.alsa-project.org/ Requires(post,preun): /sbin/chkconfig Requires: awk Obsoletes: alsaconf Obsoletes: alsa-init-tools BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description udev rules and scripts for Advanced Linux Sound Architecture. %description reguBy i skrypty udev dla Advanced Linux Sound Architecture. %prep %install rm -rf $RPM_BUILD_ROOT install -D %{SOURCE0} $RPM_BUILD_ROOT/etc/udev/rules.d/alsa.rules install -D %{SOURCE1} $RPM_BUILD_ROOT/etc/udev/scripts/alsa.sh install -D %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/alsa_udev install -D %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/alsasave %clean rm -rf $RPM_BUILD_ROOT %post /sbin/chkconfig --add alsasave %preun if [ "$1" = "0" ]; then /sbin/chkconfig --del alsasave fi %files %defattr(644,root,root,755) %attr(754,root,root) /etc/rc.d/init.d/* %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/* /etc/udev/rules.d/alsa.rules %attr(754,root,root) /etc/udev/scripts/alsa.sh %define date %(echo `LC_ALL="C" date +"%a %b %d %Y"`) %changelog * %{date} PLD Team <[EMAIL PROTECTED]> All persons listed below can be reached at <cvs_login>@pld-linux.org $Log:$
_______________________________________________ pld-devel-pl mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl
