¿Necesitás drivers de tal o cual dispositivo? Bienvenido al club.

PREFACIO: Con el paso de los años o bien yo me he vuelto viejo-vago-choto(tm) y todo lo que antes me llenaba de algarabía ahora me da por el quincuagésimo forro de las bolas o bien los drivers ya no son lo que eran. Tanto si sos un técnico que repara PC como si sos un usuario que suele apañárselas por si mismo para reinstalar Windows, deberías seguir leyendo.

Este post surge de la imperiosa y extremadamente rompe huevos necesidad de drivers que tenemos siempre todos los que vivimos de reparar PC, de una idea que me vino a la cabeza hace un par de semanas para solucionar este inconveniente y que después de varias pruebas no ha hecho mas que mejorar mi calidad de vida y aumentar el tiempo que paso disfrutando del aire libre en familia en lugar de tener que esperar tediosas horas a que se baje de rapidshare ese pack de drivers de 600Mb que después resulta que tiene todos los drivers que ya había instalado con anterioridad menos justo el que necesitaba…

Así se presentaba, con estos colores horribles, el instalador de las placas de video SIS

Hubo una época en que bajar un driver era la misma utopía que ahora, no por que había que descargar 345Mb –de hecho un driver “de los de antes” no pasaba de los 25Kb como mucho, sin zipear– para poder instalar una impresora de mierda el driver de una impresora HP multifunción si no por que los buscadores eran una poronga. Buscar en metacrawler el driver para la Aureal Vortex 1000 ISA podía llevarte tranquilamente la misma cantidad de tiempo que te llevaría descargar un driver de cualquier placa de video aceleradora 3D nVidia o ATI de hoy en día con una conexión de banda ancha.

En esa época un driver solía constar de 3 archivos mínimo y 10 como máximoSi, con 2 miserables archivos de texto y un binario no necesitas mas. Debería alcanzar para hacer funcionar medianamente bien cualquier dispositivo– por que las placas de sonido no tenían ecualizador, ni ícono en el panel de control, ni efectos de cámara de eco. Las placas de video no controlaban la cantidad de Gamma del monitor ni se podía configurar tanto pero tanto la calidad de la aceleración 3D, los joysticks y volantes no tenían memoria por software y así sucesivamente… Eran épocas salvajes. De esa época de caballos a pelo es que conozco como funciona (a grosso modo) el conjunto de archivos que compone un driver.

Siempre buscando como optimizar los procesos y aprovechar mejor los tiempos muertos se me ocurrió guardar todos los drivers habidos y por haber en una sola carpeta, ir acumulándolos de alguna manera de forma que a la hora de tener que reinstalar la misma PC u otras de similares características el día de mañana solo baste con decirle al pelotudo de Windows XP –que no es capaz de buscar recursivamente, otro gran punto a favor para Windows 7– apuntándole con el mouse a la carpeta que contiene el guiso de drivers:

– ¡Eh, boludo, buscá acá!

.Y funciona, realmente funciona.

Cuando se instala un driver desde el instalador (setup.exe) o cuando se instala a mano indicándole al administrador de dispositivos cual es la carpeta que lo contiene, Windows busca antes que nada un archivo con extensión INF. Si encuentra el .inf y dentro del mismo (no es mas que un archivo de texto plano) los strings PCI\VEN (por el número de fabricante) y &DEV (por el número de dispositivo de ese fabricante puntual) coinciden con los del identificador del dispositivo al que le falta el driver, entonces el sistema hace tres cosas antes de poner a funcionar todo el circo:

  1. Copia el archivo .inf a %windir%\inf
  2. Copia el archivo .sys que es el driver en si mismo a %windir%\system32\drivers
  3. Copia toda la demás sarta de boludeces* a %windir%\system32 y puede que un poco a %windir%

%windir% es una variable del sistema, apunta a la carpeta en donde se instaló el sistema operativo que por lo general es c:\windows

*La demás sarta de boludeces es toda la parafernalia adicional que acompaña al driver como por ejemplo programas ecualizadores o canceladores de voz, medidores de nivel de batería o de tinta en las impresoras, etc.

Armado con estos conocimientos desde hace algunas semanas vengo acumulando en una carpeta todo el contenido de %windir%\inf, %windir%\system32\driver y %windir%\system32\ de cuanta PC o notebook pase por mis manos. Cuando me pregunta si quiero sobreescribir archivos, le digo que no a todo con el combo [SHIFT + N].

¿El resultado?

Tengo en un disco rígido externo –aun que bien podría ser en una carpeta compartida por la red en cualquier otra PC o en un pendrive– un directorio de nombre “Guiso de drivers 1.0” que ya pesa 700Mb –pero estoy seguro que se puede reducir a menos de la mitad si elimino todos los archivos que no son de drivers– en constante actualización que ya hoy en día, pocas semanas después es capaz de instalar todos los drivers de todas las notebooks que probé, incluidos esos dispositivos desconocidos que siempre quedan colgados y que suelen ser el coprocesador, el SMBus no se cuanto, etcétera.

Así que si sos técnico: Empezá a acumular todos estos archivos en un solo lugar y después dejá que Windows busque los drivers ahí. Mientras te tomás un feca, presenciás la magia.

Si sos un usuario asiduo a las reinstalaciones de Windows por que todavía no te pasaste para mi lado, entonces hacé un backup de todas estas carpetas, te va a simplificar mucho el proceso de reinstalación de drivers.

Como nota al margen:

  • No mezclar los drivers para windows XP con los de windows 7
  • No mezclar los drivers para sistemas operativos de 64 bits con los de 32 de toda la vida.
  • No calentarse en hacer esto para windows 7, basta con que dejes que busque el solito los drivers en internet y ya.
La letra chiquita del final y que nunca nadie lee: Hay que conservar los archivos de nombre OEM(seguido de un número).INF contenidos en %windir%\inf para que todo lo anterior funcione. No se puede sobrescribir OEM3.INF de una instalación con el de la otra instalación así que toca antes que nada ir a %windir"%\inf y renombrar todos estos archivos para que se llamen OEM(15,16,17,18,lo que corresponda).INF (Yo ya voy por el 70 y tantos) para no pisar un archivo con el otro. Aún así, sigue siendo mucho mas rápido que la lotería de tratar de adivinar cual es el driver y buscarlo en internet. Con esta le rompo el tuje al driver genius, al everest, aida y todas esas pelotudeces que acaban de quedar automáticamente obsoletas. ©2011 MalditoNerd.com Todos los derechos reservados, los zurdos un poco mas dados al trato con la gente. Si me vas a chorear el contenido de este artículo citá la fuente o te pongo una zapatería en el culo.

Algunas cosas son mas complicadas en Linux. Poner a funcionar un dispositivo USB hace algunos años en Linux era lísa y llanamente un dolor de bolas. De esa época aprendí que el comando lsusb sirve para listar los dispositivos conectados a los puertos USB y que cada dispositivo, como si fuera una especie de MAC Address tiene un identificador único:

# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

El ID que en este caso es 1d6b:0002 es único y es el mismo tanto para Linux como para Windows, aun que la connotación sea diferente. De tener que lidiar con identificadores USB aprendí que a veces, cuando no queda otra, buscar en Google por identificador es la mejor opción. Es mas, aveces, es la única opción.

Me pasó ayer. Necesitaba instalar uno de esos cables adaptadores de USB a puerto serial, los usb2com o usb2vcom que le dicen por las siglas de “USB a Virtual Com Port”. Resulta que el que fabricó el cable –y la renegrida concha de su madre– no tuvo a bien incluir un cd o minicd con el driver, Ni siquiera tuvo a bien incluír una página web desde donde se pudiera descargar el puto driver. Supuestamente era un adaptador “Plug n Play”, No installation Required.

Plug and PLay las pelotas.

No hubo poder de Dios que hiciera funcionar el cable, ni en Windows XP, ni en Windows 7, ninguno de los dos tenía el driver incorporado, no había forma de descargarlo desde la página web del fabricante, no podía leer el chipset interno (dentro de la ficha DB9) para poder saber con que estaba lidiando, estaba por ir a comprar otro cable de alguna marca mas seria cuando me iluminé.

Panel de control / Sistema / Hardware / Administrador de dispositivos, propiedades del cable en cuestión:

id_usb

Para el ejemplo estoy mostrando el de mi webcam, pero en el caso del cable, el VID & PID respectivamente rezaban:

USB\VID_067B&PID_2303

That´s it, eso es todo. No se necesita mas que googlear buscando lo anterior para llegar a la página web del fabricante del chipset que en mi caso es un tal “Prolific”, el que le vende al fabricante del cable, y descargar desde ahi un driver universal para el mismo:

http://www.prolific.com.tw/eng/downloads.asp?id=31

Este (mini)artículo no es mas que una actualización del artículo anterior: [HowTo] Sistema de vigilancia casero basado en Linux usando una webcam

videovigilancia .

En las pruebas que he ido haciendo hasta el momento, después de 15 días de funcionamiento sostenido:

~ # uptime
  
22:59:32 up 15 days,  7:47,  1 user,  load average: 0.31, 0.39, 0.36

Se porta como si recién hubiera arrancado:

~ # free -m
             total       used       free     shared    buffers     cached
Mem:           228        206         21          0         73         90
-/+ buffers/cache:         42        185
Swap:          517          2        515

Hoy cumple exactamente 31 días de grabación de corrido, en estos 31 días, como únicamente graba –y toma instantáneas– a 640×480 si detecta movimiento, me ha generado un total de 154579 archivos entre fotografías y videos, 7Gb de información:

~ # du -sh /home/dvr/video/
7.3G    /home/dvr/video/

Así que con un disco de 80Gb que tiene supera ampliamente mis estimaciones iniciales, tengo para grabar sin tener que borrar nada apróximadamente 10 meses de corrido, mejor que cualquier DVR comprada con disco de 320Gb.

Para ser gratis y casero, nada mal ¿Eh?

1 – Como saber cuanto ocupa una carpeta en Linux.

¿Cuantas veces necesitaste conocer cuanto espacio ocupa un directorio en particular? Desde la consola al ejecutar «du» por «Disk Ussage«:

~ # du /home/dvr/video/movie/

Te devuelve el tamaño en bloques del directorio en cuestión:

48004   /home/dvr/video/movie/

Como al sistema de archivos lo formateé en su momento con un tamaño de bloque de 1024 bytes –Por defecto se usan 4096 bytes si no se especifica un valor diferente para el parámetro en el argumento de la utilidad que formatea-, la cuenta es facil: 48004 bloques de 1024 bytes cada uno suman 49156096 bytes.

Como no podía ser de otra forma, para no tener que andar haciendo cálculos estrambóticos, se le puede pasar a la utilidad como argumento «-h» por «Human Readable»  para que devuelva el resultado en formato entendible por humanos:

~ # du /home/dvr/video/movie/ -h
47M     /home/dvr/video/movie/

Como el comando es recursivo, puede que te interese además agregarle la opción «-s» por «silent» para que cuando tenga que navegar muchos subdirectorios para sacar la cuenta no te llene la pantalla de texto. La otra muy util que tiene de entre tantas opciones disponibles es la posibilidad de producir un «gran total» con la opción «-c«, por ejemplo:

~ # du /home/dvr/video/movie/ -csh
47M     /home/dvr/video/movie/
47M     total

2 – Conocer el espacio utilizado/disponible por partición

Con la salida en modo «bloques» para el comando «df» por «Disk Free«:

~ # df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3              9297812   1988296   6837208  23% /
/dev/sdb1               397475    295084     75886  80% /usr/portage
/dev/sdb2             78628740   6382688  72246052   9% /home

O en modo «Human Readable» pasándole el argumento «-h«:

~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             8.9G  1.9G  6.6G  23% /
/dev/sdb1             389M  289M   75M  80% /usr/portage
/dev/sdb2              75G  6.1G   69G   9% /home

3 – Gráficos en la consola

Por ultimo la frutillita del postre, el que uso todo el tiempo, powered by python, «pydf«:

pydf en funcionamiento, mas gráfico imposible (para ser en consola).

pydf en funcionamiento, mas gráfico imposible (para ser en consola).

Cada quien sabrá como lo instala con el gestor de paquetes de su distribución de cabecera, en Gentoo es tan simple como ejecutar:


~ # emerge pydf

Como seguramente habrá mas aplicaciones que no conozco, ¿Conocen ustedes algo mejorcito que pydf?