Professional Documents
Culture Documents
Salida:
/dev/bus/
/dev/bus/usb
/dev/bus/usb/002
/dev/bus/usb/002/006
/dev/bus/usb/002/005
/dev/bus/usb/002/004
/dev/bus/usb/002/002
/dev/bus/usb/002/001
/dev/bus/usb/001
/dev/bus/usb/001/007
/dev/bus/usb/001/003
/dev/bus/usb/001/002
/dev/bus/usb/001/001
Esos puertos pueden ser internos o externos.
Ejemplo: Obtener informacin detallada de un dispositivo USB conectado a una computadora. Supongamos
que quiero ver informacin acerca del dispositivo /dev/bus/usb/002/005, usando el siguiente comando:
lsusb -D /dev/bus/usb/002/005
Salida:
Device: ID 0951:1643 Kingston Technology Data Traveler G3 4GB
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0951 Kingston Technology
idProduct 0x1643 DataTraveler G3 4GB
bcdDevice 1.00
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Para obtener informacin sobre estos parametros ir al Apendice
Ejemplo 3: Listar todos los puertos USB disponibles y los dispositivos conectados usando verbosidad.
lsusb -v
Salida:
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x8087 Intel Corp.
idProduct 0x0024 Integrated Rate Matching Hub
bcdDevice 0.00
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12
idVendor 0x2006
bInterfaceClass 8 Mass Storage
idVendor 0x0781 SanDisk Corp.
bInterfaceClass 8 Mass Storage
idVendor 0x0951 Kingston Technology
bInterfaceClass 8 Mass Storage
De la lista de arriba encontramos que hay un total de tres dispositivos de almacenamiento masivo presentes
en la computadora.
Ejemplo 5: Ver la versin de protocolo de los dispositivos USB.
lsusb -v | grep -i bcdusb
Salida:
bcdUSB 1.10
bcdUSB 2.00
bcdUSB 2.00
bcdUSB 2.00
Dependiendo de la versin, la velocidad vara. Abajo te doy el detalle para que tengas una clara idea acerca
de la velocidad asociada a cada versin:
USB 1.10
12Mb/s
USB 2.00
480Mb/s
USB 3.00
5Gb/s
|__ Port 3: Dev 3, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
|__ Port 4: Dev 7, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
|__ Port 4: Dev 7, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
Apendice
Descriptores USB
Todos los dispositivos USB tienen una jerarqua de descriptores, los cuales describen al host informacin de
qu el dispsitivo es, quin lo hizo, que versin de USB soporta, cuntas maneras de ser configurado tiene, el
nmero de endpoints y sus tipos, etc.
Los descriptores USB ms comunes son:
Descriptores de dispositivo
Descriptores de Configuracin
Descriptores de Interfaz
Descriptores Endpoint
Descriptores de Cadena
Los dispositivos USB pueden tener solo un Descriptor de Dispositivo. El Descriptor de Dispositivo, incluye
informacin como ser la version de USB para la cual el dispositivo ha sido compilado, los IDs de Vendedor y
Dispositivo usando estos para la carga de drivers apropiados, el nmero de posibles configuraciones que el
dispositivo puede tener. El numero de configuraciones posibles describe tambien el nuemro de ramas de
descriptores que siguen.
Un descriptor de configuracin especifica valores como la cantidad de energa que esta configuracin usa, si
el dispositivo es alimentado electricamente por si mismo o por bus, y el nmero de interfaces que este tiene.
Cuando un dispositivo es enumerado, el host lee la informacion del Descriptor de Dispositivo y toma una
decisin de que configuracin activa. Solo esposible una configuracin activa a la vez para el dispositivo.
Por ejemplo, es posible tener un dispositivo de alto consumo de energa alimentada por Bus o alimentada por
si misma. Si el host esta conectado a la red elctrica, el driver de dispositivo puede elegir usar la
configuracin de alimentar al dispositivo mediante bus, en cambio si el host es una laptop esta podra elegir
usar la segunda configuracin (aliementada a s misma) requiriendo al usuario conectar el dispositivo a la red
elctrica.
Las opciones de configuracin no estn limitadas a las maneras de alimentacin. Todas las configuraciones
podran tener en comun la misma forma de alimentacin y flujo de corriente, pero tener diferentes interfaces
o combinaciones de Endpoints. Cabe notar que el cambio de configuracin requiere que toda actividad en
cada Endpoint sea detenida. Debido a que USB ofrece flexibilidad en este ltimo aspecto, muchos
dispositivos tienen ms de una configuracin posible.
Un Descriptor de Interfaz puede ser visto como cabecera de los Endpoints, en un grupo funcional que ejecuta
una una tarea especifica del dispositivo. Por ejemplo tu podras tener un dispositivo multifuncin
fax/scanner/impresora. El Descriptor de Interfaz 1, podra describir los endpoints de la funcin de Fax; el
descriptor de interfaz 2, la funcion de scanner; el descriptor de interfaz 3, la funcin de impresora. Un
dispositivo puede tener habilitados uno o ms descriptores de interfaz al mismo tiempo.
Los Decriptores de Interfaz tienen un campo llamado bInterfaceNumber que especifica el numero de
interfaz; y el campo bAlternateSetting, el cual permite a una interfaz cmabiar de configuracin al vuelo (on
the fly). Por ejemplo podriamos tener un dispositivo con dos interfaces, interfaz 1 e interfaz 2. Interfaz 1
tiene como bInterfaceNumber el cero, el cual indica que es el descriptor de la primera interfaz y
bAlternativeSetting en cero.
Interfaz 2, deberia tener como bInterfaceNumber el valor 1 indicando que es la segunda interfaz, y como
bAlternativeSetting el valor cero (valor por defecto). Podriamos pensar en un tercer descriptor que asi como
el anterior tendria un valor de numero de interfaz de 1 (bInterfaceNumber=1), indicando que es la segunda
interfaz pero esta vez con bAlternativeSetting=1, indicando que este descriptor de interfaz usa una
configuracin alternativa, y no asi la configuracin por defecto.
En cuanto la configuracion esta activa, las dos primeras descriptores de interfaz con bAlternativeSettings=0
son usadas. Sin embargo durante esta operacin el host podra enviar una peticin SetInterface dicatando el
cmabio de configuracin de la interfaz 1 a adoptar una configuracin alternativa, habilitando asi el otro
decriptor de interfaz.
Esto tiene la ventaja de, teniendo dos configuraciones, en las cuales podriamos transmitir datos a traves de la
interfaz 0 mientras cambiamos las configuraciones del endpoint asociadas con la interfaz 1 sin afectar la
interfaz 0.
Cada descriptor de endpoint es usada para especificar el tipo de tranferencia, direccin, intervalo de consulta
y tamao mximo de paquetes para cada enpoint. El endpoint 0, es asumido como el endpoint de control por
defecto, y nunca tiene un descriptor asociado a l.
Composicin de descriptores USB
Todos los descriptores tienen un formato comn. El primer byte especifica el tamao del decriptor, el
segundo byte indica el tipo de descriptor. Si la longitud del descriptor es mas pequea que la definida por una
espcificacin, entonces el host ignora el decriptor. Si la longitud es mayor, el host ignora los bytes extra y
busca por el decriptor que sigue.
Descriptores de Dispositivo
El decriptor de dispositivo de un dispositivo USB, representa el dispositivo entero. Como resultado un
dispositivo solo puede tener un decriptor de estos. Este especifica aspectos bsicos, informacin muy
importante acerca del dispositivo como ser la version USB soportada, el mximo tamao de paquetes, IDs de
vendedor y dispositivo, y el numero de posibles configuraciones que el dispositivo posee. El formato del
decriptor de dispositivo es mostrado a continuacin:
bcdUSB: este campo resporta la mxima versin USB soportada por el dispositivo. El valor es un valor
decimal codificado como binario con un formato 0xJJMN donde JJ es la versin soportada, M es la sub
versin y N es el numero de la sub-subversin. Por ejemplo USB 2.0 es reportada como 0x0200, USB 1.1
como 0x0110, USB 1.0 como 0x0100.
bDeviceClass, bDeviceSubClass y bDeviceProtocol : son usados por el sistema operativo para encontrar una
clase de driver para tu dispositivo. Tipicamente solo el bDeviceSubClass es configurada a nivel de
dispositivo. La mayora de las especificaciones de clase escogen ser identificadas a si mismas a nivel de
interfaz y como resultado configuran el bDeviceClass como 0x00. Esto permite a un dispositivo soportar
multiples clases.
BmaxPacketSize: Reporta el mximo tamao de paquete para el endpoint 0. Todos los dispositivos deben
tener un endpoint 0.
idVendor y idProduct: Son usados por el sistema operativo para encontrar un driver para tu dispositivo. El ID
de vendedor es asignado por USB-IF.
bcdDevice: tiene el mismo formato que el bcdUSB y es usad para proveer el numero de versin del
dispositivo. Este nmero es asignado por el desarrollador.
Tres cadenas de exto son provistas para dar detalles sobre el fabricante, producto y nmero de serie. No hay
requerimientos para estas cadenas de texto. Si ningn descriptor de texto es usado un 0 debe existir en este
campo.
bnumConfigurations: define el nmero de configuraciones que el dispositivo soporta a la velocidad actual.
Descriptores de configuracin
Un dispositivo USB puede tener muchas diferentes configuraciones, sin embargo la mayora de los
dispositivos son simples y solo tienen una. El descriptor de configuracin especifica como el dispositivo es
energizado, cual es el mximo consumo de potencia, y el nmero de configuraciones que tiene. Es posible
que tenga dos configuraciones, una para cuando el dispositivo es energizado por bus y la otra cuando este es
alimentado externamente. Actua como cabecera para los descriptores de interfaz, es factible tambin tener
una configuracin usando un modo de transferencia distinta que la otra configuracin.
Una vez que todas las configuraciones son examinadas por el host, el host enva un comando
SetConfiguration con un valor distinto de cero el cual coincide con una de las configuraciones. Esto es usado
para seleccionar la configuracin deseada.
Cuando el descriptor de configuracin es ledo, este retorna la jerarqua de configuraciones entera, la cual
incluye todos los descriptores de interfaz y de endpoints relacionados a este descriptor de configuracin.
Descriptores Endpoints
Los descriptores de endpoints son usados para describir los endpoints diferentes del endpoint 0. Endpoint 0
es siempre asumido a ser el endpoint de control y es configurado antes que la peticin de cualquier otro
descriptor. El host usar la informacin devuelta por estos descriptores para determinar los requerimientos de
ancho de banda del bus.