22 de noviembre de 2006

Lista de hardware PCI soportado por Linux

En las distros comerciales (que no tiene nada de malo que lo sean) si que hay listas de "hardware soportado", pero no ninguna de la "comunidad", del kernel en si. Así que he escrito un pequeño script (muy cutre y casi sin comentarios, tal y como Dios desea que sean todos los scripts del mundo, y quien soy yo para llevar la contraria a Dios) que da una lista de dispositivos PCI (se podría extender a dispositivos USB). ¿Y por qué me gasto un mensaje del blog en anunciar una tontería semejante? Pues porque personalmente pienso que es muy útil, aunque si dicha utilidad no existe ya supongo que es precisamente porque nadie lo necesita. En fin.

Para obtener dicha lista el script tan solo tiene que mirar en /lib/modules/`uname -r`/modules.pcimap. Dicho archivo es generado por depmod a partir del hardware que cada módulo (driver) declara que puede cargar. Es decir, en el kernel existe una infraestructura "genérica" para que los modulos digan: Yo soporto tales dispositivos (y que se puede cotillear con "modinfo nombredelmodulo"). Depmod extrae la lista de todos los módulos que encuentre para ese kernel y agrupa todo en ese archivo; archivo que udev utiliza para saber qué módulo tiene que cargar cuando detecta un dispositivo en el sistema. Mi script tan solo mira esa lista, consulta los nombres de dispositivos en /usr/share/misc/pci.ids (al menos en Ubuntu está ahí) y los imprime. Nada del otro mundo.

script, y lista de ejemplo de un kernel Ubuntu, de los que activan casi todo.

7 comentarios:

  1. La lista está muy bien pero tiene un problema. Me di cuenta de ello cuando estuve buscando una webcam que funcionase con Linux, y es que en las cajas del hardware nunca te ponen deviceID:vendor 000c:1073
    Con lo que o buscas por internet o compras y pruebas.

    ResponderEliminar
  2. Por eso precisamente he hecho esa lista, porque en la lista en los nombres de los dispositivos aparecen los nombres reales, no los PCIids (aunque les añada entre paréntesis, no significan nada realmente)

    ResponderEliminar
  3. Dios!, esto esta lleno de hardware...

    Por cierto, tengo algun que otro dispositivo que no sale en la Base de Datos -Device NOT found in the pciid database-

    Desconozco si es porque algun tipo de hardware no se registra adecuadamente (o no le tengo incluido el soporte) o es un bug del script.

    No lo he investigado a fondo.

    ResponderEliminar
  4. Si, eso ocurre porque no todos los dispositivos están en la base de datos

    ResponderEliminar
  5. Aclarado, pero has conseguido intrigarme muchisimo sobre como funciona todo esto (y no me refiero a tú script, sino al registro de dispositivos, etc).

    Un saludo.

    ResponderEliminar
  6. Anónimo3:09 p. m.

    Tremendamente útil el script para los que nos peleamos habitualmente con el hardware en Linux. Dices que 'se podría extender a dispositivos USB'. Te animo a que lo hagas : tendrás nuestro agradecimiento eterno.

    ResponderEliminar
  7. Anónimo4:03 p. m.

    Antes de hacer esta lista habrá que conectarse a Internet y correr update-pciids asi te actualiza automaticamente la lista pciids.
    No se si lo guarda en un archivo adicional asi que tendrás chequear si tu scripts toma datos actualizados.

    ResponderEliminar