3.7.6.2.- Drivers USB de Linux

Hay disponible muchos controladores USB diferentes, con nombres como UHCI, OHCI, EHCI, y R8A66597. Las distribuciones modernas de Linux traen activados los drivers para los controladores habituales, por lo que su puerto USB se debería activar automáticamente cuando inicie el ordenador. Los controladores UHCI y OHCI gestionan los dispositivos USB 1.x, aunque la mayoría de los demás controladores se ocupan de los dispositivos USB 2.0. Tengamos en cuenta que estos controladores ofrecen simplemente un medio para acceder a los dispositivos USB reales (ratones, impresoras, teclado, etc). Posiblemente, su interés se centre en las herramientas y utilidades que le permiten utilizar estos dispositivos.

Podemos saber mucho de estos dispositivos a través de la utilidad lsusb. Un uso simple de este programa sin opciones revela información básica sobre sus dispositivos USB.

lsusbEn este ejemplo detectamos que el bus 007 no tiene dispositivos conectados. Podemos recopilar más información utilizando varias opciones de lsusb:

  • Información detallada.- La opción -v produce una información ampliada sobre cada producto.lsusb_-v
  • Restringir a los números de bus y dispositivos.- Mediante la opción -s [[bus]:][numdis] la salida se redirigirá a los números de bus y dispositivos especificados.lsusb_-s
  • Restringir al fabricante y el producto.- Con esta opción, puede limitar la salida a un fabricante y un producto concretos utilizando la opción -d [fabricante]:[producto]. El fabricante y el producto son los códigos que van justo tras la ID en cada línea de la salida básica de lsusb.lsusb_-d
  • Mostrar los dispositivos por nombre de fichero.- Usamos -D nombre-fichero muestra información sobre dispositivos al que se puede acceder.
    lsusb_-D
  • Vista en árbol.- La opción -t muestra la lista de dispositivos como un árbol, con lo que podrá ver más fácilmente qué dispositivos están conectados a controladores específicos.
    lsusb_-t
  • Versión.- La opción --version muestra la versión de la utilidad lsusb y finaliza.
    lsusb_--version

Las primeras implementaciones de Linux USB necesitaban un driver independiente para cada dispositivo USB. Muchos de estos drivers siguen en el kernel y algunos programas lo utilizan. Por ejemplo, los dispositivos USB de almacenamiento de disco utilizan drivers de almacenamiento en USB que interconectan SCSI de Linux, haciendo q1ue los discos duros USB, discos extraíbles y demás parezcan dispositivos SCSI.

Linux va migrando hacia modelos en el que el sistema de ficheros USB proporcionan acceso a dispositivos USB. Este sistema de ficheros aparece como parte del sistema de ficheros virtual /proc. En particular, la información de los dispositivos USB es accesible desde /proc/bus/usb. A los subdirectorios de /proc/bus/usb se les dan nombres numéricos en base a los controladores USB instalados en el ordenador, como /proc/bus/usb/001 para el primer controlador USB, El software puede acceder a los ficheros de estos directorios para controlar dispositivos USB en lugar de utilizar los ficheros de dispositivo de /dev, como para la mayoría de los dispositivos de hardware.