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"

Attachment: 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

Odpowiedź listem elektroniczym