- Đây là tiện ích cho phép sử dụng WebUSB API trên Firefox, vốn trước đây chỉ được hỗ trợ trên Chrome, bằng cách giao tiếp với chương trình bên ngoài trình duyệt thông qua cơ chế Native Messaging
- Cần cài đặt đồng thời hai thành phần là tiện ích mở rộng trình duyệt (.xpi) và stub native thì mới hoạt động
- Được thiết kế với mục tiêu tương thích với cách triển khai WebUSB của Chrome, nhưng không dùng được trong Web Workers, API chỉ được hiển thị trên trang chính
- Android không được hỗ trợ vì bản thân Native Messaging không có trên nền tảng này
- Cung cấp sẵn binary đã build cho 6 nền tảng gồm macOS(x86_64/ARM64), Linux(x86_64/aarch64), Windows(AMD64/ARM64)
- Script cài đặt(
install.sh / install.bat) tự động xử lý việc sao chép tệp và cấu hình native manifest
- Stub native được viết hoàn toàn bằng Rust, mặc định hỗ trợ cross-compile
- Yêu cầu hệ thống: macOS 10.15+, Windows 10+, Linux kernel 4.8+ (cần udev)
- Giấy phép: 0BSD
1 bình luận
Ý kiến Hacker News
Trước đây tôi khá ghét WebUSB/Bluetooth vì lý do mang tính ý thức hệ, nhưng rồi sau khi thấy các trường hợp như ứng dụng điều khiển bảng leo núi hay netMD để truyền dữ liệu sang MiniDisc qua USB, tôi đã đổi ý. Tôi thấy việc cài một ứng dụng native cho những mục đích như vậy là quá mức cần thiết, nên thật vui khi giờ đây Firefox cũng có thêm một lựa chọn
Tôi thấy WebUSB thực sự rất tuyệt. Nó cho phép phân phối ứng dụng đa nền tảng có thể truy cập phần cứng mà không phải xử lý từng khác biệt theo từng platform, và driver cũng có thể được sandbox ở mức hợp lý. Nếu muốn siết bảo mật hơn nữa, có lẽ cũng ổn nếu chỉ mặc định cho phép các thiết bị có WebUSB descriptor, còn lại thì hiện thêm cảnh báo
Gần đây tôi vừa cài GrapheneOS cho chiếc Pixel của một người bạn, và việc có thể hoàn tất toàn bộ quy trình chỉ bằng WebUSB trong trình duyệt thật sự khá đáng ngạc nhiên. Điểm trừ duy nhất là phải mở Chromium
Các dự án như GrapheneOS, ESPHome và Meshtastic đã tận dụng WebUSB rất tốt, Google cũng từng dùng nó để biến tay cầm Stadia thành thiết bị nhập Bluetooth thông thường. Các công cụ cấu hình của nhà sản xuất bàn phím cũng vậy. Vì người dùng phải tự chọn thiết bị một cách tường minh nên tôi thấy mô hình bảo mật cũng hợp lý, và việc Mozilla từ chối hỗ trợ native cho nó khiến tôi thất vọng, khá giống những gì họ đã thể hiện trong 10 năm qua
Dạo này thậm chí ngay cả ứng dụng cục bộ cũng ngày càng được phát hành dưới dạng html & js chỉ dành cho Chrome. Bỏ qua chuyện có thích việc trình duyệt truy cập USB hay không, tôi còn ghét hơn cái xu hướng lại bị ép dùng Chrome như thời bị ép dùng IE ngày xưa
Với các nền tảng phần cứng giáo dục như BBC Microbit, WebUSB là một thứ thay đổi cuộc chơi. Khi giới thiệu phần cứng cho học sinh, mọi thứ cứ thế chạy được, còn nhờ web IDE như MakeCode và URL tham chiếu mã nguồn, việc chia sẻ và debug cũng dễ dàng hơn
Cách triển khai này trông giống một proof of concept rất tốt. Cách chạy một file thực thi riêng bên cạnh trình duyệt không phải là hình thái WebUSB cuối cùng mà tôi mong muốn, nhưng việc có người thực sự bắt tay giải quyết bài toán này bản thân nó đã là tín hiệu đáng mừng
Phản ứng đầu tiên của tôi là đây là một ý tưởng khủng khiếp. Tôi không thích việc website truy cập phần cứng, và chỉ riêng quyền truy cập webcam thôi cũng đã đủ khó chịu rồi
Tôi vẫn chưa hoan nghênh việc đưa nó vào trình duyệt khi đặc tả vẫn còn ở trạng thái draft và các lo ngại về bảo mật chưa thực sự được giải quyết thỏa đáng
Nếu WebUSB và WebBLE được hỗ trợ ở mọi nơi, tôi có thể phân phối ứng dụng IoT của mình chỉ bằng web, năng suất chắc sẽ tăng đáng kể. Điểm hấp dẫn nhất là cũng giảm được nhiều phiền toái liên quan đến app store