martes, 1 de julio de 2008

Cómo encontrar drivers, el método definitivo

En Windows, a veces también en Linux, pero más en Windows, a veces encontrar drivers para un dispositivo chino de esos que vienen con las motherboards taiwanesas es un verdadero dolor de cabeza.

Pero ya no más. He encontrado el método definitivo, el Santo Grial de los buscadores de drivers. Hay programas que lo hacen, pero ante la duda no hay nada como El Método.

Todo ello irónicamente, gracias a años de uso de Linux y más irónicamente aún, El Método funciona apoyándose en algo que los desarrolladores de linux han creado, un humilde archivo de texto ASCII que se llama pci.ids.

Resulta que actualmente casi todos los dispositivos de una motherboard se comunican a través de algo que se llama bus pci, puedes imaginarlo como una red de carreteras de datos.

No, los slots pci de tu motherboard son otra cosa, son ranuras para agregar al bus pci de tu motherboard los dispositivos que quieras, siempre y cuando sean compatibles con el bus pci.

Los dispositivos que se comunican por bus pci tienen grabado en sus chips una serie de numeros y letras que se llama pci id, que a partir de ahora llamaremos cadenota. En la cadenota hay 2 cadenas que nos interesan, una se llama ven_id y otra se llama dev_id, o Vendor ID y Device ID, que juntos, identifican a cada dispositivo fabricado en el mundo.

Hace mucho tiempo los fabricantes de dispositivos se pusieron de acuerdo en que cada uno de ellos tendría un identificador de vendor pci único. Como curiosidad, el de intel es 8086.

Cada Fabricante maneja un número único para cada dispositivo que fabrica, lo que se conoce como device id.

Teniendo el vendor id y el device id, podras saber el dispositivo exacto para el cuál buscar tu driver. Nada de adivinanzas nunca más.

¿Donde se ve todo eso?

Panel de control->Sistema->Hardware Administrador de Dispositivos


Después si el dispositivo que buscas ya está instalado, seguramente estará en su categoría correspondiente, si no, seguramente estará en

Otros Dispositivos


Con un signo de interrogación y un ¡ dentro de un triángulo amarillo. Ahi hay que hacer clic derecho y

Propiedades->Detalles


En esa ventana aparece la cadenota. Lo único que interesa es lo que esta después de ven_ y lo que está después de dev_, números de 4 digitos hexadecimales, que corresponden al vendor id y el device id respectivamente.

En Linux solo necesitas el comando lspci, el contenido del archivo virtual /proc/bus/pci/devices y el contenido del archivo /usr/share/hwdata/pci.ids.

Una vez teniendo esos dos datos, sólo hay que buscarlos en The Linux PCI ID repository.

Con eso tendrás el dispositivo exacto y ya después es muy fácil bajar el driver del fabricante correspondiente o en el caso de Linux, saber si el mecanismo de autoloading de módulos de tu distribución esta cargando el driver correcto, en caso contrario habrá que cargarlo manualmente con modprobe después de investigar qué módulo le corresponde realmente (si es que existe el módulo para ese dispositivo).

Además en Windows podrás examinar el contenido de los archivos .INF para ver si realmente el driver corresponde a tu dispositivo y entender muchos de los errores de instalación que pueden arrojarte los instaladores de drivers.

No hay comentarios.: