Konfiguracja dźwięku w Linuxie
Konfiguracja obsługi dźwięku przez Linuxa sprowadza się do następujących
kroków:
- Instalacja karty dźwiękowej.
- Konfiguracja i kompilacja jądra z obsługą dźwięku.
- Stworzenie plików urządzeń.
- Przeładowanie jądra Linuxa i testowanie ustawień.
Następne rozdziały szczegółowo opisują każdy z tych kroków.
Postąp zgodnie ze wskazówkami producenta odnośnie instalacji sprzętu,
lub zleć instalację dostawcy twojego komputera.
Starsze karty dźwiękowe mają zazwyczaj przełączniki lub jumpery
pozwalające dobrać ustawienia IRQ, kanałów DMA, itd.; zapisz sobie
wartości, które ustawisz. Jeśli nie masz pewności, wykorzystaj
ustawienia fabryczne. W miarę możliwości próbuj unikać konfliktów
karty z innymi urządzeniami (np. kartami ethernet, kontrolerami SCSI,
portami szeregowymi i równoległymi).
Zazwyczaj powinieneś używać te same ustawienia portu I/O, IRQ i DMA,
które działają pod DOSem. Jednak w niektórych przypadkach (szczególnie
przy kartach PnP) dla poprawnego działania karty pod Linuxem ustawienia będą
musiały być inne. Może się przydać metoda doświadczalna.
Przy wstępnej instalacji Linuxa prawdopodobnie użyłeś jądra
prekompilowanego. Jądra te zazwyczaj nie zawierają obsługi dźwięku.
Najlepiej przekompilować jądro samemu z takimi sterownikami, jakie są
Ci potrzebne. Możesz również chcieć przekompilować jądro aby
uaktualnić je do nowszej wersji lub aby zwolnić nieco pamięci przez
zminimalizowanie jego rozmiarów.
Szczegóły odnośnie kompilacji jądra znajdziesz w Linux
Kernel HOWTO po polsku (lub w oryginale Linux
Kernel HOWTO). Wspomnę tutaj tylko o kilku kwestiach specyficznych
dla kart dźwiękowych.
Jeśli nigdy wcześniej nie konfigurowałeś obsługi dźwięku w jądrze,
dobrze byłoby, abyś przeczytał wszystkie dokumenty Readme dołączone
do sterowników dźwięku do jądra, w szczególności informację o
konkretnym typie karty dźwiękowej, której używasz. Następujące pliki
informacyjne można znaleźć w katalogu kodu źródłowego sterownika dźwięku
do jądra, zazwyczaj /usr/src/linux/drivers/sound:
CHANGELOG - opis zmian
w poszczególnych wersjach
COPYING -
ograniczenia rozprowadzania i prawa autorskie
Readme -
najświeższe i najważniejsze informacje
Readme.aedsp16 - informacje o karcie dźwiękowej Audio
Excel DSP 16
Readme.cards - uwagi na temat konfigurowania
konkretnych kart
Readme.linux - uwagi o instalacji osobnych
wersji sterownika dźwięku
Readme.modules - jak skompilować sterownik dźwięku do
postaci modułu ładowalnego
Readme.v30 - nowe funkcje w
wersji 3.0 sterownika dźwięku
experimental.txt - uwagi o opcjach eksperymantalnych
Postąp zgodnie ze zwykłą procedurą tworzenia jądra. Obecnie dostępne
są trzy interfejsy ułatwiające konfigurowanie jądra. Graficzny
interfejs działający w X11 można wywołać wpisując "make xconfig".
Interfejs oparty o okienkowe menu, wymagający jedynie trybu tekstowego
jest dostępny jako "make menuconfig". Pierwotna metoda, wywoływana
przez "make config", to prosty, tekstowy interfejs.
Szczególnie uważnie należy korzystać z "make xconfig" i
"make menuconfig". Należy dokładnie prześledzić wszystkie
pytania Yes/No. Domyślną odpowiedzią na te pytania jest zawsze 'No'
(nie), co nie we wszystkich przypadkach jest poprawne. W szczególności
opcja "/dev/dsp and /dev/audio support" (CONFIG_AUDIO) powinna
zazwyczaj być włączona.
W tym dokumencie przyjąłem założenie, że konfigurować będziesz jądro
metodą tradycyjną "make config" - odpowiadając na kolejne
pytania, chociaż sam proces jest podobny w innych przypadkach.
Są również dwie różne metody konfigurowania dźwięku. Pierwsza to
tzw. "stara" metoda (jedyna dostępna w jądrach przed wersją
2.0.0). Wykorzystuje ona osobny program konfiguracyjny, będący częścią
sterownika dźwięku. Sposób ten jest skuteczny w przypadku więszości
kart dźwiękowych z wyjątkiem kilku rzadkich modeli, które wymagają
dodatkowych sterowników "niskopoziomowych" (miroSOUND, AWE32 i
AEDSP16).
Druga, "nowa" metoda, jest lepiej zintegrowana z okienkowym
systemem konfiguracji jądra. Nie działa ona w przypadku kart, które
wymagają pliku załadowanego od producenta. Należą do nich karty PSS,
SM Wave, AudioTrix Pro i TurtleBeach Tropez/Maui. Przy tych kartach
konieczne jest użycie starej metody.
"make xconfig" wywołuje zawsze "nową" metodę.
Przy "make menuconfig" możesz wybrać między "starą"
i "nową" metodą w okienku konfiguracji dźwięku. Jeśli
natomiast używasz "make config", domyślnie wybierana jest
"stara" metoda. Jednak jeśli już raz skorzystałeś z
"nowej" metody, będzie ona również używana przez "make
config". Przełączyć się do "starej" metody możesz wówczas
przez uruchomienie "make menuconfig" i wybranie jej w menu.
Zalecany sposób to użycie "make menuconfig" w połączeniu
ze "starą" metodą. Wiele problemów konfiguracji dźwięku
powstaje (przynajmniej częściowo) z powodu niepoprawnego użycia
"nowej" metody.
Możliwe jest również skompilowanie sterownika dźwięku do postaci
ładowalnego modułu jądra. Na początek zalecam wkompilowanie sterownika
do rezydentnej części jądra. Z chwilą, gdy już zostanie przetestowany
i działa poprawnie, możesz spróbować opcję modułu.
Po uruchomieniu make config , włącz obsługę dźwięku
odpowiadając "y" na pytanie:
Sound card support (CONFIG_SOUND) [M/n/y/?]
Po zakończeniu pytań konfiguracyjnych skompilowany i uruchomiony
zostanie program konfiguracji dźwięku, który następnie wypyta cię o
pożądane opcje dotyczące kart dźwiękowych. Odpowiadaj na te pytania
ostrożnie, nieprawidłowa odpowiedź może spowodować, że pewne dalsze
pytania w ogóle nie zostaną zadane. Dla przykładu, nie odpowiadaj
"yes" na pierwsze pytanie (PAS16) jeśli rzeczywiście nie masz
PAS16. Nie włączaj większej ilości kart niż faktycznie potrzebujesz
obsłużyć, gdyż jedynie zajmuje to pamięć. Dodatkowo, niektóre
sterowniki (jak MPU-401) mogą kłócić się z kontrolerem SCSI i uniemożliwiać
ładowanie jądra.
Wymieniam poniżej opisy poszczególnych opcji konfiguracji. Odpowiedz
"y" (tak) lub "n" (nie) na każde pytanie. Pokazywana
jest odpowiedź domyślna, więc "[Y/n/?]" oznacza domyślnie
"y", a "[N/y/?]" oznacza, że domyślnym ustawieniem
jest "n". Aby użyć ustawienie domyślne po prostu naciśnij
Enter, ale pamiętaj, że wartość ta niekoniecznie jest poprawna.
Wpisując znak zapytania ("?") otrzymasz krótką informację
opisującą daną opcję konfiguracji.
Zauważ również, że nie wszystkie pytania muszą uzyskać odpowiedź.
Program konfiguracyjny może wyłączyć pewne pytania zależnie od wcześniejszych
odpowiedzi. Może również wybierać pewne opcje automatycznie.
- Old configuration exists in /etc/soundconf. Use it [Y/n/?]
(W /etc/soundconf znaleziono poprzednią konfigurację. Użyć ją
[Y/n/?])
-
Jeśli wcześniej kompilowałeś jądro z obsługą dźwięku, mogą
być zapisane ustawienia poprzedniej konfiguracji. Jeśli chcesz użyć
poprzednio wybrane opcje, odpowiedz "y". Jeśli chcesz spróbować
innej konfiguracji lub uaktualniłeś jądro do nowszej wersji,
powinieneś odpowiedzieć "n" i przejść przez procedurę
konfiguracji.
- ProAudioSpectrum 16 support [Y/n/?]
(Obsługa ProAudioSpectrum 16 [Y/n/?])
-
Odpowiedz "y" tylko jeśli masz kartę Pro Audio
Spectrum 16, ProAudio Studio 16 lub Logitech SoundMan 16. Nie
odpowiadaj "y" jeśli masz jakąś inną kartę firmy Media
Vision lub Logitech, gdyż nie są one kompatybilne z PAS16.
- SoundBlaster support [Y/n/?]
(Obsługa kart SoundBlaster [Y/n/?])
-
Odpowiedz "y" jeśli masz oryginalną kartę SoundBlaster
produkcji Creative Labs, lub klon w 100% kompatybilny (jak np.
Thunderboard lub SM Games). Jeśli twoja karta jest na liście obsługiwanych
kart, zerknij na instrukcje do tej konkretnej karty zawarte w pliku Readme.cards
zanim odpowiesz na to pytanie. Przy nieznanych kartach możesz
odpowiedzieć "y" jeśli w opisie dostarczonym z kartą
stwierdzono, że jest kompatybilna z SoundBlasterem.
- Gravis Ultrasound support [Y/n/?]
(Obsługa Gravis Ultrasound [Y/n/?])
-
Odpowiedz "y" jeśli masz kartę GUS lub GUS MAX.
Odpowiedz "n" gdy ich nie masz, ponieważ sterownik zżera
sporo pamięci.
- MPU-401 support (NOT for SB16) [Y/n/?]
(Obsługa MPU-401 (NIE dotyczy SB16) [Y/n/?])
-
Bądź ostrożny z tym pytaniem. Interfejs MPU-401 jest obsługiwany
przez prawie wszystkie karty dźwiękowe. Jednakże, pewne obsługiwane
przez Linuxa karty mają własne sterowniki do MPU-401. Włączenie
opcji MPU-401 dla tych kart wywoła konflikty. Trochę kłopotów
spowodować może również włączenie opcji MPU-401 dla sprzętu, który
tak naprawdę nie ma MPU-401. Jeśli twoja karta znalazła się na liście
obsługiwanego sprzętu, przeczytaj informacje dotyczące tej
konkretnej karty w pliku Readme.cards . Bezpiecznie jest
odpowiedzieć "y" jeśli masz prawdziwą kartę interfejsu
MIDI MPU-401.
- 6850 UART Midi support [Y/n/?]
(Obsługa MIDI 6850 UART [Y/n/?])
-
Bezpiecznie jest odpowiedzieć "n" na to pytanie we
wszystkich przypadkach. Interfejs 6850 UART używany jest bardzo
rzadko.
- PSS (ECHO-ADI2111) support [Y/n/?]
(Obsługa PSS (ECHO-ADI2111) [Y/n/?])
-
Odpowiedz "y" tylko jeśli masz karty Orchid SW32,
Cardinal DSP16 lub jakieś inne oparte na układzie PSS (AD1848 codec
+ kość ADSP-2115 DSP + kość Echo ESC614 ASIC).
- 16 bit sampling option of GUS (not GUS MAX) [Y/n/?]
(Opcja 16-bitowego próbkowania w GUS (nie dotyczy GUS
MAX) [Y/n/?])
-
Odpowiedz "y" jeśli masz zainstalowaną 16-bitową kartę
siostrzaną na swojej karcie GUS. Odpowiedz "n" jeśli masz
kartę GUS MAX. Odpowiedź "y" przy tej opcji powoduje wyłączenie
obsługi GUS MAX.
- GUS MAX support [Y/n/?]
(Obsługa GUS MAX [Y/n/?])
-
Odpowiedz "y" tylko jeśli masz kartę GUS MAX.
- Microsoft Sound System support [Y/n/?]
(Obsługa Microsoft Sound System [Y/n/?])
-
Ponownie, pomyśl dobrze, zanim odpowiesz tutaj "y".
Bezpiecznie jest wybrać "y" jeśli masz oryginalną kartę
Windows Sound System wyprodukowaną przez Microsoft, lub kartę Aztech
SG 16 Pro (lub NX16 Pro). Możesz również odpowiedzieć
"y" jeśli twoja karta nie była wymieniona wcześniej w tym
dokumencie. Przy kartach obsługiwanych przez VoxWare, przejrzyj
instrukcje do konkretnej karty w pliku Readme.cards .
Niektóre karty mają własną obsługę MSS i w ich przypadku włączenie
tej opcji wywoła konflikty.
- Ensoniq Soundscape support [Y/n/?]
(Obsługa kart Ensoniq Soundscape [Y/n/?])
-
Odpowiedz "y" jeśli masz kartę dźwiękowoą opartą na
układzie Ensoniq SoundScape. Takie karty produkowane są co najmniej
przez Ensoniq, Spea i Reveal (Reveal robi także inne karty).
- MediaTriX AudioTriX Pro support [Y/n/?]
(Obsługa MediaTriX AudioTriX Pro [Y/n/?])
-
Odpowiedz "y" jeśli masz kartę AudioTriX Pro.
- Support for MAD16 and/or Mozart based cards?
(Obsługa kart MAD16 i/lub opartych na układzie Mozart?)
-
Odpowiedz "y" jeśli twoja karta ma układ interfejsu
audio Mozart (OAK OTI-601) lub MAD16 (OPTi 82C928 or 82C929). Owe układy
są obecnie dość popularne, więc możliwe jest, że wiele kart
no-name ma jeden z nich. Dodatkowo, układ MAD16 montowany jest w
niektórych kartach znanych producentów takich jak Turtle Beach (Tropez),
Reveal (kilka modeli) i Diamond (ostatnie).
- Support for Crystal CS4232 based (PnP) cards [Y/n/?]
(Obsługa kart Pnp opartych na Crystal CS4232 [Y/n/?])
-
Odpowiedz "y" jeśli masz kartę opartą na układzie
Crystal CS4232.
- Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers
[Y/n/?]
(Obsługa Turtle Beach Wave Front (Maui, Tropez))
-
Odpowiedz "y" jeśli masz jedną z tych kart.
- SoundBlaster Pro support [Y/n/?]
(Obsługa SoundBlaster Pro [Y/n/?]
-
Włącz tę opcję jeśli masz kartę SoundBlaster Pro lub
SoundBlaster 16. Włącz ją również jeśli masz jakikolwiek klon
SoundBlaster Pro. Odpowiedź "n" oszczędza trochę pamięci,
ale "y" to bezpieczniejsze wyjście.
- SoundBlaster 16 support [Y/n/?]
(Obsługa SoundBlaster 16 [Y/n/?]
-
Włącz jeśli masz kartę SoundBlaster 16 (również AWE32).
- Audio Excel DSP 16 initialization support [Y/n/?]
(Obsługa inicjalizacji Audio Excel DSP 16 [Y/n/?])
-
Włącz tę opcję, jeśli masz kartę Audio Excel DSP16. Więcej
informacji znajdziesz w pliku Readme.aedsp16 .
Następnie program konfiguracyjny zadaje kilka pytań o serwisy wyższego
poziomu. Zalecana jest odpowiedź "y" na każde z tych pytań.
Odpowiadaj "n" tylko wówczas, gdy jesteś pewien, że nie będziesz
danej opcji potrzebować.
- /dev/dsp and /dev/audio support (usually required) [Y/n/?]
(Obsługa /dev/dsp i /dev/audio (zazwyczaj wymagana) [Y/n/?])
-
Odpowiedź "n" wyłącza /dev/dsp i /dev/audio ,
urządzenia konwerterów A/D i D/A. Odpowiedz "y".
- MIDI interface support [Y/n/?]
(Obsługa interfejsu MIDI [Y/n/?])
-
Odpowiedź "n" wyłącza urządzenia /dev/midixx
i dostęp do jakichkolwiej portów MIDI wykorzystujących /dev/sequencer
i /dev/music . Opcja ta również wpływa na wszystkie urządzenia
kompatybilne z MPU-401 i/lub General MIDI.
- FM synthesizer (YM3812/OPL-3) support [Y/n/?]
(Obsługa syntezatora FM (YM3812/OPL-3) [Y/n/?])
-
Odpowiedz na to pytanie "y".
- /dev/sequencer support [Y/n/?]
(Obsługa /dev/sequencer [Y/n/?])
-
Odpowiedź "n" wyłącza /dev/sequencer i /dev/music
- Do you want support for the mixer of SG NX Pro ?
(Czy chcesz obsługę mixera SG NX Pro?)
-
Odpowiedz "y" jeśli masz kartę dźwiękową Sound
Galaxy NX Pro i życzysz sobie mieć obsługę jej rozszerzonych
funkcji miksowania.
- Do you want support for the MV Jazz16 (ProSonic etc.) ?
(Czy chcesz obsługę MV Jazz16 (ProSonic itd.)?)
-
Odpowiedz "y" jeśli masz kartę dźwiękową MV Jazz16.
- Do you have a Logitech SoundMan Games [Y/n/?]
(Czy masz kartę Logitech SoundMan Games[Y/n/?])
-
Odpowiedz "y" jeśli masz kartę dźwiękową Logitech
SoundMan Games.
Po zadaniu powyższych pytań program konfiguracyjny pyta o szczegółowe
informacje dotyczące konfiguracji karty. Zazwyczaj chodzi o adresy I/O i
parametry IRQ i DMA. Przy niektórych kartach program pyta o pewne pliki,
które mają być użyte w trakcie instalacji karty. Są one używane
przez karty posiadające układ DSP lub mikroprocesor, który musi być
zainicjalizowany poprzez załadowanie pliku programu (mikrokodu) do pamięci
karty. W niektórych przypadkach plik mikrokodu dopisywany jest do pliku
.h przez program konfiguracyjny, a następnie włączany do sterownika w
trakcie kompilacji. Przeczytaj informacje dotyczące twojej karty w pliku Readme.cards .
Na końcu zostaniesz zapytany:
The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]
(Sterownik dźwięku jest teraz skonfigurowany.
Zapisać kopię tej konfiguracji do pliku /etc/soundconf [Y/n/?])
Najczęściej powinieneś wpisać "y" abyś miał możliwość
wykorzystanie tej samej konfiguracji sterownika dźwięku następnym razem
przy kompilacji jądra.
Jeśli uaktualniasz sterownik dźwięku do nowszej wersji, upewnij się,
że pliki /usr/include/sys/soundcard.h i /usr/include/sys/ultrasound.h
są dowiązaniami symbolicznymi do odpowiadających im plików w katalogu /usr/include/linux ,
lub że po prostu zawierają wiersze odpowiednio #include <linux/soundcard.h>
i #include <linux/ultrasound.h> .
Jesteś teraz gotowy do kompilacji i instalacji nowego jądra.
Dla poprawnego działania urządzeń dźwiękowych, należy stworzyć
dla nich pliki urządzeń. Zazwyczaj tworzone są one automatycznie
podczas instalacji systemu Linux. Można przeprowadzić szybki test przy użyciu
poniższych poleceń. Jeśli wynik jest zgodny z poniższym (różne będą
daty utworzenia plików), prawie na pewno pliki urządzeń dźwiękowych są
ustawione poprawnie.
% ls -l /dev/sdnstat
crw-rw-rw- 1 root root
14, 6 Apr 25 1995 /dev/sndstat
Pamiętaj, że samo posiadanie odpowiednich plików urządzeń niczego
jeszcze nie gwarantuje. Sterownik jądra musi być załadowany lub
wkompilowany zanim urządzenia zaczną pracować (więcej o tym później).
W sporadycznych przypadkach, jeśli przekonany jesteś, że pliki urządzeń
są niepoprawne, możesz je utworzyć ponownie przy użyciu krótkiego
skryptu powłoki zamieszczonego na końcu pliku Readme.linux
w katalogu /usr/src/linux/drivers/sound . Powinieneś
powinieneś uruchomić ten skrypt jako root. Dodatkowo, większość
dystrybucji Linuxa zawiera skrypt /dev/MAKEDEV, który można wykorzystać
do tych celów.
Jeśli używasz sterownika dźwięku do głośnika PC, przeczytaj
dokumentację dołączoną do pakietu aby ustalić, czy konieczne jest
stworzenie jakichś plików urządzeń.
Powinieneś być teraz gotów do przeładowania nowego jądra i
sprawdzenia sterowników dźwięku. Postąp zgodnie ze swoją zwykłą
procedurą instalacji i przeładowywania jądra (oczywiście trzymaj
poprzednie jądro gdzieś pod ręką na wypadek kłopotów).
Sound initialization started
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
Opis powinien pasować do typu twojej karty dźwiękowej i ustawień
przełączników (jeśli takowe są).
Pamiętaj, że powyższy komunikat nie jest wyświetlany, jeśli używasz
ładowalnego modułu jądra (chyba, że to włączysz, np. tak: "insmod
sound trace_init=1").
Jeśli sterownik dźwięku jest wkompilowany w jądro, powinny się
pojawić komunikaty "Sound initialization started"
("Inicjalizacja dźwięku rozpoczęta") oraz "Sound
initialization complete" ("Inicjalizacja dźwięku zakończona").
W przeciwnym wypadku, jądro nie zawiera sterownika dźwięku. Powinieneś
wówczas sprawdzić, czy rzeczywiście zainstalowane zostało nowe jądro,
które skompilowałeś po włączeniu obsługi dźwięku.
Jeśli między napisami "Sound initialization started" i
"Sound initialization complete" nie pojawią się żadne
wiersze, oznacza to, że nie wykryte zostały żadne urządzenia dźwiękowe.
Najprawdopodobniej nie masz włączonego odpowiedniego sterownika, karta
nie jest obsługiwana, podałeś zły port I/O lub masz kartę PnP, która
nie została skonfigurowana.
W trakcie ładowania sterownik może również wyświetlać komunikaty
o błędach i ostrzeżenia. Obserwuj je podczas ładowania sterownika po
raz pierwszy po kompilacji.
Następnie powinieneś sprawdzić plik urządzeń /dev/sndstat .
Odczytanie statusu tego pliku powinno udzielić ci dodatkowych informacji
o tym, czy sterownik dźwięku poprawnie rozpoczął pracę. Przykładowy
wynik powinien wyglądać mniej więce tak:
% cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root,
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586)
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586
Config options: 0
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401
Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0
Audio devices:
0: Sound Blaster 16 (4.13)
Synth devices:
0: Yamaha OPL-3
Midi devices:
0: Sound Blaster 16
Timers:
0: System clock
Mixers:
0: Sound Blaster
Powyższe polecenie może wywołać kilka komunikatów błędu.
"No such file or directory" ("Nie ma takiego pliku lub
katalogu") oznacza, że musisz stworzyć pliki urządzeń (patrz
rozdział 4.3). "No such device" ("Nie ma takiego urządzenia")
oznacza, że sterownik dźwięku nie jest dołączony lub załadowany do jądra.
Cofnij się do rozdziału 4.2 aby to poprawić.
Jeśli wiersze w sekcji "Card config:" ("Konfiguracja
karty:") /dev/sndstat są wyświetlone w nawiasach (jak np. "(SoundBlaster
at 0x220 irq 5 drq 1,5)"), oznacza to, że urządzenie to zostało
skonfigurowane, ale nie wykryte.
Powinieneś teraz móc odtworzyć prosty plik dźwiękowy. Zdobądź
przykładowy plik dźwiękowy i wyślij go do urządzenia dźwiękowego,
tzn.
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(Upewnij się, że nie pomijasz ">" w powyższym
poleceniu).
Pamiętaj jednak, że używanie cat nie jest, ogólnie
rzecz biorąc, poprawną metodą odtwarzania plików dźwiękowych, to
tylko szybki test. Na pewno przyda ci się stosowny program odtwarzający
dźwięk (opisane później), który zrobi to lepiej.
Polecenie to zadziała tylko jeśli na liście urządzeń dźwiękowych
w pliku /dev/sndstat masz co najmniej jedno urządzenie. Jeśli część
wymieniająca urządzenia dźwiękowe jest pusta, powinieneś sprawdzić,
dlaczego urządzenie nie zostało wykryte.
Jeśli powyższe polecenie zwróci "I/O error" ("Błąd
wejścia/wyjścia"), powinieneś zerknąć na końcówkę komunikatów
jądra przy użyciu polecenia "dmesg". Prawdopodobne jest, że
znajdziesz tam komunikat o błędzie "Sound: DMA (output) timed out -
IRQ/DRQ config error?" (Dźwięk: DMA (wyjście) przekroczenie limitu
czasowego - błąd konfiguracji IRQ/DRQ?"). Powyższy komunikat
oznacza, że sterownik nie uzyskał oczekiwanego przerwania od karty dźwiękowej.
W większości przypadków oznacza to, że IRQ lub kanał DMA ustawione w
sterowniku nie działają. Najlepszą metodą ich uruchomienia jest spróbowanie
wszystkich możliwych kanałów DMA i numerów IRQ obsługiwanych przez
urządzenie.
Inną możliwą przyczyną jest fakt, że urządzenie nie jest
kompatybilne z urządzeniem, dla którego skonfigurowany jest sterownik dźwięku.
Najczęściej tak jest np. gdy karta teoretycznie "kompatybilna z
SoundBlaster (Pro/16)" nie działa ze sterownikiem SoundBlaster. W
tym przypadku powinieneś spróbować dowiedzieć się, z jakim urządzeniem
twoja karta jest kompatybilna (np. wysyłając pytanie do grupy
dyskusyjnej comp.os.linux.hardware).
Kilka próbnych plików dźwiękowych znaleźć można pod adresem ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z
Możesz teraz sprawdzić nagrywanie dźwięku. Jeśli masz możliwość
nagrywania, przeprowadź szybki test używając poleceń typu:
# nagranie 4 sekund dźwięku z mikrofonu
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# odtworzenie dźwięku
% cat sample.au >/dev/audio
Oczywiście, aby to zadziałało, musisz mieć mikrofon podłączony do
karty dźwiękowej i powinieneś do niego coś powiedzieć. Możesz również
potrzebować program miksujący aby ustawić mikrofon jako urządzenie wejściowe
i dostosować poziom nagrywania.
Jeśli przejdziesz przez te testy, możesz być dosyć pewny, że sprzęt
i oprogramowanie konwersji dźwięku D/A i A/D działają poprawnie. Jeśli
napotkasz problemy, zerknij do następnego rozdziału tego dokumentu.
Jeśli nadal masz problemy mimo postąpienia zgodnie z instrukcjami w
tym dokumencie, oto kilka rzeczy, które powinieneś sprawdzić. Testy są
uszeregowane względem rosnącego stopnia złożoności. Jeśli test się
nie powiedzie, usuń problem zanim przejdziesz do następnego etapu.
Krok 1: Upewnij się, że rzeczywiście uruchomiłeś jądro, które
skompilowałeś.
Możesz zerknąć na datę i czas utworzenia pliku jądra aby sprawdzić,
czy uruchomione jest to, w które wkompilowałeś obsługę dźwięku. Możesz
to zrobić za pomocą polecenia uname :
% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
lub wyświetlając zawartość pliku /proc/version
% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4
16:57:55 EDT 1996
Jeśli data i czas nie zgadzają się z momentem, w którym kompilowałeś
jądro, uruchomione jest starsze jądro. Czy rzeczywiście przeładowałeś
system? Jeśli używasz LILO, czy przeinstalowałeś je (zazwyczaj poprzez
uruchomienie /etc/lilo/install )? Jeśli ładujesz system z
dyskietki, czy stworzyłeś nową dyskietkę startową i użyłeś jej do
załadowania systemu?
Krok 2: Upewnij się, że sterowniki dźwięku wkompilowane są w jądro.
Najprostszą metodą jest sprawdzenie zawartości "/dev/sndstat",
jak to opisano wcześniej. Jeśli zawartość nie jest taka, jakiej się
spodziewamy, coś musiało pójść nie tak w trakcie konfigurowania lub
kompilacji jądra. Rozpocznij ponownie proces instalacji, począwszy od
konfiguracji i kompilacji jądra.
Krok 3: Czy jądro wykryło kartę dźwiękową w trakcie ładowania?
Upewnij się, że karta dźwiękowa została wykryta w trakcie przeładowywania
systemu. Powinieneś zobaczyć komunikat ładowania. Jeśli komunikaty
przewinęły się za szybko poza krawędź ekranu, możesz je zazwyczaj
przywołać przy użyciu polecenia dmesg :
% dmesg
lub
% tail /var/adm/messages
Jeśli karta nie została znaleziona, coś poszło niepomyślnie.
Upewnij się, że jest rzeczywiście zainstalowana. Jeśli karta pracuje
pod DOS, możesz być dosyć pewny, że sprzęt działa poprawnie, więc
najprawdopopdobniej jest jakiś problem z konfiguracją jądra. Albo
wkompilowałeś zły typ karty lub złe parametry, albo twoja karta nie
jest kompatybilna z żadnym ze sterowników dźwięku do jądra Linuxa.
Jest także możliwe, że twoja karta dźwiękowa jest jednym z tych
"kompatybilnych" modeli, które wymagają inicjalizacji przez
sterownik pod DOS. Spróbuj załadować DOS, a następnie sterownik
dostarczony przez producenta karty. Następnie załaduj Linuxa używająć
miękkiego przeładowania przez Control-Alt-Delete . Upewnij
się, że ustawienia portu I/O karty, DMA i IRQ są takie same, jak użyte
pod DOS. Wskazówki na temat konfigurowania danego typu karty znajdziesz w
pliku Readme.cards .
Jeśli twoja karta dźwiękowa nie jest wymieniona w tym dokumencie, możliwe
jest, że sterowniki Linuxa jej nie obsługują. Aby się skonsultować w
tej sprawie, możesz sprawdzić kilka odnośników zamieszczonych na końcu
tego dokumentu.
Krok 4: Czy możesz pobierać dane z urządzenia dsp?
Spróbuj odczytać coś z urządzenia /dev/audio przy użyciu
programu dd wymienionego wcześniej w tym dokumencie.
Polecenie powinno działać bezbłędnie.
Jeśli nie działa, są szanse, że problem polega na konflikcie IRQ
lub DMA lub niekompatybilności jakiegoś rodzaju sprzętu (urządzenie
nie jest obsługiwane przez Linuxa lub sterownik jest skonfigurowany dla
innego urządzenia)
Daleka ewentualność to wadliwy sprzęt. Jeśli to możliwe,
przetestuj kartę pod DOSem, aby się upewnić.
Jeśli Wszystko Inne Zawiedzie
Jeśli nadal masz problemy, oto kilka ostatecznych sugestii, co możesz
jeszcze sprawdzić:
- dokładnie przeczytaj ponownie ten dokument HOWTO
- przeczytaj dokumenty źródłowe, wymienione na końcu tego
dokumentu, w szczególności strony WWW Hannu Savolainena i stosowne
pliki Readme dołączone do kodów źródłowych jądra Linuxa
- wyślij pytanie do jednej z grup dyskusyjnych
comp.os.linux
lub innych (dobry wybór to comp.os.linux.hardware; z powodu dużego
ruchu w tych grupach, dobrze jest umieszczać słowo "sound"
("dźwięk") w temacie wysyłanego artykułu, aby eksperci
mogli łatwo to zauważyć)
- użycie przeszukiwarki WWW/Usenetu z inteligentinie dobranymi
kryteriami przeszukiwania może szybko przynieść bardzo dobre
wyniki. Jednym z takich wyjść jest http://www.altavista.com.
- spróbuj użyć najświeższe jądro Linuxa (ale jedynie w
ostateczności, ostatnie jądra "rozwojowe" (development)
mogą być niestabilne).
- wyślij pocztę do autora sterownika dźwięku
- wyślij pocztę do autora Sound HOWTO
- odpal emacsa i wpisz
Esc-x doctor :-)
(c) 1997 Paweł Olszewski
alder@amg.net.pl |