Gentoo Logo

Ghid ALSA pentru Gentoo Linux

Conţinut:

1.  Introducere

Ce este ALSA?

ALSA, ce înseamnă Advanced Linux Sound Architecture (Arhitectura Avansată de Sunet în Linux), oferă funcţionalitate audio şi MIDI (Musical Instrument Digital Interface - Interfaţa Digitală pentru Instrumente Muzicale) în sistemul de operare Linux. ALSA este subsistemul implicit în versiunea de kernel 2.6, acesta înlocuind OSS (Open Sound System - Sistemul Deschis pentru Sunet), ce a fost utilizat în versiunile de kernel 2.4.

Principalele caracteristici ale ALSA includ suportul eficient pentru toate tipurile de interfeţe audio, de la plăcile de sunet pentru consumatorii normali, până la echipamente de sunet profesionale, driver-e modularizate, suport SMP şi comunicarea sigură între thread-uri, compatibilitate inversă cu OSS şi o librărie din spaţiul utilizator denumită alsa-lib pentru a înlesni dezvoltarea de aplicaţii.

ALSA în Gentoo

Una din caracterisiticile cele mai puternice din Gentoo reprezintă oferirea controlului maxim asupra modului în care un sistem este instalat/configurat. ALSA din Gentoo urmează acelaşi principiu. Există două modalităţi în care puteţi să includeţi suportul ALSA în sistem. Le vom trata în detaliu în capitolul următor.

2.  Instalarea ALSA

Opţiuni

Atenţie: Metodele descrise mai jos se exclud mutual. Nu puteţi avea ALSA compilată în kernel şi utiliza şi media-sound/alsa-driver. Va returna cu siguranţă eroare.

Cele două opţiuni sunt :

  1. Utilizarea sistemului ALSA oferit de kernel-ul dvs. Aceasta este metoda preferată/recomandată.
  2. Utilizaţi pachetul media-sound/alsa-driver din Gentoo.

Vom arunca o privire în ambele variante înainte de a decide, în final, pentru una din ele.

Dacă aţi utiliza ALSA din kernel, există următoarele argumente pro şi contra:

ALSA din Kernel Pro şi Contra
+ Destul de stabil şi driver-ele sunt integrate în kernel.
+ O singură instalare, nu există operaţii de emerge repetate.
- Poate fi o versiune puţin mai veche decât alsa-driver.

Iar, dacă aţi utiliza alsa-driver,

alsa-driver Pro şi Contra
+ Ultimile driver-e publicate de Proiectul ALSA.
- Fiecare recompilare de kernel necesită o reinstalare a pachetului alsa-driver.
- Are nevoie ca anumite opţiuni de kernel să fie dezactivate pentru a funcţiona corect.

Deci...

Principala diferenţă între utilizarea pachetului alsa-driver şi a modulelor ALSA ce sunt integrate în kernel este că alsa-driver este, în general, mai actualizată decât versiunea din kernel. Deoarece aceasta nu face o diferenţă imensă, sunteţi încurajaţi să utilizaţi modulele ALSA oferite de kernel, pentru o utilizare mai uşoară. Înainte de a raporta orice probleme legate de sunet în Gentoo Bugzilla, vă rugăm să încercaţi să le reproduceţi utilizând alsa-driver şi apoi să completaţi raportul indiferent de rezultat.

Înainte de a începe

Orice metodă de instalare veţi alege, trebuie să ştiţi ce driver-e utilizează placa dvs. de sunet. În majoritatea cazurilor, plăcile de sunet (integrate sau nu) sunt bazate pe PCI iar lspci vă va ajuta în descoperirea informaţiei necesare. Vă rugăm să efectuaţi emerge sys-apps/pciutils pentru a avea comanda lspci, în cazul în care nu îl aveţi deja instalat. În cazul în care aveţi o placă de sunet pe USB, comanda lsusb din pachetul sys-apps/usbutils vă poate fi de folos. Pentru plăcile ISA, încercaţi să utilizaţi sys-apps/isapnptools. De asemenea, următoarele pagini pot ajuta utilizatorii cu plăcile de sunet pe magistrală ISA.

Notă: Pentru uşurinţa explicaţiei, vom presupune că utilizatorul deţine o placă bazată pe PCI pentru tot restul acestui ghid.

Vom începe prin găsirea detaliilor despre placa de sunet.

Cod 2.1: Detalii despre Placa de Sunet

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

Acum, cunoaştem că placa dvs. de sunet de pe maşină este modelul Sound Blaster Live! şi producătorul acesteia este Creative Labs. Deschideţi Matricea Plăcilor de Sunet ALSA şi selectaţi Creative Labs din căsuţa meniu. Veţi fi direcţionaţi către pagina cu matricea Creative Labs unde veţi putea observa că SB Live! utilizează modulul emu10k1. Aceasta este informaţia de care avem nevoie momentan. Dacă sunteţi interesat de informaţiile detaliate, puteţi efectua click pe link-ul de lângă textul "Details" şi veţi fi direcţionaţi către pagina specifică emu10k1.

Utilizarea modulelor ALSA oferite de Kernel

Dacă sunteţi o persoană care păstrează lucrurile simple, aşa cum fac eu, atunci aceasta este soluţia ce trebuie urmată.

Notă: Începând cu versiunea 2005.0, Gentoo Linux utilizează 2.6 ca kernel implicit. Doar în cazul în care utilizaţi în mod special profilul 2.4, gentoo-sources va fi un kernel 2.6 pe majoritatea arhitecturilor. Vă rugăm să verificaţi dacă versiunea dvs. de kernel este din seria 2.6. Această metodă nu va funcţiona pe un kernel 2.4.

Haideţi, acum, să configurăm kernel-ul pentru a activa ALSA.

Important: Utilizatorii genkernel ar trebui să ruleze, acum, genkernel --menuconfig all şi apoi să urmeze instrucţiunile din Opţiuni de Kernel pentru ALSA.

Cod 2.2: Navigând către surse

# cd /usr/src/linux
# make menuconfig

Notă: Exemplul de mai sus presupune că link-ul simbolic /usr/src/linux indică spre sursele kernel-ului pe care doriţi să-l utilizaţi. Vă rugăm să vă asiguraţi de acest lucru înainte de a începe.

Acum, vom vedea unele din opţiunile ce vor trebui activate în kernel-ul 2.6 pentru a ne asigura suportul ALSA corect pentru placa noastră de sunet.

Vă rugăm să notaţi că, pentru o mai mare uşurinţă, toate exemplele vor indica ALSA compilată cu module. Este recomandată această soluţie pentru că permite utilizarea ulterioară a alsaconf ce este foarte utilă când vă configuraţi placa de sunet. Vă rugăm să nu omiteţi secţiunea despre Configurare a acestui document. Dacă tot mai doriţi să aveţi opţiunile direct în kernel, asiguraţi-vă că efectuaţi modificări configuraţiei, în concordanţă.

Cod 2.3: Opţiuni de Kernel pentru ALSA

Device Drivers  --->
   Sound  --->
   
(Aceasta trebuie activată)
<M> Sound card support

(Asiguraţi-vă că OSS este dezactivat)
Open Sound System   --->
   < > Open Sound System (DEPRECATED)

(Navigaţi un pas înapoi şi intraţi în ALSA)
Advanced Linux Sound Architecture  --->
   <M> Advanced Linux Sound Architecture
   (Selectaţi această opţiune dacă doriţi secvenţiere şi rutare MIDI)
   <M> Sequencer support
   (Suport pentru stilul vechi /dev/mixer* şi /dev/dsp*. Recomandat.)
   <M> OSS Mixer API
   <M> OSS PCM (digital audio) API 

(Acum, trebuie să alegeţi dispozitivele pentru care activaţi suportul.
În general, aveţi doar un tip de dispozitiv, şi nu mai multe. Dacă aveţi 
mai mult de un dispozitiv, vă rugăm să le activaţi pe toate aici.)

(Mai mult în scopuri de testare şi dezvoltare, nu este necesar pentru
utilizatorii normali, decât dacă ştiţi ce faceţi.)
Generic devices  --->
   
(Pentru plăcile de sunet ISA)
ISA devices   --->
(DACĂ aţi fi avut Gravis, aţi fi selectat această opţiune)
   <M> Gravis UltraSound Extreme

(Navigaţi un nivel anterior în secţiunea PCI devices. Cele mai multe dintre
plăcile din ziua de astăzi sunt dispozitive PCI
PCI devices   --->
   (Vom selecta driver-ul emu10k1 pentru placa noastră)
   <M> Emu10k1 (SB Live!, Audigy, E-mu APS)
   (Sau, o placă Intel ar fi)
   <M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
   (Sau, dacă aveţi o placă VIA)
   <M> VIA 82C686A/B, 8233/8235 AC97 Controller

(Navigaţi un nivel anterior şi selectaţi în cazul în care aveţi
o placă de sunet pe USB)
USB Devices   --->

Acum, că toate opţiunile sunt selectate, puteţi (re)compila kernel-ul şi suportul ALSA pentru placa dvs. de sunet ar trebui să fie funcţional odată ce reporniţi în noul kernel. Nu uitaţi să actualizaţi configuraţia GRUB pentru a utiliza noul kernel compilat. Puteţi continua, acum, cu Utilitare ALSA şi să vedeţi dacă totul funcţionează aşa cum ar trebui.

Utilizarea pachetului ALSA Driver

Aşadar, aţi decis să utilizaţi soluţia alsa-driver. Să începem, atunci. Există unele lucruri minore ce trebuie efectuate pentru a vă asigura că numai driver-ele pentru placa dvs. de sunet sunt compilate. Deşi acest pas nu este chiar necesar, acesta va determina necompilarea tuturor driver-e, ce vor fi compilate altfel.

Dacă nu aveţi nici o idee despre ce driver-e necesită placa dvs. de sunet, vă rugăm să consultaţi secţiunea lspci a acestui ghid. Odată ce aveţi un nume de driver (emu10k1 în exemplul nostru), editaţi /etc/make.conf şi adăugaţi o variabilă, ALSA_CARDS.

Cod 2.4: Adăugarea ALSA_CARDS în make.conf

(Pentru o placă de sunet)
ALSA_CARDS="emu10k1"
(Pentru mai mult de o placă de sunet, separaţi numele cu spaţii)
ALSA_CARDS="emu10k1 via82xx"

Notă: Utilizatorii genkernel pot continua cu Instalarea alsa-driver deoarece configuraţia lor este aceeaşi cu cea descrisă mai jos, implicit.

Dacă aţi compilat kernel-ul dvs. şi doriţi să utilizaţi alsa-driver, vă rugăm să vă asiguraţi că urmaţi următorii paşi înainte de a începe, altfel alsa-driver probabil că va returna eroare. Următorul cod vă oferă o modalitate de a efectua aceste verificări.

  1. CONFIG_SOUND este activat. (suportul Basic Sound activat)
  2. CONFIG_SOUND_PRIME nu este activat. (Suportul din kernel pentru OSS este dezactivat)
  3. CONFIG_SND nu este activat. (Suportul ALSA din kernel este dezactivat)
  4. /usr/src/linux indică kernel-ul în care doriţi să funcţioneze ALSA.

Cod 2.5: verificări pentru .config

(Presupunând că link-ul simbolic linux indică kernel-ul corect)
# cd /usr/src/linux
# grep SOUND .config
(1. este adevărat)
CONFIG_SOUND=y
(2. este adevărat)
CONFIG_SOUND_PRIME is not set
# grep SND .config
(şi 3. este adevărat)
CONFIG_SND is not set

Acum, tot ce trebuie să faceţi este să tastaţi cuvintele magice... şi nu, nu este vorba de abracadabra.

Cod 2.6: Instalarea alsa-driver

# emerge alsa-driver

Important: Vă rugăm să notaţi că va trebui să rulaţi emerge alsa-driver după fiecare (re)compilare de kernel, deoarece driver-ele precedente sunt şterse.

3.  Configurarea/Testarea ALSA

Utilitare ALSA

alsa-utils formează o parte integrală cu ALSA şi conţine multe programe ce sunt foarte utile, inclusiv script-urile de iniţializare ALSA. De aceea, vă recomandăm foarte mult să instalaţi alsa-utils

Cod 3.1: Instalarea alsa-utils

# emerge alsa-utils

Notă: Dacă aţi activat ALSA în kernel şi nu aţi compilat ALSA ca module, vă rugăm să continuaţi cu secţiunea despre Script-ul de iniţializare. Restul, va trebui să configuraţi ALSA. Aceasta se efectuează foarte uşor prin existenţa utilitarului alsaconf oferit de alsa-utils.

Configurare

Notă: Vă rugăm să închideţi orice program ce ar putea să acceseze placa de sunet în timp ce rulează alsaconf.

Cea mai uşoară soluţie pentru a vă configura placa de sunet este rularea alsaconf. Trebuie doar să tastaţi alsaconf într-o sesiune shell a utilizatorului de sistem root.

Cod 3.2: Invocarea alsaconf

# alsaconf

Acum, veţi vedea o interfaţă simplă bazată pe meniuri ce vă va proba automat dispozitivele dvs. şi va încerca să vă găsească placa dvs. de sunet. Vi se va cere să selectaţi placa de sunet dintr-o listă. Odată ce efectuaţi acest pas, vi se va cere permisiunea de a efectua automat modificările necesare în /etc/modules.d/alsa. Vă va ajusta, apoi, nivelele de volum la valori optime şi va rula modules-update şi porni serviciul /etc/init.d/alsasound. Odată ce alsaconf există, puteţi începe setarea script-ului de iniţializare ALSA.

Script-ul de Iniţializare ALSA

Suntem aproape gata cu toate setările. Oricare metodă alegeţi pentru a instala ALSA, va trebui să vi se încarce modulele sau să vi se iniţializeze ALSA şi să vă restaureze setările de volum când sistemul este pornit. Script-ul de iniţializare ALSA manipulează toate aceste operaţii pentru dvs., şi este denumit alsasound. Adăugaţi-l în nivelul de iniţializare boot.

Cod 3.3: Adăugarea ALSA în nivelul boot

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

Apoi, trebuie doar să verificaţi fişierul /etc/conf.d/alsasound şi să vă asiguraţi că variabila SAVE_ON_STOP este setată pe yes. Aceasta salvează setările plăcii dvs. de sunet când opriţi sistemul.

Grupul Audio

Înainte de a continua cu testarea, mai există un ultim lucru important ce trebuie setat. Regula de bază într-un sistem de operare *nix: Nu rulaţi ca root decât dacă este necesar. Aceasta se aplică şi aici, de asemenea ;) Cum? Ei bine, în majoritatea situaţiilor când ar trebui să vă autentificaţi ca un utilizator de sistem veţi dori să ascultaţi muzică sau să accesaţi placa de sunet. Pentru aceasta să se poată întâmpla, trebui să fiţi în grupul "audio". La acest pas vom adăuga utilizatori în grupul audio pentru ca aceştia să nu întâmpine nici o problemă când vor dori să acceseze dispozitive de sunet. Vom utiliza gpasswd acum, şi trebuie să fiţi autentificaţi ca root pentru ca aceasta să funcţioneze.

Cod 3.4: Adăugarea utilizatorilor în grupul audio

(Înlocuiţi <nume-utilizator> cu numele utilizatorului dvs.)
# gpasswd -a <nume-utilizator> audio 
Adding user <nume-utilizator> to group audio

Verificarea Volumului!

Am completat toate setările şi necesităţile, deci haideţi să pornim ALSA. Dacă aţi rulat alsaconf, puteţi omite acest pas, deoarece alsaconf l-a efectuat deja pentru dvs.

Cod 3.5: Pornirea serviciului

(ALSA ca module)
# /etc/init.d/alsasound start
 * Loading ALSA modules ...
 * Loading: snd-card-0 ...        [ ok ]
 * Loading: snd-pcm-oss ...       [ ok ]
 * Loading: snd-seq ...           [ ok ]
 * Loading: snd-emu10k1-synth ... [ ok ]
 * Loading: snd-seq-midi ...      [ ok ]
 * Restoring Mixer Levels ...     [ ok ]
(ALSA compilată în kernel)
# /etc/init.d/alsasound start
 * Loading ALSA modules ...
 * Restoring Mixer Levels ...     [ ok ]

Acum, că acţiunile necesare au fost efectuate, trebuie să verificăm volumul, deoarece, în anumite cazuri, este mut. Vom utiliza alsamixer în acest scop.

Cod 3.6: Rularea alsamixer

(Deschide un program de consolă. Doar setările necesare sunt afişate)
# alsamixer

Important: Dacă aveţi probleme la pornirea alsamixer şi primiţi erori ca alsamixer: function snd_ctl_open failed for default: No such file or directory, aceasta se întâmplă de obicei din cauza unei probleme cu udev la setarea dispozitivelor. Rulaţi killall udevd; udevstart pentru a reîncărca intrările din directorul /dev şi porniţi alsamixer. Ar trebui să rezolve problema.

Aşa ar putea arăta ALSA Mixer, prima data când o deschideţi. Fiţi atenţi la canalele Master şi PCM care, amândouă, au afişat MM dedesupt. Aceasta înseamnă că sunt mute. Dacă încercaţi să rulaţi ceva cu alsamixer în această stare, nu veţi auzi nimic în difuzoare.


Figura 3.1: Fereastra Principală a Alsa Mixer, Mută

Fig. 1: AlsaMixer Mut

Acum, vom activa volumele canalelor, şi seta volumele acestora, după necesităţi.

Atenţie: Atât Master cât şi PCM trebuie să fie active şi setate la nivele de volum sesizabile dacă doriţi să auziţi ceva în difuzoare.

  • Pentru a naviga între canale, utilizaţi tastele cu săgeţi pentru stânga sau dreapta. (<- & ->)
  • Pentru a comuta între mut şi activ, mutaţi-vă pe respectivul canal, spre exemplu Master, şi apăsaţi tasta m de pe tastatură.
  • Pentru a mări sau micşora nivelele de volum, utilizaţi tastele cu săgeţi sus şi jos, respectiv.

Notă: Atenţie la setarea valorilor pentru Bass şi Treble (Înalte). 50 este, de obicei un număr bun pentru amândouă. Valorile extrem de mari pentru Bass poate cauza trepidarea difuzoarelor ce nu sunt proiectate să le interpreteze.

După ce sunteţi gata cu tot, ALSA Mixer ar trebui să arate similar cu cea de mai jos. Notaţi valorile 00 în locul MM şi, de asemenea, nivelurile volumelor, pentru setări optime.


Figura 3.2: Alsa Mixer gata de acţiune

Fig. 2: AlsaMixer Activat

Verficarea Sunetului!

În sfârşit. Ceva muzică. Dacă toţi paşii anteriori s-au încheiat cu succes, ar trebui să puteţi, acum, să ascultaţi nişte muzică bună. O modalitate rapidă de a testa, este utilizarea unui utilitar în linie de comandă, cum este media-sound/madplay. Puteţi utiliza şi altele ceva mai cunoscute, cum ar fi mpg123 sau xmms. Dacă sunteţi un fan al fişierelor ogg, puteţi utiliza ogg123 oferit de media-sound/vorbis-tools. Utilizaţi orice aplicaţie cu care vă simţiţi confortabili. Ca de obicei, emerge este ceea ce aveţi nevoie.

Cod 3.7: Instalarea aplicaţiilor

(Instalaţi aplicaţiile dorite)
# emerge madplay mpg123 xmms
(Pentru a rula fişiere .ogg)
# emerge vorbis-tools

Apoi, rulaţi piesele dvs. favorite...

Cod 3.8: Rularea Muzicii

# 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%

ALSA şi USE

Puteţi adăuga indicatorul USE alsa în /etc/make.conf pentru a vă asigura că aplicaţiile dvs. care suportă ALSA sunt compilate cu suport pentru aceasta. Unele arhitecturi ca x86 şi amd64 au indicatorul activat implicit.

Probleme?

Dacă, dintr-un anume motiv, nu puteţi auzi sunetul, primul lucru care trebuie verificat sunt alsamixer. 80% din probleme se află în canalele mute sau volumele joase. De asemenea, verificaţi aplicaţia applet pentru sunet din Managerul dvs. de Ferestre, anume dacă volumele sunt setate la nivele sesizabile.

/proc este prietenul dvs. Şi în acest caz, /proc/asound este prietenul dvs. cel mai bun. Vom arunca doar o scurtă privire la câte informaţii sunt disponibile pentru noi, în acesta.

Cod 3.9: Distracţia cu /proc/asound

(Mai întâi de toate, dacă /proc/asound/cards vă afişează placa
dvs., ALSA v-a detectat placa corect.)
# cat /proc/asound/cards
0 [Live           ]: EMU10K1 - Sound Blaster Live!
                     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11

(Dacă rulaţi ALSA din kernel, ca mine, şi vă întrebaţi cât de în urmă
sunteţi faţă de alsa-driver, aceasta vă afişează versiunea ALSA ce rulează curent)
# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).

(Detalii despre emularea ALSA OSS)
# 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

Cealaltă problemă comună pe care utilizatorii o întâlnesc este eroarea "Unknown symbol in module". Un exemplu aveţi mai jos.

Cod 3.10: eroarea Unknown Symbol in module

# /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 ]

Iar când analizaţi textul afişat de dmesg, aşa cum vi s-a sugerat, veţi observa cel mai probabil:

Cod 3.11: dmesg output

(Doar părţile relevante sunt afişate ma jos)
# 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

Problema de mai sus este cauzată în momentul în care comutaţi de la alsa-driver la driver-ele ALSA din kernel, deoarece când dezinstalaţi alsa-driver, fişierele module sunt protejate şi sunt lăsate în urmă. Deci, când comutaţi la driver-ele ALSA din kernel, rulând modprobe vă va afişa o mixtură de module ale pachetului alsa-driver şi a celor din kernel, cauzând erorile de mai sus.

Soluţia este destul de uşoară. Trebuie doar să ştergem manual directorul problematic după ce dezinstalaţi alsa-driver. Asiguraţi-vă că ştergeţi versiunea de kernel corectă şi nu pe cea curentă!

Cod 3.12: Ştergerea modulelor pachetului alsa-driver

(Înlocuiţi KERNELVER cu versiunea dvs. de kernel)
# rm -rf /lib/modules/KERNELVER/alsa-driver

Un alt motiv pentru mesajele de eroare similar cu cele de mai sus, ar putea fi un fişier din /etc/modules.d ce oferă un parametru device_mode când acesta nu este necesar. Confirmaţi că, într-adevăr, acesta este motivul şi găsiţi care fişier este problematic.

Cod 3.13: Confirmarea şi căutarea device_mode

(Verificaţi dmesg pentru a confirma)
# dmesg | grep device_mode
snd: Unknown parameter `device_mode'
(Acum, pentru a naviga către sursa problemei)
# grep device_mode /etc/modules.d/*

De obicei este un fişier denumit alsa cu linia options snd device_mode=0666. Ştergeţi această linie şi reporniţi serviciul alsasound şi aceasta ar trebui să vă rezolve problema.

4.  Alte lucruri despre ALSA

Setarea suportului MIDI

Dacă placa dvs. de sunet este una dintre cele ce conţin sintetizatoare MIDI integrate pe placă, şi doriţi să ascultaţi unele fişiere .mid, va trebui să instalaţi awesfx, care este, în principiu, un set de utilitare pentru manipularea driver-ului AWE32. Va trebui să-l instalăm mai întâi. Dacă nu aveţi un sintetizator hardware, puteţi utiliza unul virtual. Vă rugăm să consultaţi secţiunea despre Sintetizatoare Virtuale pentru mai multe informaţii.

Cod 4.1: Instalarea awesfx

# emerge awesfx

Notă: Va trebui să copiaţi fişierele SoundFont (SF2) de pe mediul CD al driver-ului plăcii dvs. de sunet sau dintr-o instalare Windows în /usr/share/sounds/sf2/. Spre exemplu, un fişier de font de sunet pentru placa Creative SBLive! ar fi 8MBGMSFX.SF2.

După copierea fişierelor SoundFont, putem rula un fişier midi, ca în următorul exemplu. Puteţi adăuga, de asemenea, comanda asfxload în fişierul /etc/conf.d/local.start, pentru ca fişierul de font de sunet să fie încărcat la fiecare pornire a sistemului.

Notă: Căile /mnt menţionate în afişările de cod de mai jos nu vor fi aceleaşi pe maşina dvs. Aceasta sunt doar un exemplu. Vă rugăm să fiţi atenţi să modificaţi calea pentru a se potrivi cu sistemul dvs.

Cod 4.2: Încărcarea fişierelor Soundfont

(Mai întâi, copiaţi fişierul Soundfont)
# cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/ 
(Sau le luăm de pe mediul CD SoundBlaster)
# cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/
(Încărcăm fişierul SoundFont)
# asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2

Acum, puteţi rula fişiere midi utilizând un program ca aplaymidi. Rulaţi aplaymidi -l pentru a vi se afişa o listă cu toate porturile disponibile şi apoi alegeţi unul prin care să rulaţi fişierul.

Cod 4.3: Rularea MIDI

(Verificaţi porturile deschise)
# 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
(Alegeţi un port şi rulaţi un fişier mid)
#  aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid

Sintetizatoare Virtuale

Dacă placa dvs. de sunet nu deţine un sintetizator hardware, puteţi utiliza unul virtual, cum ar fi timidity++. Instalarea este foarte uşoară.

Cod 4.4: Instalarea timidity++

# emerge timidity++

Pentru ca timidity să poată rula sunete, are nevoie de un font de sunet. Dacă nu aveţi nici unul, instalaţi timidity-eawpatches sau timidity-shompatches ce vă vor oferi câteva fonturi. Puteţi avea multiple configuraţii de fonturi de sunet instalate, şi vi le puteţi stoca pe cele proprii în /usr/share/timidity/. Pentru a comuta între diverse configurări timidity, ar trebui să utilizaţi utilitarul timidity-update oferit în pachetul timidity++.

Cod 4.5: Instalarea fonturilor de sunet

# emerge timidity-eawpatches
# timidity-update -g -s eawpatches

(sau)

# emerge timidity-shompatches
# timidity-update -g -s shompatches

Nu uitaţi să adăugaţi timidity nivelului de iniţializare default.

Cod 4.6: Adăugarea timidity nivelului de iniţializare default

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

Acum, puteţi să încercaţi Rularea MIDI din fişiere.

Utilitare şi Suport Firmware

Unele plăci de sunet pot beneficia de anumite utilitare oferite de către pachetele alsa-tools şi alsa-firmware. Dacă aveţi nevoie de alsa-tools, asiguraţi-vă că definiţi variabila ALSA_TOOLS în /etc/make.conf cu utilitarele de care aveţi nevoie. Spre exemplu:

Cod 4.7: Selectarea Utilitarelor ALSA în /etc/make.conf

ALSA_TOOLS="as10k1 ac3dec"

Dacă variabila ALSA_TOOLS nu este setată, toate utilitarele disponibile vor fi compilate. Acum, instalaţi pachetul(ele) alsa-tools (şi/sau alsa-firmware):

Cod 4.8: Instalarea Utilitarelor ALSA

# emerge alsa-tools

Multe mulţumiri către...

Toţi ce au contribuit la versiunea anterioară a Ghidului Gentoo ALSA: Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston, John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft şi Erwin.

Referinţe



Imprimare

Actualizat la 27 Mai 2006

Versiunea originală a acestui document a fost actualizată ultima dată la 5 Martie 2008

Sumar: Acest document oferă informaţii despre setarea ALSA de către utilizator în Gentoo Linux.

Shyam Mani
Autor

Ciortea Cristian
Translator Iniţial

Alin Dobre
Translator

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

Linux World Expo

Linux World Expo

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