[Pkg-alsa-devel] Bug#613103: Please provide alsa-utils-udeb
Samuel Thibault
sthibault at debian.org
Sun May 1 15:47:34 UTC 2011
Ping?
Samuel Thibault, le Sat 12 Feb 2011 22:19:38 +0100, a écrit :
> I'm currently working on software speech synthesis in the Debian
> Installer, and now merging my tested patches.
>
> Here is the patch I'm using for alsa-lib to create an
> alsa-utils-udeb package, which is needed to unmute all
> cards. I had to factorize the functions for that into a
> /usr/share/alsa/utils.sh that both /etc/init.d/alsa-utils and
> /lib/debian-installer-startup.d/S37alsa-utils-udeb can use
Index: control
===================================================================
--- control (révision 2445)
+++ control (copie de travail)
@@ -30,3 +30,13 @@
o aconnect, aseqnet, aseqdump: command line MIDI sequencer control
.
ALSA is the Advanced Linux Sound Architecture.
+
+Package: alsa-utils-udeb
+Architecture: alpha amd64 arm armeb armel armhf avr32 hppa i386 ia64 m32r m68k mips mipsel powerpc powerpcspe ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc sparc64
+Provides: audio-mixer
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Package-Type: udeb
+Description: Utilities for configuring and using ALSA
+ Included tools: amixer and alsactl.
+ .
+ ALSA is the Advanced Linux Sound Architecture.
Index: alsa-utils-udeb.start
===================================================================
--- alsa-utils-udeb.start (révision 0)
+++ alsa-utils-udeb.start (révision 0)
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+. /usr/share/alsa/utils.sh
+
+preinit_levels all
+sanify_levels all
Modification de propriétés sur alsa-utils-udeb.start
___________________________________________________________________
Ajouté : svn:executable
+ *
Index: rules
===================================================================
--- rules (révision 2445)
+++ rules (copie de travail)
@@ -65,10 +65,14 @@
dh_testdir
dh_testroot
dh_installdirs
+ dh_install
install $(INSTALL_UAG) -m644 debian/udev.rules \
debian/alsa-utils/lib/udev/rules.d/80-alsa.rules
install $(INSTALL_UAG) -m755 debian/udev.script \
debian/alsa-utils/lib/udev/alsa-utils
+ install $(CURDIR)/debian/alsa-utils/usr/bin/amixer $(CURDIR)/debian/alsa-utils-udeb/usr/bin/
+ install $(CURDIR)/debian/alsa-utils/usr/sbin/alsactl $(CURDIR)/debian/alsa-utils-udeb/usr/sbin/
+ install $(CURDIR)/debian/alsa-utils-udeb.start $(CURDIR)/debian/alsa-utils-udeb/lib/debian-installer-startup.d/S37alsa-utils-udeb
dh_link
DH_OPTIONS= dh_installinit --no-start -- start 50 S . stop 50 0 1 6 .
#dh_installinit
Index: alsa-utils-udeb.dirs
===================================================================
--- alsa-utils-udeb.dirs (révision 0)
+++ alsa-utils-udeb.dirs (révision 0)
@@ -0,0 +1,3 @@
+usr/bin
+usr/sbin
+lib/debian-installer-startup.d
Index: alsa-utils-udeb.install
===================================================================
--- alsa-utils-udeb.install (révision 0)
+++ alsa-utils-udeb.install (révision 0)
@@ -0,0 +1 @@
+debian/utils.sh /usr/share/alsa
Index: init
===================================================================
--- init (révision 2445)
+++ init (copie de travail)
@@ -27,6 +27,7 @@
MYNAME=/etc/init.d/alsa-utils
. /lib/lsb/init-functions
+. /usr/share/alsa/utils.sh
# $1 EXITSTATUS
# [$2 MESSAGE]
@@ -48,8 +49,6 @@
executable amixer || { echo "${MYNAME}: Error: No amixer program available." >&2 ; exit 1 ; }
-bugout() { echo "${MYNAME}: Programming error" >&2 ; exit 123 ; }
-
# $1 <card ID> | "all"
restore_levels()
{
@@ -85,185 +84,8 @@
fi
}
-echo_card_indices()
-{
- if [ -f /proc/asound/cards ] ; then
- sed -n -e's/^[[:space:]]*\([0-7]\)[[:space:]].*/\1/p' /proc/asound/cards
- fi
-}
-filter_amixer_output()
-{
- sed \
- -e '/Unable to find simple control/d' \
- -e '/Unknown playback setup/d' \
- -e '/^$/d'
-}
-
-# The following functions try to set many controls.
-# No card has all the controls and so some of the attempts are bound to fail.
-# Because of this, the functions can't return useful status values.
-
-# $1 <control>
-# $2 <level>
-# $CARDOPT
-unmute_and_set_level()
-{
- { [ "$2" ] && [ "$CARDOPT" ] ; } || bugout
- amixer $CARDOPT -q set "$1" "$2" unmute 2>&1 | filter_amixer_output || :
- return 0
-}
-
-# $1 <control>
-# $CARDOPT
-mute_and_zero_level()
-{
- { [ "$1" ] && [ "$CARDOPT" ] ; } || bugout
- amixer $CARDOPT -q set "$1" "0%" mute 2>&1 | filter_amixer_output || :
- return 0
-}
-
-# $1 <control>
-# $2 "on" | "off"
-# $CARDOPT
-switch_control()
-{
- { [ "$2" ] && [ "$CARDOPT" ] ; } || bugout
- amixer $CARDOPT -q set "$1" "$2" 2>&1 | filter_amixer_output || :
- return 0
-}
-
# $1 <card ID>
-sanify_levels_on_card()
-{
- CARDOPT="-c $1"
-
- unmute_and_set_level "Master" "80%"
- unmute_and_set_level "Master Mono" "80%" # See Bug#406047
- unmute_and_set_level "Master Digital" "80%" # E.g., cs4237B
- unmute_and_set_level "Playback" "80%"
- unmute_and_set_level "Headphone" "70%"
- unmute_and_set_level "PCM" "80%"
- unmute_and_set_level "PCM,1" "80%" # E.g., ess1969
- unmute_and_set_level "DAC" "80%" # E.g., envy24, cs46xx
- unmute_and_set_level "DAC,0" "80%" # E.g., envy24
- unmute_and_set_level "DAC,1" "80%" # E.g., envy24
- unmute_and_set_level "Synth" "80%"
- unmute_and_set_level "CD" "80%"
-
- mute_and_zero_level "Mic"
- mute_and_zero_level "IEC958" # Ubuntu #19648
-
- # Intel P4P800-MX (Ubuntu bug #5813)
- switch_control "Master Playback Switch" on
- switch_control "Master Surround" on
-
- # Trident/YMFPCI/emu10k1:
- unmute_and_set_level "Wave" "80%"
- unmute_and_set_level "Music" "80%"
- unmute_and_set_level "AC97" "80%"
-
- # DRC:
- unmute_and_set_level "Dynamic Range Compression" "80%"
-
- # Required for HDA Intel (hda-intel):
- unmute_and_set_level "Front" "80%"
-
- # Required for SB Live 7.1/24-bit (ca0106):
- unmute_and_set_level "Analog Front" "80%"
-
- # Required at least for Via 823x hardware on DFI K8M800-MLVF Motherboard with kernels 2.6.10-3/4 (see ubuntu #7286):
- switch_control "IEC958 Capture Monitor" off
-
- # Required for hardware allowing toggles for AC97 through IEC958,
- # valid values are 0, 1, 2, 3. Needs to be set to 0 for PCM1.
- unmute_and_set_level "IEC958 Playback AC97-SPSA" "0"
-
- # Required for newer Via hardware (see Ubuntu #31784)
- unmute_and_set_level "VIA DXS,0" "80%"
- unmute_and_set_level "VIA DXS,1" "80%"
- unmute_and_set_level "VIA DXS,2" "80%"
- unmute_and_set_level "VIA DXS,3" "80%"
-
- # Required on some notebooks with ICH4:
- switch_control "Headphone Jack Sense" off
- switch_control "Line Jack Sense" off
-
- # Some machines need one or more of these to be on;
- # others need one or more of these to be off:
- #
- # switch_control "External Amplifier" on
- switch_control "Audigy Analog/Digital Output Jack" on
- switch_control "SB Live Analog/Digital Output Jack" on
-
- # D1984 -- Thinkpad T61/X61
- switch_control "Speaker" on
- switch_control "Headphone" on
-
- # HDA-Intel w/ "Digital" capture mixer (See Ubuntu #193823)
- unmute_and_set_level "Digital" "80%"
-
- # On MacBookPro5,3 and later models (See Bug#597791)
- unmute_and_set_level "Front Speaker" "80%"
- # On MacBook5,2 models (See Bug#602973)
- unmute_and_set_level "LFE" "80%"
-
- # On Intel 82801H (See Bug#603550)
- unmute_and_set_level "Speaker" "80%"
-
- return 0
-}
-
-# $1 <card ID> | "all"
-sanify_levels()
-{
- TTSDML_RETURNSTATUS=0
- case "$1" in
- all)
- for CARD in $(echo_card_indices) ; do
- sanify_levels_on_card "$CARD" || TTSDML_RETURNSTATUS=1
- done
- ;;
- *)
- sanify_levels_on_card "$1" || TTSDML_RETURNSTATUS=1
- ;;
- esac
- return $TTSDML_RETURNSTATUS
-}
-
-# $1 <card ID>
-preinit_levels_on_card()
-{
- CARDOPT="-c $1"
-
- # Silly dance to activate internal speakers by default on PowerMac
- # Snapper and Tumbler
- id=$(cat /proc/asound/card$1/id 2>/dev/null)
- if [ "$id" = "Snapper" -o "$id" = "Tumbler" ]; then
- switch_control "Auto Mute" off
- switch_control "PC Speaker" off
- switch_control "Auto Mute" on
- fi
-}
-
-# $1 <card ID> | "all"
-preinit_levels()
-{
- TTSDML_RETURNSTATUS=0
- case "$1" in
- all)
- for CARD in $(echo_card_indices) ; do
- preinit_levels_on_card "$CARD" || TTSDML_RETURNSTATUS=1
- done
- ;;
- *)
- preinit_levels_on_card "$1" || TTSDML_RETURNSTATUS=1
- ;;
- esac
- return $TTSDML_RETURNSTATUS
-}
-
-# $1 <card ID>
mute_and_zero_levels_on_card()
{
CARDOPT="-c $1"
Index: install
===================================================================
--- install (révision 0)
+++ install (révision 0)
@@ -0,0 +1 @@
+debian/utils.sh /usr/share/alsa
Index: utils.sh
===================================================================
--- utils.sh (révision 0)
+++ utils.sh (révision 0)
@@ -0,0 +1,181 @@
+#!/bin/sh
+
+bugout() { echo "${MYNAME}: Programming error" >&2 ; exit 123 ; }
+
+echo_card_indices()
+{
+ if [ -f /proc/asound/cards ] ; then
+ sed -n -e's/^[[:space:]]*\([0-7]\)[[:space:]].*/\1/p' /proc/asound/cards
+ fi
+}
+
+filter_amixer_output()
+{
+ sed \
+ -e '/Unable to find simple control/d' \
+ -e '/Unknown playback setup/d' \
+ -e '/^$/d'
+}
+
+# The following functions try to set many controls.
+# No card has all the controls and so some of the attempts are bound to fail.
+# Because of this, the functions can't return useful status values.
+
+# $1 <control>
+# $2 <level>
+# $CARDOPT
+unmute_and_set_level()
+{
+ { [ "$2" ] && [ "$CARDOPT" ] ; } || bugout
+ amixer $CARDOPT -q set "$1" "$2" unmute 2>&1 | filter_amixer_output || :
+ return 0
+}
+
+# $1 <control>
+# $CARDOPT
+mute_and_zero_level()
+{
+ { [ "$1" ] && [ "$CARDOPT" ] ; } || bugout
+ amixer $CARDOPT -q set "$1" "0%" mute 2>&1 | filter_amixer_output || :
+ return 0
+}
+
+# $1 <control>
+# $2 "on" | "off"
+# $CARDOPT
+switch_control()
+{
+ { [ "$2" ] && [ "$CARDOPT" ] ; } || bugout
+ amixer $CARDOPT -q set "$1" "$2" 2>&1 | filter_amixer_output || :
+ return 0
+}
+
+# $1 <card ID>
+sanify_levels_on_card()
+{
+ CARDOPT="-c $1"
+
+ unmute_and_set_level "Master" "80%"
+ unmute_and_set_level "Master Mono" "80%" # See Bug#406047
+ unmute_and_set_level "Master Digital" "80%" # E.g., cs4237B
+ unmute_and_set_level "Playback" "80%"
+ unmute_and_set_level "Headphone" "70%"
+ unmute_and_set_level "PCM" "80%"
+ unmute_and_set_level "PCM,1" "80%" # E.g., ess1969
+ unmute_and_set_level "DAC" "80%" # E.g., envy24, cs46xx
+ unmute_and_set_level "DAC,0" "80%" # E.g., envy24
+ unmute_and_set_level "DAC,1" "80%" # E.g., envy24
+ unmute_and_set_level "Synth" "80%"
+ unmute_and_set_level "CD" "80%"
+
+ mute_and_zero_level "Mic"
+ mute_and_zero_level "IEC958" # Ubuntu #19648
+
+ # Intel P4P800-MX (Ubuntu bug #5813)
+ switch_control "Master Playback Switch" on
+ switch_control "Master Surround" on
+
+ # Trident/YMFPCI/emu10k1:
+ unmute_and_set_level "Wave" "80%"
+ unmute_and_set_level "Music" "80%"
+ unmute_and_set_level "AC97" "80%"
+
+ # DRC:
+ unmute_and_set_level "Dynamic Range Compression" "80%"
+
+ # Required for HDA Intel (hda-intel):
+ unmute_and_set_level "Front" "80%"
+
+ # Required for SB Live 7.1/24-bit (ca0106):
+ unmute_and_set_level "Analog Front" "80%"
+
+ # Required at least for Via 823x hardware on DFI K8M800-MLVF Motherboard with kernels 2.6.10-3/4 (see ubuntu #7286):
+ switch_control "IEC958 Capture Monitor" off
+
+ # Required for hardware allowing toggles for AC97 through IEC958,
+ # valid values are 0, 1, 2, 3. Needs to be set to 0 for PCM1.
+ unmute_and_set_level "IEC958 Playback AC97-SPSA" "0"
+
+ # Required for newer Via hardware (see Ubuntu #31784)
+ unmute_and_set_level "VIA DXS,0" "80%"
+ unmute_and_set_level "VIA DXS,1" "80%"
+ unmute_and_set_level "VIA DXS,2" "80%"
+ unmute_and_set_level "VIA DXS,3" "80%"
+
+ # Required on some notebooks with ICH4:
+ switch_control "Headphone Jack Sense" off
+ switch_control "Line Jack Sense" off
+
+ # Some machines need one or more of these to be on;
+ # others need one or more of these to be off:
+ #
+ # switch_control "External Amplifier" on
+ switch_control "Audigy Analog/Digital Output Jack" on
+ switch_control "SB Live Analog/Digital Output Jack" on
+
+ # D1984 -- Thinkpad T61/X61
+ switch_control "Speaker" on
+ switch_control "Headphone" on
+
+ # HDA-Intel w/ "Digital" capture mixer (See Ubuntu #193823)
+ unmute_and_set_level "Digital" "80%"
+
+ # On MacBookPro5,3 and later models (See Bug#597791)
+ unmute_and_set_level "Front Speaker" "80%"
+ # On MacBook5,2 models (See Bug#602973)
+ unmute_and_set_level "LFE" "80%"
+
+ # On Intel 82801H (See Bug#603550)
+ unmute_and_set_level "Speaker" "80%"
+
+ return 0
+}
+
+# $1 <card ID> | "all"
+sanify_levels()
+{
+ TTSDML_RETURNSTATUS=0
+ case "$1" in
+ all)
+ for CARD in $(echo_card_indices) ; do
+ sanify_levels_on_card "$CARD" || TTSDML_RETURNSTATUS=1
+ done
+ ;;
+ *)
+ sanify_levels_on_card "$1" || TTSDML_RETURNSTATUS=1
+ ;;
+ esac
+ return $TTSDML_RETURNSTATUS
+}
+
+# $1 <card ID>
+preinit_levels_on_card()
+{
+ CARDOPT="-c $1"
+
+ # Silly dance to activate internal speakers by default on PowerMac
+ # Snapper and Tumbler
+ id=$(cat /proc/asound/card$1/id 2>/dev/null)
+ if [ "$id" = "Snapper" -o "$id" = "Tumbler" ]; then
+ switch_control "Auto Mute" off
+ switch_control "PC Speaker" off
+ switch_control "Auto Mute" on
+ fi
+}
+
+# $1 <card ID> | "all"
+preinit_levels()
+{
+ TTSDML_RETURNSTATUS=0
+ case "$1" in
+ all)
+ for CARD in $(echo_card_indices) ; do
+ preinit_levels_on_card "$CARD" || TTSDML_RETURNSTATUS=1
+ done
+ ;;
+ *)
+ preinit_levels_on_card "$1" || TTSDML_RETURNSTATUS=1
+ ;;
+ esac
+ return $TTSDML_RETURNSTATUS
+}
Modification de propriétés sur utils.sh
___________________________________________________________________
Ajouté : svn:executable
+ *
More information about the Pkg-alsa-devel
mailing list