Compatibility

A Bluetooth name is not a supported measurement.

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.

Services Nivvi understands

ServiceRoleWhat Nivvi does

Heart Rate Service

180D

LiveStandard 8-bit and 16-bit heart rate. Rejects reported loss of sensor contact and malformed optional fields.

Pulse oximeter, continuous

1822 / 2A5F

Live pulseDecodes 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 onlySaved as a one-off result. Never used as a live alarm source.

Battery

180F

StatusOne-byte battery percentage. A battery value is not a heart-rate reading.

Experimental nine-byte frame

Mapped adapter

Opt-inCandidate heart rate and oxygen from an observed custom layout. Alarms for this source need a separate experimental switch, off by default.

Not in this build

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.