# [solved] Alsa

## Koperek123

Nie mogę wydobyć z głośników dźwięku  :Crying or Very sad: 

Mam kernela 2.6.10

Config:

```

# Sound

#

CONFIG_SOUND=y

#

# Advanced Linux Sound Architecture

#

CONFIG_SND=y

CONFIG_SND_TIMER=y

CONFIG_SND_PCM=y

CONFIG_SND_RAWMIDI=y

CONFIG_SND_SEQUENCER=y

# CONFIG_SND_SEQ_DUMMY is not set

CONFIG_SND_OSSEMUL=y

CONFIG_SND_MIXER_OSS=y

CONFIG_SND_PCM_OSS=y

CONFIG_SND_SEQUENCER_OSS=y

# CONFIG_SND_VERBOSE_PRINTK is not set

# CONFIG_SND_DEBUG is not set

```

I jeszcze

```

# PCI devices

#

CONFIG_SND_AC97_CODEC=y

```

W  /etc/modules.d/alsa    mam takie coś

```

# Alsa 0.9.X kernel modules' configuration file.

# $Header: /var/cvsroot/gentoo-x86/media-sound/alsa-utils/files/alsa-modules.conf-rc,v 1.4 2004/11/16 01:31:22 eradicator Exp $

# ALSA portion

alias char-major-116 snd

# OSS/Free portion

alias char-major-14 soundcore

##

## IMPORTANT:

## You need to customise this section for your specific sound card(s)

## and then run `update-modules' command.

## Read alsa-driver's INSTALL file in /usr/share/doc for more info.

##

##  ALSA portion

 alias snd-card-0 snd-via82xx

## alias snd-card-1 snd-ens1371

##  OSS/Free portion

 alias sound-slot-0 snd-card-0

## alias sound-slot-1 snd-card-1

##

# OSS/Free portion - card #1

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

##  OSS/Free portion - card #2

## alias sound-service-1-0 snd-mixer-oss

## alias sound-service-1-3 snd-pcm-oss

## alias sound-service-1-12 snd-pcm-oss

alias /dev/mixer snd-mixer-oss

alias /dev/dsp snd-pcm-oss

alias /dev/midi snd-seq-oss

# Set this to the correct number of cards.

options snd cards_limit=1

```

I jak włączam alsamixer to mam takie coś 

```

bash-2.05b# alsamixer

No mixer elems found

```

Last edited by Koperek123 on Fri Dec 31, 2004 10:14 am; edited 1 time in total

----------

## Zwierzak

```
/etc/init.d/alsasound start
```

Może wpierw zastartujesz a potem konfigurujesz

----------

## Koperek123

Już robiłem i wywala błąd

```

    bash-2.05b# /etc/init.d/alsasound start

 * Loading ALSA modules...

 *   Loading: snd-card-0...

FATAL: Module snd_via82xx not found.                                      [ !! ]

                                                                          [ ok ]

 * Restoring Mixer Levels...                          

```

----------

## Zwierzak

bo zrobiles blad, alse sie kompiluje jako mouly a nie do jajka wlancza, ja tek robie i zawsze mi sie jajko udaje. Skompiluj nowe jajko tylko tym razem wszystko jako moduly (i nie zapomnij o zaznaczeniu swojej karty). A tutaj masz ladny poradnik na temat alsy i nie tylko:

http://www.gentoo.org/doc/en/migration-to-2.6.xml

----------

## Koperek123

Nie ma innej możliwości?

Trzeba na nowo kompilować jądro

----------

## Crenshaw

Moduly? Eee, a mi dziala jak jest wkompilowane na twardo  :Smile: 

----------

## Koperek123

Możesz powiedzieć jak to zrobiłeś :?:

----------

## Crenshaw

Na razie mam 2.6.9 ale nie sadze zeby to cos zmienialo, na wczesniejszych wersjach tez tak jechalem:

#

# Advanced Linux Sound Architecture

#

CONFIG_SND=y

CONFIG_SND_TIMER=y

CONFIG_SND_PCM=y

CONFIG_SND_RAWMIDI=y

CONFIG_SND_SEQUENCER=y

# CONFIG_SND_SEQ_DUMMY is not set

CONFIG_SND_OSSEMUL=y

CONFIG_SND_MIXER_OSS=y

CONFIG_SND_PCM_OSS=y

CONFIG_SND_SEQUENCER_OSS=y

CONFIG_SND_RTCTIMER=y

# CONFIG_SND_VERBOSE_PRINTK is not set

# CONFIG_SND_DEBUG is not set

i zrobilem mala przerobke do 

/etc/init.d/alsasound

start() {

#       if [ -d /proc/asound ] && [ -z "$(grep ' no soundcards ' /proc/asound/cards)" ] ; then

#               ebegin "ALSA Detected"

#       else

#               ebegin "Loading ALSA drivers"

#               load_modules

#       fi

#       

        einfo "Restoring Mixer Levels"

        restore_mixer

        eend 0

}

stop() {

#       if [ ! -d /proc/asound ] ; then

#               eerror "ALSA is not loaded"

#               return 0

#       fi

#       

#       ebegin "Unloading ALSA"

#       terminate

        if [ "${SAVE_ON_STOP}" = "yes" ]; then

                einfo "Storing ALSA Mixer Levels"

                if ! save_mixer; then

                        eend 1

                fi

        fi

#       einfo "Unloading modules"

#       if ! unload_modules; then

#               eend 1

#       fi

        eend 0

}

A /etc/modules.d/alsa nic nie zmienialem. Mam nadzieje ze to cos pomoze.

----------

## Zwierzak

/etc/init.d/alsasound lepiej nie ruszac, pozatym najnowsza jego wersja jest w alsa-utils

----------

## Crenshaw

 *Zwierzak wrote:*   

> /etc/init.d/alsasound lepiej nie ruszac, pozatym najnowsza jego wersja jest w alsa-utils

 

Tak, ale ja nie jestem normalny   :Very Happy: 

edit:

Calkiem rozsadne wydalo mi sie zakomentowanie czesci ktora laduje moduly jesli skompilowalem wszystko na twardo  :Smile: 

----------

## C1REX

A czy został zainstalowany alsamixer?

```
emerge alsa-utils
```

----------

## Koperek123

Alsamixer zainstalowałem a ten plik mam inny trochę

```

alsactl=/usr/sbin/alsactl

asoundcfg=/etc/asound.state

aconnect=/usr/bin/aconnect

alsascrdir=/etc/alsa.d

opts="${opts} save"

depend() {

        need bootmisc localmount

        after modules isapnp coldplug hotplug

}

load_modules() {

        # List of drivers for each card.

        DRIVERS="$(modprobe -c | grep -E "^[[:space:]]*alias[[:space:]]+snd-card-[[:digit:]]" | awk '{print $2}')"

        # Fall back on the automated aliases if we don't have ALSA configured properly...

        if [ -z "${DRIVERS}" ] && ! ([ -d /proc/asound ] && [ -z "$(grep ' no soundcards ' /proc/asound/cards)" ]); then

                ewarn "Could not detect custom ALSA settings.  Loading all detected alsa drivers."

                DRIVERS="$(modprobe -c | grep pci: |  awk '{ print $3 }' | grep snd.* | sort | uniq)"

                [ -z "${DRIVERS}" ] && eerror "Unable to find any ALSA drivers. Have you compiled alsa-drivers correctly?"

        fi

        if modprobe -c | grep -q "snd.*oss$" ; then

                # Test for use of OSS

                OSS="$(modprobe -l | grep "snd.*oss" | sed -e "s:\/.*\/::" -e "s:\..*::")"

                # Add oss modules to list

                for i in ${OSS}

                do

                        DRIVERS="${DRIVERS} ${i}"

                done

        fi

        # We want to ensure snd-seq is loaded as it is needed for things like

        # timidity even if we don't use a real sequencer.

        DRIVERS="${DRIVERS} $(modprobe -l | grep "snd.seq\." | sed -e "s:\/.*\/::" -e "s:\..*::")"

        # We want to ensure snd-ioctl32 is loaded as it is needed for 32bit

        # compatibility

        DRIVERS="${DRIVERS} $(modprobe -l | grep "snd.ioctl32\." | sed -e "s:\/.*\/::" -e "s:\..*::")"

        for DRIVER in ${DRIVERS}

        do

                if [ ! "${DRIVER}" = off ] &&

                   [ -z `cut -d' ' -f1 /proc/modules | egrep "^${DRIVER}\$"` ] &&

                   [ -z `cut -d' ' -f1 /proc/modules | egrep "^${DRIVER//-/_}\$"` ]; then

                        ebegin "  Loading: ${DRIVER}"

                        /sbin/modprobe ${DRIVER}

                        eend $?

                fi

        done

if [ -f /proc/asound/seq/drivers ] ; then

                SEQUENCERS="$(awk -F, '$2~/^empty$/ {print $1}' /proc/asound/seq/drivers)"

                for SEQUENCER in ${SEQUENCERS}

                do

                        if [ -z `cut -d' ' -f1 /proc/modules | egrep "^${SEQUENCER}\$"` ] &&

                           [ -z `cut -d' ' -f1 /proc/modules | egrep "^${SEQUENCER//-/_}\$"` ]; then

                                ebegin "  Loading: ${SEQUENCER}"

                                /sbin/modprobe ${SEQUENCER}

                                eend $?

                        fi

                done

        fi

        for DRIVER in ${DRIVERS}

        do

                TMP=${DRIVER##snd-}

                TMP=${TMP##snd_}

                if [ -x "${alsascrdir}/${TMP}" ]; then

                        ebegin "  Running: ${alsascrdir}/${TMP}"

                        ${alsascrdir}/${TMP}

                        eend $?

                fi

        done

        if [ ! -d /proc/asound ] || [ ! -z "$(grep ' no soundcards ' /proc/asound/cards)" ]; then

                eerror "ERROR: Failed to load necessary drivers"

        fi

}

unload_modules() {

        LOADED_MODULES="$(/sbin/lsmod | grep -E "^snd" | awk '{print $1}')"

        for MODULE in ${LOADED_MODULES}

        do

                /sbin/rmmod ${MODULE} >& /dev/null

        done

        /sbin/rmmod soundcore >& /dev/null

        /sbin/rmmod gameport >& /dev/null

        # Return success if the modules are unloaded

        test -z "$(/sbin/lsmod | grep -E "^snd" | awk '{print $1}')"

}

terminate() {

        #

        # Kill processes holding open sound devices

        #

        # DEVS=`find /dev/ -follow -type c -maxdepth 1 -print 2>/dev/null | xargs ls -dils | grep "1*1[46]," | cut -d: -f2 | cut -d" " -f2; echo /proc/asound/dev/*`

        ossdevs="/dev/admmidi? /dev/adsp? /dev/amidi? /dev/audio* /dev/dmfm* \

                        /dev/dmmidi? /dev/dsp* /dev/dspW* /dev/midi0? /dev/mixer? /dev/music \

                        /dev/patmgr? /dev/sequencer* /dev/sndstat"

     alsadevs="/proc/asound/dev/* /dev/sound/* /dev/snd/*"

        fuser -k $ossdevs $alsadevs 2> /dev/null 1>/dev/null

        #

        # remove all sequencer connections if any

        #

        [ -f /proc/asound/seq/clients -a -x $aconnect ] && $aconnect --removeall

}

restore_mixer() {

        if [ ! -r $asoundcfg ]; then

                ewarn "No mixer config in $asoundcfg, you have to unmute your card!"

                return 1

        elif [ -x $alsactl ]; then

                CARDS="$(cat /proc/asound/cards | awk '/: / { print $1 }')"

                for CARDNUM in ${CARDS}

                do

                        [ -e /dev/snd/controlC0 ] || sleep 2

                        [ -e /dev/snd/controlC0 ] || sleep 2

                        [ -e /dev/snd/controlC0 ] || sleep 2

                        [ -e /dev/snd/controlC0 ] || sleep 2

                        $alsactl -f $asoundcfg restore ${CARDNUM}

                done

        else

                eerror -e "ERROR: Cannot find alsactl, did you forget to install media-sound/alsa-utils?"

                return 1

   fi

        return 0

}

save() {

        ebegin "Storing ALSA Mixer Levels"

        if [ -x $alsactl ]; then

                $alsactl -f $asoundcfg store

                val=$?

                eend $val

                return $val

        else

                eerror -e "ERROR: Cannot find alsactl."

                eend 1

                return 1

        fi

}

start() {

        if [ -f /proc/modules ]; then

                ebegin "Loading ALSA modules"

                if load_modules; then

                        eend 0

                else

 eend 1

                        return 1

                fi

        fi

        ebegin "Restoring Mixer Levels"

        restore_mixer

        eend $?

}

stop() {

        if [ ! -d /proc/asound ] ; then

                eerror "ALSA is not loaded"

                return 0

        fi

        if [ "${SAVE_ON_STOP}" = "yes" ]; then

                save

        fi

        ebegin "Unloading ALSA"

        terminate

        eend 0

        if [ -f /proc/modules ]; then

                ebegin "Unloading ALSA modules"

               if unload_modules; then

                        eend 0

                else

                        eend 1

                fi

        fi

}

```

Ten plik trochę się jednak chyba różni od twojego

Mógłbyś mi go poprawić, aby alsa chodziła

Z góry wielkie dzięki

----------

## mdk

 *Quote:*   

> 
> 
> Mógłbyś mi go poprawić, aby alsa chodziła 
> 
> 

 

 :Shocked: 

Nie bądź bezczelny. 

Masz w ogóle w jądro wkompilowany sterownik karty dźwiękowej? Bo...

```

# PCI devices

#

CONFIG_SND_AC97_CODEC=y 

```

...to nie jest sterownik, tylko część sterownika (powiedzmy). Potrzebujesz jeszcze (chyba)

```

CONFIG_SND_VIA82XX=m

```

Zresztą jak wół ta karta jest wypisana w make menuconfig. I proponuje wszystko jako moduły (M), a nie w jądro (Y).

----------

## Crenshaw

W funkcjach start() i stop()  zakomentuj (powstawiaj # na poczatku linii) sobie linie

w start() 

```

        if [ -f /proc/modules ]; then

                ebegin "Loading ALSA modules"

                if load_modules; then

                        eend 0

                else

 eend 1

                        return 1

                fi

        fi 

```

w stop()

```

ebegin "Unloading ALSA"

        terminate

        eend 0

        if [ -f /proc/modules ]; then

                ebegin "Unloading ALSA modules"

               if unload_modules; then

                        eend 0

                else

                        eend 1

                fi

        fi 

```

po tym zabiegu nie powinno juz sie rzucac. Mam nadzieje ze sie nigdzie nie machnalem.  :Smile: 

edit: poprawiona czytelnosc

----------

## rzezioo

a nie wkompilowales przypadkiem tez oss?? wtedy alsa nie widzi karty a to tez moze miec znaczenie. na kernelu 2.4 taki blad pojawil mi sie po wkompilowaniu oss.

----------

## Raku

heh - dyskutantów kupa, a każdy z was (z wyjątkiem mdk) plecie olbrzymie bzdury !!!!

gość ma wyraźnie w /etc/modules.d/alsa taki kfiatek:

```

##  ALSA portion

 alias snd-card-0 snd-via82xx 

```

a modułu snd-via82xx nie skompilował.  Zapewne jak wejdzie do katalogu /usr/src/linux i wygrepuje linijkę VIA82XX, zobaczy to co poniżej:

```

bash-2.05b$ cat .config |grep VIA82XX

# CONFIG_SND_VIA82XX is not set

bash-2.05b$

```

jak więc się ma uruchamiać pierwsza karta muzyczna (snd-card-0) ustawiona na moduł od Via, skoro go nie ma ?

a skrypty to możecie sobie edytować... nawet nową dystrybucję na ich podstawie napisać... powodzenia

----------

## Koperek123

Crenshaw WIELKIE DZIĘKI!!!!! 

Zrobiłem jak radziełeś i działa!!!!

Oprócz tego dałem polecenie alsamixer -c 1 i wygłośniłem

I jes OK

----------

## Raku

a poprawnie robiąc: powinieneś wyedytować /etc/modules.d/alsa i zahaszować odwołania do nieistniejącego modułu. Przy upgradzie alsa-utils (czy alsa-libs) będziesz miał znów problem, bo ci się alsasound zaktualizuje...

Przez długi czas korzystałem z alsy wkompilowanej statycznie w jądro i nigdy nie musiałem się bawić w edycję skryptów startowych - nie jest to zbędne, a jeśli użytkownik jest do tego zmuszony, świadczy to niezafajnie o developerach dystrybucji

aktualne rozwiązanie twojego problemu brzmi jak: "przecieka mi dach, ale już jest ok, puściłem rynienki i woda cieknie teraz obok mojego łóżka, więc jest OK, bo mogę spać"   :Twisted Evil: 

----------

## Crenshaw

zalozmy ze puscilem rynienki wlasciwa strona  :Smile:  to male pytanie jak sie elegancko pozbyc glupiego

```

Opening /proc/modules: No such file or directory 

```

przy wyalaczaniu alsy? na koncu uzywa lsmod'a

edit: wyrzucenie zbednego tekstu

----------

## Raku

jeśli jsteś pewien, że ten komunikat nie jest efektem twojego grzebania w skryptach, to zgłoś błąd na bugzillę   :Cool: 

----------

## mdk

 *Quote:*   

> 
> 
> Przez długi czas korzystałem z alsy wkompilowanej statycznie
> 
> ...
> ...

 

Swoją drogą, czy jest jakiś sens wkompilowywania ALSY (i innych sterowników urządzeń) w jądro? W sensie wydajności nie daje to nic (czasami - wręcz przeciwnie). Zmniejsza natomiast stabilność (jak wysypie się sterownik ALSY, to duża szansa, że wysypie się całe jądro = jak w windowsie). 

Chyba, że o czymś nie wiem?

----------

## nelchael

Jak to "wysypie sie"? Od pierwszego 2.6.x mam ALSE na sztywno w jajku i nic sie nie dzieje zlego.

----------

## mdk

Wysypie się = wykrzaczy, wykona nieprawidłową operację, segafultuje, w sterowniku nastąpi błąd. 

Z ALSĄ jest różnie - o niktórych sterownikach można mówić, że mają 100% stabilności (bardziej popularne karty), a inne przysłowiowe 99% (te bardziej egzotyczne urządzenia). Ze względu na te 99% chyba dobrą regułą jest umieszczać sterowniki jako moduły... szczególnie jeżeli się oczekuje totalnie stabilnego systemu (ja). 

ALSA też mi się nigdy nie "wysypała" (SBLive). Miałem za to duże problemy modułem visor (nie ALSA, obsługa Palmów), który jest średnio stabilny. Raz na jakiś czas sterownik się wysypuje... po wkompilowaniu w jądro, razem z nim leciał cały system (core dump). Po umieszczeniu go jako moduł, wszystko jest ok - tzn. dalej się wykrzacza co jakiś czas, ale nie ma to wpływu na system (właściwie - jest prawie niezauważalne, bo po wysypaniu sterownik od razu ładuje się ponownie). Stąd wszystko co nie jest krytyczne dla systemu umieszczam jako moduły.

[edit]

Mam świadomość, że mówię tutaj o hmm... ekstremalnej sytuacji (można śmiało powiedzieć, że ALSA jest bardzo stabilna). ale dlaczego mieć bardzo stabilny system, kiedy można mieć bardzo bardzo stabilny system bez dodatkowych "kosztów"?

[/edit]

----------

## nelchael

Ok, z tym sie zagadzam. Ja mam w ALSA obsluge mojej Intel ilestam i jest to na 100% stabilne  :Smile: 

----------

