nRF5 SDK for Mesh v5.0.0 support with Amazon echo device

Hi

According to Amazon documentation, it is possible to connect a smart home device to Alexa with the Bluetooth Low-Energy (BLE) mesh wireless communication technology.

These are the mesh requirements:

Bluetooth requirements
The Amazon Echo supports the BLE Mesh v1.1 protocol defined by the Bluetooth Special Interest Group (SIG).

For details about BLE Mesh v1.1, see the Bluetooth Specification List and the following specifications:

Mesh Profile 1.0.1
Mesh Model 1.0.1
Mesh Device Properties 1.1
Mesh Configuration Database 1.0

https://developer.amazon.com/en-US/docs/alexa/smarthome/bluetooth-support.html

It seems that the nRF5 SDK for Mesh complies with these premises. I have tried running a light switch client from the nRF5 SDK for Mesh v5.0.0 on an nRF52dk but it could not be detected while scanning for devicesc by any of my echo devices (none of them are 1st gen). The device can be detected on the nRF mesh ios app.

I have attached below the RTT logs while running a scan from Alexa environment and also from the nRF mesh app.

Are any of the mesh samples compatible with Amazon Echo devices? If not, how to make them compatible?

Thanks

<t:          0>, main.c,  369, ----- BLE Mesh Light Switch Client Demo -----
<t:      13023>, main.c,  328, Initializing and adding models
<t:      19310>, mesh_app_utils.c,   66, Device UUID (raw): A8FBE423752045ACAF3F959D76A591D7
<t:      19314>, mesh_app_utils.c,   67, Device UUID : A8FBE423-7520-45AC-AF3F-959D76A591D7
<t:      19326>, main.c,  416, 
		------------------------------------------------------------------------------------
		 Button/RTT 1) Send a message to the odd group (address: 0xC003) to turn on LED 1.
		 Button/RTT 2) Send a message to the odd group (address: 0xC003) to turn off LED 1.
		 Button/RTT 3) Send a message to the even group (address: 0xC002) to turn on LED 1.
		 Button/RTT 4) Send a message to the even group (address: 0xC002) to turn off LED 1.
		------------------------------------------------------------------------------------
<t:    5240729>, mesh_gatt.c,  576, New MTU: 66
<t:    5242210>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    5317903>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    5352872>, main.c,  138, Successfully provisioned
<t:    5352878>, main.c,  133, Node Address: 0x04E5 
<t:    5359834>, proxy.c,  632, Connected
<t:    5368828>, mesh_gatt.c,  576, New MTU: 66
<t:    5369573>, proxy.c,  648, Disconnected
<t:    5566814>, proxy.c,  632, Connected
<t:    5576185>, mesh_gatt.c,  576, New MTU: 66
<t:    5576923>, proxy.c,  670, TX ready
<t:    5576933>, proxy.c,  683, TX complete
<t:    5577434>, proxy.c,  675, RX
<t:    5577438>, proxy.c,  606, RX GATT PDU type 0x2, len 20
<t:    5577457>, proxy.c,  683, TX complete
<t:    5577689>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    5587901>, proxy.c,  675, RX
<t:    5587905>, proxy.c,  606, RX GATT PDU type 0x0, len 29
<t:    5601029>, proxy.c,  675, RX
<t:    5601033>, proxy.c,  606, RX GATT PDU type 0x0, len 29
<t:    5601067>, proxy.c,  675, RX
<t:    5601071>, proxy.c,  606, RX GATT PDU type 0x0, len 21
<t:    5601102>, config_server.c,  630, dsm_appkey_add(appkey_handle:0 appkey_index:0)
<t:    5601117>, proxy.c,  683, TX complete
<t:    5601122>, proxy.c,  683, TX complete
<t:    5614134>, proxy.c,  675, RX
<t:    5614138>, proxy.c,  606, RX GATT PDU type 0x0, len 21
<t:    5614181>, proxy.c,  683, TX complete
<t:    5614187>, proxy.c,  683, TX complete
<t:    5614192>, proxy.c,  683, TX complete
<t:    5627242>, proxy.c,  675, RX
<t:    5627245>, proxy.c,  606, RX GATT PDU type 0x0, len 24
<t:    5627281>, proxy.c,  675, RX
<t:    5627285>, proxy.c,  606, RX GATT PDU type 0x0, len 26
<t:    5627298>, config_server.c, 2553, Access  Info:
		element_index=0		model_id = 2-FFFF		model_handle=1
<t:    5627324>, proxy.c,  675, RX
<t:    5627326>, proxy.c,  606, RX GATT PDU type 0x0, len 24
<t:    5627337>, proxy.c,  683, TX complete
<t:    5633795>, proxy.c,  675, RX
<t:    5633798>, proxy.c,  606, RX GATT PDU type 0x0, len 22
<t:    5633831>, proxy.c,  683, TX complete
<t:    5642949>, proxy.c,  675, RX
<t:    5642953>, proxy.c,  606, RX GATT PDU type 0x0, len 26
<t:    5642986>, proxy.c,  683, TX complete
<t:    5646904>, proxy.c,  648, Disconnected
<t:    5778597>, proxy.c,  632, Connected
<t:    5787944>, mesh_gatt.c,  576, New MTU: 66
<t:    5788682>, proxy.c,  670, TX ready
<t:    5788693>, proxy.c,  683, TX complete
<t:    5789199>, proxy.c,  675, RX
<t:    5789203>, proxy.c,  606, RX GATT PDU type 0x2, len 40
<t:    5789224>, proxy.c,  683, TX complete
<t:    5789448>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    5865773>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:    5978508>, proxy.c,  675, RX
<t:    5978511>, proxy.c,  606, RX GATT PDU type 0x0, len 22
<t:    6338950>, proxy.c,  675, RX
<t:    6338953>, proxy.c,  606, RX GATT PDU type 0x0, len 23
<t:    6705945>, proxy.c,  675, RX
<t:    6705949>, proxy.c,  606, RX GATT PDU type 0x0, len 23
<t:    7059854>, proxy.c,  675, RX
<t:    7059858>, proxy.c,  606, RX GATT PDU type 0x0, len 23
<t:    7215556>, proxy.c,  683, TX complete
<t:    7420289>, proxy.c,  675, RX
<t:    7420293>, proxy.c,  606, RX GATT PDU type 0x0, len 23
<t:    7780716>, proxy.c,  675, RX
<t:    7780720>, proxy.c,  606, RX GATT PDU type 0x0, len 23
<t:          0>, main.c,  369, ----- BLE Mesh Light Switch Client Demo -----
<t:      13179>, main.c,  328, Initializing and adding models
<t:      19444>, mesh_app_utils.c,   66, Device UUID (raw): A8FBE423752045ACAF3F959D76A591D7
<t:      19448>, mesh_app_utils.c,   67, Device UUID : A8FBE423-7520-45AC-AF3F-959D76A591D7
<t:      19460>, main.c,  416, 
		------------------------------------------------------------------------------------
		 Button/RTT 1) Send a message to the odd group (address: 0xC003) to turn on LED 1.
		 Button/RTT 2) Send a message to the odd group (address: 0xC003) to turn off LED 1.
		 Button/RTT 3) Send a message to the even group (address: 0xC002) to turn on LED 1.
		 Button/RTT 4) Send a message to the even group (address: 0xC002) to turn off LED 1.
		------------------------------------------------------------------------------------
<t:      36019>, mesh_gatt.c,  576, New MTU: 66
<t:     176824>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:     284965>, mesh_gatt.c,  576, New MTU: 66
<t:     757686>, main.c,  138, Successfully provisioned
<t:     757692>, main.c,  133, Node Address: 0x0012 
<t:     771592>, proxy.c,  632, Connected
<t:     784328>, ble_softdevice_support.c,  104, Successfully updated connection parameters
<t:     890503>, mesh_gatt.c,  576, New MTU: 66
<t:    1047772>, proxy.c,  670, TX ready
<t:    1047779>, proxy.c,  683, TX complete
<t:    1063504>, proxy.c,  675, RX
<t:    1063506>, proxy.c,  606, RX GATT PDU type 0x2, len 19
<t:    1063519>, proxy.c,  683, TX complete
<t:    1079239>, proxy.c,  675, RX
<t:    1079246>, proxy.c,  606, RX GATT PDU type 0x2, len 24
<t:    1079259>, proxy.c,  683, TX complete
<t:    1134289>, proxy.c,  675, RX
<t:    1134296>, proxy.c,  606, RX GATT PDU type 0x0, len 21
<t:    1134334>, proxy.c,  683, TX complete
<t:    1134339>, proxy.c,  683, TX complete
<t:    1134345>, proxy.c,  683, TX complete
<t:    1150018>, proxy.c,  675, RX
<t:    1150022>, proxy.c,  606, RX GATT PDU type 0x0, len 24
<t:    1150047>, proxy.c,  675, RX
<t:    1150053>, proxy.c,  606, RX GATT PDU type 0x0, len 20
<t:    1150076>, proxy.c,  683, TX complete

Parents
  • Hi,

    I am afraid we do not have any descriptions, neither in nRF5 SDK for Mesh, nor in nRF Connect SDK, of how to connect a Bluetooth mesh device to an Amazon Echo device. However: From the descriptions in the Amazon developer documentation it does sound like standard Bluetooth mesh devices, such as the ones in the examples in our SDKs, should be compatible with Amazon Echo devices. This means, if using examples that exposes standard Bluetooth mesh models, those should integrate with Amazon Echo devices, yes.

    Both of your logs indicate that a connection is made from a GATT device to the mesh device, but the log from the connection with the iOS connection contains more communication than that with the Echo connection. For instance, the iOS connection log indicates configuration of the mesh device (adding an application key.) It may look like the Echo device is not able to reconnect to the device after provisioning is finished, in order to do configuration of the device. Or, may it be that the provisioner is not actually the Echo device?

    Please note that for new projects we recommend using nRF Connect SDK, as the nRF5 SDK (and with it nRF5 SDK for Mesh) is in maintenance mode. See our nRF Connect SDK and nRF5 SDK statement. Have you tried the same with examples from the nRF Connect SDK?

    Regards,
    Terje

  • Hi Terje,

    Thanks for your reply.

    Our product uses nRF52810 chip. For size purposes we require to use nRF5 SDK for mesh for now. 

    I would appreciate if you could help me with the following:

    1. Does nRF5 SDK for mesh v5.0.0 complies with the following requirements?

    Mesh Profile 1.0.1
    Mesh Model 1.0.1
    Mesh Device Properties 1.1
    Mesh Configuration Database 1.0

    2. How can I debug the connection issues with the Alexa echo device?

    I suppose that I am not the first one to connect an nRF52 chip to an echo device so please confirm if the connection is possible.

    Thank you

  • Hi,

    nRF5 SDK for Mesh v5.0.0 supports Mesh Profile and Mesh Model specifications 1.0.1.

    It does not support Mesh Device Properties 1.1, but it is not needed for the light switch models so that should not be the issue.

    It does not support the Mesh Configuration Database 1.0, which is a specification that was released after the release of nRF5 SDK v5.0.0, but it should not be neeeded on the nRF device side. The Mesh Configuration Database specification covers how provisioners can share the configuration database using a json format. The nRF Mesh app import and export functionality uses this format, so you should be covered there if for instance usin the nRF Mesh app for provisioning the devices, then exporting the configuration database to the Echo device.

    I am not aware of other customers connecting an nRF52 chip to an Echo device using Bluetooth mesh, and there are no other threads here on DevZone indicating anyone has tried or had issues with doing so. It is hard for us to tell if noone have tried, if everyone trying it has succeeded, or if everyone trying it has failed but not used DevZone for finding a solution for it.

    For next debugging steps on the nRF side you can for instance increase log level, or use the nRF Sniffer.

    I am not familiar with Echo development, but if there are logging opportunities from that end then that would probably be the best place to start looking.

    I may be able to get hold of an Echo device of the required generation in order to reproduce, and if so can do an attempt later this week.

    Regards,
    Terje

Reply
  • Hi,

    nRF5 SDK for Mesh v5.0.0 supports Mesh Profile and Mesh Model specifications 1.0.1.

    It does not support Mesh Device Properties 1.1, but it is not needed for the light switch models so that should not be the issue.

    It does not support the Mesh Configuration Database 1.0, which is a specification that was released after the release of nRF5 SDK v5.0.0, but it should not be neeeded on the nRF device side. The Mesh Configuration Database specification covers how provisioners can share the configuration database using a json format. The nRF Mesh app import and export functionality uses this format, so you should be covered there if for instance usin the nRF Mesh app for provisioning the devices, then exporting the configuration database to the Echo device.

    I am not aware of other customers connecting an nRF52 chip to an Echo device using Bluetooth mesh, and there are no other threads here on DevZone indicating anyone has tried or had issues with doing so. It is hard for us to tell if noone have tried, if everyone trying it has succeeded, or if everyone trying it has failed but not used DevZone for finding a solution for it.

    For next debugging steps on the nRF side you can for instance increase log level, or use the nRF Sniffer.

    I am not familiar with Echo development, but if there are logging opportunities from that end then that would probably be the best place to start looking.

    I may be able to get hold of an Echo device of the required generation in order to reproduce, and if so can do an attempt later this week.

    Regards,
    Terje

Children
  • Hi Terje,

    It would be great to have your help. To begin with, I would suggest getting an echo dot. This is the list of ble mesh compatible echos:

    • Echo Plus (all models)
    • Echo Show (all models)
    • Echo (all models except 1st Gen)
    • Echo Dot (all models except 1st Gen)

    I am working on two separate things at the moment:

    1. I am playing with changing authentication config parameters, model, ... to see if I can get the device connected.

    2. See if it is possible to access any ble mesh logs from the alexa environment. (I doubt it...).

    I am sure this is something useful and interesting for devzone

    Thanks for your help

  • Hi Terje,

    Some good progress over here. I have managed to connect the light switch server to my echo. It is detected as a plug.

    For the light switch client. It might be possible that something on the config_server.c upsets the echo configuration. Do you have any hints?

    Thanks

Related