• I just tried to run

          0x180D : [100, 80]
        }, {
          discoverable: true,
          connectable: true,
          scannable: true,
          whenConnected: true,
          interval: 600

    on 52840 dongle with recent 2.17 build and it simply works, I see
    Service Data 0x180d Data:0x6450
    in nrfconnect on android near the device name in scan list and also see values in the "RAW" popup.
    It even works when already connected to the device due to whenConnected: true, device is still advertising.

    As for the setServices, that worked too

        '180d': {  // Heart Rate Service UUID
          '2a37': {  // Heart Rate Measurement Characteristic UUID
            value: [0x00, 0x00],  // Initial value: HRM not available
            broadcast: false,
            readable: true,
            notify: true,
            description: "Heart Rate Measurement"

    I just tried it without and also with the , { advertise: ['180d'] } part and both work for me.
    With the part in I see 0x180d both in service uuids and stil also as as direct servicee data as before.

    When connecting via nrfconnect I see "Heart Rate" service and can read the value of 0 bpm

  • Hey there I got your example working using following code:

      0x180D: { // heart_rate
        0x2A37: { // heart_rate_measurement
          notify: true,
          value : [0x06, 0],
      }, { advertise: [ '180D' ] });
      Bangle.on('HRM', function(hrm) {
          '180d': {
            '2a37': {
              value: [0x06, hrm.bpm],
              notify: true

    With this code, I could see the heart rate inside the nRF connect app as well as in FitoTrack for Android. However, I got two problems to solve: First, setServices requires a BLE restart. Secondly, if the device is already connected to e.g. gadgetbridge it is not discoverable except when I trigger it within the bluetooth settings.


Avatar for fanoush @fanoush started