E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\21.DOC 349
Rozdzia³ 21. ¨ Linux i multimedia 359
Tim Parker
W tym rozdziale:
u Karty dźwiękowe
u Dżojstiki
Jednym z ograniczeń pierwszych wersji Linuxa był brak możliwości obsługi kart dźwiękowych, dżojstików i innych urządzeń multimedialnych. Kilka ostatnich wersji systemu zmieniło tę sytuację zasadniczo, teraz Linux jest równie multimedialny jak Windows 98. Ten rozdział pomoże Ci skonfigurować system do zastosowań multimedialnych.
Karta dźwiękowa potrafi o wiele więcej niż tylko wydawać dźwięki przy starcie Windows czy wtedy, gdy zrobisz coś nie tak. Jest ona niezastąpiona przy grach komputerowych, ponieważ potrafi generować zarówno muzykę, jak i efekty dźwiękowe. Może być używana do nagrywania i odtwarzania plików dźwiękowych. Pozwala odsłuchać płytę CD Audio w napędzie CD-ROM, dzięki czemu możesz słuchać muzyki podczas pracy. Może również spełniać rolę interfejsu pomiędzy systemem a niektórymi urządzeniami, na przykład łańcuchem SCSI czy napędem CD-ROM.
Wszystkie karty dźwiękowe pracują cyfrowo: przesyłane do nich pakiety danych powodują, że ich układy generują ton o żądanej częstotliwości, głośności i innych parametrach. Mogą one generować dźwięk o różnych częstotliwościami próbkowania: im większa częstotliwość próbkowania, tym lepsza jest jakość dźwięku. Większość odtwarzaczy CD próbkuje dźwięk z częstotliwością 44,1 kHz przy 16 bitach danych przypadających na jedną próbkę. Po prostych obliczeniach daje to około 600 megabajtów danych na godzinę wysokiej jakości dźwięku. Starsze karty dźwiękowe nie miały takich możliwości, oferując tylko 8 bitów na próbkę przy częstotliwości próbkowania 8 kHz. Różnica jest bardzo wyraźna, jeśli do odsłuchu takiego dźwięku użyjesz dobrej jakości sprzętu, mniej zauważalna – gdy używasz do tego celu głośniczka wbudowanego w Twój PC.
Plik dźwiękowe dostępne są dziś w wielu różnych formatach. Różnią się one częstotliwością próbkowania, liczbą bitów przypadających na jedną próbkę, zastosowaniem algorytmu kompresji, liczbą zapisanych kanałów (dźwięk monofoniczny wymaga tylko jednego kanału, stereofoniczny – dwóch) itd. Najczęściej spotykane formaty plików dźwiękowych zebrane są w tabeli 21.1.
Tabela 21.1. Popularne formaty plików dźwiękowych
Rozszerzenie nazwy pliku
Liczba kanałów
Długość jednej próbki
Częstotliwość próbkowania
Komentarz
.au
2
8 bitów
8 kHz
Format UNIX SUN
.mod
zależna od użytego algorytmu
.raw
22 kHz
.voc
1
.wav
16 bitów
44 kHz
Z nowszymi wersjami Linuxa dostarczanych jest wiele sterowników do kart dźwiękowych. Wszystkie one są napisane przez użytkowników, którzy następnie zechcieli udostępnić je innym (sterowniki rozprowadzane z kartami muzycznymi przeważnie przeznaczone są dla systemów DOS i Windows i nie będą pracować poprawnie w systemie Linux). Nawet, jeśli nie posiadasz sterownika dla swojej karty, najprawdopodobniej będzie ona kompatybilna z którymś z modeli kart, dla którego sterowniki są dostępne. Przykładowo, wiele kart jest kompatybilnych z kartami Sound Blaster lub Sound Blaster Pro, więc ich sterowniki powinny (ale nie muszą) działać.
Jeśli nie posiadasz karty dźwiękowej, nie oznacza to, że Twój komputer nie potrafi wydawać dźwięków. Dostępny jest również sterownik obsługujący głośniczek wbudowany w prawie każdy komputer PC. Mimo że jakość dźwięku nie jest najlepsza, pozwala jednak uzyskać dźwięk wystarczający by np. zagrać w Dooma. Jeśli nie boisz się kabelków, możesz również użyć zewnętrznego głośnika, co pozwoli uzyskać nieco lepsze brzmienie. Jeśli chcesz używać tego sterownika, musisz zdobyć go gdzieś w Internecie, ponieważ nie jest on dołączany do standardowej dystrybucji Linuxa.
Jeśli chcesz załadować najnowszą wersję sterownika dla wbudowanego w PC głośniczka, poszukaj go pod adresem
ftp.informatik.hu-berlin.de/pub/linux/hu-sound
lub w jednym z węzłów wymienionych w dodatku A „Węzły FTP i grupy dyskusyjne poświęcone Linuxowi”.
Wraz ze wspomnianym sterownikiem dostarczany jest zestaw instrukcji, które pomogą Ci w jego instalacji. Dołączony jest również plik pozwalający na przetestowanie konfiguracji.
Większość wersji Linuxa zawiera skrypt, który znacznie ułatwia konfigurację karty dźwiękowej. Zwykle możesz wybrać jej typ z menu wyświetlanego podczas instalacji, a program instalacyjny zajmie się całą resztą. Jeśli tak jest w Twoim przypadku, karta powinna być zainstalowana poprawnie i możesz ominąć ten podrozdział. Jeśli Linux nie zapytał o kartę dźwiękową lub też po zainstalowaniu nie działa ona prawidłowo, musisz przeprowadzić proces jej instalacji tak, jak opisano poniżej.
Niektóre dystrybucje Linuxa zawierają programy instalujące kartę dźwiękową, do których nie ma jednak dostępu aż do momentu pełnego zainstalowania systemu. RedHat 5.0 zawiera program sndconfig, który potrafi skonfigurować większość kart kompatybilnych z kartami Sound Blaster. Sprawdź w dokumentacji dołączonej do używanej przez Ciebie dystrybucji, czy przypadkiem nie oferuje ona tego typu ułatwień.
Pierwszym krokiem konfiguracji karty dźwiękowej w systemie linuxowym jest jej zainstalowanie (zgodnie z informacjami zawartymi w jej dokumentacji). Aby zainstalować kartę dla systemu Linux, nie są wymagane żadne szczególne zabiegi – należy tylko upewnić się, że ma ona przypisany odpowiedni numer przerwania, kanału DMA i adres wejścia/wyjścia. Jeśli karta jest już zainstalowana w systemie DOS lub Windows, możesz uzyskać informacje konfiguracyjne, używając Panelu Sterowania czy jakiegoś programu użytkowego. Aby ustawić te parametry w niektórych starszych modelach kart dźwiękowych, niezbędne jest odpowiednie przełączenie zworek czy mikroprzełączników. Zanotuj wymienione wyżej dane (IRQ, DMA i adres I/O) – mogą być one potrzebne podczas konfiguracji karty w systemie Linux.
Jeśli używasz karty kompatybilnej ze standardem Plug and Play, powinieneś najpierw zainstalować ją w systemie DOS lub Windows, ponieważ Linux w większości przypadków nie potrafi ustawiać parametrów takich urządzeń. Następnie zanotuj ustawienia konfiguracyjne karty, po czym najlepiej wyłącz używanie PNP w BIOS-ie (jeśli tego nie zrobisz, może się zdarzyć, że karta uruchamiać się będzie z innymi ustawieniami). Zwykle w programie konfiguracyjnym BIOS-u służy do tego celu opcja taka jak PNP OS?, której domyślną wartością jest Yes. Powinieneś ją wyłączyć.
Po zainstalowaniu karty dźwiękowej należy dołączyć do jądra systemu odpowiedni sterownik. Nie przejmuj się, jeśli nigdy tego nie robiłeś – nie jest to procedura szczególnie trudna. Prawdopodobnie nie miałeś potrzeby kompilować jądra systemu do tej pory, ponieważ większość dystrybucji zawiera skompilowane wersje jądra, ale nie umożliwiają one obsługi kart dźwiękowych. Należy ponownie skompilować jądro i wszystkie potrzebne sterowniki (włączając w to sterownik karty dźwiękowej), a następnie dołączyć sterowniki do jądra systemu.
Jeśli pobrałeś sterownik do karty dźwiękowej z sieci, prawdopodobnie dołączony jest do niego plik README lub coś w tym rodzaju. Zapoznaj się najpierw z informacjami w nim zawartymi, ponieważ niektóre sterowniki wymagają przeprowadzenia jakiś dodatkowych operacji przed kompilacją jądra albo wymagają ustawienia specyficznych numerów przerwań czy kanałów DMA.
Każda z wersji Linuxa zawiera nieco inny skrypt pozwalający na przekompilowanie jądra. Zawsze jednak można uruchomić go w następujący sposób:
1. zaloguj się jako root,
2. zmień katalog bieżący na /usr/src/linux,
3. wydaj polecenie make config.
Niektóre wersje Linuxa posiadają również przeznaczone do tego celu programy oparte na systemie menu lub interfejsie X. Należy wówczas wydać polecenie make menuconfig lub make xconfig.
Podczas rekompilacji jądra systemu musisz być zalogowany jako root – w przeciwnym przypadku może się okazać, że nie posiadasz praw dostępu do odpowiednich plików i programów. W większości wersji Linuxa plik makefile służący do kompilowania jądra znajduje się w katalogu /usr/src/linux, jeśli jednak tak nie jest – sprawdź, gdzie powinieneś go szukać, w dołączonej do dystrybucji dokumentacji.
Po uruchomieniu skryptu czy programu konfigurującego jądro systemu zostaniesz zapytany o to, jakie komponenty mają zostać dołączone do kernela (rys. 21.1). Odpowiedzi domyślne są prawie zawsze dobrym rozwiązaniem, chyba że masz pewność, że chcesz skonfigurować jądro w jakiś specyficzny sposób. Dobrym przykładem jest konfiguracja karty dźwiękowej. Program konfiguracyjny pyta, czy powinien dołączyć do jądra systemu obsługę tego urządzenia. Odpowiedzią domyślną jest no, ale jeśli ją posiadasz, powinieneś odpowiedzieć yes. Zostanie Ci następnie zadana cała seria pytań dotyczących konfiguracji tego urządzenia (rys. 21.2).
Rysunek 21.1.
Skrypt konfiguracyjny jądra systemu pyta, jakie komponenty jądra należy zainstalować
Rysunek 21.2.
Skrypt konfiguracyjny zadaje serię pytań dotyczących zainstalowanej karty dźwiękowej
Powinieneś odpowiedzieć n na pytania, czy zainstalować sterowniki dla kart dźwiękowych, których nie posiadasz, natomiast y w odpowiedzi na pytanie, czy chcesz zainstalować sterownik do zainstalowanego modelu karty. Jeśli Linux daje Ci możliwość automatycznego wykrycia karty dźwiękowej, możesz z niej skorzystać, ale procedura ta dość często zawodzi.
Jeśli konfigurowałeś już wcześniej kartę dźwiękową, program konfiguracyjny zapyta, czy użyć poprzednich ustawień, na przykład tak:
Old configuration exists in /etc/soundconf. Use it [Y/n]?
Jeśli ustawienia te były prawidłowe, możesz odpowiedzieć twierdząco, jeśli karta nie działała poprawnie, powinieneś odpowiedzieć n i skonfigurować ją jeszcze raz.
Po przebrnięciu przez dość długą listę typów kart dźwiękowych będziesz musiał odpowiedzieć na kilka bardziej ogólnych pytań, np.
/dev/dsp and /dev/audio support [N/y]?
Na to pytanie dobrze jest odpowiedzieć twierdząco, ponieważ wiele programów wykorzystujących kartę dźwiękową używa urządzeń /dev/dsp oraz /dev/audio. Musisz również zdecydować, czy chcesz mieć dostęp do interfejsu MIDI oraz syntezy FM:
MIDI interface support [N/y]FM synthesis (YM2813/OPL-3) support [N/y]
Jeśli Twoja karta obsługuje interfejs MIDI, na pierwsze pytanie powinieneś odpowiedzieć twierdząco. Większość kart posiada syntezator FM, więc na drugie pytanie możesz odpowiedzieć twierdząco prawie zawsze (niektóre karty posiadają zarówno interfejs MIDI jak i syntezator FM).
Ostatni zestaw pytań dotyczących karty dźwiękowej związany jest z ustawieniami sprzętowymi: numerem używanego przerwania, kanału DMA i adresem portu I/O. Powinieneś w odpowiedzi na nie podać zanotowane wcześniej wartości:
I/O base for SBThe default value is 220Enter the value: 200SoundBlaster IRQThe default value is 7Enter the value: 5SoundBlaster DMAThe default value is 1Enter the value: 1Możliwe, że pytań będzie jeszcze więcej – zależy to od rodzaju karty dźwiękowej i sterownika. Dane wprowadzaj uważnie, bo pomyłka oznacza konieczność wprowadzenia ich od początku.
Na zakończenie procesu konfigurowania karty dźwiękowej będziesz miał możliwość zapisania informacji konfiguracyjnych:
The sound card has been configured.Save copy of this configuration in /etc/soundconf [Y/n]
Dobrze jest skorzystać z tej możliwości, dzięki temu bowiem przy ponownym konfigurowaniu kernela nie będziesz musiał wprowadzać wszystkich informacji od nowa.
Po zebraniu informacji dotyczących pozostałych komponentów jądra system rozpoczyna proces kompilacji. Może on zająć od kilku do kilkudziesięciu minut, zależnie od liczby sterowników i szybkości komputera.
Niestety, to jeszcze nie wszystko. Po przekompilowaniu jądra trzeba skonfigurować pliki urządzeń. Proces ten może być opisany w pliku README dostarczonym wraz ze sterownikiem do karty. Jeśli tak nie jest, zamiast ręcznie tworzyć plik urządzenia, zajrzyj do pliku /usr/src/linux/drivers/sound/Readme.linux. Na samym końcu zawiera on skrypt, który zrobi to za Ciebie. Wytnij odpowiedni fragment, zapisz go w innym pliku, nadaj mu atrybut wykonywalności i uruchom. Po rekompilacji jądra i zainstalowaniu sterowników należy ponownie uruchomić system.
Skrypt, który należy uruchomić (wycięty z pliku Readme.linux), wygląda mniej więcej tak (część komentarzy została usunięta):
#!/bin/shAUDIOPERMS=622# Create the devices# Mixer devicesif [ -e /dev/mixer ]; then rm -f /dev/mixer fiif [ -e /dev/mixer0 ]; then rm -f /dev/mixer0 fi mknod -m 666 /dev/mixer0 c 14 0ln -sf /dev/mixer0 /dev/mixerif [ -e /dev/mixer1 ]; then rm -f /dev/mixer1 fimknod -m 666 /dev/mixer1 c 14 16# ...
osyrius