Gravis ULTRASOUND Plug n' Play Mini-Como <author>J. F. Mammet, <tt><htmlurl url="mailto:mammet@diva.univ-mlv.fr" name="mammet@diva.univ-mlv.fr"></tt> &nl; Traducido por Iñaki Martínez Díez, <tt><htmlurl url="mailto:imd@redestb.es" name="imd@redestb.es"></tt> <date>Versión 0.01, 27 de Marzo de 1996 <abstract> Particularidades de configuración de la Gravis ULTRASOUND Plug n' Play bajo Linux. </abstract> <sect>Introducción <p> Como fan de las tarjetas de sonido Gravis desde hace mucho tiempo, me alegré mucho cuando finalmente Gravis sacó algo nuevo. Había planeado comprar la nueva Ultrasound desde hacía tiempo, y la compré con un mega de RAM tan pronto estuvo disponible aquí en Francia. La instalé, y qué sorpresa, mi BIOS <it/plug and play/ la detectó, e incluso windows95 (lo siento, bromas estúpidas sobre marketing95 hoy no). Así que pensé que la tarjeta funcionaría en cualquier sitio ... Entonces arranqué Linux, no tuve problemas, la tarjeta fue detectada como una <tt/GUS rev 3.4/, lo cual me pareció estar bien, pero no lo estaba ... Algún tiempo después probé <it/Quake/, y no sonaba. Entonces leí el manual del juego, y ví que Quake estaba usando algún DMA no estándar que la <it/GUS/ no podía proporcionar ... Pensé que no era bueno para mi, tener tan buena tarjeta y no tener sonido en tan genial juego (la versión dos necesita la emulación de sound blaster, y yo incluso prefiero sin sonido que eso). Así que, ¿Ahora qué? ¿debería esperar hasta Mayo para un driver de GUS PnP? ¿Debería comprar una sound blaster (buag)? ¿Que ocurrirá en el próximo episodio de Expediente X? <sect>¿GUS MAX? <p> Entonces volví al dos, y jugué un poco con el programa <tt>iwinit</tt>, miré lo que el programa decía cuando usaba el modo <it/verbose/ y vi algo como <tt>CODEC dirección 32c</tt> ... ¿Qué? ¿La GUS PnP tiene un <tt>Codec CS4231/CS1848</tt> como la <it/GUS MAX/? Entonces miré en mis cintas de backup buscando los drivers de Gravis viejos, tomé el <tt/ultrinit 2.31/ de ellos y tecleé: <tscreen><verb> set ultrasnd=220,6,5,5,5 set ultra16=32c,0,0,1,0 set ultradir=c:\ultrapnp ultrinit </verb></tscreen> y descubrí que: ¡¡¡ Ultrasound MAX detectada !!! ¡Genial!, pensé entonces, sólo tengo que poner esto antes de cargar Linux y tendré soporte GUS MAX, y ¡¡finalmente conseguiré que el j****o <it/Quake/ funcione con sonido!! No fue tan fácil <tt/8(/ <sect>Investigación del Driver <p> No soy un buen programador, pero se suficiente C para observar los fuentes de un driver y ver qué pasa (especialmente cuando está bien comentado). Miré el fichero <tt>gus_card.c</tt>, pero no encontré nada interesante. Entonces miré en <tt>gus_wave.c</tt>, y ví esto: <tscreen><verb> * 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. </verb></tscreen> que significa: <tscreen><verb> * el Valor 255 se refiere a pre-3.7 la cual no tiene mixer. * los Valores 5 a 9 se refiere a v3.7 los cuales tienen un mixer ICS2101. * 10 y superior es GUS MAX la cual tiene el codec/mixer CS4231. </verb></tscreen> ¡Genial!, solo tengo que forzar el valor a 10, y funcionará ... ¡No! haciendo esto haría que el kernel pensase que se tiene una GUS MAX, pero ¡no reconocerá el chip Codec! Por lo que tenía que forzar la detección del Codec también ... No fue tan fácil encontrar qué hacer, pero finalmente descubrí una posisbilidad: En el fichero <tt> gus_wave.c</tt>, había una línea: <tscreen><verb> if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) </verb></tscreen> lo que significaba que el kernel estaba intentando auto-detectar el chip AD1848, pensé que no lo podría detectar con la GUS PnP, y ¡estaba en lo cierto! Simplemente cambié la línea a: <tscreen><verb> if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))) </verb></tscreen> recompilé el kernel, y ¡¡¡hey, Quake funcionó de maravilla!!! Por cierto hay una etiqueta <tt>gus_pnp_flag</tt> en <tt>gus_card.c</tt>, pero no he notado ninguna diferencia con ella activada o desactivada <tt/8(/ (quizás hice algo mal) <sect>¿Qué debería hacer exactamente? <p> No olvidar que esto no funcionaría si no hay RAM en la GUS ... Primero de todo no usar <tt/LILO/ nunca más, ya que es necesario inicializar la GUS PnP antes de ejecutar Linux ... (hacer un <tt>fdisk /mbr</tt> bajo dos, ver otros COMOs para más detalles en esto). En el <tt/autoexec.bat/, poner: <tscreen><verb> set interwave=c:\ultrapnp\iw.ini c:\ultrapnp\iwinit set ultrasnd=220,6,5,5,5 (o cualquiera que se quiera o necesite) set ultra16=32c,0,0,1,0 set ultradir=c:\ultrapnp c:\ultrapnp\ultrinit </verb></tscreen> Se puede encontrar ultrinit en el fichero <tt>gus00045.zip</tt>, en cualquier <it/site/ de Gravis ... Bajo Linux, abrir el fichero <tt>gus_wave.c</tt>, en <tt>/usr/src/linux/drivers/sound</tt> (o en cualquier otro sitio). Buscar la línea: <tscreen><verb> if (val == 255 || val < 5) (line 3049 in 3.5b7) </verb></tscreen> y una línea antes, añadir: <tscreen><verb> val=10; </verb></tscreen> Entonces buscar la línea: <tscreen><verb> if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) (line 3085) </verb></tscreen> y cambiarla a: <tscreen><verb> if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))) </verb></tscreen> recompilar el kernel con soporte de GUS y GUS MAX. &nl; Mi configuración es: <tscreen><verb> BASE = 220 IRQ = 5 DMA1 = 6 DMA2 = 5 DMABUF = 65536 </verb></tscreen> ¡¡¡Disfruta del sonido!!! <sect>Créditos <p> Yo usé el kernel <tt/1.3.75/ para modificar, pero debería funcionar en cualquier <tt/1.3.70/ y superior (por favor escribirme si hay algún problema) Este mini-COMO esta escrito por: <itemize> <item>e-mail : <tt><htmlurl url="mailto:mammet@diva.univ-mlv.fr" name="mammet@diva.univ-mlv.fr"></tt> <item>www : <tt><htmlurl url="http://diva.univ-mlv.fr/˜mammet/" name="http://diva.univ-mlv.fr/˜mammet/"></tt> </itemize> Se puede conseguir la última versión de este documento de mi página <it/WEB/ en &nl; <tt><htmlurl url="http://diva.univ-mlv.fr/˜mammet/linux.html" name="http://diva.univ-mlv.fr/˜mammet/linux.html"></tt> (pronto disponible) No asumo ninguna responsabilidad si se pierden informaciones o cualquier error que pudiese ocurrir (incluso fastidiar win95). Si se encuentra algún error tipográfico (o incluso errores técnicos <tt/8-p/), escribirme libremente, soy sólo un pobre francés perdido en un mundo anglosajón, intentando hablar el idioma de forma comprensible. <sect>Anexo: El INSFLUG <label id="Grupos"> <p> El <em/INSFLUG/ forma parte del grupo internacional <it/Linux Documentation Project/, encargándose de las traducciones al castellano de los Howtos (Comos), así como la producción de documentos originales en aquellos casos en los que no existe análogo en inglés. En el <bf/INSFLUG/ se orienta preferentemente a la traducción de documentos breves, como los <em/COMOs/ y <em/PUFs/ (<bf/P/reguntas de <bf/U/so <bf/F/recuente, las <it/FAQs/. <tt/:)/ ), etc. Diríjase a la sede del INSFLUG para más información al respecto. En la sede del INSFLUG encontrará siempre las <bf/últimas/ versiones de las traducciones: <tt><htmlurl url="http://www.insflug.org" name="www.insflug.org"></tt>. Asegúrese de comprobar cuál es la última versión disponible en el Insflug antes de bajar un documento de un servidor réplica. Se proporciona también una lista de los servidores réplica (<it/mirror/) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano. Francisco José Montilla, <tt><htmlurl url="mailto:pacopepe@insflug.org" name="pacopepe@insflug.org"></tt>. </article>