Skip to content

Mag*NET BLE Service Definition

David J. Kordsmeier edited this page Mar 23, 2025 · 6 revisions

Overview

Any device can offer/advertise/implement a MagNET service. The purpose of specifying BLE services in a standard way is to give the MagNET client a way to dynamically create UIs and connect to a variety of services, regardless of the platform, or even the existence of a formal application. The device should be able to provide enough details to generate a reasonably good UI experience, and an easier way to consume services of unknown devices. Other protocols exist to try to solve the silo / proprietary approaches of big tech, however, this project isn't focused on building a consortium of big tech players. It intends to provide easy interoperability of personal IoT device, DIY maker devices, and any company hoping to reduce costs and get to market.

NOTE: This needs to be moved to a versioned document.

References

Follow the design approach for nRF UART service (https://developer.nordicsemi.com/nRF_Connect_SDK/doc/v1.7-branch/nrf/libraries/bluetooth_services/services/nus.html) ... how that gets specified. We need:

  • a service UUID
  • some characteristics

Revisions

  • v0.0.1 : 10/25/2024 Initial spec service details
  • v0.0.2: 3/23/2025 Add Advertisement updates.

BLE Service Definition

Note: all of our services are going to be following the prefix: e529dbf6-8968-43e3-9930-xxxxxxxxxxxx Note2: all of our characteristics will number based off the service UUID associated, incrementing the MSB.

MagNET Info Service

Overview: this provides the core indications the device implements the MagNET protocols. At a high level, it must be found to enable libraries and apps to interact with MagNET devices.

Service UUID :

  • id: com.iotone.jp.magnet.service.info
  • uuid: e529dbf6-8968-43e3-9930-000000000001

Protocol Version Characteristic

  • id: com.iotone.jp.magnet.characteristic.info.version
  • uuid: e529dbf6-8968-43e3-9930-100000000001
  • attributes: READ
  • value: SEMVER M.m.p
  • datatype: BYTES

Manufacturer Info Characteristic

  • id: com.iotone.jp.magnet.characteristic.info.msg
  • uuid: e529dbf6-8968-43e3-9930-200000000001
  • attributes: READ
  • value: Company Info / Mfg Date
  • datatype: STRING

DeviceID Characteristic

  • id: com.iotone.jp.magnet.characteristic.info.deviceid
  • uuid: e529dbf6-8968-43e3-9930-300000000001
  • attributes: READ
  • value: UUID
  • datatype: BYTES

Specification

Advertisement

  • 48bits : advertisement address

Manufactuerer data

  • 22 bytes Manufacturer data. Unspecified by this specification. It is up to the device maker to choose what goes into this section.

Services

  • MagNET Accelerometer Service : optional
  • MagNET Barometer Service : Optional
  • MagNET Thermometer Service : Optional
  • MagNET Camera Service : Optional
  • MagNET Config Service : Required
  • MagNET GenUI Service : Required
  • MagNET Datasheet Service : Required
  • MagNET Specs Service : Required
  • MagNET DFU Service : Optional
  • MagNET Info Service : Required, the indicator this is a MagNET service
  • MagNET Fleet Service : Optional, define a fleet of devices controlled by X and owned by Y

TODO

This service will provide the common characteristics for all MAG*NET BLE services. For devices without BLE, we will provide other approaches.

Characteristics

TODO

  • MAG*NET CLASSES (what kinds of things does it do)

Probably we have a way to write to it Probably we have a way to read from it Probably we need a way to configure certain things

Security

TODO

Design Notes