Web Serial, BLE, USB & HID terminal: a serial terminal for BLE UART, USB serial, Bluetooth classic serial and HID devices, in the browser. One file, no build.
Open it: https://hamzayslmn.github.io/open-AirCaBLE/
| Connection | Reaches | Browser |
|---|---|---|
| Bluetooth LE | BLE UART modules | Chrome or Edge on desktop or Android, Bluefy on iOS |
| Serial | USB serial adapters (CH340, CP210x, FTDI, CDC) and paired Bluetooth classic SPP ports | Chrome or Edge |
| HID | Raw HID devices, HID-to-UART bridges like CP2110 | Chrome or Edge on desktop |
Firefox and Safari have none of these.
- Pick BLE, Serial or HID at the top. One this browser lacks is greyed out.
- Press Connect and pick the device.
- On BLE it finds the UART by itself: Nordic UART, HM-10 (
ffe0),fff0modules, Microchip, u-blox, GARRY. On HID it reads every input report and sends on the device's first output report. - Type and press Enter. Up and down walk the history.
Everything else is in Settings (the sliders button, or the LF / HEX badge in the input), and the
defaults work for most devices:
| Setting | What |
|---|---|
| Baud rate | Serial only. 115200 by default, 8N1 |
| Service UUID | BLE only. Blank is auto. Set it (ffe0 or a full UUID) for a device the list does not know |
| Line end | Added to every text line you send. LF by default |
| Prefix (hex) | Bytes put in front of every write. Blank is auto: 01 on a GARRY board, nothing elsewhere |
| Send as hex | The input is hex bytes, like 01 3f |
| Show received as hex | Received bytes as hex instead of text |
| Timestamps | On screen and in the export |
Copy all puts the whole log on the clipboard, Download .txt saves it. Both keep every line, even past the 5000 the screen shows.
Web Bluetooth, Web Serial and WebHID need https or localhost:
python -m http.server 8000Then open http://localhost:8000.
.github/workflows/pages.yml deploys the repo root on every push to main. Turn it on once:
repo Settings > Pages > Source: GitHub Actions.