Extensión WebUSB para Firefox
(github.com/ArcaneNibble)- Una extensión que permite usar la API WebUSB en Firefox, antes disponible solo en Chrome, y que se comunica con programas externos al navegador mediante el mecanismo de Native Messaging
- Para funcionar, requiere instalar tanto la extensión del navegador (.xpi) como el stub nativo
- Fue diseñada con el objetivo de mantener compatibilidad con la implementación de WebUSB de Chrome, pero no puede usarse en Web Workers; la API solo se expone en la página principal
- Android no es compatible porque no cuenta con Native Messaging
- Ofrece binarios precompilados para 6 plataformas, incluyendo macOS (x86_64/ARM64), Linux (x86_64/aarch64) y Windows (AMD64/ARM64)
- El script de instalación (
install.sh/install.bat) automatiza la copia de archivos y la configuración del manifiesto nativo - El stub nativo está escrito completamente en Rust y admite compilación cruzada de forma predeterminada
- Requisitos del sistema: macOS 10.15+, Windows 10+, kernel Linux 4.8+ (requiere udev)
- Licencia: 0BSD
1 comentarios
Comentarios de Hacker News
Antes me disgustaban bastante WebUSB/Bluetooth por razones ideológicas, pero cambié de opinión al ver casos como apps para controlar muros de escalada o netMD para transferir a MiniDisc por USB. Instalar una app nativa me parecía excesivo para esos usos, y me alegra que ahora también haya una opción en Firefox
A mí WebUSB me parece realmente excelente. Permite distribuir apps multiplataforma que acceden al hardware sin tener que manejar una por una las diferencias entre plataformas, y además los drivers se pueden aislar razonablemente en sandbox. Si se quisiera reforzar más la seguridad, también sonaría bien permitir por defecto solo dispositivos con descriptor WebUSB y mostrar advertencias adicionales para los demás
Hace poco le instalé GrapheneOS al Pixel de un amigo, y me sorprendió bastante poder completar todo el proceso solo con WebUSB desde el navegador. La única desventaja fue tener que abrir Chromium
Proyectos como GrapheneOS, ESPHome y Meshtastic ya aprovechan muy bien WebUSB, y Google también lo usó para convertir el control de Stadia en un dispositivo Bluetooth genérico. Lo mismo pasa con herramientas de configuración de fabricantes de teclados. Como el usuario tiene que elegir explícitamente el dispositivo, me parece que el modelo de seguridad es razonable, y la postura de Mozilla de rechazarlo de forma nativa me resulta decepcionante, en línea con lo que ha mostrado en los últimos 10 años
Hoy en día incluso las apps locales se distribuyen cada vez más en formato html & js solo para Chrome. Más allá de si te gusta o no que el navegador acceda por USB, me molesta todavía más esta tendencia de volver a forzar el uso de Chrome, como en la época en que se imponía IE
En plataformas educativas de hardware como BBC Microbit, WebUSB fue un antes y un después. Al introducir hardware a estudiantes, simplemente funciona, y gracias a un IDE web como MakeCode y a las URL de referencia del código, compartir y depurar también se vuelve fácil
Esta implementación parece un gran proof of concept. Que funcione ejecutando un binario aparte junto al navegador no es mi forma ideal de WebUSB a largo plazo, pero me alegra que al menos alguien esté trabajando de verdad en resolver este problema
Mi primera reacción fue que esto era una idea terrible. No me gusta que los sitios web accedan al hardware, y con el acceso a la webcam ya me incomoda bastante
Yo todavía no celebro que esto llegue al navegador mientras la especificación siga en estado draft y no se hayan resuelto lo suficiente las preocupaciones de seguridad
Si WebUSB y WebBLE estuvieran soportados en todas partes, podría distribuir mi app de IoT solo como web y mi productividad subiría muchísimo. Me atrae especialmente que también se reducirían las complicaciones relacionadas con las app stores