Package: alsa-utils Version: 1.0.23-4~0 Severity: normal Tags: patch 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 Samuel -- System Information: Debian Release: 6.0 APT prefers testing APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.37 (SMP w/2 CPU cores) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages alsa-utils depends on: ii dialog 1.1-20100428-1 Displays user-friendly dialog boxe hi libasound2 1.0.23-3~0 shared library for ALSA applicatio ii libc6 2.11.2-10 Embedded GNU C Library: Shared lib ii libncursesw5 5.7+20100313-5 shared libraries for terminal hand hi linux-sound-base 1.0.21+dfsg-2+youpi.1 base package for ALSA and OSS soun ii lsb-base 3.2-27 Linux Standard Base 3.2 init scrip ii module-init-tools 3.12-1 tools for managing Linux kernel mo ii udev 164-3 /dev/ and hotplug management daemo ii whiptail 0.52.11-2 Displays user-friendly dialog boxe Versions of packages alsa-utils recommends: hi alsa-base 1.0.21+dfsg-2+youpi.1 ALSA driver configuration files ii pciutils 1:3.1.7-6 Linux PCI Utilities alsa-utils suggests no packages. -- no debconf information -- Samuel Thibault <samuel.thiba...@fnac.net> Profitant de cette occasion, vous serait-il possible de rebooter aussi Modérator et son petit copain qui gère les ressources de download ? -+- OB in NPC : Apprendre à flasher son personnel -+-
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 + *