Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Mesh Proxy Data In

nRF5 SDK for Mesh v3.1.0

SEGGER Embedded Studio

Softdevice S140 v6.1.0, Softdevice S132 v6.1.0

Two nRF52832 DK, One nRF52840 DK

Windows 10 Pro

Hi, is it possible to write to Mesh Data Proxy In (Characteristic 0x2ADD) and have that data sent through the mesh, eventually ending up in a GenericOnOff Set Message that actually turns the LED on a Light Switch Server on?

Currently, I'm using the Interactive PyACI script with an nRF52840 board to provision two nRF52832 boards, one as a Light Switch Client, the other as a Light Switch Server. 

  • Provisioning succeeds, and app keys are added and bound to the models.
  • After that, I am able to successfully set publication and subscription addresses, and verify the two 832 boards can talk to each other. Pressing button 1 on the client sets the LED on the server and pressing button 2 on the client turns the LED off. 

After this point, I connect to the Light Switch Client from a Node.js Proxy Client supplied by Bluetooth in the Bluetooth Mesh Proxy Kit. The Proxy Client is able to connect to both the Server and Client nodes, and I'm able to write a proxy PDU to both, however when I write a GenericOnOff Proxy PDU to the client, the logs show RX received messages, and nothing actually happens to the server. Also, I've tried writing the GenericOnOff Proxy PDU to the server directly, which produces the same results, an RX message received, but nothing happens.

Simply put, do your proxy servers (light switch client and light switch server) support writing to the Mesh Proxy Data In characteristic? I.e. does writing to the characteristic actually translate to mesh messages that should affect the state of the LED?

Logs attached:

Interactive PyACI logs:

    To control your device, use d[x], where x is the device index.
    Devices are indexed based on the order of the COM ports specified by the -d option.
    The first device, d[0], can also be accessed using device.

    Type d[x]. and hit tab to see the available methods.

Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: db = MeshDB("database/example_database.json")

In [2]: p = Provisioner(device, db)

In [3]: 2019-02-27 19:40:00,844 - INFO - COM22: Success
2019-02-27 19:40:00,847 - INFO - COM22: Success
2019-02-27 19:40:00,852 - INFO - COM22: SubnetAdd: {'subnet_handle': 0}
2019-02-27 19:40:00,857 - INFO - COM22: AppkeyAdd: {'appkey_handle': 0}
2019-02-27 19:40:00,863 - INFO - COM22: AppkeyAdd: {'appkey_handle': 1}
In [3]: p.scan_start()

In [4]: 2019-02-27 19:40:06,438 - INFO - COM22: Success
2019-02-27 19:40:08,367 - INFO - COM22: Received UUID 3f2e408b740b17468059fdb1f7e63985 with RSSI: -41 dB
2019-02-27 19:40:08,398 - INFO - COM22: Received UUID 2b7a78cb8012ba4486acb023630c3875 with RSSI: -27 dB
In [4]: p.scan_stop()

In [5]: 2019-02-27 19:40:11,698 - INFO - COM22: Success
In [5]: p.provision(uuid="2b7a78cb8012ba4486acb023630c3875", name="Light bulb"
   ...: )

In [6]: 2019-02-27 19:40:49,249 - INFO - COM22: Provision: {'context': 0}
2019-02-27 19:40:49,259 - INFO - COM22: Link established
2019-02-27 19:40:49,308 - INFO - COM22: Received capabilities
2019-02-27 19:40:49,308 - INFO - COM22: Number of elements: 1
2019-02-27 19:40:49,312 - INFO - COM22: OobUse: {'context': 0}
2019-02-27 19:40:49,509 - INFO - COM22: ECDH request received
2019-02-27 19:40:49,516 - INFO - COM22: EcdhSecret: {'context': 0}
2019-02-27 19:40:51,734 - INFO - COM22: Provisioning complete
2019-02-27 19:40:51,734 - INFO - COM22:         Address(es): 0x10-0x10
2019-02-27 19:40:51,734 - INFO - COM22:         Device key: 79f98625056f50a27c685316c5f5d604
2019-02-27 19:40:51,735 - INFO - COM22:         Network key: 18eed9c2a56add85049ffc3c59ad0e12
2019-02-27 19:40:51,735 - INFO - COM22: Adding device key to subnet 0
2019-02-27 19:40:51,735 - INFO - COM22: Adding publication address of root element
2019-02-27 19:40:51,741 - INFO - COM22: DevkeyAdd: {'devkey_handle': 8}
2019-02-27 19:40:51,742 - INFO - COM22: AddrPublicationAdd: {'address_handle':
0}
2019-02-27 19:40:51,834 - INFO - COM22: Provisioning link closed
In [6]: p.provision(uuid="3f2e408b740b17468059fdb1f7e63985", name="Light switc
   ...: h")

In [7]: 2019-02-27 19:41:30,955 - INFO - COM22: Provision: {'context': 0}
2019-02-27 19:41:31,020 - INFO - COM22: Link established
2019-02-27 19:41:31,076 - INFO - COM22: Received capabilities
2019-02-27 19:41:31,077 - INFO - COM22: Number of elements: 3
2019-02-27 19:41:31,080 - INFO - COM22: OobUse: {'context': 0}
2019-02-27 19:41:31,286 - INFO - COM22: ECDH request received
2019-02-27 19:41:31,292 - INFO - COM22: EcdhSecret: {'context': 0}
2019-02-27 19:41:33,652 - INFO - COM22: Provisioning complete
2019-02-27 19:41:33,652 - INFO - COM22:         Address(es): 0x11-0x13
2019-02-27 19:41:33,652 - INFO - COM22:         Device key: 11f84c5c3bfa51078781df2925878df9
2019-02-27 19:41:33,652 - INFO - COM22:         Network key: 18eed9c2a56add85049ffc3c59ad0e12
2019-02-27 19:41:33,653 - INFO - COM22: Adding device key to subnet 0
2019-02-27 19:41:33,653 - INFO - COM22: Adding publication address of root element
2019-02-27 19:41:33,658 - INFO - COM22: DevkeyAdd: {'devkey_handle': 9}
2019-02-27 19:41:33,658 - INFO - COM22: AddrPublicationAdd: {'address_handle':
1}
2019-02-27 19:41:33,759 - INFO - COM22: Provisioning link closed
In [7]: cc = ConfigurationClient(db)

In [8]: device.model_add(cc)

In [9]: cc.publish_set(8, 0)

In [10]: cc.composition_data_get()

In [11]: 2019-02-27 19:42:07,272 - INFO - COM22: PacketSend: {'token': 1}
2019-02-27 19:42:07,280 - INFO - COM22: {event: MeshTxComplete, data: {'token': 1}}
In [11]: cc.composition_data_get()

In [12]: 2019-02-27 19:42:13,532 - INFO - COM22: PacketSend: {'token': 2}
2019-02-27 19:42:13,539 - INFO - COM22: {event: MeshTxComplete, data: {'token': 2}}
2019-02-27 19:42:13,611 - INFO - COM22.ConfigurationClient: Received composition data (page 0x00): {
  "cid": "0059",
  "pid": "0000",
  "vid": "0000",
  "crpl": 40,
  "features": {
    "relay": 0,
    "proxy": 0,
    "friend": 2,
    "low_power": 2
  },
  "elements": [
    {
      "index": 0,
      "location": "0000",
      "models": [
        {
          "modelId": "0000"
        },
        {
          "modelId": "0002"
        },
        {
          "modelId": "1000"
        }
      ]
    }
  ]
}
In [12]: cc.appkey_add(0)

In [13]: 2019-02-27 19:42:35,112 - INFO - COM22: PacketSend: {'token': 3}
2019-02-27 19:42:35,154 - INFO - COM22: {event: MeshTxComplete, data: {'token': 3}}
2019-02-27 19:42:35,183 - INFO - COM22.ConfigurationClient: Appkey status: AccessStatus.SUCCESS
2019-02-27 19:42:35,187 - INFO - COM22.ConfigurationClient: Appkey add 0 succeded for subnet 0 at node 0010
In [13]: cc.model_app_bind(db.nodes[0].unicast_address, 0, mt.ModelId(0x1000))
    ...:

In [14]: 2019-02-27 19:42:48,298 - INFO - COM22: PacketSend: {'token': 4}
2019-02-27 19:42:48,308 - INFO - COM22: {event: MeshTxComplete, data: {'token': 4}}
2019-02-27 19:42:48,327 - INFO - COM22.ConfigurationClient: Model app bind status: AccessStatus.SUCCESS
2019-02-27 19:42:48,330 - INFO - COM22.ConfigurationClient: Appkey bind 0 to model 1000 at 0010
In [14]: cc.publish_set(9, 1)

In [15]: cc.composition_data_get()

In [16]: 2019-02-27 19:43:13,904 - INFO - COM22: PacketSend: {'token': 5}
2019-02-27 19:43:13,907 - INFO - COM22: {event: MeshTxComplete, data: {'token': 5}}
2019-02-27 19:43:13,984 - INFO - COM22.ConfigurationClient: Received composition data (page 0x00): {
  "cid": "0059",
  "pid": "0000",
  "vid": "0000",
  "crpl": 40,
  "features": {
    "relay": 0,
    "proxy": 0,
    "friend": 2,
    "low_power": 2
  },
  "elements": [
    {
      "index": 0,
      "location": "0000",
      "models": [
        {
          "modelId": "0000"
        },
        {
          "modelId": "0002"
        }
      ]
    },
    {
      "index": 1,
      "location": "0000",
      "models": [
        {
          "modelId": "1001"
        }
      ]
    },
    {
      "index": 2,
      "location": "0000",
      "models": [
        {
          "modelId": "1001"
        }
      ]
    }
  ]
}
In [16]: cc.appkey_add(0)

In [17]: 2019-02-27 19:43:20,485 - INFO - COM22: PacketSend: {'token': 6}
2019-02-27 19:43:20,529 - INFO - COM22: {event: MeshTxComplete, data: {'token': 6}}
2019-02-27 19:43:20,555 - INFO - COM22.ConfigurationClient: Appkey status: AccessStatus.SUCCESS
2019-02-27 19:43:20,561 - INFO - COM22.ConfigurationClient: Appkey add 0 succeded for subnet 0 at node 0011
In [17]: cc.model_app_bind(db.nodes[1].unicast_address + 1, 0, mt.ModelId(0x10
    ...: 01))

In [18]: 2019-02-27 19:43:28,291 - INFO - COM22: PacketSend: {'token': 7}
2019-02-27 19:43:28,304 - INFO - COM22: {event: MeshTxComplete, data: {'token': 7}}
2019-02-27 19:43:28,319 - INFO - COM22.ConfigurationClient: Model app bind status: AccessStatus.SUCCESS
2019-02-27 19:43:28,323 - INFO - COM22.ConfigurationClient: Appkey bind 0 to model 1001 at 0012
In [18]: cc.model_publication_set(db.nodes[1].unicast_address + 1, mt.ModelId(
    ...: 0x1001), mt.Publish(db.nodes[0].unicast_address, index=0, ttl=1))

In [19]: 2019-02-27 19:43:45,194 - INFO - COM22: PacketSend: {'token': 8}
2019-02-27 19:43:45,246 - INFO - COM22: {event: MeshTxComplete, data: {'token': 8}}
2019-02-27 19:43:45,293 - INFO - COM22.ConfigurationClient: Model publication status: AccessStatus.SUCCESS
2019-02-27 19:43:45,297 - INFO - COM22.ConfigurationClient: Publication status
for model 1001 at element 18 to {'address': 0010, 'index': 0, 'ttl': 1, 'period': 0, 'retransmit': {'count': 0, 'interval_steps': 0, 'interval': 50}, 'credentials': <FriendshipCredentials.DISABLED: 0>}
In [19]: cc.publish_set(8, 0)

In [20]: cc.model_publication_set(db.nodes[0].unicast_address, mt.ModelId(0x10
    ...: 00), mt.Publish(db.groups[0].address, index=0, ttl=1))

In [21]: 2019-02-27 19:44:25,785 - INFO - COM22: PacketSend: {'token': 9}
2019-02-27 19:44:25,823 - INFO - COM22: {event: MeshTxComplete, data: {'token': 9}}
2019-02-27 19:44:25,879 - INFO - COM22.ConfigurationClient: Model publication status: AccessStatus.SUCCESS
2019-02-27 19:44:25,883 - INFO - COM22.ConfigurationClient: Publication status
for model 1000 at element 16 to {'address': c001, 'index': 0, 'ttl': 1, 'period': 0, 'retransmit': {'count': 0, 'interval_steps': 0, 'interval': 50}, 'credentials': <FriendshipCredentials.DISABLED: 0>}
In [21]: cc.publish_set(9, 1)

In [22]: cc.model_subscription_add(db.nodes[1].unicast_address + 1, db.groups[
    ...: 0].address, mt.ModelId(0x1001))

In [23]: 2019-02-27 19:44:40,968 - INFO - COM22: PacketSend: {'token': 10}
2019-02-27 19:44:40,987 - INFO - COM22: {event: MeshTxComplete, data: {'token': 10}}
2019-02-27 19:44:41,009 - INFO - COM22.ConfigurationClient: Model subscription
status: AccessStatus.SUCCESS
2019-02-27 19:44:41,012 - INFO - COM22.ConfigurationClient: Added subscription
'c001' to model 1001 at element 0012

Light Switch Client Logs:

<t:          0>, main.c,  318, ----- BLE Mesh Light Switch Client Demo -----
<t:      16877>, main.c,  289, Initializing and adding models
<t:      21702>, mesh_app_utils.c,   65, Device UUID (raw): 3F2E408B740B17468059FDB1F7E63985
<t:      21705>, mesh_app_utils.c,   70, Device UUID : 8B402E3F-0B74-4617-8059-FDB1F7E63985
<t:    5459476>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    5459479>, mesh_provisionee.c,  264, default
<t:    5461213>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    5461215>, mesh_provisionee.c,  200, NRF_MESH_PROV_EVT_INVITE_RECEIVED
<t:    5463901>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    5463904>, mesh_provisionee.c,  211, NRF_MESH_PROV_EVT_START_RECEIVED
<t:    5547153>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    5547155>, mesh_provisionee.c,  255, NRF_MESH_PROV_EVT_COMPLETE
<t:    5547972>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    5547974>, mesh_provisionee.c,  222, NRF_MESH_PROV_EVT_LINK_CLOSED
<t:    5793834>, main.c,  112, Successfully provisioned
<t:    5793839>, main.c,  123, Node Address: 0x0011 
<t:    7755050>, proxy.c,  638, Adv timeout
<t:    9048864>, config_server.c,  623, dsm_appkey_add(appkey_handle:0 appkey_index:0)
<t:    9303854>, config_server.c, 2415, Access  Info:
		element_index=1		model_id = 1001-FFFF		model_handle=2
<t:   11996461>, main.c,  200, Button 0 pressed
<t:   11996464>, main.c,  227, Sending msg: ONOFF SET 1
<t:   11997685>, main.c,  147, Acknowledged transfer success.
<t:   11997688>, main.c,  173, OnOff server: 0x0010, Present OnOff: 0, Target OnOff: 1, Remaining Time: 100 ms
<t:   11998825>, main.c,  173, OnOff server: 0x0010, Present OnOff: 1, Target OnOff: 1, Remaining Time: 100 ms
<t:   12002451>, main.c,  178, OnOff server: 0x0010, Present OnOff: 1
<t:   12083690>, main.c,  200, Button 1 pressed
<t:   12083693>, main.c,  227, Sending msg: ONOFF SET 0
<t:   12096556>, main.c,  178, OnOff server: 0x0010, Present OnOff: 0
<t:   12314691>, main.c,  147, Acknowledged transfer success.
<t:   12314693>, main.c,  173, OnOff server: 0x0010, Present OnOff: 0, Target OnOff: 0, Remaining Time: 100 ms
<t:   12320163>, main.c,  178, OnOff server: 0x0010, Present OnOff: 0
<t:   14129667>, proxy.c,  579, Connected
<t:   14154710>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:   14399808>, mesh_gatt.c,  449, Write Event Fired<t:   14399814>, mesh_gatt.c,  455, Valid PDU Length and Type<t:   14399816>, mesh_gatt.c,  465, RX not in progress, First Segment<t:   14399819>, proxy.c,  611, RX
<t:   14399821>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:   14686524>, mesh_gatt.c,  449, Write Event Fired<t:   14686530>, mesh_gatt.c,  455, Valid PDU Length and Type<t:   14686533>, mesh_gatt.c,  465, RX not in progress, First Segment<t:   14686535>, proxy.c,  611, RX
<t:   14686537>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:     186660>, proxy.c,  595, Disconnected
<t:    2946931>, proxy.c,  579, Connected
<t:    2974858>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    3315962>, mesh_gatt.c,  449, Write Event Fired<t:    3315968>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    3315970>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    3315973>, proxy.c,  611, RX
<t:    3315975>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    3397881>, mesh_gatt.c,  449, Write Event Fired<t:    3397887>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    3397889>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    3397892>, proxy.c,  611, RX
<t:    3397894>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    3660024>, proxy.c,  595, Disconnected
<t:    7928682>, proxy.c,  579, Connected
<t:    7956842>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    8288444>, mesh_gatt.c,  449, Write Event Fired<t:    8288450>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    8288452>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    8288455>, proxy.c,  611, RX
<t:    8288456>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    8337595>, mesh_gatt.c,  449, Write Event Fired<t:    8337601>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    8337604>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    8337606>, proxy.c,  611, RX
<t:    8337608>, proxy.c,  553, RX GATT PDU type 0x0, len 22

Light Switch Server Logs:

<t:          0>, main.c,  239, ----- BLE Mesh Light Switch Server Demo -----
<t:      17626>, main.c,  219, Initializing and adding models
<t:      17629>, main.c,  114, App OnOff Model Handle: 2
<t:      22512>, mesh_app_utils.c,   65, Device UUID (raw): 2B7A78CB8012BA4486ACB023630C3875
<t:      22515>, mesh_app_utils.c,   70, Device UUID : CB787A2B-1280-44BA-86AC-B023630C3875
<t:    3676619>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    3676622>, mesh_provisionee.c,  264, default
<t:    3676977>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    3676980>, mesh_provisionee.c,  200, NRF_MESH_PROV_EVT_INVITE_RECEIVED
<t:    3679314>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    3679316>, mesh_provisionee.c,  211, NRF_MESH_PROV_EVT_START_RECEIVED
<t:    3757680>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    3757683>, mesh_provisionee.c,  255, NRF_MESH_PROV_EVT_COMPLETE
<t:    3758621>, mesh_provisionee.c,  196, START prov_evt_handler
<t:    3758624>, mesh_provisionee.c,  222, NRF_MESH_PROV_EVT_LINK_CLOSED
<t:    4008306>, main.c,  199, Successfully provisioned
<t:    4008311>, main.c,  210, Node Address: 0x0010 
<t:    5970228>, proxy.c,  638, Adv timeout
<t:    7146480>, config_server.c,  623, dsm_appkey_add(appkey_handle:0 appkey_index:0)
<t:    7577640>, config_server.c, 2415, Access  Info:
		element_index=0		model_id = 1000-FFFF		model_handle=2
<t:   11581431>, generic_onoff_server.c,  136, Server: transition_time_ms = 64
<t:   11581434>, generic_onoff_server.c,  137, Server: delay_ms = 32
<t:   11581437>, app_onoff.c,  204, msg: SET: 1
<t:   11583084>, main.c,   96, Setting GPIO value: 1
<t:   11675923>, generic_onoff_server.c,  136, Server: transition_time_ms = 64
<t:   11675926>, generic_onoff_server.c,  137, Server: delay_ms = 32
<t:   11675929>, app_onoff.c,  204, msg: SET: 0
<t:   11680853>, main.c,   96, Setting GPIO value: 0
<t:   11898948>, generic_onoff_server.c,  136, Server: transition_time_ms = 64
<t:   11898952>, generic_onoff_server.c,  137, Server: delay_ms = 32
<t:   11898954>, app_onoff.c,  204, msg: SET: 0
<t:   11903879>, main.c,   96, Setting GPIO value: 0
<t:     754803>, proxy.c,  579, Connected
<t:     779957>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    1810824>, mesh_gatt.c,  449, Write Event Fired<t:    1810830>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    1810833>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    1810835>, proxy.c,  611, RX
<t:    1810837>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    1917319>, mesh_gatt.c,  449, Write Event Fired<t:    1917325>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    1917327>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    1917330>, proxy.c,  611, RX
<t:    1917332>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    2220422>, proxy.c,  595, Disconnected
<t:    4586245>, proxy.c,  579, Connected
<t:    4613772>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    4931939>, mesh_gatt.c,  449, Write Event Fired<t:    4931946>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    4931948>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    4931951>, proxy.c,  611, RX
<t:    4931952>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    5153121>, mesh_gatt.c,  449, Write Event Fired<t:    5153127>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    5153130>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    5153133>, proxy.c,  611, RX
<t:    5153134>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    5800285>, proxy.c,  595, Disconnected
<t:    6326083>, proxy.c,  579, Connected
<t:    6353738>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    6553939>, mesh_gatt.c,  449, Write Event Fired<t:    6553943>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    6553945>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    6553948>, proxy.c,  611, RX
<t:    6553954>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    6685009>, mesh_gatt.c,  449, Write Event Fired<t:    6685015>, mesh_gatt.c,  455, Valid PDU Length and Type<t:    6685017>, mesh_gatt.c,  465, RX not in progress, First Segment<t:    6685020>, proxy.c,  611, RX
<t:    6685022>, proxy.c,  553, RX GATT PDU type 0x0, len 22
<t:    7102798>, proxy.c,  595, Disconnected

Serial Example logs (provisioner in the PyACI script):

<t:          0>, main.c,   77, ----- Bluetooth Mesh Serial Interface Application -----
<t:      13394>, main.c,   63, Enabling ECDH offloading...
<t:      13397>, main.c,   66, Initializing serial interface...
<t:      13399>, serial_handler_prov.c,  267, Generating encryption keypair...
<t:      18240>, main.c,   86, Initialization complete!
<t:      18243>, mesh_app_utils.c,   65, Device UUID (raw): 645DAD1ABA4EDF4C947905A8F7E66189
<t:      18247>, mesh_app_utils.c,   70, Device UUID : 1AAD5D64-4EBA-4CDF-9479-05A8F7E66189
<t:      18256>, main.c,   97, Bluetooth Mesh Serial Interface Application started!
<t:    7340560>, net_packet.c,  230, Unencrypted data: : 00018000000212270A3B324529EC8E7DE082
<t:    7340565>, transport.c,  849, Got segment 0
<t:    7341500>, net_packet.c,  230, Unencrypted data: : 000180000022C86C0C0408CE263E4CC1F23C
<t:    7341504>, transport.c,  849, Got segment 1
<t:    7342396>, net_packet.c,  230, Unencrypted data: : 000180000042CACB
<t:    7342399>, transport.c,  849, Got segment 2
<t:    7342410>, transport.c,  934, Message decrypted
<t:    8047172>, transport.c, 1233, TX:SAR packet: 88BDA930BEFF779CF7AD9D53EF1269A1E3E0B3484BE4965B
<t:    8048569>, net_packet.c,  230, Unencrypted data: : 000100000C00000003
<t:    8049526>, net_packet.c,  230, Unencrypted data: : 000100A97A75792EE6F071400B
<t:    8049532>, transport.c,  934, Message decrypted
<t:    8480187>, net_packet.c,  230, Unencrypted data: : 0001003662A3AA25FC3B9A1271C36EEF
<t:    8480193>, transport.c,  934, Message decrypted
<t:    9318922>, net_packet.c,  230, Unencrypted data: : 0001800000027B4EAB3E37E4E4407399D24E
<t:    9318926>, transport.c,  849, Got segment 0
<t:    9319766>, net_packet.c,  230, Unencrypted data: : 0001800000229E658D41183C229552CDA4EF
<t:    9319770>, transport.c,  849, Got segment 1
<t:    9320661>, net_packet.c,  230, Unencrypted data: : 000180000042F702C8D7BE4541B7BB021B3C
<t:    9320665>, transport.c,  849, Got segment 2
<t:    9320675>, transport.c,  934, Message decrypted
<t:    9533956>, transport.c, 1233, TX:SAR packet: 55A2E9DFFF84A3367CAD0F310ED70632A09EF23E0B01066F
<t:    9535403>, net_packet.c,  230, Unencrypted data: : 000100002000000003
<t:    9536166>, net_packet.c,  230, Unencrypted data: : 0001008089882DC2AD15719053
<t:    9536172>, transport.c,  934, Message decrypted
<t:    9790603>, net_packet.c,  230, Unencrypted data: : 0001001F637623DA06E6F3408C6EA8EF
<t:    9790609>, transport.c,  934, Message decrypted
<t:   10343612>, transport.c, 1233, TX:SAR packet: CBCCADDE08CB2443AC1A47E102AC4CF6
<t:   10345295>, net_packet.c,  230, Unencrypted data: : 000100002C00000003
<t:   10346055>, net_packet.c,  230, Unencrypted data: : 000180001C016C9B407512F5C27B51DD3651
<t:   10346059>, transport.c,  849, Got segment 0
<t:   10346772>, net_packet.c,  230, Unencrypted data: : 000180001C2120B68E248FB4
<t:   10346776>, transport.c,  849, Got segment 1
<t:   10346785>, transport.c,  934, Message decrypted
<t:   11673682>, transport.c, 1233, TX:SAR packet: F260072C4CA5FCB7D58D2D4763561131
<t:   11674907>, net_packet.c,  230, Unencrypted data: : 000100003800000003
<t:   11675842>, net_packet.c,  230, Unencrypted data: : 000180001C0111384FCEF72BDD4042C05BE5
<t:   11675846>, transport.c,  849, Got segment 0
<t:   11676630>, net_packet.c,  230, Unencrypted data: : 000180001C2128433D39634E
<t:   11676634>, transport.c,  849, Got segment 1
<t:   11676643>, transport.c,  934, Message decrypted
<t:   12172505>, net_packet.c,  230, Unencrypted data: : 000100185FCC85BA191A6F979B1001C1
<t:   12172511>, transport.c,  934, Message decrypted
<t:   12483443>, net_packet.c,  230, Unencrypted data: : 00106E43D91F87F5EAE25A8511
<t:   12484072>, net_packet.c,  230, Unencrypted data: : 00126EC200FA2C1FAC59ADE5
<t:   12485212>, net_packet.c,  230, Unencrypted data: : C0016E7CA991517687767870
<t:   12488836>, net_packet.c,  230, Unencrypted data: : C0016E50DB34AE3B4C31
<t:   12570678>, net_packet.c,  230, Unencrypted data: : 00106E5DBF7DA94652141AAC73
<t:   12577896>, net_packet.c,  230, Unencrypted data: : 00106E10D4EC273A9703388739
<t:   12578374>, net_packet.c,  230, Unencrypted data: : 00126E938FC233A8EC4626B7
<t:   12582894>, net_packet.c,  230, Unencrypted data: : C0016E7774C70C76C848
<t:   12584579>, net_packet.c,  230, Unencrypted data: : 00106EBCFE55FE914007419AF2
<t:   12599119>, net_packet.c,  230, Unencrypted data: : 00106E0FED2FEC92A79CDE5A89
<t:   12628155>, net_packet.c,  230, Unencrypted data: : 00106E0BE3749C81187E14BBCA
<t:   12685694>, net_packet.c,  230, Unencrypted data: : 00106E49CBE30AF61992504413
<t:   12800920>, net_packet.c,  230, Unencrypted data: : 00106EDFA617626E5AE383FFFD
<t:   12801039>, net_packet.c,  230, Unencrypted data: : 00126E066CC5CDDEE176B3E7
<t:   12806512>, net_packet.c,  230, Unencrypted data: : C0016EDCE1092C357308

Node.js Proxy Client logs:

VM150 app.js:362 setBluetoothButtons: connected=false,selected_device=null
VM150 app.js:412 enableButton: btn_scan
VM150 app.js:406 disableButton: btn_connection
VM150 app.js:406 disableButton: btn_submit
VM150 app.js:270 deriveProxyPdu
VM150 app.js:274 access_payload=d50a0048656c6c6f
VM150 app.js:279 upper_transport_pdu=3b9e1f8b6826d78fe9ec4ef0
VM150 app.js:285 lower_transport_pdu=6e3b9e1f8b6826d78fe9ec4ef0
VM150 app.js:290 EncDST="f646" EncTransportPDU="00431cdbe713ffadcebc718adb"
VM150 app.js:296 obfuscated_ctl_ttl_seq_src="bb5e9a832968"
VM150 app.js:300 finalised_network_pdu=f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM150 app.js:306 proxy_pdu=00f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM150 app.js:270 deriveProxyPdu
VM150 app.js:274 access_payload=82030101
VM150 app.js:279 upper_transport_pdu=6c971ec298b0093c
VM150 app.js:285 lower_transport_pdu=6e6c971ec298b0093c
VM150 app.js:290 EncDST="f646" EncTransportPDU="001415daaee369737d"
VM150 app.js:296 obfuscated_ctl_ttl_seq_src="5abfd964b7cd"
VM150 app.js:300 finalised_network_pdu=f45abfd964b7cdf646001415daaee369737dc9651473
VM150 app.js:306 proxy_pdu=00f45abfd964b7cdf646001415daaee369737dc9651473
VM150 app.js:81 Scanning....
VM150 app.js:87 startScan
VM150 app.js:94 > Name: nRF5x Mesh Switch
VM150 app.js:95 > Id: hFeUTcOXueyLaYz2RZX0mg==
VM150 app.js:96 > Connected: false
VM150 app.js:98 BluetoothDevice {id: "hFeUTcOXueyLaYz2RZX0mg==", name: "nRF5x Mesh Switch", gatt: BluetoothRemoteGATTServer, ongattserverdisconnected: null}
VM150 app.js:111 Connected to hFeUTcOXueyLaYz2RZX0mg==
VM150 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM150 app.js:406 disableButton: btn_scan
VM150 app.js:412 enableButton: btn_connection
VM150 app.js:159 discoverSvcsAndChars server=[object BluetoothRemoteGATTServer]
VM150 app.js:162 Getting Characteristics...
VM150 app.js:165 > Service: 00001828-0000-1000-8000-00805f9b34fb
VM150 app.js:171 >> Characteristic: 00002add-0000-1000-8000-00805f9b34fb
VM150 app.js:171 >> Characteristic: 00002ade-0000-1000-8000-00805f9b34fb
VM150 app.js:181 Last characteristic discovered
VM150 app.js:119 service discovery has completed
VM150 app.js:387 clearMessage
VM150 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM150 app.js:406 disableButton: btn_scan
VM150 app.js:412 enableButton: btn_connection
VM150 app.js:412 enableButton: btn_submit
VM150 app.js:387 clearMessage
VM150 app.js:270 deriveProxyPdu
VM150 app.js:274 access_payload=82030101
VM150 app.js:279 upper_transport_pdu=6c971ec298b0093c
VM150 app.js:285 lower_transport_pdu=6e6c971ec298b0093c
VM150 app.js:290 EncDST="f646" EncTransportPDU="001415daaee369737d"
VM150 app.js:296 obfuscated_ctl_ttl_seq_src="5abfd964b7cd"
VM150 app.js:300 finalised_network_pdu=f45abfd964b7cdf646001415daaee369737dc9651473
VM150 app.js:306 proxy_pdu=00f45abfd964b7cdf646001415daaee369737dc9651473
VM150 app.js:338 sent proxy pdu OK
VM150 app.js:270 deriveProxyPdu
VM150 app.js:274 access_payload=82030101
VM150 app.js:279 upper_transport_pdu=6c971ec298b0093c
VM150 app.js:285 lower_transport_pdu=6e6c971ec298b0093c
VM150 app.js:290 EncDST="f646" EncTransportPDU="001415daaee369737d"
VM150 app.js:296 obfuscated_ctl_ttl_seq_src="5abfd964b7cd"
VM150 app.js:300 finalised_network_pdu=f45abfd964b7cdf646001415daaee369737dc9651473
VM150 app.js:306 proxy_pdu=00f45abfd964b7cdf646001415daaee369737dc9651473
VM150 app.js:338 sent proxy pdu OK
Navigated to https://127.0.0.1:8000/index.htm
VM162 app.js:362 setBluetoothButtons: connected=false,selected_device=null
VM162 app.js:412 enableButton: btn_scan
VM162 app.js:406 disableButton: btn_connection
VM162 app.js:406 disableButton: btn_submit
VM162 app.js:270 deriveProxyPdu
VM162 app.js:274 access_payload=d50a0048656c6c6f
VM162 app.js:279 upper_transport_pdu=3b9e1f8b6826d78fe9ec4ef0
VM162 app.js:285 lower_transport_pdu=6e3b9e1f8b6826d78fe9ec4ef0
VM162 app.js:290 EncDST="f646" EncTransportPDU="00431cdbe713ffadcebc718adb"
VM162 app.js:296 obfuscated_ctl_ttl_seq_src="bb5e9a832968"
VM162 app.js:300 finalised_network_pdu=f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM162 app.js:306 proxy_pdu=00f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM162 app.js:81 Scanning....
VM162 app.js:87 startScan
VM162 app.js:94 > Name: nRF5x Mesh Light
VM162 app.js:95 > Id: jCVVKv7qbtmZ5LoGYylIXg==
VM162 app.js:96 > Connected: false
VM162 app.js:98 BluetoothDevice {id: "jCVVKv7qbtmZ5LoGYylIXg==", name: "nRF5x Mesh Light", gatt: BluetoothRemoteGATTServer, ongattserverdisconnected: null}
VM162 app.js:111 Connected to jCVVKv7qbtmZ5LoGYylIXg==
VM162 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM162 app.js:406 disableButton: btn_scan
VM162 app.js:412 enableButton: btn_connection
VM162 app.js:159 discoverSvcsAndChars server=[object BluetoothRemoteGATTServer]
VM162 app.js:162 Getting Characteristics...
VM162 app.js:165 > Service: 00001828-0000-1000-8000-00805f9b34fb
VM162 app.js:171 >> Characteristic: 00002add-0000-1000-8000-00805f9b34fb
VM162 app.js:171 >> Characteristic: 00002ade-0000-1000-8000-00805f9b34fb
VM162 app.js:181 Last characteristic discovered
VM162 app.js:119 service discovery has completed
VM162 app.js:387 clearMessage
VM162 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM162 app.js:406 disableButton: btn_scan
VM162 app.js:412 enableButton: btn_connection
VM162 app.js:412 enableButton: btn_submit
VM162 app.js:387 clearMessage
VM162 app.js:270 deriveProxyPdu
VM162 app.js:274 access_payload=82030101
VM162 app.js:279 upper_transport_pdu=6c971ec298b0093c
VM162 app.js:285 lower_transport_pdu=6e6c971ec298b0093c
VM162 app.js:290 EncDST="f646" EncTransportPDU="001415daaee369737d"
VM162 app.js:296 obfuscated_ctl_ttl_seq_src="5abfd964b7cd"
VM162 app.js:300 finalised_network_pdu=f45abfd964b7cdf646001415daaee369737dc9651473
VM162 app.js:306 proxy_pdu=00f45abfd964b7cdf646001415daaee369737dc9651473
VM162 app.js:270 deriveProxyPdu
VM162 app.js:274 access_payload=82030101
VM162 app.js:279 upper_transport_pdu=6c971ec298b0093c
VM162 app.js:285 lower_transport_pdu=6e6c971ec298b0093c
VM162 app.js:290 EncDST="f646" EncTransportPDU="001415daaee369737d"
VM162 app.js:296 obfuscated_ctl_ttl_seq_src="5abfd964b7cd"
VM162 app.js:300 finalised_network_pdu=f45abfd964b7cdf646001415daaee369737dc9651473
VM162 app.js:306 proxy_pdu=00f45abfd964b7cdf646001415daaee369737dc9651473
VM162 app.js:338 sent proxy pdu OK
VM162 app.js:270 deriveProxyPdu
VM162 app.js:274 access_payload=82030101
VM162 app.js:279 upper_transport_pdu=6c971ec298b0093c
VM162 app.js:285 lower_transport_pdu=6e6c971ec298b0093c
VM162 app.js:290 EncDST="f646" EncTransportPDU="001415daaee369737d"
VM162 app.js:296 obfuscated_ctl_ttl_seq_src="5abfd964b7cd"
VM162 app.js:300 finalised_network_pdu=f45abfd964b7cdf646001415daaee369737dc9651473
VM162 app.js:306 proxy_pdu=00f45abfd964b7cdf646001415daaee369737dc9651473
VM162 app.js:338 sent proxy pdu OK
Navigated to https://127.0.0.1:8000/index.htm
VM174 app.js:362 setBluetoothButtons: connected=false,selected_device=null
VM174 app.js:412 enableButton: btn_scan
VM174 app.js:406 disableButton: btn_connection
VM174 app.js:406 disableButton: btn_submit
VM174 app.js:270 deriveProxyPdu
VM174 app.js:274 access_payload=d50a0048656c6c6f
VM174 app.js:279 upper_transport_pdu=3b9e1f8b6826d78fe9ec4ef0
VM174 app.js:285 lower_transport_pdu=6e3b9e1f8b6826d78fe9ec4ef0
VM174 app.js:290 EncDST="f646" EncTransportPDU="00431cdbe713ffadcebc718adb"
VM174 app.js:296 obfuscated_ctl_ttl_seq_src="bb5e9a832968"
VM174 app.js:300 finalised_network_pdu=f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM174 app.js:306 proxy_pdu=00f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM174 app.js:81 Scanning....
VM174 app.js:87 startScan
VM174 app.js:94 > Name: nRF5x Mesh Switch
VM174 app.js:95 > Id: hFeUTcOXueyLaYz2RZX0mg==
VM174 app.js:96 > Connected: false
VM174 app.js:98 BluetoothDevice {id: "hFeUTcOXueyLaYz2RZX0mg==", name: "nRF5x Mesh Switch", gatt: BluetoothRemoteGATTServer, ongattserverdisconnected: null}
VM174 app.js:111 Connected to hFeUTcOXueyLaYz2RZX0mg==
VM174 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM174 app.js:406 disableButton: btn_scan
VM174 app.js:412 enableButton: btn_connection
VM174 app.js:159 discoverSvcsAndChars server=[object BluetoothRemoteGATTServer]
VM174 app.js:270 deriveProxyPdu
VM174 app.js:274 access_payload=82020101
VM174 app.js:279 upper_transport_pdu=6c961ec237b67257
VM174 app.js:285 lower_transport_pdu=6e6c961ec237b67257
VM174 app.js:290 EncDST="f646" EncTransportPDU="001414daae4c6f0816"
VM174 app.js:296 obfuscated_ctl_ttl_seq_src="48f15ecdf8bd"
VM174 app.js:300 finalised_network_pdu=f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM174 app.js:306 proxy_pdu=00f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM174 app.js:162 Getting Characteristics...
VM174 app.js:165 > Service: 00001828-0000-1000-8000-00805f9b34fb
VM174 app.js:171 >> Characteristic: 00002add-0000-1000-8000-00805f9b34fb
VM174 app.js:171 >> Characteristic: 00002ade-0000-1000-8000-00805f9b34fb
VM174 app.js:181 Last characteristic discovered
VM174 app.js:119 service discovery has completed
VM174 app.js:387 clearMessage
VM174 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM174 app.js:406 disableButton: btn_scan
VM174 app.js:412 enableButton: btn_connection
VM174 app.js:412 enableButton: btn_submit
VM174 app.js:387 clearMessage
VM174 app.js:270 deriveProxyPdu
VM174 app.js:274 access_payload=82020101
VM174 app.js:279 upper_transport_pdu=6c961ec237b67257
VM174 app.js:285 lower_transport_pdu=6e6c961ec237b67257
VM174 app.js:290 EncDST="f646" EncTransportPDU="001414daae4c6f0816"
VM174 app.js:296 obfuscated_ctl_ttl_seq_src="48f15ecdf8bd"
VM174 app.js:300 finalised_network_pdu=f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM174 app.js:306 proxy_pdu=00f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM174 app.js:338 sent proxy pdu OK
VM174 app.js:270 deriveProxyPdu
VM174 app.js:274 access_payload=82020101
VM174 app.js:279 upper_transport_pdu=6c961ec237b67257
VM174 app.js:285 lower_transport_pdu=6e6c961ec237b67257
VM174 app.js:290 EncDST="f646" EncTransportPDU="001414daae4c6f0816"
VM174 app.js:296 obfuscated_ctl_ttl_seq_src="48f15ecdf8bd"
VM174 app.js:300 finalised_network_pdu=f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM174 app.js:306 proxy_pdu=00f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM174 app.js:338 sent proxy pdu OK
Navigated to https://127.0.0.1:8000/index.htm
VM186 app.js:362 setBluetoothButtons: connected=false,selected_device=null
VM186 app.js:412 enableButton: btn_scan
VM186 app.js:406 disableButton: btn_connection
VM186 app.js:406 disableButton: btn_submit
VM186 app.js:270 deriveProxyPdu
VM186 app.js:274 access_payload=d50a0048656c6c6f
VM186 app.js:279 upper_transport_pdu=3b9e1f8b6826d78fe9ec4ef0
VM186 app.js:285 lower_transport_pdu=6e3b9e1f8b6826d78fe9ec4ef0
VM186 app.js:290 EncDST="f646" EncTransportPDU="00431cdbe713ffadcebc718adb"
VM186 app.js:296 obfuscated_ctl_ttl_seq_src="bb5e9a832968"
VM186 app.js:300 finalised_network_pdu=f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM186 app.js:306 proxy_pdu=00f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM186 app.js:270 deriveProxyPdu
VM186 app.js:274 access_payload=82020101
VM186 app.js:279 upper_transport_pdu=6c961ec237b67257
VM186 app.js:285 lower_transport_pdu=6e6c961ec237b67257
VM186 app.js:290 EncDST="f646" EncTransportPDU="001414daae4c6f0816"
VM186 app.js:296 obfuscated_ctl_ttl_seq_src="48f15ecdf8bd"
VM186 app.js:300 finalised_network_pdu=f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM186 app.js:306 proxy_pdu=00f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM186 app.js:81 Scanning....
VM186 app.js:87 startScan
VM186 app.js:94 > Name: nRF5x Mesh Light
VM186 app.js:95 > Id: jCVVKv7qbtmZ5LoGYylIXg==
VM186 app.js:96 > Connected: false
VM186 app.js:98 BluetoothDevice {id: "jCVVKv7qbtmZ5LoGYylIXg==", name: "nRF5x Mesh Light", gatt: BluetoothRemoteGATTServer, ongattserverdisconnected: null}
VM186 app.js:111 Connected to jCVVKv7qbtmZ5LoGYylIXg==
VM186 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM186 app.js:406 disableButton: btn_scan
VM186 app.js:412 enableButton: btn_connection
VM186 app.js:159 discoverSvcsAndChars server=[object BluetoothRemoteGATTServer]
VM186 app.js:162 Getting Characteristics...
VM186 app.js:165 > Service: 00001828-0000-1000-8000-00805f9b34fb
VM186 app.js:171 >> Characteristic: 00002add-0000-1000-8000-00805f9b34fb
VM186 app.js:171 >> Characteristic: 00002ade-0000-1000-8000-00805f9b34fb
VM186 app.js:181 Last characteristic discovered
VM186 app.js:119 service discovery has completed
VM186 app.js:387 clearMessage
VM186 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM186 app.js:406 disableButton: btn_scan
VM186 app.js:412 enableButton: btn_connection
VM186 app.js:412 enableButton: btn_submit
VM186 app.js:387 clearMessage
VM186 app.js:270 deriveProxyPdu
VM186 app.js:274 access_payload=82020101
VM186 app.js:279 upper_transport_pdu=6c961ec237b67257
VM186 app.js:285 lower_transport_pdu=6e6c961ec237b67257
VM186 app.js:290 EncDST="f646" EncTransportPDU="001414daae4c6f0816"
VM186 app.js:296 obfuscated_ctl_ttl_seq_src="48f15ecdf8bd"
VM186 app.js:300 finalised_network_pdu=f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM186 app.js:306 proxy_pdu=00f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM186 app.js:338 sent proxy pdu OK
VM186 app.js:270 deriveProxyPdu
VM186 app.js:274 access_payload=82020101
VM186 app.js:279 upper_transport_pdu=6c961ec237b67257
VM186 app.js:285 lower_transport_pdu=6e6c961ec237b67257
VM186 app.js:290 EncDST="f646" EncTransportPDU="001414daae4c6f0816"
VM186 app.js:296 obfuscated_ctl_ttl_seq_src="48f15ecdf8bd"
VM186 app.js:300 finalised_network_pdu=f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM186 app.js:306 proxy_pdu=00f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
VM186 app.js:338 sent proxy pdu OK
Navigated to https://127.0.0.1:8000/index.htm
VM198 app.js:362 setBluetoothButtons: connected=false,selected_device=null
VM198 app.js:412 enableButton: btn_scan
VM198 app.js:406 disableButton: btn_connection
VM198 app.js:406 disableButton: btn_submit
VM198 app.js:270 deriveProxyPdu
VM198 app.js:274 access_payload=d50a0048656c6c6f
VM198 app.js:279 upper_transport_pdu=3b9e1f8b6826d78fe9ec4ef0
VM198 app.js:285 lower_transport_pdu=6e3b9e1f8b6826d78fe9ec4ef0
VM198 app.js:290 EncDST="f646" EncTransportPDU="00431cdbe713ffadcebc718adb"
VM198 app.js:296 obfuscated_ctl_ttl_seq_src="bb5e9a832968"
VM198 app.js:300 finalised_network_pdu=f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM198 app.js:306 proxy_pdu=00f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
VM198 app.js:270 deriveProxyPdu
VM198 app.js:274 access_payload=82020001
VM198 app.js:279 upper_transport_pdu=f541da82797a0d62
VM198 app.js:285 lower_transport_pdu=6ef541da82797a0d62
VM198 app.js:290 EncDST="5d9e" EncTransportPDU="008dc31eee02a37723"
VM198 app.js:296 obfuscated_ctl_ttl_seq_src="1e8ae71471c3"
VM198 app.js:300 finalised_network_pdu=f41e8ae71471c35d9e008dc31eee02a37723394a231d
VM198 app.js:306 proxy_pdu=00f41e8ae71471c35d9e008dc31eee02a37723394a231d
VM198 app.js:81 Scanning....
VM198 app.js:87 startScan
VM198 app.js:94 > Name: nRF5x Mesh Light
VM198 app.js:95 > Id: jCVVKv7qbtmZ5LoGYylIXg==
VM198 app.js:96 > Connected: false
VM198 app.js:98 BluetoothDevice {id: "jCVVKv7qbtmZ5LoGYylIXg==", name: "nRF5x Mesh Light", gatt: BluetoothRemoteGATTServer, ongattserverdisconnected: null}
VM198 app.js:111 Connected to jCVVKv7qbtmZ5LoGYylIXg==
VM198 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM198 app.js:406 disableButton: btn_scan
VM198 app.js:412 enableButton: btn_connection
VM198 app.js:159 discoverSvcsAndChars server=[object BluetoothRemoteGATTServer]
VM198 app.js:162 Getting Characteristics...
VM198 app.js:165 > Service: 00001828-0000-1000-8000-00805f9b34fb
VM198 app.js:171 >> Characteristic: 00002add-0000-1000-8000-00805f9b34fb
VM198 app.js:171 >> Characteristic: 00002ade-0000-1000-8000-00805f9b34fb
VM198 app.js:181 Last characteristic discovered
VM198 app.js:119 service discovery has completed
VM198 app.js:387 clearMessage
VM198 app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
VM198 app.js:406 disableButton: btn_scan
VM198 app.js:412 enableButton: btn_connection
VM198 app.js:412 enableButton: btn_submit
VM198 app.js:387 clearMessage
VM198 app.js:270 deriveProxyPdu
VM198 app.js:274 access_payload=82020001
VM198 app.js:279 upper_transport_pdu=f541da82797a0d62
VM198 app.js:285 lower_transport_pdu=6ef541da82797a0d62
VM198 app.js:290 EncDST="5d9e" EncTransportPDU="008dc31eee02a37723"
VM198 app.js:296 obfuscated_ctl_ttl_seq_src="1e8ae71471c3"
VM198 app.js:300 finalised_network_pdu=f41e8ae71471c35d9e008dc31eee02a37723394a231d
VM198 app.js:306 proxy_pdu=00f41e8ae71471c35d9e008dc31eee02a37723394a231d
VM198 app.js:338 sent proxy pdu OK
VM198 app.js:270 deriveProxyPdu
VM198 app.js:274 access_payload=82020001
VM198 app.js:279 upper_transport_pdu=f541da82797a0d62
VM198 app.js:285 lower_transport_pdu=6ef541da82797a0d62
VM198 app.js:290 EncDST="5d9e" EncTransportPDU="008dc31eee02a37723"
VM198 app.js:296 obfuscated_ctl_ttl_seq_src="1e8ae71471c3"
VM198 app.js:300 finalised_network_pdu=f41e8ae71471c35d9e008dc31eee02a37723394a231d
VM198 app.js:306 proxy_pdu=00f41e8ae71471c35d9e008dc31eee02a37723394a231d
VM198 app.js:338 sent proxy pdu OK
Navigated to https://127.0.0.1:8000/index.htm
app.js:362 setBluetoothButtons: connected=false,selected_device=null
app.js:412 enableButton: btn_scan
app.js:406 disableButton: btn_connection
app.js:406 disableButton: btn_submit
app.js:270 deriveProxyPdu
app.js:274 access_payload=d50a0048656c6c6f
app.js:279 upper_transport_pdu=3b9e1f8b6826d78fe9ec4ef0
app.js:285 lower_transport_pdu=6e3b9e1f8b6826d78fe9ec4ef0
app.js:290 EncDST="f646" EncTransportPDU="00431cdbe713ffadcebc718adb"
app.js:296 obfuscated_ctl_ttl_seq_src="bb5e9a832968"
app.js:300 finalised_network_pdu=f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
app.js:306 proxy_pdu=00f4bb5e9a832968f64600431cdbe713ffadcebc718adb5ea8b4b2
app.js:81 Scanning....
app.js:87 startScan
app.js:94 > Name: nRF5x Mesh Switch
app.js:95 > Id: hFeUTcOXueyLaYz2RZX0mg==
app.js:96 > Connected: false
app.js:98 BluetoothDevice {id: "hFeUTcOXueyLaYz2RZX0mg==", name: "nRF5x Mesh Switch", gatt: BluetoothRemoteGATTServer, ongattserverdisconnected: null}
app.js:111 Connected to hFeUTcOXueyLaYz2RZX0mg==
app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
app.js:406 disableButton: btn_scan
app.js:412 enableButton: btn_connection
app.js:159 discoverSvcsAndChars server=[object BluetoothRemoteGATTServer]
app.js:162 Getting Characteristics...
app.js:165 > Service: 00001828-0000-1000-8000-00805f9b34fb
app.js:171 >> Characteristic: 00002add-0000-1000-8000-00805f9b34fb
app.js:171 >> Characteristic: 00002ade-0000-1000-8000-00805f9b34fb
app.js:181 Last characteristic discovered
app.js:119 service discovery has completed
app.js:387 clearMessage
app.js:362 setBluetoothButtons: connected=true,selected_device=[object BluetoothDevice]
app.js:406 disableButton: btn_scan
app.js:412 enableButton: btn_connection
app.js:412 enableButton: btn_submit
app.js:387 clearMessage
app.js:270 deriveProxyPdu
app.js:274 access_payload=82020101
app.js:279 upper_transport_pdu=6c961ec237b67257
app.js:285 lower_transport_pdu=6e6c961ec237b67257
app.js:290 EncDST="f646" EncTransportPDU="001414daae4c6f0816"
app.js:296 obfuscated_ctl_ttl_seq_src="48f15ecdf8bd"
app.js:300 finalised_network_pdu=f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
app.js:306 proxy_pdu=00f448f15ecdf8bdf646001414daae4c6f08160dd36ffe
app.js:270 deriveProxyPdu
app.js:274 access_payload=82020101
app.js:279 upper_transport_pdu=f541db8214c399ff
app.js:285 lower_transport_pdu=6ef541db8214c399ff
app.js:290 EncDST="5d9e" EncTransportPDU="008dc31fee6f1ae3be"
app.js:296 obfuscated_ctl_ttl_seq_src="aeccc966a33b"
app.js:300 finalised_network_pdu=f4aeccc966a33b5d9e008dc31fee6f1ae3beff0053f5
app.js:306 proxy_pdu=00f4aeccc966a33b5d9e008dc31fee6f1ae3beff0053f5
app.js:270 deriveProxyPdu
app.js:274 access_payload=82020101
app.js:279 upper_transport_pdu=f541db8214c399ff
app.js:285 lower_transport_pdu=6ef541db8214c399ff
app.js:290 EncDST="5d9e" EncTransportPDU="008dc31fee6f1ae3be"
app.js:296 obfuscated_ctl_ttl_seq_src="aeccc966a33b"
app.js:300 finalised_network_pdu=f4aeccc966a33b5d9e008dc31fee6f1ae3beff0053f5
app.js:306 proxy_pdu=00f4aeccc966a33b5d9e008dc31fee6f1ae3beff0053f5
app.js:338 sent proxy pdu OK
app.js:270 deriveProxyPdu
app.js:274 access_payload=82020101
app.js:279 upper_transport_pdu=f541db8214c399ff
app.js:285 lower_transport_pdu=6ef541db8214c399ff
app.js:290 EncDST="5d9e" EncTransportPDU="008dc31fee6f1ae3be"
app.js:296 obfuscated_ctl_ttl_seq_src="aeccc966a33b"
app.js:300 finalised_network_pdu=f4aeccc966a33b5d9e008dc31fee6f1ae3beff0053f5
app.js:306 proxy_pdu=00f4aeccc966a33b5d9e008dc31fee6f1ae3beff0053f5
app.js:338 sent proxy pdu OK

  • Hi Darien, 

    Could you give me some more information on: 

    1. How do you configure/provision the  Node.js Proxy Client  ? Have you made sure you have the same network key and appkey as on the mesh network you created ? 

    2. Which message did you sent  ? I know it's a GenericOnOff Proxy PDU but which exact message did you send ? To which address ? 

    Regarding your question, the answer is yes. Isn't it the main purpose of a proxy node ? To be able to forward message from the  Mesh Data Proxy In characteristic to the mesh network. Actually you can test this by using our app, you can connect to one single proxy node and then can do configuration on other nodes and you can turn off and on the light of that node. All of those tasks use the Proxy feature on the proxy node. 

  • Hi Hung, sure, gladly:

    1. I haven't provisioned or configured the Node.js Proxy client. It's a little unclear to me whether this needs to be done or not... According to the Bluetooth Mesh Profile Specification, a device must be provisioned to communicate with the mesh via a proxy node, but if that's the case, that defeats the purpose of the proxy node. The purpose of the proxy node is to allow BLE Devices without a mesh stack to be able to communicate with the mesh. If so, why do we need to make the proxy client part of the mesh? I mean assuming we did, we could just then communicate with the mesh via mesh. 

    And yes, it uses the same network key and app key.

    2. It's a GenericOnOff Set Message with the value of ON. I modified the DST portion of the proxy PDU to send to 2ADD, the Mesh Proxy Data In characteristic. The PDU can be seen above, both encrypted and unencrypted. I've sent a Set Acknowledged and Set Unacknowledged. 

    When you say "Actually you can test this by using our app" are you referring to the nRF Connect app? I'm interested only in sending data to a GATT characteristic and seeing results in the mesh. Furthermore, I have tried this from the nRF Connect app. I have provisioned the nodes via the interactive pyaci script, then scanned for them via nRF Connect, observed that once connected to the node it has the Mesh Proxy Data In characteristic, and then tried to write to that characteristic via nRF Connect. Upon writing to Mesh Proxy Data In from nRF Connect, the device disconnects. This seems to be a known problem... I'm having issues finding the exact ticket on the DevZone but I've seen multiple others struggle with this. If you're suggesting testing this via the nRF Mesh App and not the nRF Connect app, that is not what I'm aiming to do. I'm aiming to write to Mesh Data Proxy In from a BLE only device that is not part of the mesh.

    Thank you so much for your time.

  • One other thing: I understand that Nordic has AES-CCM and AES_CMAC encryption functions in the core stack... I assume the encryption algorithms I'm using on the Node.js side need to use the same salts correct? Could that be another reason the messages are Received (i get an RX log statement from proxy.c) but don't actually turn the LED on?

  • Hi Darien,

    The purpose of a Proxy Node is defined as follow in the spec: 

    The proxy protocol enables nodes to send and receive Network PDUs, mesh beacons, proxy configuration messages and Provisioning PDUs over a connection-oriented bearer.

    It's not about how to let a node which is not part of Mesh network to interact with the mesh network. No, it's about allowing a node that doesn't support native mesh (ADV bearer) to interact with other nodes via BLE.

    So, on the proxy client you would need all the encryption keys as a normal node has. I think this is mentioned in the Proxy Kit documentation. There is a screen where you need to enter all the keys needed. 

    I would suggest you to try our nRF Mesh app. This is an example showing how you can send mesh packet from a BLE device. nRFConnect won't be able to do mesh, a mesh stack still needed on the proxy client (BLE device)

  • Yes I've added the same keys that were assigned during provisioning. And yes, that's the understanding I've arrived at.

    In my case:

    BLE Device without native mesh = Node.js Proxy Client sending network PDUs via BLE

    'other nodes' = Nordic's Proxy Server, the light switch example

    I've got the Node.js proxy client working thanks to one of our engineers, he found a bug in the Mesh Kit provided by Bluetooth, the SEQ was not being incremented. It is working now - I am able to send a Generic OnOff Set Unacknowledged to the light switch server via BLE, and the LED changes accordingly, and I did not have to provision or configure the Node.js Proxy Client.

    Thank you for your time!

Related