¿Qué es la API WebUSB?

La API WebUSB es un estándar de navegador que permite que las páginas web se comuniquen directamente con dispositivos USB, sin necesidad de instalar controladores nativos ni aplicaciones de escritorio. Se introdujo en Chrome 61 y proporciona a los sitios web acceso controlado y autorizado a hardware como microcontroladores, placas de desarrollo, interfaces MIDI y otros periféricos USB.

A diferencia del acceso USB tradicional (que requiere controladores a nivel de kernel), WebUSB funciona completamente en el sandbox del navegador. Los usuarios deben otorgar explícitamente permiso para cada dispositivo a través del selector de dispositivos integrado del navegador, lo que garantiza que ningún sitio web pueda leer o escribir silenciosamente en su hardware.

Descripción de la herramienta

Esta herramienta te permite enumerar dispositivos USB que han sido autorizados al navegador a través de la API WebUSB. Al cargar, enumera automáticamente cualquier dispositivo previamente permitido. También puedes abrir el selector USB nativo del navegador para otorgar acceso a un dispositivo recién conectado, o actualizar la lista en cualquier momento.

Para cada dispositivo, la herramienta muestra el nombre del producto, fabricante, ID de proveedor, ID de producto, número de serie y versión del protocolo USB.

Características

  • Carga automáticamente dispositivos USB previamente autorizados al abrir la página
  • Abre el selector nativo de dispositivos USB del navegador para otorgar acceso a nuevos dispositivos
  • Muestra el ID de proveedor e ID de producto en notación hexadecimal estándar (por ejemplo, 0x1A2B)
  • Muestra la versión del protocolo USB (por ejemplo, 2.0, 3.1) junto con los campos de identidad del dispositivo
  • Tabla de resultados ordenable con exportación a CSV y JSON

Cómo funciona

Cuando haces clic en Agregar dispositivo, el navegador llama a navigator.usb.requestDevice() y muestra un selector a nivel del sistema que enumera los dispositivos USB conectados. Si seleccionas uno, el navegador almacena el permiso para ese origen. En visitas posteriores (o después de hacer clic en Actualizar), navigator.usb.getDevices() devuelve todos los dispositivos previamente permitidos sin solicitar permiso nuevamente.

El ID de proveedor e ID de producto se representan en hexadecimal de 4 dígitos en mayúsculas (por ejemplo, 0x04D8), el formato estándar utilizado en registros USB y hojas de datos.

Casos de uso

  • Desarrolladores de firmware pueden confirmar rápidamente que un microcontrolador o placa de desarrollo conectados (Arduino, STM32, RP2040, etc.) se enumeran correctamente en el navegador antes de escribir una herramienta de flasheo basada en WebUSB.
  • Desarrolladores de aplicaciones web pueden verificar que su aplicación habilitada para WebUSB verá los campos de identidad del dispositivo esperados durante la prototipificación en etapas tempranas.

Limitaciones

  • WebUSB solo es compatible con navegadores basados en Chromium (Chrome, Edge, Opera). Firefox y Safari no implementan esta API.
  • La página debe servirse a través de HTTPS (o localhost), WebUSB se bloquea en orígenes HTTP simples.
  • Algunas combinaciones de sistema operativo y navegador restringen el acceso a ciertas clases de dispositivos (por ejemplo, HID, almacenamiento masivo) incluso cuando se otorgan permisos.
  • Esta herramienta solo lee metadatos del dispositivo; no abre ninguna interfaz USB ni transfiere datos hacia o desde el dispositivo.