diff --git a/lib/udev/rules.d/90-alsa-restore.rules b/lib/udev/rules.d/90-alsa-restore.rules
new file mode 100644
index 0000000..51ee299
--- /dev/null
+++ b/lib/udev/rules.d/90-alsa-restore.rules
@@ -0,0 +1,2 @@
+ACTION=="add", SUBSYSTEM=="sound", KERNEL=="controlC*", KERNELS=="card*", \
+        RUN+="/usr/sbin/alsactl restore $attr{number}"
diff --git a/usr/bin/aconnect b/usr/bin/aconnect
new file mode 100755
index 0000000..8531bd0
--- /dev/null
+++ b/usr/bin/aconnect
Binary files differ
diff --git a/usr/bin/alsaloop b/usr/bin/alsaloop
new file mode 100755
index 0000000..687af13
--- /dev/null
+++ b/usr/bin/alsaloop
Binary files differ
diff --git a/usr/bin/alsamixer b/usr/bin/alsamixer
new file mode 100755
index 0000000..535ed30
--- /dev/null
+++ b/usr/bin/alsamixer
Binary files differ
diff --git a/usr/bin/alsaucm b/usr/bin/alsaucm
new file mode 100755
index 0000000..83fae41
--- /dev/null
+++ b/usr/bin/alsaucm
Binary files differ
diff --git a/usr/bin/amidi b/usr/bin/amidi
new file mode 100755
index 0000000..c92cfb6
--- /dev/null
+++ b/usr/bin/amidi
Binary files differ
diff --git a/usr/bin/amixer b/usr/bin/amixer
new file mode 100755
index 0000000..dbf81a2
--- /dev/null
+++ b/usr/bin/amixer
Binary files differ
diff --git a/usr/bin/aplay b/usr/bin/aplay
new file mode 100755
index 0000000..a5ab809
--- /dev/null
+++ b/usr/bin/aplay
Binary files differ
diff --git a/usr/bin/aplaymidi b/usr/bin/aplaymidi
new file mode 100755
index 0000000..d6240ca
--- /dev/null
+++ b/usr/bin/aplaymidi
Binary files differ
diff --git a/usr/bin/arecord b/usr/bin/arecord
new file mode 120000
index 0000000..82fbd43
--- /dev/null
+++ b/usr/bin/arecord
@@ -0,0 +1 @@
+aplay
\ No newline at end of file
diff --git a/usr/bin/arecordmidi b/usr/bin/arecordmidi
new file mode 100755
index 0000000..947a02d
--- /dev/null
+++ b/usr/bin/arecordmidi
Binary files differ
diff --git a/usr/bin/aseqdump b/usr/bin/aseqdump
new file mode 100755
index 0000000..103b4df
--- /dev/null
+++ b/usr/bin/aseqdump
Binary files differ
diff --git a/usr/bin/aseqnet b/usr/bin/aseqnet
new file mode 100755
index 0000000..d246296
--- /dev/null
+++ b/usr/bin/aseqnet
Binary files differ
diff --git a/usr/bin/iecset b/usr/bin/iecset
new file mode 100755
index 0000000..29469c0
--- /dev/null
+++ b/usr/bin/iecset
Binary files differ
diff --git a/usr/sbin/alsaconf b/usr/sbin/alsaconf
new file mode 100755
index 0000000..aee657c
--- /dev/null
+++ b/usr/sbin/alsaconf
@@ -0,0 +1,1451 @@
+#!/bin/bash
+#
+#  ALSA Configurator
+#
+#  Copyright (c) 1999-2002  SuSE GmbH
+#                           Jan ONDREJ
+#
+#  written by Takashi Iwai <tiwai@suse.de>
+#             Bernd Kaindl <bk@suse.de>
+#             Jan ONDREJ (SAL) <ondrejj@salstar.sk>
+#
+#  based on the original version of Jan ONDREJ's alsaconf for ALSA 0.4.
+#
+#  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.
+#
+
+export TEXTDOMAIN=alsaconf
+
+prefix=/usr
+exec_prefix=/usr
+bindir=${exec_prefix}/bin
+sbindir=${exec_prefix}/sbin
+version=1.0.25
+USE_NLS=yes
+
+# Useful for debugging
+PROCFS="/proc"
+SYSFS="/sys"
+
+# i18n stuff
+if test "$USE_NLS" = "yes" && type -p gettext > /dev/null; then
+  xecho() {
+    gettext -s "$*"
+  }
+else
+  xecho() {
+    echo "$*"
+  }
+  gettext() {
+    echo -n "$*"
+  }
+fi
+xmsg() {
+  msg=$(gettext "$1")
+  shift
+  printf "$msg" $*
+}
+
+# Check for GNU/Linux distributions
+if [ -f /etc/SuSE-release ]; then
+  distribution="suse"
+  suse_version=$(grep 'VERSION = ' /etc/SuSE-release | sed -e s/'VERSION = '//)
+elif [ -f /etc/UnitedLinux-release ]; then
+  distribution="suse"
+elif [ -f /etc/gentoo-release ]; then
+  distribution="gentoo"
+elif [ -f /etc/debian_version ]; then
+  distribution="debian"
+elif [ -f /etc/mandrake-release ]; then
+  distribution="mandrake"
+elif test -f /etc/redhat-release && grep -q "Red Hat" /etc/redhat-release; then
+  distribution="redhat"
+elif test -f /etc/fedora-release && grep -q "Fedora" /etc/fedora-release; then
+  distribution="fedora"
+elif [ -f /etc/slackware-version -o -f /etc/slamd64-version ]; then
+  distribution="slackware"
+else
+  distribution="unknown"
+fi
+
+for prog in lspci lsmod; do
+	for path in /sbin /usr/sbin /bin /usr/bin;do
+		test -x $path/$prog && eval $prog=$path/$prog
+	done
+done
+unset prog path
+
+usage() {
+    xecho "ALSA configurator"
+    echo "  version $version"
+    xecho "usage: alsaconf [options]
+  -l|--legacy    check only legacy non-isapnp cards
+  -m|--modinfo   read module descriptions instead of reading card db
+  -s|--sound wav-file
+                 use the specified wav file as a test sound
+  -u|--uid uid   set the uid for the ALSA devices (default = 0) [obsoleted]
+  -g|--gid gid   set the gid for the ALSA devices (default = 0) [obsoleted]
+  -d|--devmode mode
+                 set the permission for ALSA devices (default = 0666) [obs.]
+  -r|--strict    set strict device mode (equiv. with -g 17 -d 0660) [obsoleted]
+  -L|--log file  logging on the specified file (for debugging purpose only)
+  -p|--probe card-name
+                 probe a legacy non-isapnp card and print module options
+  -P|--listprobe list the supported legacy card modules
+  -c|--config file
+                 specify the module config file
+  -R|--resources list available DMA and IRQ resources with debug for legacy
+  -h|--help      what you're reading"
+}
+
+OPTS=`getopt -o lmL:hp:Pu:g:d:rs:c:R --long legacy,modinfo,log:,help,probe:,listprobe,uid:,gid:,devmode:,strict,sound:,config:,resources -n alsaconf -- "$@"` || exit 1
+eval set -- "$OPTS"
+
+do_legacy_only=0
+use_modinfo_db=0
+alsa_uid=0
+alsa_gid=0
+alsa_mode=0666
+legacy_probe_card=""
+LOGFILE=""
+TESTSOUND="/usr/share/test.wav"
+try_all_combination=0
+resources="false"
+
+# legacy support
+LEGACY_CARDS="opl3sa2 cs4236 cs4232 cs4231 es18xx es1688 sb16 sb8"
+
+while true ; do
+    case "$1" in
+    -l|--legacy)
+	do_legacy_only=1; shift ;;
+    -m|--modinfo)
+	use_modinfo_db=1; shift ;;
+    -s|--sound)
+	TESTSOUND=$2; shift 2;;
+    -h|--help)
+	usage; exit 0 ;;
+    -L|--log)
+	LOGFILE="$2"; shift 2;;
+    -p|--probe)
+	legacy_probe_card="$2"; shift 2;;
+    -P|--listprobe)
+	echo "$LEGACY_CARDS"; exit 0;;
+    -u|--uid)
+	alsa_uid="$2"; shift 2;;
+    -g|--gid)
+	alsa_gid="$2"; shift 2;;
+    -d|--devmode)
+	alsa_mode="$2"; shift 2;;
+    -r|--strict)
+	alsa_uid=0; alsa_gid=17; alsa_mode=0660; shift;;
+    -c|--config)
+	cfgfile="$2"; shift 2;;
+    -R|--resources)
+        resources="true"; shift;;
+    --) shift ; break ;;
+    *) usage ; exit 1 ;;
+    esac
+done
+
+#
+# probe legacy ISA cards
+#
+
+check_dma_avail () {
+    list=""
+    if [ -d $SYSFS/bus/pnp/devices ]; then
+      for dma in $*; do
+        ok="true"
+        for i in $SYSFS/bus/pnp/devices/??:* ; do
+          if grep -q "state = active" $i/resources ; then
+            if grep -q '^dma '$dma'$' $i/resources; then
+              ok="false"
+            fi
+          fi
+        done
+        if [ -r $PROCFS/dma ]; then
+	  if grep -q '^ *'$dma': ' $PROCFS/dma ; then
+            ok="false"
+          fi
+	fi
+        if [ "$ok" = "true" ]; then
+          list="$list $dma"
+        fi
+      done
+    else
+      if [ -r $PROCFS/dma ]; then
+  	for dma in $*; do
+	    grep -q '^ *'$dma': ' $PROCFS/dma || list="$list $dma"
+	done
+      fi
+    fi
+    if [ ! -z "$list" ]; then
+      echo $list
+    fi
+}
+
+check_irq_avail () {
+    list=""
+    if [ -d $SYSFS/bus/pnp/devices ]; then
+      for irq in $*; do
+        ok="true"
+        for i in $SYSFS/bus/pnp/devices/??:* ; do
+          if grep -q "state = active" $i/resources ; then
+            if grep -q '^irq '$irq'$' $i/resources; then
+              ok="false"
+            fi
+          fi
+        done
+        if [ -r $PROCFS/interrupts ]; then
+	  if grep -q '^ *'$irq': ' $PROCFS/interrupts ; then
+            ok="false"
+          fi
+	fi
+        if [ "$ok" = "true" ]; then
+          list="$list $irq"
+        fi
+      done
+    else
+      if [ -r $PROCFS/interrupts ]; then
+	for irq in $*; do
+	    grep -q '^ *'$irq': ' $PROCFS/interrupts || list="$list $irq"
+	done
+      fi
+    fi
+    if [ ! -z "$list" ]; then
+      echo $list
+    fi
+}
+
+#
+#
+#
+
+if [ "$resources" = "true" ]; then
+  if [ -d $SYSFS/bus/pnp/devices ]; then
+    for i in $SYSFS/bus/pnp/devices/??:* ; do
+      if [ "$resources" = "true" ]; then
+        echo ">>>>> PnP file: $i/resources"
+        cat $i/resources
+      fi
+    done
+  fi
+  if [ -r $PROCFS/dma ]; then
+    echo ">>>>> Allocated dma channels:"
+    cat $PROCFS/dma
+  fi
+  if [ -r $PROCFS/interrupts ]; then
+    echo ">>>>> Allocated interrupt channels:"
+    cat $PROCFS/interrupts
+  fi
+  echo -n "Valid DMA channels: "
+  check_dma_avail 0 1 2 3 4 5 6 7
+  echo -n "Valid IRQ channels: "
+  check_irq_avail 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+  exit 0
+fi
+
+# Check for root privileges
+if [ `id -u` -ne 0 ]; then
+  xecho "You must be root to use this script."
+  exit 1
+fi
+
+#
+# check the snd_ prefix for ALSA module options
+# snd_ prefix is obsoleted since 0.9.0rc4.
+#
+if /sbin/modinfo -p snd | grep -q snd_ ; then
+  mpfx="snd_"
+else
+  mpfx=""
+fi
+
+alsa_device_opts=""
+if /sbin/modinfo -p snd | grep -q uid ; then
+  if [ x"$alsa_uid" != x0 ]; then
+    alsa_device_opts="$alsa_device_opts ${mpfx}device_uid=$alsa_uid"
+  fi
+  if [ x"$alsa_gid" != x0 ]; then
+    alsa_device_opts="$alsa_device_opts ${mpfx}device_gid=$alsa_gid"
+  fi
+fi
+if /sbin/modinfo -p snd | grep -q device_mode ; then
+  if [ x"$alsa_mode" != x0 ]; then
+    alsa_device_opts="$alsa_device_opts ${mpfx}device_mode=$alsa_mode"
+  fi
+fi
+
+case `uname -r` in
+2.6.*)
+  kernel="new"
+  ;;
+*)
+  kernel="old"
+  ;;
+esac
+
+# cfgfile = base config file to remove/update the sound setting
+# cfgout = new config file to write the sound setting (if different from $cfgfile)
+cfgout=""
+cfgoldout=""
+if [ -n "$cfgfile" ]; then
+  if [ ! -r "$cfgfile" ]; then
+    xecho "ERROR: The config file doesn't exist: "
+    echo $cfgfile
+    exit 1
+  fi
+else
+if [ "$distribution" = "gentoo" ]; then
+  cfgfile="/etc/modules.d/alsa"
+elif [ "$kernel" = "new" ]; then
+  cfgfile="/etc/modprobe.conf"
+  if [ -d /etc/modprobe.d ]; then
+    cfgout="/etc/modprobe.d/50-sound.conf"
+    cfgoldout="/etc/modprobe.d/sound"
+    if [ ! -f $cfgout ]; then
+	modver=$(modprobe -V | sed -e's/^module-init-tools version //')
+	case "$modver" in
+	3.[789]*)
+	  ;;
+	*)
+	  cfgout="/etc/modprobe.d/sound"
+	  cfgoldout=""
+	  ;;
+	esac
+    fi
+  fi
+elif [ "$distribution" = "debian" ]; then
+  cfgfile="/etc/modutils/sound"
+elif [ -e /etc/modules.conf ]; then
+  cfgfile="/etc/modules.conf"
+elif [ -e /etc/conf.modules ]; then
+  cfgfile="/etc/conf.modules"
+else
+  cfgfile="/etc/modules.conf"
+  touch /etc/modules.conf
+fi
+fi
+
+# Check for dialog, whiptail, gdialog, awk, ... ?
+if type -p dialog > /dev/null; then
+    DIALOG=dialog
+else
+  if type -p whiptail > /dev/null; then
+    whiptail_wrapper() {
+      X1="$1"
+      X2="$2"
+      if [ $1 = --yesno ]; then
+        X3=`expr $3 + 2`
+      else
+        X3=$3
+      fi
+      shift 3
+      whiptail "$X1" "$X2" $X3 "$@"
+    }
+    DIALOG=whiptail_wrapper
+  else
+    xecho "Error, dialog or whiptail not found."
+    exit 1
+  fi
+fi
+if type -p awk > /dev/null; then :
+else
+  xecho "Error, awk not found. Can't continue."
+  exit 1
+fi
+
+#
+# remove entries by yast2 sound configurator
+#
+remove_y2_block() {
+    awk '
+    /^alias sound-slot-[0-9]/ { next }
+    /^alias char-major-116 / { next }
+    /^alias char-major-14 / { next }
+    /^alias snd-card-[0-9] / { next }
+    /^options snd / { next }
+    /^options snd-/ { next }
+    /^options off / { next }
+    /^alias sound-service-[0-9]/ { next }
+    /^# YaST2: sound / { next }
+   { print }'
+}
+
+#
+# remove entries by sndconfig sound configurator
+#
+# found strings to search for in WriteConfModules, 
+# from sndconfig 0.68-4 (rawhide version)
+
+remove_sndconfig_block() {
+    awk '
+    /^alias sound-slot-0/ { modulename = $3 ; next }
+    /^alias sound-slot-[0-9]/ { next }
+    /^post-install sound-slot-[0-9] / { next }
+    /^pre-remove sound-slot-[0-9] / { next }
+    /^options sound / { next }
+    /^alias synth0 opl3/ { next }
+    /^options opl3 / { next }
+    /^alias midi / { mididev = $3 ; next }
+    /^options / { if ($2 == mididev) next }
+    /^pre-install / { if ($2 == mididev) next }
+    /^alias synth0 / { synth = $3 ; next }
+    /^post-install / { if ($2 == synth) next }
+    /^options sb / { next }
+    /^post-install .+ \/bin\/modprobe "aci"/ { if ($2 == modulename) next }
+    /^options adlib_card / { next }
+    /^options .+ isapnp=1/ { if ($2 == modulename) next }
+    /^options i810_audio / { next }
+    /^options / {if ($2 == modulename) next }
+   { print }'
+}
+
+#
+# remove the previous configuration by alsaconf
+#
+remove_ac_block() {
+    awk '/^'"$ACB"'$/,/^'"$ACE"'$/ { next } { print }'
+}
+
+#
+# set default mixer volumes
+#
+set_mixers() {
+    amixer -s -q <<EOF
+set Master 75% unmute
+set Master -12dB
+set 'Master Mono' 75% unmute
+set 'Master Mono' -12dB
+set Front 75% unmute
+set Front -12dB
+set PCM 90% unmute
+set PCM 0dB
+mixer Synth 90% unmute
+mixer Synth 0dB
+mixer CD 90% unmute
+mixer CD 0dB
+# mute mic
+set Mic 0% mute
+# ESS 1969 chipset has 2 PCM channels
+set PCM,1 90% unmute
+set PCM,1 0dB
+# Trident/YMFPCI/emu10k1
+set Wave 100% unmute
+set Music 100% unmute
+set AC97 100% unmute
+# CS4237B chipset:
+set 'Master Digital' 75% unmute
+# Envy24 chips with analog outs
+set DAC 90% unmute
+set DAC -12dB
+set DAC,0 90% unmute
+set DAC,0 -12dB
+set DAC,1 90% unmute
+set DAC,1 -12dB
+# some notebooks use headphone instead of master
+set Headphone 75% unmute
+set Headphone -12dB
+set Playback 100% unmute
+# turn off digital switches
+set "SB Live Analog/Digital Output Jack" off
+set "Audigy Analog/Digital Output Jack" off
+EOF
+}
+
+
+# INTRO
+intro() {
+  local msg=$(xmsg "
+                   ALSA  CONFIGURATOR
+                   version %s
+
+            This script is a configurator for
+    Advanced Linux Sound Architecture (ALSA) driver.
+
+
+  If ALSA is already running, you should close all sound
+  apps now and stop the sound driver.
+  alsaconf will try to do this, but it's not 100%% sure." $version)
+  $DIALOG --msgbox "$msg" 20 63 || acex 0
+}
+
+# FAREWELL
+farewell() {
+  local msg=$(gettext "
+
+     OK, sound driver is configured.
+
+                  ALSA  CONFIGURATOR
+
+          will prepare the card for playing now.
+
+     Now I'll run alsasound init script, then I'll use
+     amixer to raise the default volumes.
+     You can change the volume later via a mixer
+     program such as alsamixer or gamix.
+  
+  ")
+  $DIALOG --msgbox "$msg" 17 60 || acex 0
+}
+
+# Exit function
+acex() {
+  cleanup
+  clear
+  exit $1
+}
+
+#
+# search for alsasound init script
+#
+
+if [ "$distribution" = "debian" ]; then
+    rcalsasound=/etc/init.d/alsa
+elif [ -x /etc/rc.d/rc.alsa ]; then
+    rcalsasound=/etc/rc.d/rc.alsa
+elif [ -x /etc/init.d/alsasound ]; then
+    rcalsasound=/etc/init.d/alsasound
+elif [ -x /usr/sbin/rcalsasound ]; then
+    rcalsasound=/usr/sbin/rcalsasound
+elif [ -x /sbin/rcalsasound ]; then
+    rcalsasound=/sbin/rcalsasound
+elif [ -x /etc/rc.d/init.d/alsasound ]; then
+    rcalsasound=/etc/rc.d/init.d/alsasound
+elif [ -x /etc/init.d/alsa ]; then
+    rcalsasound=/etc/init.d/alsa
+else
+    rcalsasound=rcalsasound
+fi
+
+    
+# MAIN
+if [ -d $PROCFS/asound ]; then
+  $rcalsasound stop >/dev/null 2>&1
+  $rcalsasound unload >/dev/null 2>&1
+  /sbin/rmmod dmasound dmasound_awacs 2>/dev/null
+fi
+
+
+cleanup () {
+    killall -9 aplay arecord >/dev/null 2>&1
+    /sbin/modprobe -r isapnp >/dev/null 2>&1
+    /sbin/modprobe -r isa-pnp >/dev/null 2>&1
+    rm -f "$TMP" "$addcfg" "$FOUND" "$DUMP"
+}
+trap cleanup 0 
+
+TMP=`mktemp -q /tmp/alsaconf.XXXXXX`
+if [ $? -ne 0 ]; then
+	xecho "Can't create temp file, exiting..."
+        exit 1
+fi
+addcfg=`mktemp -q /tmp/alsaconf.XXXXXX`
+if [ $? -ne 0 ]; then
+	xecho "Can't create temp file, exiting..."
+        exit 1
+fi
+FOUND=`mktemp -q /tmp/alsaconf.XXXXXX`
+if [ $? -ne 0 ]; then
+	xecho "Can't create temp file, exiting..."
+        exit 1
+fi
+DUMP=`mktemp -q /tmp/alsaconf.XXXXXX`
+if [ $? -ne 0 ]; then
+	xecho "Can't create temp file, exiting..."
+        exit 1
+fi
+
+# convert ISA PnP id number to string 'ABC'
+convert_isapnp_id () {
+    if [ -z "$1" ]; then
+	echo "XXXX"
+	return
+    fi
+    let a='('$1'>>2) & 0x3f'
+    let b='(('$1' & 0x03) << 3) | (('$1' >> 13) & 0x07)'
+    let c='('$1'>> 8) & 0x1f'
+    strs='@ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+    echo ${strs:$a:1}${strs:$b:1}${strs:$c:1}
+}
+
+# swap high & low bytes
+swap_number () {
+    if [ -z "$1" ]; then
+	echo "0000"
+	return
+    fi
+    let v='(('$1'>>8)&0xff)|(('$1'&0xff)<<8)'
+    printf "%04x" $v
+}
+
+# build card database
+# build_card_db filename
+build_card_db () {
+    MODDIR=/lib/modules/`uname -r`
+    last_driver=""
+    echo -n > $1
+
+    # list pci cards
+    while read driver vendor device dummy; do
+	if expr $driver : 'snd-.*' >/dev/null ; then
+	    if [ "$last_driver" != "$driver" ]; then
+		echo $driver.o
+		last_driver=$driver
+	    fi
+	    id1=`printf '0x%04x' $vendor`
+	    id2=`printf '0x%04x' $device`
+	    echo "PCI: $id1=$id2"
+	fi
+    done < $MODDIR/modules.pcimap >> $1
+
+    # list isapnp cards
+    while read driver cardvendor carddevice data vendor func; do
+	if expr $driver : 'snd-.*' >/dev/null ; then
+	    if [ "$last_driver" != "$driver" ]; then
+		echo $driver.o
+		last_driver=$driver
+	    fi
+	    id1=`convert_isapnp_id $cardvendor`
+	    dev1=`swap_number $carddevice`
+	    id2=`convert_isapnp_id $vendor`
+	    dev2=`swap_number $func`
+	    echo "ISAPNP: $id1$dev1=$id2$dev2"
+	fi
+    done < $MODDIR/modules.isapnpmap >> $1
+}
+
+#
+# probe cards
+#
+probe_cards () {
+    found="0"
+    test -r $PROCFS/isapnp || /sbin/modprobe isapnp >/dev/null 2>&1
+    test -r $PROCFS/isapnp || /sbin/modprobe isa-pnp >/dev/null 2>&1
+    if [ -r $PROCFS/isapnp ]; then
+	cat $PROCFS/isapnp >"$DUMP"
+	found="1"
+    elif [ -d $SYSFS/bus/pnp/devices ]; then
+	# use 2.6 kernel's sysfs output
+	# fake the isapnp dump
+	index=0
+	bindex=0
+	for d1 in $SYSFS/devices/pnp* ; do
+	  for d2 in $d1/*:* ; do
+	    if [ -r $d2/card_id ]; then
+	      id=`cat $d2/card_id`
+	      name=`cat $d2/name`
+	      echo "Card $index '$id:$name' " >> "$DUMP"
+	      index=$[$index+1]
+	      found="1"
+	    else if [ -r $d2/id ]; then
+	      # FIXME: multiple id might be present (separated with new-line)
+	      id=`head -n 1 $d2/id`
+	      echo "BIOS $bindex '$id' " >> "$DUMP"
+	      bindex=$[$bindex+1]
+	      found="1"
+	    fi
+	    fi
+	  done
+	done
+    fi
+    if [ "$found" = "0" ]; then
+      echo -n >"$DUMP"
+    fi 
+    CARDID_DB=/var/tmp/alsaconf.cards
+    if [ ! -r $CARDID_DB ]; then
+        use_modinfo_db=1
+    fi
+    if [ $use_modinfo_db != 1 ]; then
+	if [ $CARDID_DB -ot /lib/modules/`uname -r`/modules.dep ]; then
+	    use_modinfo_db=1
+	fi
+    fi
+    if [ $use_modinfo_db = 1 ]; then
+	xecho "Building card database.."
+	build_card_db $CARDID_DB
+    fi
+    if [ ! -r $CARDID_DB ]; then
+	xecho "No card database is found.."
+	exit 1
+    fi
+    ncards=`grep '^snd-.*\.o$' $CARDID_DB | wc -w`
+
+    msg=$(gettext "Searching sound cards")
+    awk '
+BEGIN {
+	format="%-40s %s\n";
+	ncards='"$ncards"';
+	idx=0;
+}
+/^snd-.*\.o$/{
+	sub(/.o$/, "");
+	driver=$0;
+	perc=(idx * 100) / (ncards + 1);
+	print int(perc);
+	idx++;
+}
+/^[<literal space><literal tab>]*PCI: /{
+	gsub(/0x/, "");
+	gsub(/=/, ":");
+	x = sprintf ("'$lspci' -n 2>/dev/null| grep '"' 04..: '"' | grep %s", $2);
+	if (system (x) == 0)
+		printf "%s %s\n", $2, driver >>"'"$FOUND"'"
+}
+/^[<literal space><literal tab>]*ISAPNP: /{
+	id2 = substr($0, index($0, "=")+1);
+	gsub(/=.*/, "");
+	x = sprintf ("grep '\''^Card [0-9] .%s:'\'' '"$DUMP"'", $2);
+	if (system (x) == 0)
+		printf "%s %s\n", $2, driver >>"'"$FOUND"'"
+	else if (index($2, "ffff") > 0) {
+		x = sprintf ("grep '\''^BIOS [0-9]* .%s.'\'' '"$DUMP"'", id2);
+		if (system (x) == 0)
+			printf "%s %s\n", id2, driver >>"'"$FOUND"'"
+	}
+}' < $CARDID_DB |\
+    $DIALOG --gauge "$msg" 6 40 0
+
+    #
+    # PowerMac
+    #
+    if grep -q MacRISC $PROCFS/cpuinfo; then
+	MODDIR=/lib/modules/`uname -r`
+	find $MODDIR -name 'snd-powermac*' -print | \
+	while read i; do
+	    i=${i##*/}
+	    i=${i%%.o}
+	    i=${i%%.ko}
+	    echo "PowerMac $i" >> $FOUND
+	done
+    fi
+
+    #
+    # Sparc
+    #
+    if grep -q Sparc $PROCFS/cpuinfo; then
+	test -r $PROCFS/openprom/name || /bin/mount -t openpromfs none $PROCFS/openprom >/dev/null 2>&1
+	# Check for an "audio" device
+	audio=
+	compat=
+	if test -r $PROCFS/openprom; then
+	    audio=`find $PROCFS/openprom -follow -type d -name "audio*" -print`
+	fi
+	if test -n "$audio"; then
+	    compat=`cat $audio/compatible`
+	    compat=${compat#\'}
+	    compat=${compat%\'}
+	    compat=${compat#SUNW,}
+	fi
+	# Go through all cards we have
+	MODDIR=/lib/modules/`uname -r`
+	find $MODDIR -name 'snd-sun-*' -print | \
+	while read i; do
+	    i=${i##*/}
+	    i=${i%%.o}
+	    i=${i%%.ko}
+	    sdev=`echo ${i#snd-sun-} | tr "[a-z]" "[A-Z]"`
+
+	    if test "$sdev" = "$compat"; then
+		echo "$sdev $i" >> $FOUND
+	    elif test -r $PROCFS/openprom; then
+		find $PROCFS/openprom -follow -type d -name "SUNW,${sdev}*" \
+		    -exec echo "$sdev $i" \; 2>/dev/null >> $FOUND
+	    else
+		echo "$sdev $i" >> $FOUND
+	    fi
+	done
+    fi
+}
+
+#
+# look for a descriptive device name from the given device id
+#
+find_device_name () {
+    if expr "$1" : '[0-9a-f][0-9a-f][0-9a-f][0-9a-f]:[0-9a-f][0-9a-f][0-9a-f][0-9a-f]' >/dev/null; then
+	$lspci -d $1 2>/dev/null| sed -e 's/^.*:..\.. [^:]*: //g'
+	return
+    elif expr "$1" : '[A-Z@][A-Z@][A-Z@][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' >/dev/null; then
+	cardname=`grep '^Card [0-9]\+ .'$1':' $DUMP | head -n 1 | sed -e 's/^Card [0-9]\+ '\''.*:\(.*\)'\'' .*$/\1/'`
+	echo $cardname
+    else
+	echo $1
+    fi
+}
+
+# get hwcfg file type from the given driver name
+get_hwcfg_type () {
+    while read dev driver; do
+	if [ "$driver" = "$1" ]; then
+	    case "$dev" in
+	    *:*)
+		# FIXME: need to look around /sys/bus/pci/* (or use vpid-* ?)
+		devid=`$lspci -d "$dev" | head -n 1 | sed -e 's/ .*$//'`
+		case "$devid" in
+		*:*:*.*) ;;
+		*) devid="0000:$devid" ;;
+		esac
+		echo bus-pci-$devid
+		;;
+	    *)
+		echo $driver
+		;;
+	    esac
+	    break
+	fi
+    done
+}
+
+# clean up all hwcfg-* files containing ALSA modules
+# alsaconf sets up exclusively
+cleanup_hwcfg () {
+    for i in /etc/sysconfig/hardware/hwcfg-*; do
+	grep -q "MODULE='snd-" $i && rm -f $i
+    done
+}
+
+#
+# set up /etc/sysconfig/hardware/hwcfg-* stuff
+#
+setup_hwcfg () {
+    card=$1
+    cleanup_hwcfg
+    cfg=`echo "$devs_olist" | get_hwcfg_type $card`
+    echo "MODULE='$card'" > /etc/sysconfig/hardware/hwcfg-$cfg
+    echo "STARTMODE='auto'" >> /etc/sysconfig/hardware/hwcfg-$cfg
+}
+
+
+#
+# configure and try test sound
+#
+ac_config_card () {
+
+    CARD_DRIVER=snd-$1
+    CARD_OPTS="${*:2}"
+
+    if [ -n "$cfgout" ]; then
+	msg=$(xmsg "
+Configuring %s
+Do you want to modify %s (and %s if present)?" $CARD_DRIVER $cfgout $cfgfile)
+        $DIALOG --yesno "$msg" 10 50 || acex 0
+    else
+	msg=$(xmsg "
+Configuring %s
+Do you want to modify %s?" $CARD_DRIVER $cfgfile)
+        $DIALOG --yesno "$msg" 8 50 || acex 0
+    fi
+    clear
+
+    # Copy conf.modules and make changes.
+    ACB="# --- BEGIN: Generated by ALSACONF, do not edit. ---"
+    ACE="# --- END: Generated by ALSACONF, do not edit. ---"
+
+    # Detect 2.2.X kernel
+    KVER=`uname -r | tr ".-" "  "`
+    KVER1=`echo $KVER | cut -d" " -f1`
+    KVER2=`echo $KVER | cut -d" " -f2`
+    if [ $KVER1 -ge 2 ] && [ $KVER2 -ge 2 ]; then
+	SOUND_CORE="soundcore"
+    else
+	SOUND_CORE="snd"
+    fi
+
+    if [ -r $cfgfile ] ; then
+        if [ "$distribution" = "redhat" -o "$distribution" = "fedora" ] ; then
+            remove_ac_block < $cfgfile | remove_sndconfig_block | uniq > $TMP
+        else
+	    remove_ac_block < $cfgfile | remove_y2_block | uniq > $TMP
+        fi
+    fi
+
+    if [ -z "$have_alias" -a "$kernel" = "new" ]; then
+	if grep -q char-major-116 /lib/modules/`uname -r`/modules.alias; then
+	    have_alias="yes"
+	fi
+    fi
+    if [ -z "$have_alias" ]; then
+echo "alias char-major-116 snd
+alias char-major-14 $SOUND_CORE
+alias sound-service-0-0 snd-mixer-oss
+alias sound-service-0-1 snd-seq-oss
+alias sound-service-0-3 snd-pcm-oss
+alias sound-service-0-8 snd-seq-oss
+alias sound-service-0-12 snd-pcm-oss" >> $addcfg
+    fi
+    if [ -n "$alsa_device_opts" ]; then
+	echo "options snd $alsa_device_opts" >> $addcfg
+    fi
+echo "alias snd-card-0 $CARD_DRIVER
+alias sound-slot-0 $CARD_DRIVER" >> $addcfg
+    if [ -n "$CARD_OPTS" ]; then
+	echo "options $CARD_DRIVER $CARD_OPTS" >> $addcfg
+    fi
+
+    if [ -n "$cfgout" ]; then
+	[ ! -r "$cfgfile" ] || cmp -s "$TMP" "$cfgfile" || cat "$TMP" > "$cfgfile"
+	cmp -s "$addcfg" "$cfgout" || cat "$addcfg" > "$cfgout"
+	test -n "$cfgoldout" && rm -f "$cfgoldout"
+    else
+	echo "$ACB
+# --- ALSACONF version $version ---" >> $TMP
+        cat "$addcfg" >> "$TMP"
+	echo "$ACE
+" >> $TMP
+        cmp -s "$TMP" "$cfgfile" || cat "$TMP" > "$cfgfile"
+    fi
+
+    /sbin/depmod -a 2>/dev/null
+
+    # remove yast2 entries (- only for suse distro)
+    if [ -f /var/lib/YaST/unique.inf ]; then
+	awk '
+BEGIN { in_sound=0; }
+/^\[sound\]$/ { print; in_sound=1; next; }
+/^\[.+\]$/ { print; in_sound=0; next; }
+{ if (in_sound == 0) { print; } }
+' < /var/lib/YaST/unique.inf > $TMP
+	cp -f $TMP /var/lib/YaST/unique.inf
+    fi
+
+    # set up /etc/sysconfig/hardware/*
+    if [ "$distribution" = "suse" ]; then
+	case "$suse_version" in
+	10.[012]*|10)
+	    setup_hwcfg $CARD_DRIVER
+	    ;;
+	esac
+    fi
+
+    farewell
+    clear
+    case "$distribution" in
+    gentoo | debian)
+	xecho "Running update-modules..."
+	update-modules
+	;;
+    esac
+    if [ -x $rcalsasound ] ; then
+      echo Loading driver...
+      $rcalsasound restart
+    fi
+    echo Setting default volumes...
+    if [ -x $bindir/set_default_volume ]; then
+	$bindir/set_default_volume -f
+    else
+	set_mixers
+    fi
+    if [ -f $TESTSOUND ]; then
+      msg=$(gettext "
+       The mixer is set up now for for playing.
+       Shall I try to play a sound sample now?
+
+                           NOTE:
+If you have a big amplifier, lower your volumes or say no.
+    Otherwise check that your speaker volume is open,
+          and look if you can hear test sound.
+")
+      if $DIALOG --yesno "$msg" 13 65 
+      then
+          clear
+	  echo
+	  aplay -N $TESTSOUND
+      fi
+    fi
+    mkdir -p -m 0755 /var/lib/alsa
+    if [ ! -r /var/lib/alsa/asound.state ]; then
+	xecho "Saving the mixer setup used for this in /var/lib/alsa/asound.state."
+	$sbindir/alsactl store
+    fi
+    clear
+    xecho "
+===============================================================================
+
+ Now ALSA is ready to use.
+ For adjustment of volumes, use your favorite mixer.
+
+ Have a lot of fun!
+
+"
+}
+
+# check playback
+# return 0 - OK, 1 - NG, 2 - not working (irq/dma problem)
+ac_try_load () {
+    test -n "$LOGFILE" && echo "$1 ${*:2}" >> "$LOGFILE"
+    /sbin/modprobe snd-$1 ${*:2} >/dev/null 2>&1
+    if $lsmod | grep -q -E '^(snd-|snd_)'$1' '; then
+	: ;
+    else
+	/sbin/modprobe -r snd-$1 >/dev/null 2>&1
+	return 1
+    fi
+
+    # mute mixers
+    amixer set Master 0% mute >/dev/null 2>&1
+    amixer set PCM 0% mute >/dev/null 2>&1
+    
+    # output 0.5 sec
+    head -c 4000 < /dev/zero | aplay -N -r8000 -fS16_LE -traw -c1 > /dev/null 2>&1 &
+    # remember pid
+    pp=$!
+    # sleep for 2 seconds (to be sure -- 1 sec would be enough)
+    sleep 2
+    # kill the child process if still exists.
+    kill -9 $pp > /dev/null 2>&1
+    st=$?
+    ac_cardname=`head -n 1 $PROCFS/asound/cards | sed -e 's/^[0-9].* - \(.*\)$/\1/'`
+    /sbin/modprobe -r snd-$1 >/dev/null 2>&1
+    if [ $st = 0 ]; then
+	# irq problem?
+	test -n "$LOGFILE" && echo "no playback return" >> "$LOGFILE"
+	return 2
+    else
+	# seems ok!
+	test -n "$LOGFILE" && echo "playback OK" >> "$LOGFILE"
+	return 0
+    fi
+}
+
+# check capture
+# return 0 - OK, 1 - NG, 2 - not working (irq/dma problem)
+# ac_try_capture card duplex opts
+ac_try_capture () {
+    test -n "$LOGFILE" && echo "$1 ${*:2}" >> "$LOGFILE"
+    /sbin/modprobe snd-$1 ${*:3} >/dev/null 2>&1
+    if $lsmod | grep -q -E '^(snd-|snd_)'$1' '; then
+	: ;
+    else
+	/sbin/modprobe -r snd-$1 >/dev/null 2>&1
+	return 1
+    fi
+
+    # mute mixers
+    amixer set Master 0% mute >/dev/null 2>&1
+    amixer set PCM 0% mute >/dev/null 2>&1
+
+    play_pid=0
+    if [ $2 = yes ]; then
+	# try duplex - start dummy playing
+	aplay -N -r8000 -fS16_LE -traw -c1 < /dev/zero > /dev/null 2>&1 &
+	play_pid=$!
+    fi
+    # record 1sec
+    arecord -N -d1 > /dev/null 2>&1 &
+    # remember pid
+    pp=$!
+    # sleep for 2 seconds
+    sleep 2
+    # kill the child process if still exists.
+    kill -9 $pp > /dev/null 2>&1
+    st=$?
+    # kill playback process if any
+    test $play_pid != 0 && kill -9 $play_pid
+    /sbin/modprobe -r snd-$1 >/dev/null 2>&1
+    if [ $st = 0 ]; then
+	test -n "$LOGFILE" && echo "capture no return" >> "$LOGFILE"
+	return 2
+    else
+	test -n "$LOGFILE" && echo "capture OK" >> "$LOGFILE"
+	return 0
+    fi
+}
+
+get_dma_pair () {
+    case $1 in
+    0)
+	echo 1 3 5;;
+    1)
+	echo 0 3 5;;
+    3)
+	echo 1 0 5;;
+    5)
+	echo 3 1 0;;
+    esac
+}
+
+#
+# check playback on specified irqs
+#
+# ac_try_irq card opts irqs...
+# return 0 - OK, 1 - NG, 2 - not working (dma problem?)
+#
+ac_try_irq () {
+    card=$1
+    opts="$2 ${mpfx}irq=$3"
+    ac_try_load $card $opts >/dev/null 2>&1
+    result=$?
+    case $result in
+    0)
+	ac_opts="$opts"
+	return 0
+	;;
+    2)
+	for irq in ${*:4}; do
+	    opts="$2 ${mpfx}irq=$irq"
+	    ac_try_load $card $opts >/dev/null 2>&1
+	    if [ $? = 0 ]; then
+		ac_opts="$opts"
+		return 0
+	    fi
+	done
+	return 2
+	;;
+    esac
+    return 1
+}
+
+#
+# check playback/capture on dma1 & dma2 & specified irqs
+#
+# ac_try_dmas card opts irqs...
+# return 0 - OK, 1 - NG
+#
+ac_try_dmas () {
+    dma_list=`check_dma_avail 1 0 3 5`
+    for irq in ${*:3}; do
+	for dma1 in $dma_list; do
+	    for dma2 in `get_dma_pair $dma1`; do
+		opts="$2 ${mpfx}dma1=$dma1 ${mpfx}dma2=$dma2 ${mpfx}irq=$irq"
+		ac_try_load $1 $opts >/dev/null 2>&1
+		result=$?
+		if [ $result = 1 ]; then
+		    if [ $try_all_combination = 1 ]; then
+			continue
+		    else
+			return 1
+		    fi
+		elif [ $result = 0 ]; then
+		    test -n "$LOGFILE" && echo "Now checking capture..." >> "$LOGFILE"
+		    ac_opts="$opts"
+		    ac_try_capture $1 yes $opts >/dev/null 2>&1 && return 0
+		    for d in yes no; do
+			for dma2 in $dma_list; do
+			    if [ $dma1 != $dma2 ]; then
+				opts="$2 ${mpfx}dma1=$dma1 ${mpfx}dma2=$dma2 ${mpfx}irq=$irq"
+				ac_opts="$opts"
+				ac_try_capture $1 $d $opts >/dev/null 2>&1 && return 0
+			    fi
+			done
+		    done
+		    return 0
+		fi
+	    done
+	done
+    done
+    return 1
+}
+
+# check if the option $2 exists in card $1: set value $3
+ac_check_option () {
+    if /sbin/modinfo -p snd-$1 | grep -q $2; then
+      echo "$2=$3"
+    fi
+}
+
+ac_try_card_sb8 () {
+    card=sb8
+    irq_list=`check_irq_avail 5 3 9 10 7`
+    for dma8 in `check_dma_avail 1 3`; do
+	opts="${mpfx}dma8=$dma8"
+	ac_try_irq $card "$opts" $irq_list && return 0
+    done
+    return 1
+}
+
+ac_try_card_sb16 () {
+    card=sb16
+    isapnp=`ac_check_option $card ${mpfx}isapnp 0`
+    opts="$isapnp"
+    irq_list=`check_irq_avail 5 9 10 7 3`
+    dma_list=`check_dma_avail 0 1 3`
+    dma16_list=`check_dma_avail 5 6 7`
+    # at first try auto-probing by driver itself
+    ac_try_load $card $opts >/dev/null 2>&1
+    result=$?
+    case $result in
+    0)
+	ac_opts="$opts"
+	ac_try_capture $card yes $opts >/dev/null 2>&1 && return 0
+	for d in yes no; do
+	    for dma8 in $dma_list; do
+		for irq in $irq_list; do
+		    opts="${mpfx}dma8=$dma8 ${mpfx}irq=$irq $isapnp"
+		    ac_try_capture $card $d $opts >/dev/null 2>&1 && return 0
+		done
+	    done
+	done
+	return 0
+	;;
+    2)
+	for dma16 in $dma16_list; do
+	    opts="${mpfx}dma16=$dma16 $isapnp"
+	    if ac_try_irq $card "$opts" $irq_list ; then
+		ac_try_capture $card yes $ac_opts >/dev/null 2>&1 && return 0
+		ac_opts_saved="$ac_opts"
+		for d in yes no; do
+		    for dma8 in $dma_list; do
+			ac_opts="$ac_opts_saved ${mpfx}dma8=$dma8"
+			ac_try_capture $card $d $ac_opts >/dev/null 2>&1 && return 0
+		    done
+		done
+		# return anyway here..
+		return 0
+	    fi
+	done
+	;;
+    esac
+    return 1
+}
+
+ac_try_card_es1688 () {
+    card=es1688
+    opts=""
+    irq_list=`check_irq_avail 5 9 10 7`
+    for dma8 in `check_dma_avail 1 3 0`; do
+	opts="${mpfx}dma8=$dma8 ${mpfx}mpu_irq=-1"
+	ac_try_irq $card "$opts" $irq_list && return 0
+    done
+    return 1
+}
+
+ac_try_card_es18xx () {
+    card=es18xx
+    opts=`ac_check_option $card ${mpfx}isapnp 0`
+    ac_try_dmas $card "$opts" `check_irq_avail 5 9 10 7` && return 0
+    return 1
+}
+
+ac_try_card_cs4236 () {
+    card=cs4236
+    irq_list=`check_irq_avail 5 7 9 11 12 15`
+    isapnp=`ac_check_option $card ${mpfx}isapnp 0`
+    for cport in 0x538 0x210 0xf00; do
+	for port in 0x530 0x534; do
+	    opts="${mpfx}port=$port ${mpfx}cport=$cport $isapnp"
+	    ac_try_dmas $card "$opts" $irq_list && return 0
+	done
+    done
+    return 1
+}
+
+ac_try_card_cs4232 () {
+    card=cs4232
+    irq_list=`check_irq_avail 5 7 9 11 12 15`
+    isapnp=`ac_check_option $card ${mpfx}isapnp 0`
+    for cport in 0x538 0x210 0xf00; do
+	for port in 0x530 0x534; do
+	    opts="${mpfx}port=$port ${mpfx}cport=$cport $isapnp"
+	    ac_try_dmas $card "$opts" $irq_list && return 0
+	done
+    done
+    return 1
+}
+
+ac_try_card_cs4231 () {
+    card=cs4231
+    irq_list=`check_irq_avail 5 7 9 11 12 15`
+    for port in 0x530 0x534; do
+	opts="${mpfx}port=$port"
+	ac_try_dmas $card "$opts" $irq_list && return 0
+    done
+    return 1
+}
+
+ac_try_card_opl3sa2 () {
+    card=opl3sa2
+    irq_list=`check_irq_avail 5 9 3 1 11 12 15 0`
+    isapnp=`ac_check_option $card ${mpfx}isapnp 0`
+    for port in 0x370 0x538 0xf86 0x100; do
+	for wss_port in 0x530 0xe80 0xf40 0x604; do
+	    opts="${mpfx}fm_port=-1 ${mpfx}midi_port=-1 ${mpfx}port=$port ${mpfx}wss_port=$wss_port $isapnp"
+	    ac_try_dmas $card "$opts" $irq_list && return 0
+	done
+    done
+    return 1
+}
+
+ac_config_legacy () {
+   title=$(gettext "WARNING")
+   msg=$(gettext "
+   Probing legacy ISA cards might make
+   your system unstable.
+
+        Do you want to proceed?
+
+")
+    $DIALOG --title "$title" --yesno "$msg" 10 50 || acex 0
+
+    if [ x"$1" = x ]; then
+	probe_list="$LEGACY_CARDS"
+    else
+	probe_list=$*
+    fi
+    menu_args=()
+
+    for card in $probe_list; do
+	cardname=`/sbin/modinfo -d snd-$card | sed -e 's/^\"\(.*\)\"$/\1/g'`
+	if [ x"$cardname" != x ]; then
+	    menu_args=("${menu_args[@]}" "$card" "$cardname" "on")
+	fi
+    done
+    if [ x$menu_args = x ]; then
+	msg=$(gettext "No legacy drivers are available
+   for your machine")
+	$DIALOG --msgbox "$msg" 5 50
+	return 1
+    fi
+    title=$(gettext "Driver Selection")
+    msg=$(gettext "           Probing legacy ISA cards
+
+        Please select the drivers to probe:")
+    $DIALOG --title "$title" --checklist "$msg" \
+	17 64 8 "${menu_args[@]}" 2> $FOUND || acex 0
+
+    if [ $try_all_combination != 1 ]; then
+	msg=$(gettext "
+ Shall I try all possible DMA and IRQ combinations?
+ With this option, some unconventional configuration
+ might be found, but it will take much longer time.")
+	if $DIALOG --yesno "$msg" 10 60
+	    then
+	    try_all_combination=1
+	fi
+    fi
+
+    xecho "Probing legacy cards..   This may take a few minutes.."
+    echo -n $(gettext "Probing: ")
+    cards=`cat $FOUND | tr -d \"`
+    for card in $cards; do
+	echo -n " $card"
+	ac_opts=""
+	if eval ac_try_card_$card ; then
+	    xecho " : FOUND!!"
+	    ac_config_card $card $ac_opts
+	    return 0
+	fi
+    done
+    echo
+    title=$(gettext "Result")
+    msg=$(gettext "No legacy cards found")
+    $DIALOG --title "$title" --msgbox "$msg" 5 50
+    return 1
+}
+
+#
+# main part continued..
+#
+
+if test -n "$LOGFILE" ; then
+    touch "$LOGFILE"
+    echo -n "Starting alsaconf: " >> "$LOGFILE"
+    date >> "$LOGFILE"
+fi
+
+if [ x"$legacy_probe_card" != x ]; then
+    ac_opts=""
+    if eval ac_try_card_$legacy_probe_card >/dev/null 2>&1; then
+	echo "$ac_opts"
+	echo "$ac_cardname"
+	exit 0
+    else
+	echo "FAILED"
+	exit 1
+    fi
+fi
+
+intro
+
+if [ $do_legacy_only = 1 ]; then
+    ac_config_legacy
+    exit 0
+fi
+    
+probe_cards
+
+devs_found=()
+devs_olist=""
+
+if [ -s "$FOUND" ]; then
+    while read dev card ; do
+	MODDIR=/lib/modules/`uname -r`
+	find $MODDIR -type f | grep -q -E $card'\.(o|ko)' || continue
+	cardname=`find_device_name $dev | cut -c 1-64`
+	if [ -z "$cardname" ]; then
+	    cardname="$card"
+	fi
+	card=${card##snd-}
+	devs_found=("${devs_found[@]}" "$card" "$cardname")
+	devs_devs=("${devs_devs[@]}" "$card" "$dev")
+    done <"$FOUND"
+    devs_olist=`cat $FOUND`
+fi
+if [ x$devs_found != x ]; then
+    #
+    # check for TP600E
+    #
+    if [ ${devs_found[0]} = cs46xx ]; then
+	if $lspci -nv 2>/dev/null| grep -q "Subsystem: 1014:1010"; then
+	    msg=$(gettext "
+ Looks like you having a Thinkpad 600E or 770 notebook.
+ On this notebook, CS4236 driver should be used
+ although CS46xx chip is detected.
+
+ Shall I try to snd-cs4236 driver and probe
+ the legacy ISA configuration?")
+	    if $DIALOG --yesno "$msg" 13 60
+	    then
+		try_all_combination=1
+		ac_config_legacy cs4236
+		exit 0
+	    fi
+	elif $lspci -nv 2>/dev/null| grep -q "Subsystem: 8086:8080"; then
+	    msg=$(gettext "
+ Looks like you having a Dell Dimension machine.
+ On this machine, CS4232 driver should be used
+ although CS46xx chip is detected.
+
+ Shall I try to snd-cs4232 driver and probe
+ the legacy ISA configuration?")
+	    if $DIALOG --yesno "$msg" 13 60
+	    then
+		try_all_combination=1
+		ac_config_legacy cs4232
+		exit 0
+	    fi
+        fi	
+    fi
+   
+    devs_found=("${devs_found[@]}" "legacy" "Probe legacy ISA (non-PnP) chips")
+    title=$(gettext "Soundcard Selection")
+    msg=$(gettext "
+         Following card(s) are found on your system.
+         Choose a soundcard to configure:
+")
+    $DIALOG --title "$title" --menu "$msg" 17 76 8 "${devs_found[@]}" --output-fd 3 3> $FOUND || acex 0
+    card=`head -n 1 $FOUND`
+    if [ "$card" = "legacy" ]; then
+	ac_config_legacy
+    else
+	ac_config_card "$card"
+    fi
+    exit 0
+else
+    msg=$(gettext "
+        No supported PnP or PCI card found.
+
+ Would you like to probe legacy ISA sound cards/chips?
+
+")
+    if $DIALOG --yesno "$msg" 9 60 ; then
+	ac_config_legacy
+	exit 0
+    fi
+fi
+
+rm -f "$FOUND" "$DUMP"
+exit 0
diff --git a/usr/sbin/alsactl b/usr/sbin/alsactl
new file mode 100755
index 0000000..7a303c8
--- /dev/null
+++ b/usr/sbin/alsactl
Binary files differ
diff --git a/usr/share/alsa/init/00main b/usr/share/alsa/init/00main
new file mode 100644
index 0000000..660df38
--- /dev/null
+++ b/usr/share/alsa/init/00main
@@ -0,0 +1,49 @@
+# This is toplevel configuration for for 'alsactl init'.
+# See 'man alsactl_init' for syntax.
+
+# set root device directory in sysfs for soundcard for ATTR{} command
+CONFIG{sysfs_device}="/class/sound/card$cardinfo{card}/device"
+ACCESS!="$sysfsroot$config{sysfs_device}", \
+	CONFIG{sysfs_device}="/class/sound/controlC$cardinfo{card}/device"
+
+# test for extra commands
+ENV{CMD}=="help", INCLUDE="help", GOTO="00main_end"
+ENV{CMD}=="info", INCLUDE="info", GOTO="00main_end"
+ENV{CMD}=="default", INCLUDE="default", GOTO="00main_end"
+ENV{CMD}=="test", INCLUDE="test", GOTO="00main_end"
+ENV{CMD}=="*", ERROR="Unknown command '$env{CMD}'\n", GOTO="00main_end"
+
+# include files with real configuration
+#
+# steps are:
+#   1) look for preinit subdirectory and parse all files in it
+#   2) if RESULT=="skip", skip ALSA standard configuration files
+#   3) do ALSA standard configuration
+#   4) look for postinit subdirectory and parse all files in it
+#   5) if RESULT!="true", initialize hardware using a guess method,
+#      print an error message and return with exit code 99
+#   6) return with exit code 0 (success)
+#
+
+RESULT="unknown"
+ACCESS=="preinit", INCLUDE="preinit"
+RESULT=="skip", GOTO="init_end"
+
+# real ALSA configuration database
+CARDINFO{driver}=="HDA-Intel", INCLUDE="hda", GOTO="init_end"
+CARDINFO{driver}=="CA0106", INCLUDE="ca0106", GOTO="init_end"
+CARDINFO{driver}=="Test", INCLUDE="test", GOTO="init_end"
+
+LABEL="init_end"
+ACCESS=="postinit", INCLUDE="postinit"
+RESULT=="true", GOTO="00_mainend"
+ERROR="Found hardware: \"$cardinfo{driver}\" \"$cardinfo{mixername}\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n"
+ERROR="Hardware is initialized using a generic method\n"
+INCLUDE="default"
+EXIT="99"
+
+#
+# label identifying end of main file
+#
+
+LABEL="00main_end"
diff --git a/usr/share/alsa/init/default b/usr/share/alsa/init/default
new file mode 100644
index 0000000..5fb0113
--- /dev/null
+++ b/usr/share/alsa/init/default
@@ -0,0 +1,274 @@
+#
+# Default ALSA volume levels and setting when initialization database fails.
+#
+# Basic rules are:
+#  - keep volumes at minimal level, but sound should be hearable
+#  - enable just main speakers for playback and main microphone for recording
+#
+
+# **************************************************************************
+# playback
+# **************************************************************************
+
+ENV{ppercent}:="75%"
+ENV{cpercent}:="75%"
+ENV{pvolume}:="-20dB"
+ENV{cvolume}:="12dB"
+ENV{has_pmaster_vol}:="false"
+
+CTL{reset}="mixer"
+CTL{name}="Playback Volume",CTL{do_search}=="1", \
+  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+CTL{name}="Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Master Playback Volume",CTL{do_search}=="1", \
+  ENV{has_pmaster_vol}:="true", \
+  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+CTL{name}="Master Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Master Front Playback Volume",CTL{do_search}=="1", \
+  ENV{has_pmaster_vol}:="true", \
+  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+CTL{name}="Master Front Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Master Digital Playback Volume",CTL{do_search}=="1", \
+  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+CTL{name}="Master Digital Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Front Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn front volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Front Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Surround Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn front volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Surround Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Center Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn front volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Center Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="LFE Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn front volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="LFE Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Headphone Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn headphone volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Headphone Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Headphone Playback Volume",CTL{index}="1",PROGRAM!="__ctl_search",\
+  GOTO=""
+# if master volume control is present, turn headphone volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Headphone Playback Switch",CTL{index}="1",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn speaker volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Speaker Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Front Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn speaker volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Front Speaker Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Surround Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn speaker volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Surround Speaker Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Center Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn speaker volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="Center Speaker Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="LFE Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn speaker volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+LABEL=""
+CTL{name}="LFE Speaker Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="PC Speaker Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+CTL{name}="PC Speaker Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="PCM Playback Volume",PROGRAM!="__ctl_search", \
+ CTL{name}="PCM Volume",PROGRAM!="__ctl_search", GOTO=""
+# if master volume control is present, turn PCM volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+# exception - some HDA codecs have shifted dB range
+CTL{dBmin}=="-34.50dB",CTL{dBmax}=="12.00dB",CTL{write}=="0dB",GOTO=""
+CTL{dBmin}=="-30.00dB",CTL{dBmax}=="0dB",CTL{write}=="0dB",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="75%"
+LABEL=""
+CTL{name}="PCM Playback Switch",CTL{do_search}=="1", CTL{values}="on"
+CTL{name}="PCM Switch",CTL{do_search}=="1",CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="PCM Playback Volume",CTL{index}="1",PROGRAM!="__ctl_search", \
+  CTL{name}="PCM Volume",PROGRAM!="__ctl_search",GOTO=""
+# if master volume control is present, turn PCM volume to max
+ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
+ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""
+# exception - some HDA codecs have shifted dB range
+CTL{dBmin}=="-34.50dB",CTL{dBmax}=="12.00dB",CTL{write}=="0dB",GOTO=""
+CTL{dBmin}=="-30.00dB",CTL{dBmax}=="0dB",CTL{write}=="0dB",GOTO=""
+CTL{write}!="$env{pvolume}",CTL{values}="75%"
+LABEL=""
+CTL{name}="PCM Playback Switch",CTL{index}="1",CTL{do_search}=="1", \
+  CTL{values}="on"
+CTL{name}="PCM Switch",CTL{index}="1",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="DAC Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+CTL{name}="DAC Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Synth Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+CTL{name}="Synth Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Wave Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="100%"
+CTL{name}="Wave Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Music Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="100%"
+CTL{name}="Music Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="CD Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="0%"
+CTL{name}="CD Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="off"
+
+CTL{reset}="mixer"
+CTL{name}="Mono Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+CTL{name}="Mono Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="Master Mono Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"
+CTL{name}="Master Mono Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{reset}="mixer"
+CTL{name}="AC97 Playback Volume",CTL{do_search}=="1", \
+  CTL{values}="100%"
+CTL{name}="AC97 Playback Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+#
+# Powermacs
+#
+
+CTL{reset}="mixer"
+CTL{name}="DRC Range",CTL{do_search}=="1", \
+  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
+
+# **************************************************************************
+# capture
+# **************************************************************************
+
+CTL{reset}="mixer"
+CTL{name}="Capture Volume",CTL{do_search}=="1", \
+  CTL{write}!="$env{cvolume}",CTL{values}="$env{cpercent}"
+CTL{name}="Capture Switch",CTL{do_search}=="1", \
+  CTL{values}="on"
+
+CTL{name}="Capture Source",PROGRAM!="__ctl_search", GOTO=""
+CTL{enums}=="*|Internal Mic|*",CTL{values}="Internal Mic", GOTO=""
+CTL{enums}=="*|Mic|*",CTL{values}="Mic"
+LABEL=""
+
+CTL{name}="Input Source",PROGRAM!="__ctl_search", GOTO=""
+CTL{enums}=="*|Internal Mic|*",CTL{values}="Internal Mic", GOTO=""
+CTL{enums}=="*|Mic|*",CTL{values}="Mic"
+LABEL=""
+
+CTL{name}="Digital Input Source",PROGRAM!="__ctl_search", GOTO=""
+CTL{enums}=="*|Digital Mic 1|*",CTL{values}="Digital Mic 1", GOTO=""
+CTL{enums}=="*|Mic|*",CTL{values}="Mic"
+LABEL=""
+
+CTL{name}="Mic Boost",CTL{do_search}=="1", CTL{values}="on"
+CTL{name}="Internal Mic Boost",CTL{do_search}=="1", CTL{values}="on"
diff --git a/usr/share/alsa/init/hda b/usr/share/alsa/init/hda
new file mode 100644
index 0000000..a6919f1
--- /dev/null
+++ b/usr/share/alsa/init/hda
@@ -0,0 +1,39 @@
+# Configuration for HDA Intel driver (High Definition Audio - Azalia)
+
+CARDINFO{mixername}=="Realtek ALC880", \
+  ATTR{subsystem_vendor}=="0x1025", ATTR{subsystem_device}=="0x0070", \
+  GOTO="Acer Travelmate 8100"
+CARDINFO{mixername}=="Analog Devices AD1984", \
+  ATTR{subsystem_vendor}=="0x17aa", ATTR{subsystem_device}=="0x20ac", \
+  GOTO="Lenovo T61"
+RESULT="false", EXIT="return"
+ 
+LABEL="Acer Travelmate 8100"
+# playback
+CTL{reset}="mixer"
+CTL{name}="Master Playback Volume", CTL{value}="-21dB"
+CTL{name}="Master Playback Switch", CTL{value}="on"
+CTL{name}="Headphone Playback Switch", CTL{value}="on,on"
+CTL{name}="Front Playback Volume", CTL{value}="-29dB,-29dB"
+CTL{name}="Front Playback Switch", CTL{value}="on,on"
+CTL{name}="PCM Playback Volume", CTL{value}="0dB,0dB"
+# capture
+CTL{name}="Input Source", CTL{value}="Mic"
+CTL{name}="Capture Volume", CTL{value}="20dB,20dB"
+CTL{name}="Capture Switch", CTL{value}="on,on"
+RESULT="true", EXIT="return"
+
+LABEL="Lenovo T61"
+# playback
+CTL{reset}="mixer"
+CTL{name}="Master Playback Volume", CTL{value}="-13.5dB"
+CTL{name}="Master Playback Switch", CTL{value}="on"
+CTL{name}="Headphone Playback Switch", CTL{value}="on,on"
+CTL{name}="Speaker Playback Switch", CTL{value}="on,on"
+CTL{name}="PCM Playback Volume", CTL{value}="0dB,0dB"
+# capture
+CTL{name}="Input Source", CTL{value}="Internal Mic"
+CTL{name}="Internal Mic Boost", CTL{value}="1"
+CTL{name}="Capture Volume", CTL{value}="9dB,9dB"
+CTL{name}="Capture Switch", CTL{value}="on,on"
+RESULT="true", EXIT="return"
diff --git a/usr/share/alsa/init/help b/usr/share/alsa/init/help
new file mode 100644
index 0000000..4f0ba70
--- /dev/null
+++ b/usr/share/alsa/init/help
@@ -0,0 +1,8 @@
+# help page
+
+PRINT="Available commands (identified by the environment variable CMD):\n\n"
+PRINT="  (not set)     Do a soundcard initialization\n"
+PRINT="  default       Do a default (guess method) initialization\n"
+PRINT="  help          Show this information\n"
+PRINT="  info          Print all available hardware identification\n"
+PRINT="  test          Do alsactl utility parser tests\n"
diff --git a/usr/share/alsa/init/info b/usr/share/alsa/init/info
new file mode 100644
index 0000000..a4fea19
--- /dev/null
+++ b/usr/share/alsa/init/info
@@ -0,0 +1,22 @@
+# show information about card
+
+PRINT="CARDINFO:\n"
+PRINT="  CARDINFO{id}=\"$CARDINFO{id}\"\n"
+PRINT="  CARDINFO{card}=\"$CARDINFO{card}\"\n"
+PRINT="  CARDINFO{driver}=\"$CARDINFO{driver}\"\n"
+PRINT="  CARDINFO{name}=\"$CARDINFO{name}\"\n"
+PRINT="  CARDINFO{longname}=\"$CARDINFO{longname}\"\n"
+PRINT="  CARDINFO{mixername}=\"$CARDINFO{mixername}\"\n"
+PRINT="  CARDINFO{components}=\"$CARDINFO{components}\"\n"
+
+# sysfs stuff
+PRINT="sysfs:\n"
+ATTR{bus}=="*", PRINT="  ATTR{bus}=\"$ATTR{bus}\"\n"
+ATTR{class}=="*", PRINT="  ATTR{class}=\"$ATTR{class}\"\n"
+ATTR{driver}=="*", PRINT="  ATTR{driver}=\"$ATTR{driver}\"\n"
+ATTR{vendor}=="*", PRINT="  ATTR{vendor}=\"$ATTR{vendor}\"\n"
+ATTR{device}=="*", PRINT="  ATTR{device}=\"$ATTR{device}\"\n"
+ATTR{subsystem_vendor}=="*", \
+  PRINT="  ATTR{subsystem_vendor}=\"$ATTR{subsystem_vendor}\"\n"
+ATTR{subsystem_device}=="*", \
+  PRINT="  ATTR{subsystem_device}=\"$ATTR{subsystem_device}\"\n"
diff --git a/usr/share/alsa/init/test b/usr/share/alsa/init/test
new file mode 100644
index 0000000..56659f8
--- /dev/null
+++ b/usr/share/alsa/init/test
@@ -0,0 +1,270 @@
+# Test code
+# Just for debugging purposes
+
+PRINT="Default CTL:\n"
+PRINT="  CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="  CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="  CTL{device}=\"$ctl{device}\"\n"
+PRINT="  CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="  CTL{name}=\"$ctl{name}\"\n"
+PRINT="  CTL{index}=\"$ctl{index}\"\n"
+
+CTL{reset}="mixer"
+
+PRINT="After CTL{reset}=\"mixer\":\n"
+PRINT="  CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="  CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="  CTL{device}=\"$ctl{device}\"\n"
+PRINT="  CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="  CTL{name}=\"$ctl{name}\"\n"
+PRINT="  CTL{index}=\"$ctl{index}\"\n"
+
+CTL{numid}="987"
+CTL{iface}="sequencer"
+CTL{device}="10"
+CTL{subdevice}="20"
+CTL{name}="Just Test"
+CTL{index}="999"
+
+PRINT="After test sequence:\n"
+PRINT="  CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="  CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="  CTL{device}=\"$ctl{device}\"\n"
+PRINT="  CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="  CTL{name}=\"$ctl{name}\"\n"
+PRINT="  CTL{index}=\"$ctl{index}\"\n"
+
+ERROR="Ignore following error:\n  "
+PROGRAM="__just_test"
+
+PRINT="CTL{do_count} test:\n"
+CTL{search}="mixer", CTL{name}="*Switch*", \
+  PRINT="  *Switch* count result: $ctl{do_count}\n"
+
+PRINT="__ctl_search test:\n"
+CTL{search}="mixer", CTL{name}="*Switch*", PROGRAM!="__ctl_search", GOTO="skip_switch_search"
+PRINT="  *Switch 0* search result: $result\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+CTL{search}="mixer", CTL{name}="*Switch*", PROGRAM!="__ctl_search 1", GOTO="skip_switch_search"
+PRINT="  *Switch 1* search result: $result\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+
+PRINT="First ten elements:\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 0}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #0:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 1}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #1:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 2}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #2:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 3}!="3", GOTO="skip_first_ten_search"
+PRINT="  Element #3:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 4}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #4:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 5}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #5:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 6}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #6:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 7}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #7:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 8}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #8:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+CTL{search}="mixer", CTL{name}="*", CTL{do_search 9}!="1", GOTO="skip_first_ten_search"
+PRINT="  Element #9:\n"
+PRINT="    CTL{numid}=\"$ctl{numid}\"\n"
+PRINT="    CTL{iface}=\"$ctl{iface}\"\n"
+PRINT="    CTL{device}=\"$ctl{device}\"\n"
+PRINT="    CTL{subdevice}=\"$ctl{subdevice}\"\n"
+PRINT="    CTL{name}=\"$ctl{name}\"\n"
+PRINT="    CTL{index}=\"$ctl{index}\"\n"
+PRINT="    CTL{type}=\"$ctl{type}\"\n"
+PRINT="    CTL{attr}=\"$ctl{attr}\"\n"
+PRINT="    CTL{owner}=\"$ctl{owner}\"\n"
+PRINT="    CTL{count}=\"$ctl{count}\"\n"
+PRINT="    CTL{min}=\"$ctl{min}\"\n"
+PRINT="    CTL{max}=\"$ctl{max}\"\n"
+PRINT="    CTL{step}=\"$ctl{step}\"\n"
+PRINT="    CTL{dBmin}=\"$ctl{dBmin}\"\n"
+PRINT="    CTL{dBmax}=\"$ctl{dBmax}\"\n"
+PRINT="    CTL{items}=\"$ctl{items}\"\n"
+PRINT="    CTL{value}=\"$ctl{value}\"\n"
+LABEL="skip_first_ten_search"
+
+PRINT="Elements write test #1:\n", \
+  CTL{search}="mixer", CTL{name}="Front Playback Switch", \
+  CTL{do_search}=="1", CTL{value}="on,on", \
+  PRINT="  result=$result\n"
+PRINT="Elements write test #2:\n", \
+  CTL{search}="mixer", CTL{name}="Front Playback Volume", \
+  CTL{do_search}=="1", CTL{value}="32,32", \
+  PRINT="  result=$result\n"
+PRINT="Elements write test #3:\n", \
+  CTL{search}="mixer", CTL{name}="Front Playback Volume Error", \
+  CTL{do_search}=="1", \
+PRINT="  result=$result\n"
+
+#CTL{reset}="mixer", CTL{name}="Input Source", PRINT="***$ctl{enums}\n"
+
+PRINT="\nAll tests done..\n"
