3 คะแนน โดย GN⁺ 9 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็นส่วนขยายที่ทำให้สามารถใช้ 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 ความคิดเห็น

 
GN⁺ 9 일 전
ความคิดเห็นจาก Hacker News
  • เมื่อก่อนฉันไม่ค่อยชอบ WebUSB/Bluetooth ด้วยเหตุผลเชิงอุดมการณ์เท่าไร แต่พอเห็นกรณีใช้งานอย่างแอปควบคุมบอร์ดปีนผา หรือ netMD ที่ส่งข้อมูลไปยังมินิดิสก์ผ่าน USB ก็เปลี่ยนความคิด รู้สึกว่าการต้องติดตั้งแอปเนทีฟสำหรับงานแบบนี้มันเกินความจำเป็นไปหน่อย และก็ดีใจที่ตอนนี้ Firefox ก็มีตัวเลือกนี้แล้ว

    • ฉันก็คล้าย ๆ กัน ตอนแรกก็สงสัยอยู่ แต่พอได้ลอง WebUSB กับเว็บแอปตั้งค่าคีย์บอร์ดแมคคานิคอล แล้วแฟลชเฟิร์มแวร์ได้ตรงในเบราว์เซอร์เลย ก็รู้สึกว่าสะดวกและใช้ได้ดีมาก งานแบบ ZSA flash ที่เมื่อก่อนต้องดาวน์โหลดไฟล์เลย์เอาต์มาเขียนด้วยโปรแกรมเฉพาะ ตอนนี้จบได้ในเบราว์เซอร์ตระกูล Chromium อย่างเดียว เลยง่ายขึ้นมาก
    • สำหรับฉันกลับเป็นเพราะแบบนั้นนี่แหละที่ ไม่อยากได้ WebUSB ถ้าผู้ผลิตฮาร์ดแวร์เริ่มพึ่งพาเว็บแอปอย่างเดียวสำหรับอัปเดตและตั้งค่า วันหนึ่งถ้าบริการหายไปหรือรันแบบโลคัลไม่ได้ ต่อให้อุปกรณ์เก่ายังใช้งานได้ปกติ เราอาจตั้งค่าอะไรไม่ได้เลย พอนึกถึงอุปกรณ์อย่างกล้อง เครื่องดนตรี หรือออดิโออินเทอร์เฟซที่ใช้กันเกิน 10 ปี ก็ยิ่งเป็นภาพที่น่าเสียดาย
    • ผมมองว่านี่เป็นการปรับปรุงครั้งใหญ่มาก เพราะเครื่องมือต่าง ๆ ที่เมื่อก่อนใช้ได้แค่บน Windows ตอนนี้สามารถทำงานได้บนทุกระบบปฏิบัติการด้วย webusb
    • ตอนนี้อาจรู้สึกว่าการติดตั้งแอปเนทีฟมันเกินจำเป็น แต่ฉันคิดว่าอีก 20 ปีข้างหน้า ถ้า เว็บไซต์ที่ใช้จัดการอุปกรณ์ นั้นหายไป เราอาจต้องกลับมาเจอความไม่สะดวกแบบเดิมอีก
    • ตอนติดตั้ง GrapheneOS ลงมือถือ การที่ WebUSB เป็นเส้นทางหลักแทบจะขาดไม่ได้ก็เป็นเรื่องที่น่าสนใจมาก
  • ฉันรู้สึกว่า WebUSB ยอดเยี่ยมมาก เพราะมันทำให้แจกจ่ายแอปข้ามแพลตฟอร์มที่เข้าถึงฮาร์ดแวร์ได้ โดยไม่ต้องมานั่งจัดการความต่างของแต่ละแพลตฟอร์มทีละอย่าง และยังแซนด์บ็อกซ์ไดรเวอร์ได้พอสมควรด้วย ถ้าจะเพิ่มความปลอดภัยขึ้นอีก ก็อาจใช้วิธีอนุญาตค่าเริ่มต้นเฉพาะอุปกรณ์ที่มี WebUSB descriptor และให้อุปกรณ์อื่นขึ้นคำเตือนเพิ่มเติม

    • ตอนซื้อเครื่องพิมพ์ความร้อนช่วงหลัง ๆ การรองรับ Chromebook ซึ่งจริง ๆ คือรองรับ WebUSB มีผลมากกับการตัดสินใจซื้อ สำหรับอุปกรณ์ที่รองรับไดรเวอร์เครื่องพิมพ์พื้นฐานได้ไม่ชัดเจน การใช้ส่วนขยาย Chrome ที่มีสิทธิ์จำกัด แทนไดรเวอร์น่าสงสัยที่เข้าถึงทั้งระบบ ทำให้สบายใจกว่ามาก และยังดีที่สามารถลองแอป RTL-SDR ได้ทันทีโดยไม่ต้องคอมไพล์จากซอร์ส ทุกครั้งที่ต้องย้ายจาก Firefox ไป Chrome เพราะ WebUSB หรือ Web Serial มันน่าหงุดหงิดพอสมควร
    • ผมว่าข้อจำกัดนั้นแรงเกินไป อย่างมากแค่ขึ้นคำเตือนก็น่าจะพอ เพราะงานอย่าง retrocomputing ก็ใช้อุปกรณ์ที่ไม่มีแท็กกันเยอะ ถ้าปิดกั้นไปเลยจะลำบาก
    • แค่ในช่วง 3 เดือนที่ผ่านมา ผมแฟลช FlipperZero, Android และวิทยุสื่อสารพกพาจีนหลายตัว โดยไม่ต้องติดตั้งแอปน่าสงสัยนอกแซนด์บ็อกซ์เลย เรื่องนี้ผมว่ามันเกือบจะเรียกได้ว่าเป็นนวัตกรรม
  • ไม่นานมานี้ฉันช่วยเพื่อนติดตั้ง GrapheneOS ลง Pixel และค่อนข้างประหลาดใจที่สามารถทำทุกขั้นตอนจบได้จากในเบราว์เซอร์ด้วย WebUSB เพียงอย่างเดียว ข้อเสียมีแค่ว่าต้องเปิด Chromium เท่านั้นเอง

    • ยังติดตั้ง GrapheneOS จาก Pixel เครื่องหนึ่งไปยัง Pixel อีกเครื่องได้ด้วย เลยไม่ต้องมีพีซีด้วยซ้ำ ประสบการณ์นี้เองที่ทำให้ฉันมั่นใจในความใช้งานได้จริงของ WebUSB และถ้าเป็นอุปกรณ์ GOS ก็ใช้ Vanadium แทน Chrome ได้ด้วย
    • ฉันรู้สึกว่า Web USB และ Web Bluetooth ทั้งคู่ยอดเยี่ยมมาก ฉันเคยใช้ Web MiniDisc กับมินิดิสก์ และยังแฟลช เฟิร์มแวร์คัสตอมสำหรับเซ็นเซอร์อุณหภูมิ/ความชื้น Xiaomi BLE ผ่านเว็บ เพื่อนำไปเชื่อมกับ Home Assistant ได้ด้วย สิ่งที่ชอบมากเป็นพิเศษคือสามารถทำทั้งหมดนี้ได้โดยไม่ต้องรันสคริปต์น่าสงสัยหรือไบนารีโลคัล
    • ฉันก็เคยใช้บน Firefox สองครั้งแบบไม่มีปัญหาเหมือนกัน ใช้ nextdns บนเราเตอร์ด้วย ไม่แน่ใจว่าช่วยไหม แต่ยังไงมันก็ทำงานได้
  • โปรเจกต์อย่าง GrapheneOS, ESPHome และ Meshtastic ใช้ WebUSB ได้ดีอยู่แล้ว และ Google ก็เคยใช้มันเพื่อเปลี่ยนคอนโทรลเลอร์ Stadia ให้กลายเป็นอุปกรณ์รับข้อมูล Bluetooth ทั่วไป เช่นเดียวกับเครื่องมือตั้งค่าของผู้ผลิตคีย์บอร์ดต่าง ๆ ด้วย เพราะผู้ใช้ต้องเลือกอุปกรณ์อย่างชัดเจนเอง ผมจึงมองว่าโมเดลความปลอดภัยก็สมเหตุสมผลดี และท่าทีที่ Mozilla ปฏิเสธไม่รองรับแบบเนทีฟก็น่าผิดหวัง คล้ายกับสิ่งที่แสดงให้เห็นมาตลอด 10 ปีที่ผ่านมา

    • พูดตามตรง ผมคิดว่าฟีเจอร์แบบนี้เหมาะจะอยู่ในรูปของ ส่วนขยาย มากที่สุด การให้เว็บไซต์เข้าถึงสแตก USB หรือ Bluetooth โดยตรงเป็นกรณีใช้งานที่เฉพาะทางเกินกว่าจะใส่มาเป็นค่าเริ่มต้น ควรเป็นแบบ opt-in มากกว่า คล้ายแอปแยกอย่าง Bluetooth browser บน iOS ที่ใช้เฉพาะตอนจำเป็น ซึ่งช่วยลดพื้นที่โจมตีและการบวมของเบราว์เซอร์ได้ ถือเป็นแนวทางวิศวกรรมที่ดีกว่า ผมอยากเห็น Web API ขนาดใหญ่ที่เป็น JS แบบนี้ถูกแยกเป็นปลั๊กอินมากขึ้น
  • ทุกวันนี้แม้แต่แอปโลคัลเองก็ยังมีกรณีที่แจกจ่ายเป็น html & js ที่ใช้ได้กับ Chrome เท่านั้น มากขึ้นเรื่อย ๆ ต่อให้จะชอบหรือไม่ชอบที่เบราว์เซอร์เข้าถึง USB ได้ก็ตาม ฉันเกลียดกระแสที่บังคับให้กลับไปใช้ Chrome มากกว่าเสียอีก มันชวนให้นึกถึงยุคที่เคยถูกบังคับใช้ IE

    • ฉันยังคงคิดอยู่ว่าอยากสร้างเว็บกลับไปเป็นโปรแกรมอ่านเอกสารไฮเปอร์เท็กซ์ที่ไม่มี kitchen sink อีกครั้ง ทุกวันนี้เพราะมี LLM การทำต้นแบบแนวนี้ก็ดูเป็นจริงได้มากกว่าเมื่อก่อน
  • สำหรับแพลตฟอร์มฮาร์ดแวร์เพื่อการศึกษาอย่าง BBC Microbit นั้น WebUSB เป็นตัวเปลี่ยนเกมจริง ๆ เวลาแนะนำฮาร์ดแวร์ให้นักเรียน มันแค่ใช้งานได้เลย และด้วยเว็บ IDE อย่าง MakeCode กับ URL อ้างอิงโค้ด การแชร์และดีบักก็ง่ายขึ้นด้วย

  • การติดตั้งนี้ดูเหมือน proof of concept ที่ยอดเยี่ยม ถึงวิธีรันไฟล์ปฏิบัติการแยกข้างเบราว์เซอร์จะยังไม่ใช่รูปแบบ WebUSB ขั้นสุดท้ายที่ผมอยากได้ แต่แค่มีคนกำลังลงมือแก้ปัญหานี้จริง ๆ ก็น่ายินดีแล้ว

    • ในทางกลับกัน ผมไม่ค่อยชอบแนวคิดให้จัดการ USB โดยตรงในเบราว์เซอร์ เท่าไร
  • ปฏิกิริยาแรกของฉันคือ นี่เป็น ไอเดียที่แย่มาก ฉันไม่ชอบที่เว็บไซต์จะเข้าถึงฮาร์ดแวร์ได้เลย และแค่การเข้าถึงเว็บแคมตอนนี้ก็น่ารำคาญพอแล้ว

    • ผมมองต่างออกไปนิดหน่อย เมื่อก่อนถ้าจะอัปโหลดเฟิร์มแวร์ให้อุปกรณ์ ต้องดาวน์โหลดแอป C++ สุ่ม ๆ แล้วมอบสิทธิ์ผู้ใช้ทั้งระบบของเครื่องให้ทั้งหมด แต่ใน WebUSB แค่เข้าเว็บไซต์แล้วรันขั้นตอนที่อยู่ในแซนด์บ็อกซ์ และเมื่อเบราว์เซอร์ถาม ผมก็ เลือกสิทธิ์ให้เฉพาะอุปกรณ์ USB ตัวนั้นตัวเดียว ได้ มันไม่สามารถแตะอุปกรณ์ USB อื่น ระบบไฟล์ ระบบ API การลงทะเบียนเริ่มอัตโนมัติ หรือการติดตั้งอัปเดตอัตโนมัติได้เลย ดังนั้นผมรู้สึกว่าท่าทีด้านความปลอดภัยกลับดีกว่าเดิม
    • จะชอบหรือไม่ชอบก็ตาม เส้นแบ่งระหว่างแอปกับเว็บเพจ นั้นพร่าเลือนไปมากแล้ว และต่อจากนี้ก็น่าจะยิ่งพร่าเลือนขึ้นอีก แม้แต่แอปโลคัลเองก็ใช้เบราว์เซอร์เป็นตัวอินเทอร์พรีตแทน Python กับ Qt มากขึ้นเรื่อย ๆ
    • เรื่องนี้ง่ายมาก ก็แค่ไม่ให้สิทธิ์เข้าถึง แต่ผมไม่อยากให้ใครพยายามห้ามคนอื่นว่าควรทำอะไรกับ ฮาร์ดแวร์ ของตัวเอง โลกที่เหลือแต่ระบบนิเวศปิดแบบบริษัทจะยิ่งแย่กว่าเดิม
    • ถ้าไม่ชอบ ก็แค่ไม่ต้องเลือกอุปกรณ์และไม่ต้องกดปุ่ม allow
    • เว็บไซต์ก็ใช้ CPU และ RAM อยู่แล้ว นั่นก็เป็นวิธีการทำงานของมันอยู่แล้วเหมือนกัน
  • ตอนนี้ผมยังไม่ยินดีให้มันเข้ามาในเบราว์เซอร์ เพราะสเปกยังอยู่ในสถานะ draft และความกังวลด้านความปลอดภัยยังไม่ได้รับการคลี่คลายเพียงพอ

    • ในทางกลับกัน ผมมองว่าปัญหาความปลอดภัยตอนที่ไม่มี WebUSB ก็คือ ทุกครั้งที่ต้องใช้อุปกรณ์ USB เราต้องติดตั้ง ไดรเวอร์เนทีฟที่ไม่น่าไว้ใจ
    • ถ้าอย่างนั้น ผมก็อยากรู้ว่าเมื่อเทียบกับกรณีที่เดิมก็ต้องดาวน์โหลดโปรแกรมเนทีฟอยู่แล้ว เช่นการแฟลชสมาร์ตโฟน WebUSB เพิ่ม นัยด้านความปลอดภัย อะไรเข้ามาอย่างชัดเจนบ้าง
    • ผมเห็นด้วยกับการตีความที่ว่าสเปกยังเป็น draft เพราะ Apple คอยขัดขวางความคืบหน้า API อย่าง WebUSB, WebBluetooth ดูจะไปแข่งกับ App Store จึงน่าจะไม่ถูกใจในแง่รายได้ ส่วนโมเดลความปลอดภัยจริง ๆ ก็ไม่ได้ต่างจาก Browser API แบบขอสิทธิ์อื่น ๆ มากนัก เพราะผู้ใช้ต้องอนุญาตการเข้าถึงอุปกรณ์เป็นรายเว็บไซต์อย่างชัดเจน
    • เพราะงั้นเวลา Firefox ไม่มีฟีเจอร์พื้นฐานแบบนี้ ผมก็เลยเตรียม Chrome อินสแตนซ์ แยกไว้เปิดใช้เฉพาะเวลาจำเป็น
  • ถ้า WebUSB และ WebBLE รองรับได้ทุกที่ ผมคงปล่อยแอป IoT ของตัวเองเป็นเว็บอย่างเดียวได้เลย ซึ่งน่าจะเพิ่มผลิตภาพได้มาก และจุดที่น่าสนใจเป็นพิเศษคือช่วยลดความยุ่งยากเกี่ยวกับแอปสโตร์

    • เพิ่งรู้เรื่องนี้เป็นครั้งแรกเมื่อกี้เอง แล้วก็เริ่มสงสัยว่า CCTV DVR ในหัวของผมจะสามารถให้เว็บแอปบนมือถือ พร้อมสตรีมวิดีโอได้หรือไม่ ตอนค้นหาควรใช้คำว่า Web Bluetooth API แทน webble แล้วผลลัพธ์จะดีกว่า