Web Serial API в Firefox 151: когда браузер начинает общаться с железом
Web Serial API в Firefox 151: браузер теперь работает с железом напрямую
Разработка устройств всегда была сопряжена с лишними шагами. Нужно было устанавливать драйверы, выбирать отдельную программу под каждую платформу и мириться с тем, что всё это не работает из коробки. Теперь Firefox 151 убрал большую часть этих преград, добавив полноценную поддержку Web Serial API.
Что даёт Web Serial API
С помощью этого API JavaScript может напрямую общаться с устройствами, подключаемыми по USB или Bluetooth и работающими по последовательному протоколу. Это ESP32, Arduino, Raspberry Pi Pico, 3D-принтеры, умные устройства и многое другое.
Раньше для работы с ними требовалось:
- ставить специализированное ПО;
- вручную устанавливать драйверы;
- разбираться с совместимостью;
- поддерживать разные инструменты под разные устройства.
Теперь достаточно написать скрипт на JavaScript, запросить доступ к порту — и устройство подключается прямо из браузера.
Как это уже используют на практике
Adafruit упростила прошивку устройств с помощью CircuitPython. Теперь достаточно открыть браузер, загрузить файл code.py и запустить его на микроконтроллере. Эта процедура стала почти мгновенной.
Mozilla-инженер построил веб-инструмент для мониторинга энергопотребления. Он читает данные с USB-измерителей и сразу выводит их в Firefox Profiler. Визуализация и анализ данных стали проще, sharing с командой тоже.
Home Assistant через ESPHome позволяет за несколько секунд настроить и прошить устройства для умного дома. DIY-проекты перестали быть сложными техническими задачами.
Другой разработчик создал Page Playground — систему, где браузер одновременно служит средой для редактирования кода и для тестирования на реальном устройстве.
Как устроена безопасность
Mozilla не оставила лазеек для злоупотреблений. По умолчанию браузер ничего не видит среди подключённых устройств. Чтобы получить доступ, сайт должен вызвать navigator.serial.requestPort(). Это вызывает пользовательское диалоговое окно, в котором можно выбрать конкретное устройство и порту.
Права выдаются отдельно под каждый сайт и каждый порт — никакого глобального доступа. Нет и возможности для fingerprinting, потому что сайты не получают список всех подключённых устройств. Это напоминает модель доступа к камере: всегда под контролем пользователя.
Что это даёт разработчикам
Для тех, кто занимается прототипированием, доступ к hardware через браузер ускоряет итерации. Не нужно каждый раз компилировать и загружать firmware — достаточно обновить страницу.
Веб-стек при этом работает одинаково на всех платформах: Mac, Windows, Linux. Разработчики не зависят от машины и могут с легкостью分享ить проекты с удалёнными коллегами.
Это также упрощает обучение. Учреждают не устанавливают ничего дополнительного — достаточно браузера и устройства.