Extensão WebUSB para Firefox
(github.com/ArcaneNibble)- Uma extensão que permite usar a API WebUSB no Firefox, antes suportada apenas no Chrome, comunicando-se com programas externos ao navegador por meio do mecanismo Native Messaging
- É necessário instalar juntos a extensão do navegador (.xpi) e o stub nativo para funcionar
- Foi projetada com o objetivo de manter compatibilidade com a implementação de WebUSB do Chrome, mas não pode ser usada em Web Workers; a API é exposta apenas na página principal
- Android não é compatível, pois não oferece Native Messaging
- Fornece binários pré-compilados para 6 plataformas, incluindo macOS(x86_64/ARM64), Linux(x86_64/aarch64) e Windows(AMD64/ARM64)
- Os scripts de instalação (
install.sh/install.bat) automatizam a cópia de arquivos e a configuração do manifesto nativo - O stub nativo foi escrito inteiramente em Rust, com suporte básico a compilação cruzada
- Requisitos do sistema: macOS 10.15+, Windows 10+, kernel Linux 4.8+ (requer udev)
- Licença: 0BSD
1 comentários
Comentários do Hacker News
Antigamente eu desgostava bastante de WebUSB/Bluetooth por razões ideológicas, mas mudei de ideia ao ver casos como apps de controle de parede de escalada ou o netMD, que transfere para MiniDisc via USB. Instalar um app nativo parecia exagero para esse tipo de uso, então fico feliz de agora existir uma opção também no Firefox
Acho o WebUSB realmente excelente. Ele permite distribuir apps multiplataforma que acessam hardware sem precisar lidar manualmente com diferenças entre plataformas, e ainda dá para isolar drivers num sandbox de forma razoável. Para reforçar mais a segurança, também pareceria aceitável permitir por padrão apenas dispositivos com descriptor WebUSB e mostrar alertas extras para os demais
Instalei GrapheneOS recentemente no Pixel de um amigo, e foi bem surpreendente que todo o processo pudesse ser feito no navegador apenas com WebUSB. O único ponto negativo foi precisar abrir o Chromium
Projetos como GrapheneOS, ESPHome e Meshtastic já fazem bom uso de WebUSB, e o Google também o usou para transformar o controle do Stadia em um dispositivo de entrada Bluetooth comum. O mesmo vale para ferramentas de configuração de fabricantes de teclado. Como o usuário precisa selecionar explicitamente o dispositivo, considero o modelo de segurança razoável, e a postura da Mozilla de rejeitar isso nativamente me parece decepcionante, bem na linha do que ela vem mostrando nos últimos 10 anos
Hoje em dia até apps locais estão sendo distribuídos cada vez mais no formato html & js exclusivo para Chrome. Independentemente de gostar ou não de navegador acessando USB, odeio ainda mais essa volta de uma tendência de forçar uso do Chrome, como acontecia na era em que o IE era obrigatório
Em plataformas educacionais de hardware como a BBC Microbit, o WebUSB foi um divisor de águas. Ao apresentar hardware para alunos, simplesmente funciona, e com uma IDE web como a MakeCode e URLs de referência de código, compartilhar e depurar também fica mais fácil
Essa implementação parece um excelente proof of concept. Fazer isso com um executável separado rodando ao lado do navegador não é a forma final de WebUSB que eu gostaria de ver, mas já fico contente só de saber que alguém está realmente trabalhando para resolver esse problema
Minha primeira reação foi achar que isso era uma ideia horrível. Não gosto da ideia de sites acessando hardware, e o acesso à webcam por si só já é incômodo o bastante
Ainda acho que a especificação está em estado de draft e não fico animado em vê-la entrando no navegador antes que as preocupações de segurança estejam suficientemente resolvidas
Se WebUSB e WebBLE fossem suportados em todo lugar, eu poderia distribuir meu app de IoT só pela web, o que aumentaria muito minha produtividade. Também me atrai bastante a redução da burocracia ligada a app stores