Apple Watch
Needs a HealthKit / Watch companion integration. A Bluetooth name is not enough.
Compatibility
Nivvi decodes specific GATT services. Seeing a device in the scan, pairing it in iOS Settings, or recognising a brand does not mean Nivvi can read it.
What are you trying to connect?
Standard heart-rate strap or band
Live heart rate if it exposes 180D / 2A37.
| Service | Role | What Nivvi does |
|---|---|---|
Heart Rate Service 180D | Live | Standard 8-bit and 16-bit heart rate. Rejects reported loss of sensor contact and malformed optional fields. |
Pulse oximeter, continuous 1822 / 2A5F | Live pulse | Decodes pulse and oxygen. Unqualified or sensor-faulted packets are withheld. Pulse can drive live alerts when no 180D service is present. Oxygen is displayed; oxygen alarms are not implemented. |
Pulse oximeter, spot-check 1822 / 2A5E | Event only | Saved as a one-off result. Never used as a live alarm source. |
Battery 180F | Status | One-byte battery percentage. A battery value is not a heart-rate reading. |
Experimental nine-byte frame Mapped adapter | Opt-in | Candidate heart rate and oxygen from an observed custom layout. Alarms for this source need a separate experimental switch, off by default. |
Apple Watch
Needs a HealthKit / Watch companion integration. A Bluetooth name is not enough.
Oura
Needs an account-authorised Oura API. It is not a generic 180D/1822 peripheral here.
BabySensor-style base stations
Public docs describe a bracelet-to-base-station path with its own app. Direct support needs a vendor protocol.