1 poin oleh GN⁺ 2 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Mulai Firefox 151 Desktop, Web Serial API didukung sehingga aplikasi web dapat berkomunikasi dengan perangkat serial yang kompatibel tanpa perangkat lunak native
  • Web Serial adalah API untuk membaca dan menulis perangkat serial dengan JavaScript, sehingga dapat terhubung langsung ke mikrokontroler, printer 3D, meter daya, dan lainnya
  • Dalam alur kerja Adafruit, firmware dikirim melalui Web Serial untuk memasang CircuitPython, dan kode perangkat dapat dengan mudah didistribusikan melalui file code.py
  • Firefox mengurangi risiko keamanan dan privasi dari akses perangkat melalui izin pengguna yang eksplisit, perizinan per situs dan per port, serta add-on gating
  • Mozilla mendorong standardisasi WHATWG untuk Web Serial yang masih berada pada tahap WICG, serta meminta pengujian alur kerja perangkat keras nyata dan umpan balik

Web Serial API dan cakupan dukungan

  • Mulai Firefox 151 for Desktop, Web Serial API didukung sehingga aplikasi web dapat berkomunikasi dengan perangkat yang kompatibel tanpa perangkat lunak native
  • Web Serial API adalah API web yang memungkinkan situs web membaca dan menulis perangkat serial dengan JavaScript
  • Perangkat target mencakup mikrokontroler, board pengembangan, printer 3D, meter daya, dan perangkat keras lain yang terhubung secara serial
  • Perangkat yang kompatibel dengan serial mencakup board berbasis Espressif ESP, Raspberry Pi Pico, printer 3D, dan perangkat LEGO
  • Komputer modern biasanya tidak memiliki port serial, tetapi perangkat yang terhubung ke port USB atau dipasangkan melalui Bluetooth dapat mengidentifikasi dirinya sebagai perangkat yang mendukung serial agar terlihat seperti port serial oleh sistem operasi
  • Perangkat yang kompatibel dengan Web Serial dimanfaatkan oleh pengembang hobi, peretas perangkat keras, pendidik, maker, dan pengembang untuk otomasi rumah, prototipe perangkat keras, pencetakan 3D, dan lainnya

Alur kerja Adafruit dan CircuitPython

  • Adafruit adalah salah satu organisasi representatif yang menunjukkan pemanfaatan Web Serial di bidang perangkat keras open source dan pendidikan STEM
  • Adafruit memungkinkan CircuitPython dipasang dengan cepat pada perangkatnya dengan mengirim firmware melalui Web Serial
  • Setelah pemasangan, jika nama file ditetapkan sebagai code.py, pada sebagian besar perangkat kode dapat didistribusikan dengan cara menyeret dan meletakkan file ke perangkat USB
  • Program Python dapat saling beroperasi dengan halaman web melalui Web Serial menggunakan input/output sederhana berbasis teks
  • Adafruit Web Serial Tool dapat digunakan, dan ini dibedakan dari metode OPEN INSTALLER di situs CircuitPython
  • example CircuitPython Web Serial project adalah struktur yang menggunakan Web Serial dari web page lokal untuk mengirim pesan ke perangkat yang menjalankan file CircuitPython
  • Mozilla bekerja sama dengan Adafruit untuk menguji implementasi Firefox agar sesuai dengan alur kerja perangkat keras nyata yang umum digunakan di komunitas ini
  • Insinyur Mozilla Alex Franchuk membuat Page Playground yang menggabungkan Web Serial dan perangkat elektronik

Pengukuran daya dan otomasi rumah

  • Florian Quèze dari Mozilla bereksperimen dengan beberapa proyek untuk mengukur konsumsi daya, dan membuat demo yang membaca data daya dari meter daya USB komersial melalui Web Serial lalu menampilkannya di Firefox
  • Kode tersebut dapat mengekspor data ke Firefox Profiler sehingga lebih mudah untuk memvisualisasikan dan membagikan data daya
  • Sumber daya terkait adalah page, GitHub repo, dan data Firefox Profiler yang merekam penggunaan daya lampu dengan tiga mode kecerahan
  • Meter daya USB yang diuji mencakup AVHzY C3 USB, Joy-IT TC66C, dan YZXStudio USB ZY1280
  • Home Assistant adalah proyek open source populer untuk otomasi rumah, dan ESPHome menyediakan firmware yang kompatibel dengan Home Assistant untuk ESP32 murah dan perangkat serupa
  • Firmware ESPHome dapat dipasang dan dikonfigurasi hanya dengan beberapa klik melalui Web Serial

Keamanan dan privasi

  • Saat platform web dapat membaca dan menulis perangkat keras, kekhawatiran tentang keamanan dan privasi meningkat
  • Dalam Web Serial, situs web tidak dapat melihat atau mengakses port serial sampai pengguna secara eksplisit mengizinkannya
  • Izin port diberikan per situs dan per port
  • Web Serial API mengharuskan situs web memanggil navigator.serial.requestPort(), dan pengguna dapat memilih port yang akan diberi akses atau menolak seluruh akses
  • Situs web tidak menerima daftar perangkat yang terhubung, dan selain port yang dipilih pengguna, tidak ada informasi sidik jari yang berguna yang diberikan
  • Firefox menggunakan add-on gating yang diperkenalkan dalam implementasi Web MIDI API agar pengguna memahami kapan dan mengapa sebuah situs meminta akses ke port serial
  • Add-on gating memberi tahu pengguna dengan lebih rinci tentang apa yang mereka izinkan dibanding prompt izin web lainnya
  • Prompt add-on gating ditampilkan sebelum prompt pemilihan port saat situs pertama kali meminta akses ke port
  • Dalam organisasi yang menggunakan Firefox Enterprise Policies, Web Serial dinonaktifkan secara default
  • Administrator dapat secara eksplisit mengizinkan atau memblokir fungsi Web Serial di seluruh organisasi melalui pengaturan kebijakan DefaultSerialGuardSetting

Standardisasi dan umpan balik

  • Web Serial masih berada pada tahap Web Incubator Community Group (WICG), tetapi Mozilla menilai ada jalur standardisasi mengingat cakupan dan lamanya masa inkubasi
  • Mozilla sedang mendorong standardisasi Web Serial API di WHATWG melalui proposal Workstream baru
  • Mozilla berencana bekerja sama dengan mitra ekosistem dan badan standardisasi untuk membentuk pendekatan akses web terhadap periferal
  • Jika Anda memiliki alur kerja Web Serial berbasis perangkat, Anda dapat mengujinya di Firefox
  • Anda dapat membagikan proyek, mengajukan pertanyaan, atau meninggalkan umpan balik di Mozilla Connect
  • Untuk masalah teknis, periksa support.mozilla.org atau kirim bug ke Bugzilla

1 komentar

 
GN⁺ 2 jam lalu
Komentar di Lobste.rs
  • Akan bagus kalau WebUSB juga diimplementasikan

    • Jika ini memungkinkan flashing mikrokontroler seperti ESP, 95~100% kasus penggunaan WebUSB saya akan terselesaikan
    • Ada yang sudah mengimplementasikannya sebagai ekstensi Firefox: https://github.com/ArcaneNibble/awawausb
  • Saya penasaran bagaimana mereka berencana melindungi orang yang mudah tertipu, terutama mereka yang tidak tahu apa itu port serial. Posisi standar Mozilla juga memuat hal seperti ini

    Perangkat yang menyediakan antarmuka serial sering kali mengekspos kemampuan tingkat rendah yang kuat dengan autentikasi yang minim atau bahkan tanpa autentikasi sama sekali. Mengekspos kemampuan seperti itu ke web tanpa perlindungan yang memadai merupakan ancaman serius bagi perangkat tersebut

    • Satu-satunya perangkat dengan dukungan serial yang mungkin dimiliki pengguna pemula yang terpikir oleh saya hanyalah mouse. Jika pembaruan firmware tidak ditandatangani, malware memang bisa diunggah, tetapi tampaknya itu bukan target yang terlalu berguna bagi penyerang
      Keyboard dengan fitur makro memang sedikit lebih mengkhawatirkan. Meski begitu, Chrome sudah memiliki fitur ini selama beberapa tahun dan tidak ada masalah besar, jadi menurut saya ini bukan kekhawatiran serius. Terlebih lagi, sekarang periferal semakin sering mulai digunakan untuk keperluan konfigurasi, jadi kegunaannya jauh lebih besar daripada risikonya
  • Ini tidak masuk akal. Sulit menggambarkan betapa gilanya menambahkan akses port serial ke penampil halaman web

    • Saya tidak setuju. Ini fitur yang sangat berguna, dan saya senang sekarang tidak perlu beralih ke Chrome hanya untuk memakainya
    • Web sudah berevolusi menjadi platform aplikasi sekitar 20 tahun yang lalu
  • Ah, benar juga. Inilah yang benar-benar dibutuhkan situs web. Saya sedang menunggu WebRawSockets. Setengah bercanda, tetapi dulu saat saya ikut terlibat, kelompok kerja SVG benar-benar mencoba menambahkan raw socket ke SVG

    • Fakta bahwa kelompok kerja SVG pernah mencoba memasukkan raw socket ke SVG membuat saya bertanya-tanya, sebenarnya apa yang terjadi. Apakah Anda ingat alasan mereka?