Następna strona Poprzednia strona Spis treści

3. Jak zainstalować dźwięk z SB AWE

3.1 Rzeczy, które będą Ci potrzebne

Oto wymagania obsługi SB AWE pod Linuxem:

Jeżeli masz kartę PnP, będziesz także potrzebował:

Zobacz sekcję Źródła dla informacji skąd można zdobyć te programy.

3.2 Zaczynamy

Przyjmijmy, że masz poprawnie zainstalowaną kartę i prawdopodobnie już ją testowałeś pod DOS'em lub Windows.

Następnym krokiem będzie inicjalizacja karty w czasie ładowania systemu wtedy, i tylko wtedy, gdy jest to karta PnP. Postępuj zgodnie z dokumentacją pakietu źródłowego żeby skompilować i zainstalować isapnptools (albo po prostu użyj binarnego pakietu) i wykonaj polecenie:


# pnpdump > /etc/isapnp.conf


jako root. To wygeneruje, mam nadzieję, że odpowiedni, plik konfiguracyjny dla Twoich kart PnP, ale ze wszystkimi urządzeniami odkomentowanymi. Edytuj plik ostrożnie i porównuj wartości kanałów DMA, adresów IO i przerwań z konfiguracją pod DOS'em lub Windows, jeśli to możliwe. (pod Win95 zobacz zasoby wykorzystywane przez kartę w opcji zasoby w menedżerze urządzeń). Jeżeli masz problemy, przeczytaj dokumentację dostarczaną z isapnptools.

UWAGA: isapnptools często nie wykrywa wszystkich trzech portów I/O syntezy AWE Wave Table. Sprawdź dokładnie pozycję WaveTable w pliku isapnp.conf z przykładem podanym na końcu tego HOWTO. Ustaw adres I/O jeżeli to potrzebne.

UWAGA: Zgodnie z isapnp-faq, isapnp czasami nie zaprogramowywuje numeru urządzenia logicznego. Jeżeli napotkasz np. taką wiadomość o błędzie:

Error occured executing request 'LD 2' on or around line...

spróbuj dodać linię (VERIFYLD N) na początku pliku isapnp.conf. Musisz używać wersji co najmniej 1.10, żeby ta medoda zadziałała. Jeżeli nie możesz używać wersji 1.10 lub nowszej możesz także wprowadzić numery urządzeń logicznych bezpośrednio. Zobacz isapnp-faq, żeby usyskać więcej informacji o tej metodzie. Jeżeli to nie będzie działać skontaktuj się ze mną (i ludzi tworzących isapnp, oni też powinni być zainteresowani).

UWAGA: Upewnij się, że ostatnią linią jest (WAITFORKEY), to czasami bywa ominięte przez starsze wersje pnpdump.

Przykładowy isapnp.conf możesz znaleźć na końcu tego dokumentu (zobacz sekcję Przykładowy isapnp.conf.

Jeżeli używasz Debiana nie są potrzebne żadne dalsze ustawienia, isapnp zostanie uruchomiony w czasie ładowania w pliku /etc/init.d/boot po dodaniu tego kawałka kodu:


# Skonfiguruj karty isa plug and play przed ładowaniem
# modułów. Musisz to zrobić przed ładowaniem modułów, żeby mieć
# szansę skonfigurowania i zainicjalizowania kart PnP zanim
# sterowniki narobią bałaganu.
#
if [ -x /etc/init.d/isapnp ]
then
  /etc/init.d/isapnp start
fi

gdzie /etc/init.d/isapnp musi zawierać linie:


#! /bin/sh
# /etc/init.d/isapnp: skonfiguruj karty Plug ang Play
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0

Jeżeli masz inną dystrybucję Linuxa, jesteś zdany na siebie. Nie wiem co robić (czy ktoś podałby mi te informacje?). Upewnij się tylko, że isapnp będzie uruchomiona zanim moduły będą załadowane (zobacz poniżej).

3.3 Kompilacja jądra

Przed rekompilacją jądra musisz "załatać" je Sterownikiem AWE. Nawet jeżeli źródła twojego jądra już zawierają awedrv (sprawdź /drivers/sound/lowlevel/), możesz chcieć rozszerzyć istniejący sterownik. Postępuj zgodnie z instrukcjami w katalogu ze źródłami awedrv. Musisz odpalić skrypt który zainstaluje łatę w jądrze.

Sprawdź, czy na pewno rozszerzyłeś źródła. Skrypt tylko sprawdza, czy dany plik instnieje - jeżeli tak, nie instaluje łaty. Powinieneś skasować plik drivers/sound/lowlevel/awe_wav.c przed uruchomieniem skryptu po rozszerzeniu źródeł jądra.

Następnie musisz skonfigurować jądro, włączając obsługę dźwięku. Mam nadzieję, że wiesz trochę o kompilowaniu jądra; zobacz Sound HOWTO i Kernel HOWTO, żeby uzyskać więcej informacji. Przejdź do katalogu z źródłami jądra (np. /usr/src/linux) i wykonaj polecenie


# make config

lub


make menuconfig

albo
make xconfig

. Teraz musisz skonfigurować jądro. Użyj tej okazji, żeby zbudować małe i mocne jądro, dostosowane do twojego komputera. Pamiętaj, żeby odpowiedzieć Y na pytanie Enable loadable module support, jeżeli chcesz zainstalować sterownik dźwięku jako ładowalny moduł (musisz, jeżeli masz kartę PnP), ale jestem pewien, że będziesz chciał i tak to zrobić.

W pewnym momencie zostaniesz zapytany o obsługę karty dźwiękowej. Możesz odpowiedzieć zarówno Y albo M jeżeli nie masz karty PnP. Musisz odpowiedzieć M (moduł), jeżeli posiadasz kartę PnP. Musisz skompilować obsługę karty dźwiękowj jako moduł (jeżeli masz kartę PnP), ponieważ taka karta musi być zainicjalizowana przed załadowaniem modułu. Na następujące pytania powinieneś odpowiedzieć Y, na wszystkie inne N:


Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
/dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
MIDI interface support (CONFIG_MIDI) [Y/n/?]
FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
lowlevel sound driver support [Y/n/?]
AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]

Tylko ostatnia opcja ma wpływ na syntezę Wave Table. Inne wykorzystują opcje SB16 sterownika OSS/Free.

Dodatkowo, musisz skonfigurować port I/O karty dźwiękowej. Spójrz na plik isapnp.conf dla wskazówek, jeżeli masz takowy. U mnie wystarczają stantardowe wartości. Zauważ, że standardowe wartości ze skryptu konfiguracyjnego jądra mogą być nieprawidłowe (zwłaszcza wartości SBC_IRQ i SB_MPU_BASE są złe dla większości kart).


I/O base for SB Check from manual of the card (SBC_BASE) [220]
Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1]
Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7
(use 1 for 8 bit cards) (SB_DMA2) [5]
MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
(SB_MPU_BASE) [330]
SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]

Teraz zrekompiluj jądro. Użytkownicy Debiana powinni użyć kernel-package. To robi kompilację jądra czynnością tak prostą jak zainstalowanie paczki Debiana. Zobacz dokumentację w katalogu /usr/doc/kernel-package/. Oto podpowiedź:


# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image

i wtedy


dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb

Jeżeli masz inną dystrybucję Linuxa, postępuj zgodnie ze standardowym sposobem kompilacji nowego jądra. Nie zapomnij o wydaniu poleceń make modules i make modules_install. Zobacz Sound HOWTO i (może) Kernel HOWTO, żeby uzyskać więcej informacji.

3.4 Przeładowanie systemu

Po zainstalowaniu nowego jądra powinieneś przeładować system (pamiętaj, żeby mieć funkcjonującą dyskietkę startową). Zaciśnij kciuki.

Jeżeli masz kartę PnP, pamiętaj, żeby odpalić isapnp bądź to w skrypcie ładującym (tak jak było to opisane wcześniej), bądź to ręcznie:


# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e:  CTL0048 Serial No 58128
[checksum 74]

Teraz możesz zainstalować sterownik dźwięku, jeżeli skompilowałeś go jako moduł:


# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)

Jeżeli sądzisz, że wykrycie pamięci nie było poprawne (znam przypadek człowieka mającego AWE 64 z 4096k, a ,,wykryta'' ilość wynosiła 28672k), spróbuj rozszerżyć awedrv albo podaj ilość pamięci w pliku /usr/src/linux/drivers/sound/lowlevel/awe_config.h, np.


# define AWE_DEFAULT_MEM_SIZE 4096 /* kilobajtów */

Przykro mi, ale musisz wtedy zrekompilować jądro (może kompilacja modułów będzie wystarczająca, ale nie wiem na pewno).

Jeżeli działa, możesz chcieć, żeby moduł dźwięku był ładowany automatycznie. Możesz użyć kerneld (dlaczego to nie jest najlepszy pomysł zobacz w sekcji 1.4) lub dodaj linię zawierającą sound do /etc/modules (w Debianie) lub dodaj linię /sbin/modprobe -a sound do skryptu ładującego.


Następna strona Poprzednia strona Spis treści