PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ALSA kompilieren (Sound)



hunter
06.03.02, 18:50
Da hier immer wieder Fragen über ALSA geschrieben werden, die teilweise immer gleich zu beantworten sind, geb ich hier mal eine kleine HowTo zu diesem Thema.

Außerdem ist das für Leute interessant die sich einen eigenen Kernel compiliert haben und dessen ALSA nun nicht mehr funktioniert, da die Treiber nicht mehr da sind und eventuell auch nicht mehr zum neuen Kernel passen.

Für diejenigen, die es nicht wissen: ALSA ist ein Projekt das Treiber für Soundkarten entwickelt. Das sind mitlerweile schon eine ganze Menge. In der Regel kann man für fast jede Karte ALSA benutzen die auch vom Kernel und von OSS unterstützt wird. Teilweise funktioniert ALSA aber besser.

Eine Liste der unterstützten Karten findet ihr auf der Homepage: http://www.alsa-project.org/

1. Download

Von der Homepage ladet ihr euch nun folgende Archive runter:

- Driver
- Library
- Utilities
- OSS Compat. Library

Am besten greift ihr zu einer 0.9 (Beta) Version. Die funktionieren schon sehr gut. Gelegentlich kann es ein paar kleinere Probleme geben, aber das ist mit 0.5 teilweise noch schlimmer. Außerdem ist abzusehen das die 0.9 Version bald als stable eingestuft werden wird.

2. Entpacken

Entpackt alle Archive einzeln mit der Konsole. Benutzt besser nicht Konqueror oder GMC oder so was. Das mag meistens klappen, geht aber manchmal auch schief.

tar vxfj *driver*
tar vxfj *lib*
tar vxfj *util*
tar vxfj *oss*

3. Kompilieren

Vorbereitung:

Als aller erstes geht ihr jetzt mal in das Driver Verzeichnis und lest euch die ./configure --help durch. Zumindest den Punkt der die zu installierenden Treiber betrifft. Also:

cd *driver*
./configure --help

Ganz unten seht ihr dann die möglichen Treiber. Wenn ihr nicht wisst welchen ihr braucht, dann schaut mal auf der Homepage unter Soundcards -> ALSA sound card matrix nach.

Driver installieren

cd *driver* (falls ihr nicht schon drin seit)

Für PCI Karten:

./configure --with-sequencer=yes --with-oss=yes --with-cards=MODUL
make all
make install
./snddevices

Für ISA Karten:

./configure --with-sequencer=yes --with-oss=yes --with-isapnp=yes --with-cards=MODUL
make all
make install
./snddevices

MODUL ersetzt ihr bitte durch den Namen den ihr in der Vorbereitung ermittelt habt.

Anmerkungen

Sollte bei "make install" ein Fehler kommen das er in /lib/modules/... irgendeine Datei nicht gefunden hatt (kernel.h oder System.map), dann müsst ihr da noch einen Link erstellen. Die gesuchte Datei befindet sich in der Regel dann in /boot. Und suchen tut er sie (z.B.) in /lib/modules/KERNEL/build/System.map. Also (z.B.):

ln -sf /boot/System.map-2.4.18 /lib/modules/KERNEL/build/System.map

Achtet darauf das ihr keinen Link erwischt. Denn Link Ketten sind unter Linux nicht erlaubt.

Danach könnt ihr noch mal "make install" ausführen. Und dann im Eifer blos nicht das "./snddevices" vergessen. Sonst funktionierts am Ende nicht weil die Devices nicht angelegt wurden.

4. Rest compilieren

Der Rest ist nun einfach:

cd ..
cd *lib*
./configure && make && make install

cd ..
cd *oss*
./configure && make && make install

cd ..
cd *utils*
./configure && make && make install

Sofern die Driver richtig installiert wurden und nicht bei "make install" abgebrochen worden sind, sollte das compilieren der anderen drei Archive Problemlos funktionieren.

5. Test

Nun müsst ihr erst mal "depmod -a" eingeben, damit das System erkennt das es neue Kernel Modules gibt. Danach solltet ihr mal die folgenden Befehle eingeben und testen ob alles korrekt geladen wird:

depmod -a
modprobe snd-MODUL
modprobe snd-pcm-oss
modprobe snd-seq-oss

6. Start Skript

Jetzt müsst ihr diese Befehle noch in eine Startskript einbauen, damit sie nach dem Booten automatisch immer ausgeführt werden. Bei Mandrake und Redhat ist das die Datei /etc/rc.local. Da müsst ihr ganz unten einfach nur rein schreiben:

modprobe snd-MODUL
modprobe snd-pcm-oss
modprobe snd-seq-oss
amixer set Master 90% unmute
amixer set PCM 90% unmute

Bei anderen Distributionen können das andere Datein sein.

Die beiden letzten Befehle setzen die Lautstärke hoch. Das die normalerweise Null ist habt ihr beim compilieren der Treiber und Libs ja schon einige Male lesen können.

Olli
10.03.02, 14:50
Vorwort:
Es gibt (fertige) Patches nur für die alsa-Versionen 0.5.11 und 0.9.0beta8a.
Aber soweit ich das überschauen konnte, sind beide, bis auf die im
Patch enthaltenen Pfadangaben, identisch. Wollt ihr also eine andere alsa-Version
patchen, müsst ihr diese Pfade erst anpassen.

Bezugsquellen:
Patch for SiS735 support in alsa-0.9: Download (http://sourceforge.net/tracker/download.php?group_id=27464&atid=390603&file_id=12972&aid=479165)
Patch for SiS735 support in alsa-0.5.11: Download (http://sourceforge.net/tracker/download.php?group_id=27464&atid=390603&file_id=12971&aid=479164)

Die Quelle solltet ihr in das selbe Verzeichnis (wie die alsa-Quellen) kopieren.


3a. Patchen
Der Patch muss zunächst entpackt werden:
gunzip alsa-driver-0.9.0beta8a-sis735.patch.gz

Dann wechselt ihr in das alsa-driver* Verzeichnis (cd alsa-driver*), und führt das folgende Kommando aus:
patch -p1 < ../alsa-driver-0.9.0beta8a-sis735.patch

Ist der Patch erfolgreich eingespielt, sollte nur folgende Ausgabe erscheinen:
patching file acinclude.m4
patching file aclocal.m4
patching file cards/Makefile
patching file cards/card-sis735.c
patching file cards.config
patching file cards.config.in
patching file configure
patching file include/sndmagic.h
patching file modules.config


3b. Kompilieren
Das Kompilieren geschieht so wie es bereits oben beschrieben wurde. Als Modul gebt ihr sis735 an:
./configure --with-sequencer=yes --with-oss=yes --with-cards=sis735

...
wie oben
...

5. Test
modprobe snd-card-sis735
modprobe snd-pcm-oss
modprobe snd-seq-oss

6. Start Skript
modprobe snd-card-sis735
modprobe snd-pcm-oss
modprobe snd-seq-oss
Anmerkung:
Der Eintrag in boot.local gibt bei mir eine Menge Fehler beim Booten aus. Die Alternative modules.conf ist bei mir noch nicht perfekt, werde ich aber hier posten, sobald die (mich störenden) Probleme gelöst sind.

modules.conf
In meiner modules.conf habe ich folgende Einträge zum Betreich Sound:
alias char-major-14 soundcore
alias char-major-116 off
alias sound-slot-0 snd-card-0
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
#
options snd snd_cards_limit=1 snd_major=116
alias snd-card-0 snd-card-sis735
options snd-card-sis735 snd_index=0
post-install snd amixer set Master 70% unmute;amixer set PCM 80% unmute; amixer set CD 100% unmute

Es gibt zwar noch ein paar Einträge im console-log, aber der Sound läuft!

oliver

BSM
20.04.02, 12:27
es ist vielleicht schon ein bisschen zu spät dafür , aber es gibt für leute die lieber bei der suse 7.3 (und vorher) bleiben wollen (wie ich) RPMs zum updaten von alsa.

es gibt sie bei ftp://ftp.suse.com/pub/people/tiwai .
da muss man seine suse linux version heraussuchen, und am besten noch die readme lesen, die zwar auf englisch, aber auch leicht verständlich ist.

greetz Robert

mafiosnik
30.04.02, 13:42
hunters alsa faq hat mir wirklich sehr weitergeholfen aber da ich dennoch probleme hatte, will ich sie mal hier posten, damit sie keiner mehr hat.

soundchip: AC97 - intel8x0 (haben ziemlich viele leute, wie ich gemerkt habe. ;))

Driver:
./configure --with-sequencer=yes --with-oss=yes --with-cards=intel8x0
make (nicht make all!)
make install
./snddevices

nicht mit make all kompilieren, da es bei mir probleme mit dem depmod -a gemacht hat, mit make gings dann super ^_^

dann halt den rest mit ./configure && make && make install installieren..

*lib*
*oss*
*utils*

dann depmod -a und die module laden:

modprobe snd-intel8x0
modprobe snd-pcm-oss
modprobe snd-seq-oss
modprobe snd-mixer-oss

nun sollte alsa auch mit dem weit verbreiteten onboard sound chip Intel8x0 (AC97) ohne probs funzen =)

SeeksTheMoon
14.05.02, 20:36
Ich benutze SuSE 7.3 mit Standardkernel und mitgeliefertem alsa (0.5x).
Als Soundkarte verwende ich eine SB-Live Player 1024 (also emu10k1).

Das Kompilieren und Installieren wie oben beschrieben hat geklappt, nur bei depmod -a und den amixer-Befehlen kamen Fehlermeldungen mit diversen Pointergeschichten, yast2 hat ebenfalls Fehler gemeldet und ich konnte Kernel 2.5.15 wegen dem geschrotteten alsa nicht kompilieren.

Die rpms haben überhaupt nicht funktioniert (hat der Paketmanager sie überhaupt installiert?)

Erst das ./configure des Treibers ohne "--with-sequencer=yes" hat funktioniert.
Ich habe überall wieder Sound.
Dieser configure-Parameter hat auch schon anderen Leuten Probs bereitet, wie ich hier gelesen habe.


Oh! Und solche Tools wie Yast2 kann man dann getrost vergessen, weil sie einem den schönen neuen Soundtreiber wieder fröhlich zerschießen!

SeeksTheMoon
06.03.03, 16:04
Zu erwähnen ist noch folgende Anleitung bei bLFS:
http://beyond.linuxfromscratch.org/view/cvs/multimedia/alsa.html
und die Folgeseiten davon. Dort stehen Startscripte, was man in die /etc/modules.conf eintragen muss und die exakten Befehle.

Wenn man alsa benutzen will, sollte man übrigens tunlichst unterlassen, die Treiber auch in den Kernel zu kompilieren! Ich hatte für meine Soundblaster Live! Player 1024 auch das entsprechende Modul (emu10k1) fest in den Kernel kompiliert - mit dem Resultat, dass alsa nicht lief (Module konnten nicht geladen werden, Device busy, ...)
Also entweder alsa-Treiber ODER Kernel-Treiber für die Soundkarte (allgemeiner Soundsupport sollte im Kernel allerdings vorhanden sein, sonst nützen auch die alsa-Module nichts).

Zu meinem vorigen Post (der schon etwas betagt ist): Der Parameter mit dem Sequenzer klappt übrigens wieder, vielleicht lag es damals an SuSE oder an der alsa-Version (inzwischen ist ja alsa 0.9.0rc8 aktuell)

Wer weitere Ausgänge hat (z.B. beim Soundblaster) sollte noch
amixer set "Wave Surround" 70% unmute
eingeben, damit auch der Rest läuft.

hunter
14.03.03, 21:06
wickey hat mir noch einen Link gepostet: http://www.d.kth.se/~d98-jas/debian/debian-install-alsa.txt

Es geht darum wie Leute mit Debian ihr ALSA so compilieren können das Debian Pakete daraus werden (manch einer nennts Debianlike :) )