Real-time heart rate overlay for OBS Studio, reading data directly from your Huawei Watch or Smartband via Bluetooth LE — no Huawei SDK, no cloud, no phone required.
Huawei Watch/Band
[HR Data Broadcast ON]
│ Bluetooth LE (GATT 0x180D)
▼
HuaweiHROverlay.exe (this app)
├── BLE Scanner + GATT reader
├── WebSocket server ws://localhost:8765
└── HTTP server http://localhost:8764
│
▼
OBS Browser Source → animated overlay on stream
Your Huawei watch's HR Data Broadcast mode makes it act as a standard BLE Heart Rate Monitor. No Huawei SDK or cloud account is needed.
Important
You must install the .NET 8 Desktop Runtime before running HuaweiHROverlay.exe.
The app does not bundle the runtime — this keeps the EXE small (~2 MB).
| Requirement | Download |
|---|---|
| .NET 8 Desktop Runtime (x64) | Download from Microsoft → Run desktop apps → Windows x64 |
| Windows 10 (build 19041+) or Windows 11 | — |
| OBS Studio | obsproject.com |
| Huawei Watch/Band with HR Data Broadcast | Most GT2/GT3/GT4, Band 6+, Watch Fit series |
winget install Microsoft.DotNet.DesktopRuntime.8
⚠️ This step is mandatory. Without it, the watch won't be detected.
- On your Huawei watch/band, press the side button to open the app list
- Go to Settings
- Scroll to HR Data Broadcasts and enable it
- The watch will start broadcasting HR data over Bluetooth
Note: While HR Data Broadcast is active, the watch may disconnect from the Huawei Health app on your phone. This is normal.
- Open Windows Settings → Bluetooth & devices → Add device
- Select Bluetooth and wait for your Huawei watch to appear
- Click it to pair — no PIN needed for most models
The app can also discover and connect to unpaired devices. Pairing first makes reconnection more reliable.
Double-click HuaweiHROverlay.exe — no installation needed.
If Windows shows a SmartScreen warning, click More info → Run anyway. The app is not code-signed (open source, build from source to verify).
- Click ▶ Scan — your watch should appear within 5–10 seconds
- Select it from the list
- Click ⚡ Connect
- Live BPM will update in the control panel
- In OBS, click + in the Sources panel → Browser
- Set URL to:
http://localhost:8764/ - Width: 400, Height: 120
- "Shutdown source when not visible" → OFF
- Click OK
The animated heart rate widget appears on your stream!
| Feature | Details |
|---|---|
| Animated pulsing heart | Speed dynamically matches BPM |
| Gradient BPM number | Large, readable, with red glow |
| Heart rate zones | 🔵 Rest (<100) → 🟢 Fat Burn (<130) → 🟡 Cardio (<160) → 🔴 Peak (160+) |
| Connection indicator | Green dot = connected, grey = disconnected |
| Auto-reconnect | Overlay reconnects automatically if the app restarts |
| Transparent background | Works natively with OBS browser source transparency |
Check Simulate in the app to generate realistic fake BPM values — great for testing the overlay layout in OBS without your watch nearby.
Any device implementing the standard BLE GATT Heart Rate Service (0x180D) will work:
- Huawei Watch GT2 / GT2e / GT2 Pro / GT3 / GT3 Pro / GT3 SE / GT4 / GT5 / GT5 Pro / GT6 / GT6 Pro
- Huawei Watch Ultimate / Ultimate Design / Ultimate 2
- Huawei Watch Fit / Fit Elegant / Fit 2 / Fit 3 / Fit 4 / Fit 4 Pro / Fit 5
- Huawei Band 6 / 7 / 7 Pro / 8 / 9 / 10 / 10 Pro / 11 / 11 Pro
- Any standard BLE HR chest strap (Polar H10, Wahoo TICKR, etc.)
| Service | Address |
|---|---|
| Overlay page (OBS Browser Source) | http://localhost:8764/ |
| WebSocket BPM stream | ws://localhost:8765/ |
| Status JSON | http://localhost:8764/status |
Requires .NET 8 SDK (download).
# Debug build + run
cd HuaweiHROverlay
dotnet run
# Release single-file EXE (requires .NET 8 Runtime on target machine)
dotnet publish -c Release -o ./publish
# Output: ./publish/HuaweiHROverlay.exeWatch not appearing in scan:
- Ensure HR Data Broadcast is enabled on the watch (it can time out — re-enable if needed)
- Click Stop then Scan again
- Try toggling Bluetooth off/on on the PC
"Heart Rate Service not found":
- HR Data Broadcast may have timed out — go back to watch Settings and re-enable it
- The watch may not support HR Data Broadcast (check your model)
OBS overlay shows "--":
- Ensure the app is running and BPM is showing in the control panel
- Check the URL is exactly
http://localhost:8764/(no HTTPS) - Click Refresh on the OBS Browser Source
Windows Firewall prompt:
- Allow the app on Private networks — it only uses
localhost, never the internet
HuaweiHROverlay/
├── Core/
│ ├── BleHeartRateService.cs # BLE advertisement scanner + GATT reader
│ ├── WebSocketServer.cs # WS broadcast server (port 8765)
│ ├── HttpOverlayServer.cs # HTTP server for overlay (port 8764)
│ └── HeartRateReading.cs # Data model
├── Assets/
│ ├── overlay.html # Animated OBS overlay (embedded in EXE)
│ └── heart.ico # App icon
├── Resources/
│ └── Styles.xaml # WPF dark theme
├── MainWindow.xaml # Control panel UI
└── MainWindow.xaml.cs # App logic