# [SOLVED] Problem mit Alsa und mehreren Soundkarten

## SinoTech

Hallo,

also ich habe hier einen kleinen PC der 3 Soundkarten hat, nämlich eine Intel und 2 USB Soundkarten.

```

$ lspci

[...]

00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 02)

[...]

$ lsusb

[...]

Bus 007 Device 003: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter

Bus 003 Device 002: ID 06e6:f210 Tiger Jet Network, Inc. 

[...]

```

Ich möchte das, falls nicht anders angegeben, die Intel Soundkarte als default genommen wird. Der "default" Link unter "/proc/asound" zeigt allerdings immer auf die erste USB Soundkarte. Zunächst dachte ich er zeigt immer auf die Soundkarte mit dem niedrigsten Index und habe versucht die Reihenfolge der Soundkarten zu ändern (beim laden der Module die Option "index=" angegeben), was aber leider keine Änderung brachte. Der Link "/proc/asound/default" zeigt immer auf die erste USB Soundkarte.

Habe dann versucht über die Datei "/etc/asound.conf" die Default Soundkarte wie folgt zu setzen (wobei an Index 0 die Intel Soundkarte sitzt):

```

pcm.!default {

    type hw

    card 0

}

ctl.!default {

    type hw

    card 0

}

```

In dem Fall wird zwar tatsächlich die erste (Intel) Soundkarte geöffnet, allerdings wird diese dann auch blockiert (es kann also kein Programm parallel darüber Sound abspielen).

Habe dann versucht das "hw" durch "plughw" zu ersetzen, so das Alsa die verschiedenen Audio streams selbst zusammenführt. Starte ich "aplay" und gebe als Device explizit "plughw:0" an funktioniert das auch einwandfrei. Gebe ich aber kein Device an (sollte ja keinen Unterschied machen da ja "plughw:0" auch in der "asound.conf" eingetragen ist), bekomme ich folgende Fehlermeldung  :

```

$ aplay -D default /usr/share/sounds/phone.wav

ALSA lib pcm.c:2171:(snd_pcm_open_conf) Cannot open shared library /usr/lib/alsa-lib/libasound_module_pcm_plughw.so

aplay: main:608: audio open error: No such file or directory

```

Habe also jetzt folgendes Problem:

Ohne /etc/asound.conf können zwar mehrere Anwendungen gleichzeitig Sound abspielen, allerdings kann ich nicht beeinflussen welche Soundkarte als Default benutzt wird.

Wenn ich "hw:0" als Default in /etc/asound.conf eintrage kann ich damit zwar die Default-Soundkarte festlegen, allerdings kann immer nur eine Anwendung Sound abspielen.

Wenn ich "plughw:0" als Default in /etc/asound.conf eintrage, geht gar nichts mehr weil mir anscheinend eine Datei fehlt (google konnte mir da nicht wirklich weiterhelfen).

Habe Alsa mit folgende USE-Flags gebaut:

```

$ emerge alsa-lib alsa-plugins alsa-headers alsa-utils -vpt

These are the packages that would be merged, in reverse order:

Calculating dependencies... done!

[ebuild    U  ] media-sound/alsa-utils-1.0.20-r5 [1.0.20-r4] USE="-doc -minimal -nls" 1,021 kB

[ebuild   R   ] media-plugins/alsa-plugins-1.0.20  USE="pulseaudio -debug -ffmpeg -jack -libsamplerate -speex" 317 kB

[ebuild   R   ]  media-libs/alsa-lib-1.0.20-r1  USE="-alisp -debug -doc -python" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" 777 kB

[ebuild   R   ]   media-sound/alsa-headers-1.0.20  2,833 kB

```

Wie kann ich die Default-Soundkarte angeben UND mit mehreren Anwendungen gleichzeitig darauf zugreifen?

Bin für jede Hilfe dankbar.

Cheers,

Sino

----------

## Josef.95

Hallo

Grundsätzlich sollte es funktionieren die Kartenreihenfolge in der Kernel Zeile mit anzugeben, zb

snd_emu10k1.index=0 snd_hda_intel.index=1

doch ob dies wirklich die eleganteste Lösung ist darf bezweifelt werden..

Es ist vermutlich besser diese unter /etc/modprobe.d/alsa.conf zu setzen.

Beispiel: 

```
##  ALSA portion

alias snd-card-0 snd_emu10k1

alias snd-card-1 snd_hda_intel

alias snd-card-2 saa7134_alsa

##  OSS/Free portion

alias sound-slot-0 snd-card-0

alias sound-slot-1 snd-card-1

alias sound-slot-2 snd-card-2

##

# Set this to the correct number of cards.

options snd cards_limit=3
```

Hier funkt es so eigentlich ganz gut, schaut dann zb so aus

/proc/asound/cards 

```

 0 [Audigy2        ]: Audigy2 - SB Audigy 2 ZS Notebook [SB0530]SB Audigy 2 ZS Notebook [SB0530] (rev.0, serial:0x20011102) at 0x3000, irq 16

                      SB Audigy 2 ZS Notebook [SB0530] (rev.0, serial:0x20011102) at 0x3000, irq 16

 1 [Intel          ]: HDA-Intel - HDA Intel

                      HDA Intel at 0x80000000 irq 16

 2 [SAA7134        ]: SAA7134 - SAA7134

                      saa7133[0] at 0xb4007800 irq 19
```

Viel Erfolg

----------

## SinoTech

 *Josef.95 wrote:*   

> Hallo
> 
> Grundsätzlich sollte es funktionieren die Kartenreihenfolge in der Kernel Zeile mit anzugeben, zb
> 
> snd_emu10k1.index=0 snd_hda_intel.index=1
> ...

 

Ich hatte es auch in die "/etc/modprobe.d/alsa.conf" eingetragen und natürlich ein "update-modules" hinterher ausgeführt.

```

$ cat /etc/modprobe.d/alsa.conf

[...]

##  ALSA portion

alias snd-card-0 snd-intel8x0

alias snd-card-1 snd-usb-audio

[...]

# tmm-1540 & tmm-1545

options snd-intel8x0 index=0

options snd-usb-audio index=1,2 vid=0x0d8c,0x06e6 pid=0x000c,0xf210

# Set this to the correct number of cards.

options snd cards_limit=3

```

Die Reihenfolge der Soundkarten ist danach auch wirklich die, die angegeben wurde. Nur der "default"-link zeigt weiterhin auf die erste USB Soundkarte.

```

$ ls -l /proc/asound/

     total 0

     lrwxrwxrwx 1 root root 5 Oct 13 15:18 I82801DBICH4 -> card0

     lrwxrwxrwx 1 root root 5 Oct 13 15:18 U0x6e60xf210 -> card2

     dr-xr-xr-x 3 root root 0 Oct 13 15:18 card0

     dr-xr-xr-x 2 root root 0 Oct 13 15:18 card1

     dr-xr-xr-x 2 root root 0 Oct 13 15:18 card2

     -r--r--r-- 1 root root 0 Oct 13 15:18 cards

--> lrwxrwxrwx 1 root root 5 Oct 13 15:18 default -> card1

[...]

```

Allerdings weiß ich jetzt auch nicht wie wichtig dieser "default"-Link überhaupt ist, denn in meinem normalen System (und anscheinend auch bei dir) existiert er gar nicht. Aber genau die Soundkarte, auf die der Link zeigt, wird per default benutzt.

Egal, habe das ganze nämlich jetzt endlich (nach langem suchen) über folgende /etc/asound.conf lösen können:

```

pcm.!default {

        type plug

        slave.pcm "dmixer"

}

pcm.dmixer {

        type dmix

        ipc_key 1025 # Should be a unique number

        slave {

                pcm "hw:0"

    }

    bindings {

           0 0

           1 1

    }

}

```

Danke für die Antwort.

Cheers,

Sino

----------

