Kontakt.io divides advertising packets into four groups.
Kontakt.io packets (Secure Profile, Telemetry, and Location)
Eddystone (UID, URL, TLM)
Encrypted Eddystone (EID, ETLM)
Beacons use separate virtual BLE broadcasters to send packets from each group. Because of that, packets from different groups have different MAC addresses, so by 3rd-party scanners they are treated as packets sent by unrelated beacons.
However, Kontakt.io MAC addresses and standard iBeacon and Eddystone packets are sequential and this information can be used to associate various packets with each other. For example, if a given beacon broadcasts Kontakt.io packets with using
12:AB:45:CD:EF:F1 address, then iBeacon packets from that beacon will have
12:AB:45:CD:EF:F2 MAC and Eddystone packets will use
Please keep in mind that sequential MAC addresses apply only to standard, unencrypted and not shuffled packets. It means that Eddystone EID and ETLM packets, as well as Kontakt.io Secure iBeacon and Eddystone packets always use random MAC addresses.
Please be aware that the behavior described above does not relate to beacons shipped before 20.01.2020. Beacons manufactured before that date have MAC addresses that are not related and are completely random.
Having packets that are treated by scanners as coming from different sources allows us to make all iBeacon and Eddystone packets non-connectable (
ADV_NONCONN_IND), but at the same time, we keep nRF52-based devices easily configureable through Kontakt.io Secure Profile which is a connectable (
ADV_IND) packet with management data. This way we increase the compatibility and discoverability of standard advertising packets (iBeacon, Eddystone) while maintaining the ability to configure devices at will, just like any other Kontakt.io device. To provide compatibility with iOS and Android devices, beacons are capable of responding to Scan Requests with a Scan Response packet that is associated with the connectable Kontakt.io Secure Profile packet.
Kontakt.io Secure Profile is also the only packet that in general can't be disabled during standard operations. The only exception is possible on button-equipped beacons. It's also the only packet broadcasted when devices are in most of the Power Saving modes, although there are some exceptions as well.
The advertising interval on beacons sets a time period between each broadcasted packet, so the time between the packets of the same type might vary depending on the number of different advertising packets enabled on a beacon. The only exception is the Kontakt.io Secure Profile packet – it is broadcasted with a separate, fixed interval of 1000 ms. It's possible that the Kontakt.io Secure Profile packet's broadcasting schedule might interfere with the schedule of iBeacon and Eddystone packets' advertising interval. In these instances beacons will automatically adjust the broadcasting time of the Kontakt.io Secure Profile packet or iBeacon/Eddystone packets, making sure there are at least 100 ms between them.