Ultrasound Plug'n'Play mini-HOWTO Autor: J-F MAMMET, mammet@diva.univ-mlv.fr v0.01, 27 Marca 1996 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll v1.0, 7 Wrze¶nia 1997 Dokument ten zosta³ napisany w standardzie ISO-8859-2. Wersji orygi nalnej nie ma na g³ównym serwerze (_s_u_n_s_i_t_e_._u_n_c_._e_d_u) _L_i_n_u_x _D_o_c_u_m_e_n_t_a_ _t_i_o_n _P_r_o_j_e_c_t, a na stronê WWW autora (diva.univ-mlv.fr <http://diva.univ-mlv.fr/~mammet/>) nie mo¿na siê dostaæ. 11.. WWpprroowwaaddzzeenniiee.. 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ê _U_l_t_r_a_s_o_u_n_d 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 _g_u_s _r_e_v _3_._4, co wydawa³o siê byæ poprawne, ale nie by³o... Jaki¶ czas pó¼niej spróbowa³em _Q_u_a_k_e_'_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 _s_o_u_n_d _b_l_a_s_t_e_r_-_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æ _s_o_u_n_d _b_l_a_s_t_e_r_-_a (sic)? co bêdzie w nastêpnym odcinku _"_A_k_t _X_"? 22.. GGUUSS MMAAXX?? No i wróci³em do dos-a i pobawi³em siê trochê programem _i_w_i_n_i_t. Popatrzy³em na to co mi wy¶wietla³ w trybie _v_e_r_b_o_s_e i zobaczy³em co¶ takiego: CODEC adress 32c... Co? _g_u_s PnP ma CS4231/CS1848 Codec tak jak _g_u_s _M_A_X??? Potem pogrzeba³em po moich kopiach zapasowych i znalaz³em ostatnie sterowniki _g_r_a_v_i_s_-_a, wzi±³em _u_l_t_r_i_n_i_t _2_._3_1 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? _U_l_t_r_a_s_o_u_n_d _M_A_X _d_e_t_e_c_t_e_d !!! Wow. Super! Pomysla³em wiêc, ¿e muszê tylko to wpisaæ zanim wystartuje Linux-a i bêdê mia³ obs³ugê _g_u_s _M_a_x i w koñcu ten p**** quake bêdzie mia³ d¼wiêk ! To nie by³o takie proste 8( 33.. PPrrzzeerraabbiiaanniiee sstteerroowwnniikkaa.. 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 _g_u_s _M_a_x, 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 _P_n_P 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 _g_u_s___p_n_p___f_l_a_g, 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). 44.. WWiiêêcc ccoo mmaammyy ddookk³³aaddnniiee zzrroobbiiææ?? Nie zapomnij, ¿e to nie bêdzie dzia³aæ je¶li nie masz RAM-u na swojej karcie... Przede wszystkim nie u¿ywaj ju¿ _l_i_l_o, poniewa¿ musisz zainicjowaæ _g_u_s_- _a _P_n_P 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 _f_d_i_s_k _/_m_b_r 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 _U_l_t_r_i_n_i_t znajdziesz w gus00045.zip na ka¿dym ftp z _g_r_a_v_i_s_-_e_m. 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± _g_u_s_-_a i _g_u_s _m_a_x. U mnie jest to: BASE = 220 IRQ = 5 DMA1 = 6 DMA2 = 5 DMABUF = 65536 No i mi³ej zabawy z d¼wiêkiem! 44..11.. KKaarrttyy PPnnPP ppoodd LLiinnuuxx--eemm.. [Sekcja dodana przez t³umacza.] Do inicjalizacji karty s³u¿y narzêdzie o nazwie _s_a_p_n_p_t_o_o_l_s, które jest do zdobycia np. pod adresem ftp.icm.edu.pl <ftp://ftp.icm.edu.pl:/pub/Linux/suniste/system/hardware>. Dok³adny opis znajduje siê razem z dystrybucj±. Ogólnie wygl±da to tak: najpierw kompilujesz programy _i_s_a_p_n_p i _p_n_p_d_u_m_p. 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 _i_s_a_p_n_p /etc/isapnp.conf i _i_n_s_m_o_d _s_o_u_n_d. 55.. CCrreeddiittss.. 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 <http://diva.univ-mlv.fr/~mammet/linux.html> (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. 55..11.. OOdd tt³³uummaacczzaa.. 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. <http://www.jtz.org.pl/bartek/tlumaczenie.html> 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.