Web Serial

**요약 목록**

* **개요:** Firefox 151(데스크톱 버전)부터 웹 브라우저가 마이크로컨트롤러, 3D 프린터, 전력계 등 시리얼(Serial) 연결 하드웨어와 직접 통신할 수 있는 'Web Serial API'를 지원합니다.
* **주요 장점:** 별도의 네이티브 소프트웨어나 드라이버 설치 없이 브라우저 내 자바스크립트(JavaScript)만으로 전동 장치 제어 및 펌웨어 전송이 가능합니다.
* **활용 예시:** Adafruit 보드의 CircuitPython 펌웨어 설치, USB 전력계 데이터 측정 및 Firefox 프로파일러 연동, Home Assistant 가전 자동화 펌웨어 설치 등
* **보안 및 개인정보 보호:** 사용자가 명시적으로 허용하기 전까지 웹사이트는 연결된 기기 목록을 볼 수 없으며, Firefox는 부가 기능 게이팅(Add-on gating) 방식을 적용해 더욱 상세한 권한 안내를 제공합니다.

---

**상세 내용**

**1. Web Serial API 정의**
별도의 PC용 전용 프로그램을 설치하지 않고, 웹사이트 상에서 직접 하드웨어 장치를 읽고 쓸 수 있도록 해주는 자바스크립트 기반의 웹 API입니다. 하드웨어가 USB나 블루투스로 연결되어 있더라도 운영체제에서 시리얼 포트로 인식 가능한 기기라면 모두 웹 브라우저를 통해 제어할 수 있습니다.

**2. 주요 활용 분야 및 호환 기기**

* **메이커 및 교육:** 하드웨어 해커, 학생, 개발자들이 홈 오토메이션 및 프로토타이핑을 구현할 때 매우 유용합니다.
* **지원 기기:** Espressif ESP32 칩셋 보드, Raspberry Pi Pico(라즈베리 파이 피코), 3D 프린터, LEGO 스마트 허브 등
* **실제 오픈소스 연동:**
* **Adafruit:** 웹 브라우저 상에서 교구용 보드에 CircuitPython 펌웨어를 몇 번의 클릭만으로 손쉽게 설치할 수 있습니다.
* **USB 전력계 측정:** 시중의 USB 전력계 데이터를 브라우저로 가져와 실시간 전력 소비를 시각화하고 Firefox Profiler로 내보낼 수 있습니다.
* **Home Assistant:** 스마트홈 구축용 오픈소스 프로젝트인 ESPHome 펌웨어를 웹에서 바로 기기에 심어 기기를 자동화 환경에 연동할 수 있습니다.



**3. 보안 체계**
하드웨어 기기 접근에 따른 보안 위험을 방지하기 위해 철저한 제한을 둡니다.

* **사용자 명시적 승인:** 웹사이트가 기기 목록을 먼저 탐색할 수 없으며, `navigator.serial.requestPort()` 함수 호출 시 브라우저가 띄우는 팝업 창에서 사용자가 장치를 직접 선택해야만 접근 권한이 부여됩니다. 이를 통해 브라우저 핑거프린팅(기기 정보를 통한 추적)을 방지합니다.
* **Add-on Gating:** Firefox는 단순히 허용 여부만 묻는 일반적인 권한 창 대신, 사용자가 무엇을 허용하는지 명확히 인지할 수 있도록 보완된 안내 단계를 먼저 제공합니다.
* **기업 정책:** 기업용 Firefox 환경(Enterprise Policy)에서는 기본적으로 기능이 비활성화되며, 관리자 정책(`DefaultSerialGuardSetting`)을 통해 제어할 수 있습니다.

**4. 표준화 현황**
현재 Web Serial API는 WICG(Web Incubator Community Group) 단계에 머물러 있으나, Mozilla는 생태계 파트너들과 협력하여 이를 WHATWG의 새로운 워크스트림 제안을 거쳐 정식 웹 표준으로 정착시키기 위한 노력을 지속하고 있습니다.

댓글

이 블로그의 인기 게시물

Session 대신 JWT를 사용하는 이유

스프링 부트 개발자를 위한 유용한 VSCode 설정

5-Step Architecture