ส่วนขยาย WebUSB สำหรับ Firefox
(github.com/ArcaneNibble)- เป็นส่วนขยายที่ทำให้สามารถใช้ WebUSB API บน Firefox ได้ ซึ่งเดิมรองรับเฉพาะใน Chrome โดยสื่อสารกับโปรแกรมภายนอกเบราว์เซอร์ผ่านกลไก Native Messaging
- ต้องติดตั้งทั้งส่วนขยายเบราว์เซอร์ (.xpi) และ เนทีฟสตับ จึงจะใช้งานได้
- ออกแบบมาโดยมีเป้าหมายให้ เข้ากันได้ กับการติดตั้งใช้งาน WebUSB ของ Chrome แต่ ไม่สามารถใช้ใน Web Workers ได้ และเปิดเผย API เฉพาะบนหน้าหลักเท่านั้น
- Android ไม่รองรับ เนื่องจากไม่มี Native Messaging ตั้งแต่ต้น
- มีไบนารีที่พรีบิลด์ไว้ล่วงหน้าสำหรับ 6 แพลตฟอร์ม เช่น macOS(x86_64/ARM64), Linux(x86_64/aarch64), Windows(AMD64/ARM64)
- สคริปต์ติดตั้ง (
install.sh/install.bat) จะจัดการคัดลอกไฟล์และตั้งค่า เนทีฟแมนิเฟสต์ ให้อัตโนมัติ - เนทีฟสตับเขียนด้วย Rust ทั้งหมด และรองรับการครอสคอมไพล์เป็นพื้นฐาน
- ความต้องการของระบบ: macOS 10.15+, Windows 10+, Linux เคอร์เนล 4.8+ (ต้องใช้ udev)
- ไลเซนส์: 0BSD
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เมื่อก่อนฉันไม่ค่อยชอบ WebUSB/Bluetooth ด้วยเหตุผลเชิงอุดมการณ์เท่าไร แต่พอเห็นกรณีใช้งานอย่างแอปควบคุมบอร์ดปีนผา หรือ netMD ที่ส่งข้อมูลไปยังมินิดิสก์ผ่าน USB ก็เปลี่ยนความคิด รู้สึกว่าการต้องติดตั้งแอปเนทีฟสำหรับงานแบบนี้มันเกินความจำเป็นไปหน่อย และก็ดีใจที่ตอนนี้ Firefox ก็มีตัวเลือกนี้แล้ว
ฉันรู้สึกว่า WebUSB ยอดเยี่ยมมาก เพราะมันทำให้แจกจ่ายแอปข้ามแพลตฟอร์มที่เข้าถึงฮาร์ดแวร์ได้ โดยไม่ต้องมานั่งจัดการความต่างของแต่ละแพลตฟอร์มทีละอย่าง และยังแซนด์บ็อกซ์ไดรเวอร์ได้พอสมควรด้วย ถ้าจะเพิ่มความปลอดภัยขึ้นอีก ก็อาจใช้วิธีอนุญาตค่าเริ่มต้นเฉพาะอุปกรณ์ที่มี WebUSB descriptor และให้อุปกรณ์อื่นขึ้นคำเตือนเพิ่มเติม
ไม่นานมานี้ฉันช่วยเพื่อนติดตั้ง GrapheneOS ลง Pixel และค่อนข้างประหลาดใจที่สามารถทำทุกขั้นตอนจบได้จากในเบราว์เซอร์ด้วย WebUSB เพียงอย่างเดียว ข้อเสียมีแค่ว่าต้องเปิด Chromium เท่านั้นเอง
โปรเจกต์อย่าง GrapheneOS, ESPHome และ Meshtastic ใช้ WebUSB ได้ดีอยู่แล้ว และ Google ก็เคยใช้มันเพื่อเปลี่ยนคอนโทรลเลอร์ Stadia ให้กลายเป็นอุปกรณ์รับข้อมูล Bluetooth ทั่วไป เช่นเดียวกับเครื่องมือตั้งค่าของผู้ผลิตคีย์บอร์ดต่าง ๆ ด้วย เพราะผู้ใช้ต้องเลือกอุปกรณ์อย่างชัดเจนเอง ผมจึงมองว่าโมเดลความปลอดภัยก็สมเหตุสมผลดี และท่าทีที่ Mozilla ปฏิเสธไม่รองรับแบบเนทีฟก็น่าผิดหวัง คล้ายกับสิ่งที่แสดงให้เห็นมาตลอด 10 ปีที่ผ่านมา
ทุกวันนี้แม้แต่แอปโลคัลเองก็ยังมีกรณีที่แจกจ่ายเป็น html & js ที่ใช้ได้กับ Chrome เท่านั้น มากขึ้นเรื่อย ๆ ต่อให้จะชอบหรือไม่ชอบที่เบราว์เซอร์เข้าถึง USB ได้ก็ตาม ฉันเกลียดกระแสที่บังคับให้กลับไปใช้ Chrome มากกว่าเสียอีก มันชวนให้นึกถึงยุคที่เคยถูกบังคับใช้ IE
สำหรับแพลตฟอร์มฮาร์ดแวร์เพื่อการศึกษาอย่าง BBC Microbit นั้น WebUSB เป็นตัวเปลี่ยนเกมจริง ๆ เวลาแนะนำฮาร์ดแวร์ให้นักเรียน มันแค่ใช้งานได้เลย และด้วยเว็บ IDE อย่าง MakeCode กับ URL อ้างอิงโค้ด การแชร์และดีบักก็ง่ายขึ้นด้วย
การติดตั้งนี้ดูเหมือน proof of concept ที่ยอดเยี่ยม ถึงวิธีรันไฟล์ปฏิบัติการแยกข้างเบราว์เซอร์จะยังไม่ใช่รูปแบบ WebUSB ขั้นสุดท้ายที่ผมอยากได้ แต่แค่มีคนกำลังลงมือแก้ปัญหานี้จริง ๆ ก็น่ายินดีแล้ว
ปฏิกิริยาแรกของฉันคือ นี่เป็น ไอเดียที่แย่มาก ฉันไม่ชอบที่เว็บไซต์จะเข้าถึงฮาร์ดแวร์ได้เลย และแค่การเข้าถึงเว็บแคมตอนนี้ก็น่ารำคาญพอแล้ว
ตอนนี้ผมยังไม่ยินดีให้มันเข้ามาในเบราว์เซอร์ เพราะสเปกยังอยู่ในสถานะ draft และความกังวลด้านความปลอดภัยยังไม่ได้รับการคลี่คลายเพียงพอ
ถ้า WebUSB และ WebBLE รองรับได้ทุกที่ ผมคงปล่อยแอป IoT ของตัวเองเป็นเว็บอย่างเดียวได้เลย ซึ่งน่าจะเพิ่มผลิตภาพได้มาก และจุดที่น่าสนใจเป็นพิเศษคือช่วยลดความยุ่งยากเกี่ยวกับแอปสโตร์