The companion app for ProtoCentral biosignal and sensor boards.
Stream live data over USB, BLE or Wi-Fi · visualize it in real time · record it to .hpd · replay it later.
Desktop download · Supported boards · Build from source · Add your own board
Live view — HealthyPi 5 streaming ECG, BioZ/respiration and PPG over BLE
OpenView 3 is a single app for every ProtoCentral board. It receives framed data from
the board, decodes it into signals, plots it live, and writes it to .hpd (BIOSIG v1)
files that round-trip with HealthyPi Studio.
It runs on Windows, macOS, Linux, Android and iOS from one Flutter codebase.
| Live view | Real-time plots of every channel the board exposes, with derived vitals (heart rate, SpO₂, respiration, temperature) shown alongside. |
| Record & replay | One-click recording to .hpd, a built-in recordings browser, and a replay screen that scrubs through past sessions. |
| Device Manager | Firmware and file management for any SMP/MCUmgr-enabled device over BLE — read image slots, upload firmware, browse the device filesystem. |
| Console | Raw packet stream with hex dump, including packets the app doesn't recognize — the first place to look when bringing up new firmware. |
| Developer | An unfiltered BLE GATT browser for poking at services and characteristics during bring-up. |
Three transports, gated per board — the app only offers what the board actually speaks.
| Transport | Availability |
|---|---|
| USB / UART | Every board. Desktop only (Windows, macOS, Linux). |
| BLE | HealthyPi 5, Sensything OX, Sensything CAP. All platforms. |
| Wi-Fi (TCP) | HealthyPi 5, Sensything OX, Sensything CAP. Enter host:port manually. |
| Board | USB | BLE | Wi-Fi |
|---|---|---|---|
| HealthyPi 5 | ✅ | ✅ | ✅ |
| Sensything OX | ✅ | ✅ | ✅ |
| Sensything CAP | ✅ | ✅ | ✅ |
| ADS1292R · ADS1293 · AFE4490 | ✅ | — | — |
| MAX30001 · MAX30003 · MAX86150 | ✅ | — | — |
| Pulse Express · TinyGSR | ✅ | — | — |
| TMF8829 dToF (depth map) | ✅ | — | — |
Don't see your board? It takes three files and no changes to the app — see Add your own board.
Download the zip for your OS from the Releases
page, extract it, and run the app. Verify the download against SHA256SUMS.txt
if you like.
The macOS build is ad-hoc signed, not notarized, so the first launch is blocked with "Apple cannot check it for malicious software". Right-click the app and choose Open, or clear the quarantine flag:
xattr -dr com.apple.quarantine OpenView.appThe App Store listing covers iPhone, iPad and Apple Silicon Macs — on an M-series Mac you can install it straight from the Mac App Store instead of the zip above.
Note — USB is not available on mobile. Use BLE or Wi-Fi.
The same app, the same layout, everywhere — the navigation rail collapses to a bottom bar on phones.
OpenView 3 is written in Flutter and is fully open source.
git clone https://github.com/Protocentral/protocentral_openview.git
cd protocentral_openview
flutter pub get
flutter run -d macos # or windows / linux / <device-id>Release builds:
flutter build macos # or windows / linux / apk / iosLinux additionally needs libudev-dev, libgtk-3-dev, clang, cmake, ninja-build
and pkg-config. See .github/workflows/release.yml
for the exact toolchain each platform is built with.
A board is declared, not coded. Adding one touches three files and needs no changes to the transport, protocol, UI or recording layers:
- Declare a
BoardDescriptorinlib/boards/descriptors/<board>.dart— its channels, packets, commands, and which transports it speaks. - Write pure decoder functions in
lib/boards/decoders/<board>_decoders.dart(Uint8List payload → DecodedPacket). - Register the descriptor in
BoardRegistry.all.
See docs/ARCHITECTURE.md for the full data path (Transport → Framer → Router → buffers → UI → Recorder).
Any device that can push bytes over UART/USB/BLE can talk to OpenView. Every board uses the same frame; only the payload differs per packet type.
All multi-byte fields are little-endian. Unknown packet types are surfaced rather than dropped — the Console screen hex-dumps them, which is the fastest way to bring up new firmware.
HealthyPi 5 over BLE — one characteristic per signal
Over BLE the board does not batch signals: each GATT characteristic streams a single signal, so OpenView routes each characteristic to its own synthetic packet type. Values are little-endian, matching the USB stream.
| Signal | Characteristic | Payload |
|---|---|---|
| ECG | ECG_CHAR |
N × int32 LE |
| Respiration | RESP_CHAR |
N × int32 LE |
| PPG | HIST_CHAR |
N × int16 LE |
| Heart rate | 2a37 |
uint8 |
| SpO₂ | 2a5e |
uint8 |
| Temperature | 2a6e |
int16 LE (× 0.01) |
| Respiration rate | HRV_CHAR |
uint8 |
The TMF8829 depth-frame format is documented separately in docs/protocols/tmf8829-wire-format.md.
Recordings are written as .hpd files (BIOSIG v1) — a block-based, append-only format
that is binary-compatible with HealthyPi Studio, so files move freely between the
two apps.
OpenView can manage any device that exposes the standard SMP service over BLE, built on
the mcumgr_dart package:
- Device info — echo, task/memory stats, image slots
- Firmware — list images and upload new ones
- Files — browse and transfer files on the device filesystem
Firmware upload works; the full DFU install flow (upload → test → reset → confirm) is still work-in-progress and labelled as advanced use in the app.
OpenView has been through three generations. This repository is the canonical home for all of them:
| Version | Stack | Where |
|---|---|---|
| OpenView 3 (current) | Flutter | main — this branch |
| OpenView 2 | Flutter | v2 branch, releases tagged 2.x |
| OpenView 1 | Processing | protocentral_openview_processing (archived) |
MIT License — Copyright (c) 2019 ProtoCentral
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




