Cómo funciona
Muestra lo que un dispositivo USB declara de sí mismo apenas se conecta. El descriptor de dispositivo trae el Vendor ID asignado por el USB-IF, el Product ID que eligió el fabricante, la versión de la especificación USB que dice cumplir, la versión del propio producto y, si el dispositivo los expone, los textos de fabricante, producto y número de serie.
Debajo aparece el árbol completo: cada configuración con sus interfaces, cada interfaz con su terna de clase, subclase y protocolo traducida al nombre oficial del USB-IF, y cada endpoint con su dirección, su sentido, su tipo de transferencia y el tamaño máximo de paquete. Las interfaces con varias configuraciones alternativas —habitual en cámaras y placas de audio— se listan aparte.
La herramienta sólo lee descriptores: nunca abre una sesión con el dispositivo, nunca reclama una interfaz y nunca le envía un byte, así que no interfiere con el controlador que lo está usando. Todo el recorrido se puede exportar en JSON para adjuntarlo a un informe o compararlo con el de otro equipo.
Ejemplos
046D:C52B0x00 / 0x00 / 0x00 → 3 × HID (0x03)Un receptor inalámbrico de teclado y mouse declara la clase 0x00 en el dispositivo, así que el tipo real se define interfaz por interfaz: acá, tres interfaces HID con un endpoint de entrada por interrupción cada una.0x08 / 0x06 / 0x50Mass Storage · SCSI transparent command set · Bulk-Only TransportLa terna típica de un pendrive o de un disco externo: dos endpoints masivos, uno de entrada y uno de salida, sobre los que viajan los comandos SCSI.0x02 / 0x02 / 0x01Communications and CDC Control · Abstract Control Model · AT Commands (ITU-T V.250)Es el puerto serie virtual de una placa de desarrollo o de un módem: una interfaz de control con un endpoint por interrupción y una interfaz CDC-Data con los dos endpoints masivos que llevan los datos.Casos de uso
- Averiguar el Vendor ID y el Product ID exactos de un dispositivo para buscar su controlador o para escribir una regla udev en Linux.
- Ver el número de serie de un pendrive, de un lector o de un adaptador cuando el sistema operativo no lo muestra a simple vista.
- Confirmar durante el desarrollo de firmware que el dispositivo publica las interfaces, las alternativas y los endpoints esperados, con las clases correctas.
- Descubrir en qué endpoint y con qué tipo de transferencia hay que hablarle a un dispositivo antes de programar contra él.
- Distinguir dos dispositivos aparentemente iguales comparando su versión, sus interfaces y sus tamaños de paquete.
- Documentar la configuración USB de un equipo exportando el árbol completo en JSON.
Preguntas frecuentes
¿Por qué no funciona en mi iPhone ni en Firefox?
La API WebUSB está implementada en navegadores basados en Chromium —Chrome, Edge y Opera— para Windows, macOS, Linux, ChromeOS y Android. Firefox y Safari no la implementan, y en iOS todos los navegadores usan el motor del sistema, así que tampoco está disponible ahí. Además hace falta HTTPS y que la página no esté incrustada dentro de otro sitio.
El dispositivo está conectado pero no aparece en el selector.
Puede que el filtro elegido sea demasiado estrecho: probá con la opción que ofrece todos los dispositivos. Si aun así no aparece, es probable que esté en la lista de bloqueo del navegador, que excluye por seguridad ciertos productos —entre ellos las llaves de seguridad FIDO— para que ninguna página web pueda tocarlos. En Linux también puede faltar el permiso del sistema sobre el nodo del dispositivo.
¿Por qué el dispositivo dice clase 0x00?
La clase 0x00 en el descriptor de dispositivo significa «mirá las interfaces». La usan casi todos los dispositivos compuestos, que combinan funciones distintas en un mismo cable: un teclado con un concentrador incorporado, una cámara que también expone un micrófono o una impresora multifunción. En esos casos el tipo real de cada función está en la clase de cada interfaz, no en la del dispositivo.
¿Qué es un endpoint y qué significa una dirección como 0x81?
Un endpoint es cada uno de los buzones por los que entran o salen datos de una interfaz. Los siete bits bajos de la dirección son el número del endpoint y el bit más alto indica el sentido, así que 0x81 es el endpoint 1 de entrada —del dispositivo hacia el equipo— y 0x01 sería el endpoint 1 de salida. El tipo de transferencia define el trato que recibe: masiva para volúmenes grandes sin plazo, por interrupción para eventos chicos y frecuentes como una tecla, e isócrona para audio y video, que prefieren perder un paquete antes que llegar tarde.
¿Puede la herramienta modificar o romper algo en el dispositivo?
No. Sólo lee los descriptores que el navegador ya obtuvo al enumerar el dispositivo; nunca abre una sesión, nunca reclama una interfaz y nunca escribe. Por eso podés inspeccionar hasta un teclado o un pendrive que el sistema operativo está usando en ese momento, aunque una página web no tenga permitido comunicarse con ellos.
¿Por qué el fabricante o el producto aparecen vacíos?
Esos textos son descriptores opcionales: muchos dispositivos económicos directamente no los graban, y algunos sistemas operativos no los entregan al navegador. Para esos casos la herramienta busca el Vendor ID y el Product ID en el catálogo usb.ids del proyecto Linux USB, que sí registra el nombre oficial del fabricante y, muchas veces, el del producto.
¿Los datos del dispositivo salen de mi equipo?
Los descriptores se leen en tu navegador y no se envían a ningún servidor. La única excepción es la búsqueda en el catálogo usb.ids, que consulta el Vendor ID y el Product ID —dos números que identifican al modelo, no a tu equipo ni a tu unidad— y que podés desactivar antes de elegir el dispositivo. El número de serie nunca se envía.
¿Qué son las configuraciones alternativas de una interfaz?
Una misma interfaz puede declarar varios juegos de endpoints y quedarse con uno solo activo. Las cámaras y las placas de audio los usan para ofrecer distintas combinaciones de resolución o de calidad: cada alternativa reserva un ancho de banda distinto en el bus, y el sistema operativo elige la que corresponda al empezar a transmitir. La alternativa 0 es la que queda activa mientras el dispositivo está inactivo.