Gentoo Logo

Gentoo Linux ALSA Útmutató

Tartalom:

1.  Bevezető

Mi az ALSA?

Az ALSA az Advanced Linux Sound Architecture rövidítése, hang- és MIDI (Musical Instrument Digital Interface) elérhetőséget biztosít a Linux operációs rendszerben. A 2.6-os kernelben az ALSA az alapértelmezett hangrendszer, ily módon leváltotta az OSS-t (Open Sound System), amelyet a 2.4-es kernelekben használtak.

Az ALSA főbb jellemzői közé tartozik, hogy minden hangcsatolót hathatósan támogat, az egyszerűbb felhasználói eszközöktől egészen a professzionális többcsatornás hangeszközökig; teljesen moduláris felépítésű meghajtókat tartalmaz; többprocesszoros és többszálú működésre képes; a régebbi OSS API-t támogatja, és felhasználói programkönyvtárakat (alsa-lib) tartalmaz, melyekkel egyszerűbbé válik az alkalmazások programozása.

ALSA használata Gentoo Linuxon

A Gentoo egyik legnagyobb erőssége, hogy a felhasználó maximálisan ellenőrzése alatt tarthatja a rendszer telepítését/konfigurálását. Az ALSA Gentoo-n történő használata ugyanezt az elvet követi. Két módon bírhatod működésre az ALSA-t a rendszereden. A következő fejezetben közelebbről megvizsgáljuk mindkettőt.

2.  Az ALSA telepítése

Választható lehetőségek

Figyelmeztetés: Az alább bemutatott eljárások kölcsönösen kizárják egymást. Nem lehet egyidejűleg a kernelbe fordított ALSA-t és a media-sound/alsa-driver csomagot használnod. Nem fog sikerülni.

A két lehetőség a következő:

  1. A kernelben lévő ALSA-t használod. Ez a támogatott/ajánlott módszer.
  2. A Gentoo által biztosított media-sound/alsa-driver csomagot használod.

A kernelben lévő meghajtók és a alsa-driver csomag egy kicsit elérnek egymástól; ez mind tulajdonságokban, mind verzióban lehetséges, valamint a felhasználás módjában is különböznek. A feltöltő fejlesztők közösek, de a két ALSA projekt teljesen el van különítve egymástól; azaz nem teljesen azonosak. Vedd figyelembe, hogy a két megoldás különbözik, így ha valami nem működik az egyikkel, akkor lehet, hogy a másikkal működni fog. Próbáld ki! Most vessünk mindkettőre vetünk egy pillantást, mielőtt bármelyik mellett döntenénk.

Ha úgy döntesz, hogy a kernelben lévő ALSA-t használod, a következő előnyökkel és hátrányokkal számolj:

Kernelben lévő ALSA Előnyök és hátrányok
+ Nem kell extra csomagot emergelned; a meghajtók a kernelbe vannak integrálva.
+ Egyszer s mindenkorra elintézve, nem kell ismételten emergelni.
- Különbözhet a verziója az alsa-driver-től.

S ha úgy döntesz, hogy az alsa-driver-t használod:

alsa-driver Előnyök és hátrányok
+ Az ALSA Project lehető legfrissebb meghajtói.
+ Nagyon hasznos, ha audió-drivert szeretnél fejleszteni.
- Minden kernelfordításnál újra kell emergelni az alsa-driver -t.
- A helyes működéshez a kernel konfigurálásakor néhány opciót ki kell kapcsolni.

Tehát...

A fő különbség az alsa-driver és a kernelben lévő ALSA között egészen finomak, mint az előbb említettem. Mivel már régóta alig van különbség, bátorítunk, hogy az egyszerűbb használat végett a elősször kernelben lévő ALSA-t használd. Mielőtt hangrendszerrel kapcsolatos hibákat jelentenél be a Gentoo Bugzilla segítségével, kérjük, próbáld meg azokat reprodukálni az alsa-driver használatával is, s csak aztán küldd be a hibajelentést, bármi legyen is az eredmény.

Mielőtt hozzáfognál

A telepítésnek bármelyik módját választod is, tudnod kell, milyen meghajtókat használ a hangkártyád. A hangkártyák (akár alaplapi, akár másféle) többnyire PCI alapúak, tehát az lspci parancs segít kibányászni a megfelelő információt. Ha hiányzik ez a parancs a rendszeredből, az emerge sys-apps/pciutils segítségével tudod telepíteni. Ha USB-s hangkártyád van, akkor az lsusb (a sys-apps/usbutils csomag része) talán segít. ISA hangkártyák esetében próbáld ki a sys-apps/isapnptools használatát. Az alábbi oldalak is segíthetnek az ISA alapú hangkártyák működésre bírásában.

Megjegyzés: Az egyszerűbb magyarázat kedvéért az útmutató további részében feltételezzük, hogy PCI alapú hangkártyád van.

Most megpróbálunk további részleteket is megtudni a hangkártyáról.

Kódlista 2.1: A hangkártya részletes adatai

# lspci -v | grep -i audio
0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)

Most már tudjuk, hogy a gépben lévő hangkártya egy SoundBlaster Live!, és a kártya gyártója a Creative Labs. Menj el az ALSA Soundcard Matrix oldalra és válaszd ki a listából a Creative Labs opciót. Innen eljutsz a Creative Labs mátrix oldalára, ahol látható, hogy az SB Live! az emu10k1 modult használja. Egyelőre ennyi információra volt szükségünk. Ha további részletek is érdekelnek, akkor kattints a "Details" alatti linkre, ami elvisz a emu10k1 saját oldalára.

Ha szeretnél MIDI-t használni, akkor a /etc/make.conf-ban lévő USE flagjeid közé vedd fel a midi-t, mielőtt az ALSA csomagot emergelnéd. További segédleteket találhatsz a MIDI támogatásnál.

A kernelben lévő ALSA használata

Ha olyan ember vagy, aki szereti egyszerűen intézni a dolgokat, akkor ez a neked való módszer.

Megjegyzés: A 2005.0 kiadás óta a Gentoo Linux a 2.6-os kernelt használja alapértelmezettként. Ellenőrizd, hogy valóban 2.6-os kerneled van-e, ugyanis az alább leírt módszer nem fog működni 2.4-es sorozatú kernellel.

Konfiguráljuk a kernelt az ALSA engedélyezéséhez

Fontos: A genkernel használatakor futtasd a genkernel --menuconfig all parancsot, majd kövesd a Kernelbeállítások ALSA-hoz fejezetben leírtakat.

Kódlista 2.2: Irány a forrás

# cd /usr/src/linux
# make menuconfig

Megjegyzés: A fenti példa feltételezi, hogy a /usr/src/linux szimbolikus link arra a kernelforrásra mutat, amit használni akarsz. Ellenőrizd ezt, mielőtt továbblépsz.

Most vessünk egy pillantást azokra az opciókra, amelyeket engedélyeznünk kell a 2.6-os kernelben ahhoz, hogy megfelelően támogassa az ALSA a hangkártyánkat.

Az egyszerűség kedvéért minden példa modulként mutatja az ALSA-t. Érdemes követni ezt a példát, mert ez lehetővé teszi az alsaconf használatát,ami nagyon jól jön, amikor a hangkártyát kell beállítani. Fontos, hogy ne hagyd ki ennek a dokumentumnak a Beállítás részét. Ha mégis szeretnél beépített opciókat, akkor a megfelelő konfigurációs beállításokra figyelj oda.

Kódlista 2.3: A kernelben lévő ALSA-beállítások

Device Drivers  --->
   Sound  --->

(Ezt engedélyezni kell)
<M> Sound card support

(Az OSS legyen kikapcsolva)
Open Sound System   --->
   < > Open Sound System (DEPRECATED)

(Menj vissza egy lépést és üss Enter-t az ALSA-n)
Advanced Linux Sound Architecture  --->
   <M> Advanced Linux Sound Architecture
   (Válaszd ki ezt, ha MIDI szekvenciát és routolást akarsz)
   <M> Sequencer support
   (Régi típusú /dev/mixer/* és /dev/dsp/* támogatása. Ajánlott.)
   <M> OSS Mixer API
   <M> OSS PCM (digital audio) API

(Most pedig kiválaszthatod, mely eszközök támogatását akarod engedélyezni. Többnyire egyetlen típusú hangeszköz van a gépben, nem több. Ha egynél több hangkártyád van, akkor itt engedélyezd mindet.)

(Többnyire tesztelési és fejlesztési célokat szolgál, az 
átlagfelhasználó számára nem fontos, kivéve, ha tudja, mit csinál.)
Generic devices  --->

(ISA hangkártyákhoz)
ISA devices   --->
(Ha Gravis kártyád van, ezt válaszd ki.)
   <M> Gravis UltraSound Extreme

(Menj egy szinttel feljebb, a PCI eszközökhöz. A legtöbb mai hangkártya PCI eszköz.)
PCI devices   --->
   (Itt kiválasztjuk az emu10k1 meghajtót a hangkártyánkhoz)
   <M> Emu10k1 (SB Live!, Audigy, E-mu APS)
   (Vagy ha Intel kártyánk van:)
   <M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
   (Vagy ha VIA kártyánk van:)
   <M> VIA 82C686A/B, 8233/8235 AC97 Controller

(Menj egy szinttel feljebb és lépj be ide, ha USB-s hangkártyád van)
USB Devices   --->

Miután beállítottad a megfelelő opciókat, (újra) lefordíthatod a kernelt és az újraindítás után működni kell a hangkártyád ALSA-támogatásának az új kernelben. Ne felejtd el frissíteni a GRUB beállításait az új kernel használata előtt. Most tovább léphetsz az ALSA eszközök fejezetre és ellenőrizheted, hogy minden rendben működik-e.

Az ALSA Driver csomag használata

Tehát úgy döntöttél, hogy az alsa-driver csomagot fogod használni. Akkor vágjunk bele. Egy-két apróságot meg kell tenni ahhoz, hogy biztosan csak a hangkártyádhoz szükséges meghajtók forduljanak le. Bár ez nem létszükséglet, mégis jobb eltávolítani a fölösleges meghajtókat fordítás előtt.

Ha fogalmad sincs, milyen meghajtók szükségesek a hangkártyádhoz, vess egy pillantást az lspci részre. Ha már tudod a szükséges meghajtó nevét (példánkban az emu10k1), szerkeszd a /etc/make.conf fájlt és írd bele az ALSA_CARDS változót.

Kódlista 2.4: Az ALSA_CARDS hozzáadása a make.conf-hoz

(Egyetlen hangkártya esetén)
ALSA_CARDS="emu10k1"
(Egynél több hangkártya esetén; szóközökkel válaszd el a nevüket)

ALSA_CARDS="emu10k1 via82xx"

Ha saját kernelt fordítottál és használni akarod az alsa-driver csomagot, ellenőrizd az alábbiakat, mielőtt továbblépnél, különben az alsa-driver valószínűleg nem fog működni. A következő kódlista az ellenőrzés egy módját mutatja be.

Megjegyzés: Ha genkernel-t használsz, továbbléphetsz az alsa-driver telepítése fejezetre, mivel így a konfigurációd alapértelmezetten szinkronban lesz az alábbi beállításokkal.

  1. CONFIG_SOUND is set. (Alapvető hangkártya-támogatás bekapcsolva)
  2. CONFIG_SOUND_PRIME is not set. (Beépített OSS-támogatás kikapcsolva)
  3. CONFIG_SND is not set. (Beépített ALSA-támogatás kikapcsolva)
  4. A /usr/src/linux arra a kernelre mutat, amelyen működtetni akarod az ALSA-t.

Kódlista 2.5: .config ellenőrzése

(Feltételezzük, hogy a linux symlink a megfelelő kernelre mutat)
# cd /usr/src/linux
# grep SOUND .config
(1. igaz)
CONFIG_SOUND=y
(2. igaz)
CONFIG_SOUND_PRIME is not set
# grep SND .config
(és 3. igaz)
CONFIG_SND is not set

Már csak be kell gépelned a varázsszót és... nem, nem az abrakadabra az.

Kódlista 2.6: Az alsa-driver telepítése

# emerge alsa-driver

Fontos: Ne feledd, hogy minden kernel(újra)fordítás után futtatnod kell az emerge alsa-driver parancsot, mivel a korábbi verziók törlésre kerülnek. Ha ezt a folyamatot könnyebbé szeretnéd tenni, akkor emergeld a module-rebuild csomagot, amivel minden modult tartalmazó csomagot egyszerűen újrafordíthatsz. Első futtatásakor a module-rebuild populate paranccsal építs fel egy listát, amit minden kernelfordítás után újra kell emergelni. Ezek után a module-rebuild rebuild parancs minden külső modult tartalmazó csomagot újrafordít és telepít.

3.  Az ALSA beállítása és tesztelése

ALSA-eszközök

Az alsa-utils szerves részét képezi az ALSA-nak, s egy csomó igen hasznos programot tartalmaz, beleértve az ALSA rendszerindító szkripteket. Ezért erősen javasoljuk, hogy telepítsd az alsa-utils csomagot.

Kódlista 3.1: Az alsa-utils telepítése

# emerge alsa-utils

Megjegyzés: Ha engedélyezted az ALSA-támogatást a kernelben, és nem modulként fordítottad az ALSA-t, akkor ugorj az ALSA Initszkript részre. Már csak be kell állítani az ALSA-t. Ezt igen könnyű megtenni az alsaconf eszköz segítségével, amely az alsa-utils csomag része.

Beállítás

Az újabb verziójú udev (>=udev-103) egy bizonyos mértékű, automatikus kernel-szintű konfigurációt el tud végezni. Ha lehet ezt a folyamatot hagyd meg neki. Ha mégsem működik, akkor használd az alsaconf-ot úgy, ahogy az alább be lesz mutatva.

Megjegyzés: Zárj be minden futó alkalmazást, ami bárhogyan is hozzáférhet a hangkártyához, míg az alsaconf-ot futtatod.

A hangkártyád beállításához írd be egy terminálba rootként: alsaconf.

Kódlista 3.2: Az alsaconf meghívása

# alsaconf

Takaros kis menüs felület fogad, amely automatikusan végigpróbálja az eszközeidet és igyekszik felismerni a hangkártyádat, majd megkér, hogy válaszd ki a listából a megfelelőt. Ha ez kész, engedélyt kér arra, hogy automatikus változtatásokat eszközöljön az /etc/modules.d/alsa fájlban. Ezután optimálisra beállítja a hangerőszinteket, futtatja a update-modules programot, és elindítja a /etc/init.d/alsasound szolgáltatást. Amikor az alsaconf kilép, a következő lépés az ALSA rendszerindító szkript beállítása lesz.

Az ALSA rendszerindító szkript

Már csaknem készen vagyunk. Az ALSA telepítésének bármelyik módját választottad is, valamivel be kell töltetned a modulokat vagy inicializálni az ALSA-t és visszaállítani a hangerő-beállításokat rendszerinduláskor. Az ALSA rendszerindító szkript mindezt elintézi neked, a neve alsasound. Add hozzá a rendszerindító futási szinthez.

Kódlista 3.3: Az ALSA hozzáadása a rendszerindító futási szinthez

# rc-update add alsasound boot
 * alsasound added to runlevel boot
 * rc-update complete.

Most ellenőrizd a /etc/conf.d/alsasound fájlt és győződj meg róla, hogy a SAVE_ON_STOP változó értéke "yes". Így rendszerleálláskor nem vesznek el a beállításaid.

Az audio csoport

Mielőtt tesztelni kezdenénk, van még egy utolsó fontos dolog, amit be kell állítani. Ökölszabály bármilyen *nix operációs rendszerben, hogy semmit ne futtass rootként, hacsak nem muszáj. Ez a mostani esetre is vonatkozik ;) Hogyan? Nos, többnyire egyszerű felhasználóként leszel bejeletkezve, és szeretnél zenét hallgatni vagy másképp hozzáférni a hangkártyádhoz. Hogy ez megtörténhessen, fontos, hogy tagja legyél az "audio" csoportnak. Ezen a ponton tehát az audio csoporthoz fogunk hozzáadni felhasználókat, hogy zavartalanul hozzáférhessenek a hangeszközökhöz. A gpasswd parancsot használjuk erre, s mindezt rootként bejelentkezve kell végrehajtani.

Kódlista 3.4: Felhasználók hozzáadása az audio csoporthoz

(A <username> helyére írd a megfelelő felhasználónevet)

# gpasswd -a <username> audio 
Adding user <username> to group audio

A hangerő ellenőrzése

Mostanra minden szükséges dolgot beállítottunk, indítsuk hát el az ALSA-t. Ha lefuttattad az alsaconf parancsot, kihagyhatod ezt a lépést, mivel az alsaconf már megtette ezeket helyetted.

Kódlista 3.5: A szolgáltatás elindítása

# /etc/init.d/alsasound start

Miután minden szükséges teendőt elvégeztünk, ellenőrizni kell a hangerőt, mivel a legtöbb esetben némítva van. Erre a célra az alsamixer programot használjuk.

Kódlista 3.6: Az alsamixer indítása

(Konzolon nyílik meg. Csak a szükséges beállítások látszanak)
# alsamixer

Fontos: Ha gond van az alsamixer indításával és olyan hibaüzeneteket kapsz, mint pl. "alsamixer: function snd_ctl_open failed for default: No such file or directory", akkor itt rendszerint az udev eszközbeállításaival van gond. Futtasd a killall udevd; udevstart parancsot, ezzel újra betöltődnek a /dev alatti bejegyzések, majd indítsd el az alsamixer-t. Ezzel meg kell oldódnia a problémának.

Körülbelül így fog kinézni az ALSA Mixer az első indításkor. Figyelj a Master és PCM csatornákra, amelyek alatt MM látható. Ez azt jelenti, hogy mindkettő némítva van. Ha megpróbálsz bármit is lejátszani az alsamixer-rel ebben az állapotban, semmit nem fogsz hallani a hangszórókból..


Ábra 3.1: The Alsa Mixer Main Window, Muted

Fig. 1: AlsaMixer Muted

Adjunk hangot a csatornákra és állítsuk be a szükséges hangerőt.

Figyelmeztetés: Mind a Master, mind a PCM csatornára hangot kell adni és hallható hangerőt beállítani, ha hallani szeretnél valamit a hangszórókból.

  • A csatornák közti mozgáshoz használd a balra-nyíl és jobbra-nyíl gombokat. (<- & ->)
  • A némítás ki- vagy bekapcsolásához menj a megfelelő csatornára, pl. a Masterre, és nyomd meg a m betűt a billentyűzeten.
  • A hangerő növelését vagy csökkentését a fel-nyíl és le-nyíl billentyűkkel érheted el.

Megjegyzés: Óvatosan állítsd be a Bass és Treble értékeit. Az 50 általában mindkettőnek megfelelő érték. A Bass túlzottan magas értéke recsegést okoz az olyan hangszórók esetén, amelyek nincsenek felkészítve ennek az értéknek a kezelésére.

Miután mindezzel kész vagy, az ALSA Mixer valahogy így fog kinézni, mint alább. Figyeld meg a 00 jelzéseket az MM helyett, és az optimális hangerő-beállításokat.


Ábra 3.2: Alsa Mixer ready to roll

Fig. 2: AlsaMixer Unmuted

A hang ellenőrzése

Na végre. Jöhet egy kis zene. Ha eddig minden rendben ment, most már hallgathatsz egy kis jó zenét. Gyors tesztelésre alkalmas lehet egy parancssoros eszköz, mint pl. a media-sound/madplay. Használhatsz persze valami ismertebbet is, mint pl. mpg123. Ha ogg-rajongó vagy, ajánljuk az ogg123-at, amely része a media-sound/vorbis-tools csomagnak. Végül is használd nyugodtan azt a lejátszót, amelyiket a legjobban ismered. Mint mindig, az emerge lesz a barátod.

Kódlista 3.7: Szoftver-telepítés

(Telepítsd az óhajtott alkalmazásokat)
# emerge madplay mpg123
(.ogg fájlok lejátszáshoz)
# emerge vorbis-tools

És most már végre hallgathatod a kedvenc számodat...

Kódlista 3.8: Zenelejátszás

# madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3
MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
          Title: Dread Rock
         Artist: Paul Oakenfold
          Album: Matrix Reloaded
           Year: 2003
          Genre: Soundtrack
                 Soundtrack
 00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC

# ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg
Audio Device:   Advanced Linux Sound Architecture (ALSA) output

Playing: Paul Oakenfold - Dread Rock.ogg
Ogg Vorbis stream: 2 channel, 44100 Hz
Genre: Soundtrack
Transcoded: mp3;160
Title: Dread Rock
Artist: Paul Oakenfold
Date: 2003
Album: Matrix Reloaded
Time: 00:11.31 [04:28.75] of 04:40.06  (200.6 kbps)  Output Buffer  96.9%

Az ALSA és a USE

Most add hozzá az alsa use flaget a /etc/make.conf-hoz, így az ALSA-támogatással rendelkező alkalmazások ezzel fordulnak majd le. Néhány architektúrán, pl. x86-on és amd64-en ez a flag alapból engedélyezve van.

Problémák adódtak?

Ha valamilyen oknál fogva nem hallatszik semmilyen hang, először is ellenőrizd az alsamixer beállításait. A problémák 80 %- a a némított csatornákkal vagy az alacsony hangerővel van összefüggésben. Nézd meg az ablakkezelőd hangbeállításait is, hogy valóban hallható hangerőre van-e állítva.

A /proc a barátod. Ez esetben pedig a /proc/asound a legjobb barátod. Nézzük meg, mennyi információval lát el bennünket.

Kódlista 3.9: Szórakozás a /proc/asound segítségével

(A leglényegesebb, hogy ha a /proc/asound/cards megmutatja a 
hangkártyádat, akkor megnyugodthatsz, hogy az ALSA szépen felismerte.)
# cat /proc/asound/cards
0 [Live           ]: EMU10K1 - Sound Blaster Live!
                     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11

(Ha kíváncsi vagy, a jelenleg futó ALSA verzióra)
# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).

(ALSA OSS emuláció részletei)
# cat /proc/asound/oss/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
Config options: 0

Installed drivers:
Type 10: ALSA emulation

Card config:
Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11

Audio devices:
0: EMU10K1 (DUPLEX)

Synth devices: NOT ENABLED IN CONFIG

Midi devices:
0: EMU10K1 MPU-401 (UART)

Timers:
7: system timer

Mixers:
0: SigmaTel STAC9721/23

A másik leggyakoribb probléma, amivel a felhasználók szembesülnek, a rettegett "Unknown symbol in module" hibaüzenet. Alább erre mutatunk egy példát.

Kódlista 3.10: Unknown Symbol in module hibaüzenet

# /etc/init.d/alsasound start
 * Loading ALSA modules ...
 *   Loading: snd-card-0 ...                                              [ ok ]
 *   Loading: snd-pcm-oss ...
WARNING: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting
snd_pcm_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
                                                                          [ !! ]
 *   Loading: snd-mixer-oss ...
FATAL: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
                                                                          [ !! ]
 *   Loading: snd-seq ...                                                 [ ok ]
 *   Loading: snd-emu10k1-synth ...                                       [ ok ]
 *   Loading: snd-seq-midi ...                                            [ ok ]
 * Restoring Mixer Levels ...                                             [ ok ]

S ha vetsz egy pillantást a dmesg-re, valószínűleg ezt látod:

Kódlista 3.11: dmesg kimenete

(Csak a lényeges részeket láthatod lejjebb)
# dmesg | less
ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register
snd_pcm_oss: Unknown symbol snd_unregister_oss_device
snd_pcm_oss: Unknown symbol snd_register_oss_device
snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
snd_pcm_oss: Unknown symbol snd_oss_info_register
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register

A fenti probléma akkor merül fel, ha alsa-driver-ről kernelben lévő ALSA-ra váltasz, ugyanis amikor unmergeled az alsa-driver-t, a modul fájlok konfigurációs védelem alatt vannak, s ezért megmaradnak. Így aztán, amikor a kernelben lévő meghajtókra váltasz, a modprobe az alsa-driver és a kernelmodulok keverékét adja, ez okozza a fenti problémát.

A megoldás igen egyszerű: kézzel el kell távolítani a problémát okozó könyvtárat az alsa-driver unmergelése után. Vigyázz, hogy a megfelelő kernelverziót távolítsd el, ne az aktuálisat!

Kódlista 3.12: Az alsa-driver modulok eltávolítása

# rm -rf /lib/modules/$(uname -r)/alsa-driver

A fentiekhez hasonló hibaüzenetek másik forrása lehet esetleg egy fájl a /etc/modules.d könyvtárban, amely egy fölösleges device_mode paramétert ad át. Győződj meg róla, hogy valóban ez a probléma oka, és keresd meg a bűnös fájlt.

Kódlista 3.13: device_mode keresése

(Ellenőrizd a dmesg kimenetét)
# dmesg | grep device_mode
snd: Unknown parameter `device_mode'
(Most keresd meg a hiba forrását)
# grep device_mode /etc/modules.d/*

Rendszerint egy alsa nevű fájl lesz az, amelyben szerepel egy ilyen sor: options snd device_mode=0666. Távolítsd el ezt a sort és indítsd újra az alsasound szolgáltatást, ez megoldja a problémát.

4.  Egyéb ALSA-val kapcsolatos dolgok

MIDI támogatás beállítása

Elsőnek ellenőrizd le, hogy a midi USE flag engedélyezve van-e a /etc/make.conf fájlban. Ha nem, akkor most tedd meg. Utánna emergeld újra az összes ALSA csomagot (alsa-lib, alsa-utils, and alsa-driver), hogy érvényre jusson a beállítás.

Ha a hangkártyádon alaplapi MIDI-szintetizátor van, és szeretnél .mid fájlokat hallgatni, telepítsd a awesfx csomagot, ami alapvetően olyan eszközök gyűjteménye, amelyekkel az AWE32 meghajtót lehet vezérelni. Először tehát ezt kell telepíteni. Ha nincs hardveres szintetizátorod, használhatsz virtuálisat is. Lásd a Virtuális szintetizátorok fejezetet.

Kódlista 4.1: awesfx telepítése

# emerge awesfx

Megjegyzés: Másold át a SoundFont (SF2) fájlokat a hangkártyád telepítőcédéjéről vagy egy Windows-telepítésből a /usr/share/sounds/sf2/ könyvtárba. Például egy Creative SBLive! hangkártyához tartozó sf2-fájl 8MBGMSFX.SF2 néven található.

Miután átmásoltad a SoundFont fájlokat, az alábbi módon játszhatsz le midi fájlokat. Hozzáadhatod a asfxload parancsot a /etc/conf.d/local.start-hoz, így a SoundFont minden rendszerindításkor betöltődik.

Megjegyzés: Az alábbi kódlistá(k)ban említett /mnt elérési utak nem lesznek azonosak a te gépeden találhatóakkal, hiszen ezek csak példák. Ügyelj arra, hogy a gépednek megfelelő módon írd át az elérési utat.

Kódlista 4.2: Soundfont betöltése

(Először is másold be a SoundFontot)
# cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/
(Vagy szerezd be a SoundBlaster cédédről)
# cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/
(Betöltjük a megfelelő Soundfontot)
# asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2

Most már le tudsz játszani midi fájlokat, pl. az aplaymidi alkalmazással. Ha így futtatod: aplaymidi -l, megkapod az elérhető portok listáját, és kiválaszthatod, melyiken akarod lejátszani a fájlt.

Kódlista 4.3: MIDI lejátszás

(Nyitott portok ellenőrzése)
# aplaymidi -l
 Port    Client name                      Port name
 64:0    EMU10K1 MPU-401 (UART)           EMU10K1 MPU-401 (UART)
 65:0    Emu10k1 WaveTable                Emu10k1 Port 0
 65:1    Emu10k1 WaveTable                Emu10k1 Port 1
 65:2    Emu10k1 WaveTable                Emu10k1 Port 2
 65:3    Emu10k1 WaveTable                Emu10k1 Port 3
(Port kiválasztása és .mid fájl lejátszása)
#  aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid

Virtuális szintetizátorok

Ha a hangkártyádon nincs hardveres szintetizátor, használhatsz virtuálisat is, mint pl. a timidity++. A telepítése gyerekjáték.

Kódlista 4.4: timidity++ telepítése

# emerge timidity++

A timiditynek is hangfontokra van szüksége a lejátszáshoz. Valószínűleg szeretnél c somagot szerezni hozzájuk. A Portageban van néhány hangfont, például a timidity-eawpatches vagy a timidity-shompatches program, ami biztosít majd néhány hangfontot. Több hangfont-konfigurációd is lehet, és a sajátodat beteheted a /usr/share/timidity/ alá. A különféle timidity-beálllítások között az eselect segítségével válthasz.

Kódlista 4.5: Konfiguráció választása

# eselect timidity list
# eselect timidity set eawpatches

Ne felejtsd el hozzáadni a timidity-t az alapértelmezett futási szinthez.

Kódlista 4.6: timidity hozzáadása az alapértelmezett futási szinthez

# rc-update add timidity default
# /etc/init.d/timidity start

Most kipróbálhatod mindazt, ami a MIDI lejátszás fejezetben olvasható.

Eszközök és firmware

Bizonyos hangkártyák képesek kihasználni az alsa-tools és az alsa-firmware csomagokban lévő eszközöket. Mindkettőt egy egyszerű emerge paranccsal tudod feltelepíteni.

Kódlista 4.7: ALSA eszközök telepítése

# emerge alsa-tools

Egyszerre több hangkártya

Ha több hangkártya van a gépedben egyidejűleg, akkor az ALSA-t modulként kell használnod (vagy a alsa-driver csomagot használd). Elsőnek az / etc/modules.d/alsa fájlban kell részletezned a beállításokat. A kártyákhoz szükséges modulok innen lesznek beazonosítva. 0 jelenti az első kártyát, 1 a másodikat, és így tovább.Itt egy példát találhatsz egy kétkártyás rendszerre:

Kódlista 4.8: Két hangkártya a /etc/modules.d/alsa-ban

options snd-emu10k1 index=0
options snd-via82xx index=1

Vagy, ha két ugyanazt a modult használó kártyád van, akkor az egy sorban is meghatározhatod, csak vesszővel el kell választani a sorszámukat. A lejjebbi példában egy olyan rendszert mutatok be, ami két Intel High Definition Audio kártyát tartalmaz.

Kódlista 4.9: Több hangkártya a /etc/modules.d/alsa-ban

options snd-ymfpci index=0
options snd-hda-intel index=1,2

Pluginok

Feltelepíthetsz extra funkcionalitást biztosító pluginokat is. Az alsa-plugins gyűjteményben található például a PulseAudio output, egy példa ráta-konverter, a jack (egy alacsony elérési idejű hangszerver) és egy enkóder, ami a digitális, 6-csatornás audió S/PDIF kimenetet S/PDIF (optikai és koaxiális) elérheted. A szükséges pluginokat helyi USE flagekkel tudod kiválasztani a /etc/portage/package.use fájlban.

Kódlista 4.10: alsa-plugins telepítése

# emerge -avt alsa-plugins

Nagy-nagy köszönet illeti...

Mindazokat, akik hozzájárultak a Gentoo ALSA Útmutató korábbi változatához: Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston, John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft and Erwin.

Hivatkozások



Nyomtatás

Frissítve 2007. május 7.

Ezen dokumentum eredeti változatának utolsó frissítési dátuma 2009. augusztus 5.

Összefoglaló: Ez az útmutató segítséget nyújt az ALSA telepítéséhez Gentoo Linuxon.

Shyam Mani
Szerző

Joshua Saddler
Szerző

Diego Pettenò
Közreműködő

Konkoly Katalin
Fordító

Lónyai Gergely
Lektor

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.