Ultrasound Plug'n'Play mini-HOWTO

Autor: J-F MAMMET, mammet@diva.univ-mlv.fr
v0.01, 27 Marca 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.0, 7 Września 1997


Dokument ten został napisany w standardzie ISO-8859-2. Wersji oryginalnej nie ma na głównym serwerze (sunsite.unc.edu) Linux Documentation Project, a na stronê WWW autora ( diva.univ-mlv.fr) nie można siê dostaæ.

1. Wprowadzenie.

Jako długoletni fan kart dźwiêkowych gravis-a, byłem naprawdê szczêśliwy kiedy zobaczyłem prawdziwą nowośæ gravis-a. Od długiego czasu planowałem kupiæ kartê Ultrasound i kupiłem ją z 1 MB RAM-u jak tylko pojawiła siê we Francji.

Zainstalowałem ją, i cieszyłem siê kiedy została wykryta przez mój Plug'n'Play BIOS, a nawet przez Windows 95 (przepraszam, ale nie ponabijam siê dzisiaj z ich marketingu). Wiêc pomyślałem, że karta mogłaby działaæ wszêdzie...

No to odpaliłem Linux-a, nie miałem problemów, karta została wykryta jako gus rev 3.4, co wydawało siê byæ poprawne, ale nie było...

Jakiś czas później spróbowałem Quake'a i nie miałem dźwiêku. Przeczytałem wiêc podrêcznik do gry, i zobaczyłem, że korzysta on z pewnych mechanizmów DMA, których nie było w standardowym gus-ie.

Pomyslałem, że to wcale nie jest zabawne, mieæ taką cholernie dobrą kartê i nie mieæ dźwiêku w takiej fajnej grze. (wersja dos-owa potrzebuje emulacji sound blaster-a, a ja wolê nie mieæ dźwiêku niż to)

No to co teraz? Powinienem czekaæ do maja na sterownik PnP dla gus-a? Mam kupiæ sound blaster-a (sic)? co bêdzie w nastêpnym odcinku "Akt X"?

2. GUS MAX?

No i wróciłem do dos-a i pobawiłem siê trochê programem iwinit. Popatrzyłem na to co mi wyświetlał w trybie verbose i zobaczyłem coś takiego: CODEC adress 32c...

Co? gus PnP ma CS4231/CS1848 Codec tak jak gus MAX???

Potem pogrzebałem po moich kopiach zapasowych i znalazłem ostatnie sterowniki gravis-a, wziąłem ultrinit 2.31 i wpisałem:


>set ultrasnd=220,6,5,5,5
>set ultra16=32c,0,0,1,0
>set ultradir=c:\ultrapnp
>ultrinit

i wiecie co? Ultrasound MAX detected !!!

Wow. Super! Pomyslałem wiêc, że muszê tylko to wpisaæ zanim wystartuje Linux-a i bêdê miał obsługê gus Max i w koñcu ten p**** quake bêdzie miał dźwiêk !

To nie było takie proste 8(

3. Przerabianie sterownika.

Nie jestem dobrym programistą, ale znam C na tyle, żeby przejrzeæ sterownik i zobaczyæ co siê dzieje (szczególnie jeśli jest tam dużo komentarzy).

Popatrzyłem do pliku gus_card.c, ale nie znalazłem nic ciekawego. Potem popatrzyłem do gus_wave.c i zobaczyłem coś takiego:

         * Value 255 means pre-3.7 which don't have mixer.
         * Values 5 thru 9 mean v3.7 which has a ICS2101 mixer.
         * 10 and above is GUS MAX which has the CS4231 codec/mixer.

Super! Po prostu muszê ustawiæ wartośæ 10 i bêdzie działaæ... Nie!

Zrobienie tego spowoduje, że jądro bêdzie myślało, że masz gus Max, ale nie wykryje chip-a codec!

Wiêc musiałem także wymusiæ wykrycie tego chip-a!

Znalezienie co muszê zrobiæ nie było łatwe, ale w koñcu mi siê udało. W pliku gus_wave.c była taka linia:

if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))

co znaczyło, że jądro próbuje samo wykryæ chip AD1848. Pomyślałem, że nie może go wykryæ przez to PnP i miałem racjê! Zmieniłem tê liniê na:

if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))

skompilowałem jeszcze raz jądro i quake działa teraz na cacy!

Tak przy okazji: W pliku gus_card.c jest opcja gus_pnp_flag, ale nie widziałem żadnej różnicy miêdzy tym kiedy była włączona i wyłączona 8( (może robiłem coś źle).

4. Wiêc co mamy dokładnie zrobiæ?

Nie zapomnij, że to nie bêdzie działaæ jeśli nie masz RAM-u na swojej karcie...
Przede wszystkim nie używaj już lilo, ponieważ musisz zainicjowaæ gus-a PnP zanim wystartujesz Linux-a ([Od tłumacza] w tej chwili można już inicjowaæ karty (nie wszystkie) PnP pod Linux-em. Przeczytaj podrozdział Karty PnP pod Linux-em.). Napisz fdisk /mbr pod dos-em, przeczytaj odpowiednie HOWTO na ten temat).

W swoim autoexec.bat wpisz:

set interwave=c:\ultrapnp\iw.ini
c:\ultrapnp\iwinit
set ultrasnd=220,6,5,5,5 (czy jakie tam są twoje wartości)
set ultra16=32c,0,0,1,0
set ultradir=c:\ultrapnp
c:\ultrapnp\ultrinit

Ultrinit znajdziesz w gus00045.zip na każdym ftp z gravis-em.

Pod Linux-em, otwórz plik gus_wave.c w katalogu /usr/src/linux/drivers/sound (czy gdziekolwiek indziej). Znajdź liniê:

if (val == 255 || val < 5) (line 3049 in 3.5b7)

i w linii wcześniej napisz:

val=10;

Potem znajdź liniê:

if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) (line 3085)

i zmieñ ją na

if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))

Skompiluj jądro z obsługą gus-a i gus max. U mnie jest to:

BASE = 220
IRQ = 5
DMA1 = 6
DMA2 = 5
DMABUF = 65536

No i miłej zabawy z dźwiêkiem!

4.1 Karty PnP pod Linux-em.

[Sekcja dodana przez tłumacza.]

Do inicjalizacji karty służy narzêdzie o nazwie sapnptools, które jest do zdobycia np. pod adresem ftp.icm.edu.pl. Dokładny opis znajduje siê razem z dystrybucją. Ogólnie wygląda to tak: najpierw kompilujesz programy isapnp i pnpdump. Potem tym drugim generujesz sobie plik konfiguracyjny, który potem odpowiednio modyfikujesz do własnych potrzeb. Nastêpnie, żeby zainicjalizowaæ kartê (jeśli używasz modułu do dźwiêku), piszesz isapnp /etc/isapnp.conf i insmod sound.

5. Credits.

Używałem jądra w wersji 1.3.75, ale powinno byæ dobrze również z jądrami nowszymi niż 1.3.70 (napisz do mnie jeśli tak nie jest).

To mini-HOWTO zostało napisane przez J-F MAMMETa.
e-mail: mammet@diva.univ-mlv.fr
www: http://diva.univ-mlv.fr/ mammet/
Najnowszą wersjê tego dokumentu możesz pobraæ z mojej strony WWW pod adresem diva.univ-mlv.fr (to w krótce).

Nie biorê żadnej odpowiedzialności za jakiekolwiek szkody, które mogą ci siê przytrafiæ (nawet padniête win95).

Jeśli zobaczysz jakieś błêdy w pisowni czy techniczne, to nie wahaj siê napisaæ do mnie. Jestem tylko biednym Francuzem zagubionym w angielskim świecie, próbującym mówiæ zrozumiałym jêzykiem.

27 Marca 1996.

5.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błêdy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeñ HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują siê na tejże stronie. Dostêpne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują siê także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskaæ poprzez listê dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisaæ, to wyślij list o treści subscribe jtz Imiê Nazwisko na adres majordomo@ippt.gov.pl

Zmiany wprowadzone przez tłumacza:
Doadałem sekcjê dotyczącą inicjalizacji kart PnP pod Linux-em.