Gravis ULTRASOUND Plug n' Play Mini-Como

J. F. Mammet, mammet@diva.univ-mlv.fr
Traducido por Iñaki Martínez Díez, imd@redestb.es

Versión 0.01, 27 de Marzo de 1996

1. Introducción

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 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 GUS rev 3.4, lo cual me pareció estar bien, pero no lo estaba ...

Algún tiempo después probé Quake, y no sonaba. Entonces leí el manual del juego, y ví que Quake estaba usando algún DMA no estándar que la 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?

2. ¿GUS MAX?

Entonces volví al dos, y jugué un poco con el programa iwinit, miré lo que el programa decía cuando usaba el modo verbose y vi algo como CODEC dirección 32c ...

¿Qué? ¿La GUS PnP tiene un Codec CS4231/CS1848 como la GUS MAX?

Entonces miré en mis cintas de backup buscando los drivers de Gravis viejos, tomé el ultrinit 2.31 de ellos y tecleé:

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

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 Quake funcione con sonido!!

No fue tan fácil 8(

3. Investigación del Driver

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 gus_card.c, pero no encontré nada interesante. Entonces miré en gus_wave.c, y ví esto:

  * 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.

que significa:

  * 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.

¡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 gus_wave.c, había una línea:

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

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:

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

recompilé el kernel, y ¡¡¡hey, Quake funcionó de maravilla!!!

Por cierto hay una etiqueta gus_pnp_flag en gus_card.c, pero no he notado ninguna diferencia con ella activada o desactivada 8( (quizás hice algo mal)

4. ¿Qué debería hacer exactamente?

No olvidar que esto no funcionaría si no hay RAM en la GUS ...

Primero de todo no usar LILO nunca más, ya que es necesario inicializar la GUS PnP antes de ejecutar Linux ... (hacer un fdisk /mbr bajo dos, ver otros COMOs para más detalles en esto).

En el autoexec.bat, poner:

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

Se puede encontrar ultrinit en el fichero gus00045.zip, en cualquier site de Gravis ...

Bajo Linux, abrir el fichero gus_wave.c, en /usr/src/linux/drivers/sound (o en cualquier otro sitio). Buscar la línea:

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

y una línea antes, añadir:

val=10;

Entonces buscar la línea:

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

y cambiarla a:

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

recompilar el kernel con soporte de GUS y GUS MAX.
Mi configuración es:

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

¡¡¡Disfruta del sonido!!!

5. Créditos

Yo usé el kernel 1.3.75 para modificar, pero debería funcionar en cualquier 1.3.70 y superior (por favor escribirme si hay algún problema)

Este mini-COMO esta escrito por:

Se puede conseguir la última versión de este documento de mi página WEB en
http://diva.univ-mlv.fr/~mammet/linux.html (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 8-p), escribirme libremente, soy sólo un pobre francés perdido en un mundo anglosajón, intentando hablar el idioma de forma comprensible.

6. Anexo: Grupos LiNUXeros en España.

Francisco José Montilla, pacopepe@nova.es, FidoNet 2:345/402.22 es coordinador del INSFLUG: (Impatient & Novatous Spanish Fidonet LiNUX Users Group) uno de los varios grupos de usuarios existentes en España, y más concretamente en la mejor ;-) área de FidoNet: R34.LINUX junto con LuCas (LinUx en CAStellano).

El INSFLUG se orienta preferentemente a la traducción de documentos breves, como los Howtos y PUFs

Preguntas de Uso Frecuente, las FAQs. :)
, etc.

LuCas Coordina y realiza las traducciones de las guides, es decir, documentos más extensos.

Por supuesto, la orientación de cada grupo no tiene carácter excluyente; si quieres colaborar en las dos, ¡mejor! ;-).

Actualmente están siendo traducidos varios COMOs y FAQs, además de las ``guides''.

Otra fuente de información obligada para el recién incorporado son las FAQ elaboradas a partir del correo circulante por R34.LINUX por Pablo Gómez, pgomez@laereas.aiva.com, 2:341/43.40, disponibles próximamente en los formatos habituales de documentación (ps, dvi, html, sgml, etc) en los servidores de Internet especificados más adelante, así como en el mismo área.

¡Necesitamos tu colaboración para futuras traducciones! si quieres unirte a nosotros ponte en contacto con:

INSFLUG:

Francisco José Montilla, pacopepe@nova.es, FidoNet 2:345/402.22

LuCas:

  1. Juan José Amor, jjamor@infor.es, FidoNet 2:341/12.19
  2. Alfonso Belloso, alfon@bipv02.bi.ehu.es, FidoNet 2:344/17.2

Puedes obtener traducciones de:

FidoNet:

Si se da el caso de que carezcas de acceso a Internet, y no encuentras los COMOs en alguna de estas dos direcciones, no dudes en ponerte en contacto conmigo, y me encargaré de subirlas a alguna de las dos.

Por último, recordarte que un inmejorable lugar para estar informado, así como consultar y discutir todo lo relacionado con LiNUX lo tienes en FidoNet, en R34.LINUX.

Actualmente, ambos grupos poseen las siguientes listas de correo:

Ambas son listas tipo majordomo; para suscribirte, por ejemplo a la del INSFLUG, envía un email a majordomo@nova.es, con "subscribe insflug" en el cuerpo del mensaje.

Dispones de todos los ``COMOs'' traducidos hasta ahora, así como información puntual sobre el INSFLUG y temas relacionados en:

http://www.insflug.nova.es en sus versiones html, y listas para bajar, en http://ftp.insflug.nova.es

Otro buen punto de búsqueda, consulta, y obtención de la documentación traducida, en formato HTML, con links a los demás formatos, así como las traducciones de las guías traducidas por LuCAS es:

http://www.infor.es/LuCAS/

junto con su ftp:

ftp://ftp.infor.es/pub/LuCAS/

Tanto el INSFLUG, como LuCAS, y todos los traductores implicados, esperamos que esta traducción te haya sido de utilidad.