[M5Stack] BLE Beacon RSSI 0



  • Hi,
    I have a platform.io project in which I'm trying to setup an iBeacon and it seems to work except the RSSI is 0.

    Using different scanner applications I can see the generated iBeacon (right UUID, major, and minor) but like I mentioned the RSSI is always 0.
    I would appreciate any (general) pointers as to what could be the root cause. Also, if anyone has or knows of a working example I could use that.

    Note that I also tried to use the NimBLE library with the same issue.

    The relevant part of the code:

    #include <BLEDevice.h>
    #include <BLEServer.h>
    #include <BLEBeacon.h>
    #include <Ticker.h>
    
    bool is_advertising;
    Ticker switchAdertising;
    BLEAdvertising *pAdvertising;
    
    void setup_beacon()
    {
      BLEDevice::init("BleBrain");
      BLEServer *pServer = BLEDevice::createServer();
    
      BLEBeacon myBeacon = BLEBeacon();
      myBeacon.setManufacturerId(0x4C00);
      myBeacon.setMajor(beacon.major);
      myBeacon.setMinor(beacon.minor);
      BLEUUID bleUUID = BLEUUID(IBEACON_UUID);
      bleUUID = bleUUID.to128();
      myBeacon.setProximityUUID(BLEUUID(bleUUID.getNative()->uuid.uuid128, 16, true));
      myBeacon.setSignalPower(0xc5);
    
      BLEAdvertisementData advertisementData;
      advertisementData.setFlags(0x1A);
      advertisementData.setManufacturerData(myBeacon.getData());
    
      pAdvertising = pServer->getAdvertising();
      pAdvertising->setAdvertisementData(advertisementData);
      pAdvertising->start();
      is_advertising = true;
    };
    
    void advertising_switch()
    {
      if (is_advertising)
      {
        pAdvertising->stop();
      }  else {
        pAdvertising->start();
      }
    };