Alexa Identify Cluster

nRF Connect SDK v1.8.0, Zephyr, Zigbee, ZBOSS

I have an issue with Alexa Echo Gen 4 Zigbee Discovery and  a malformed packet when modifying the nrf/samples/zigbee/light_bulb to be a Door Lock instead of a Light Bulb.


I am using the nRF Zigbee sniffer to analyze the transactions during device discovery.  Once Alexa discovers the Lock, it sends


Alexa:


Command: Identify (0x00)

Payload:

    Identify Time: 3 seconds


Lock replies:


Command: Default Response (0x0b)

Response to Command: 0x00

Status: Success (0x00)


... about 2 seconds go by ...


Alexa:


Command: Read Attributes (0x00)

Attribute: Identify Time (0x0000)


Lock replies [Malformed Packet]


Command: Read Attributes Response (0x01)

Status Record:

    Attribute: Identify Time (0x0000)

    Status: Success (0x00)

    Data Type: 8-bit Bitmap (0x18)


I believe that this is the cause of the main problem which is that the Alexa app won’t interact with the Lock because “Device doesn’t support requested value”.  There are no other transactions that indicate problems, e.g. Alexa is mostly polling for Lock state which the Lock is happily replying to.

To further isolate the problem, I have built the application with the light bulb example only slightly modified to fit in the wider Zephyr application framework (and I don’t have any buttons or lights on my HW).


Alexa:


Command: Identify (0x00)

Payload:

    Identify Time: 3 seconds


Lock replies:


Command: Default Response (0x0b)

Response to Command: 0x00

Status: Success (0x00)


... about 2 seconds go by ...


Alexa:


Command: Read Attributes (0x00)

Attribute: Identify Time (0x0000)


Lock replies:

Command: Read Attributes Response (0x01)
    Attribute: Identify Time (0x0000)
    Status: Success (0x00)
    Data Type: 16-bit Unsigned Integer (0x21)
    Identify Time: 1 seconds

So here we see the expected response provided by the light bulb example returns the correct type according to the Zigbee specification.  I will continue digging into this but I am stumped.  I would LOVE to be able to intercept the Read Attribute to the Identify Cluster so that I can respond correctly but I cannot figure out how to hook into it.

J.P.

Parents
  • Small update: I have put the sniffer on a USB DK dongle and tested the samples/zigbee/light_bulb example "modified to be a lock" on the 52840 DK confirming the same interaction with Alexa.  I will proceed to put the Zigbee shell example on the DK as Marte has recommended: 

    """
    If so, can you test by programming the Zigbee shell sample on one of them, and then send read attribute command (zcl attr read) to the lock device and see if the data type is still incorrect?
    """

Reply
  • Small update: I have put the sniffer on a USB DK dongle and tested the samples/zigbee/light_bulb example "modified to be a lock" on the 52840 DK confirming the same interaction with Alexa.  I will proceed to put the Zigbee shell example on the DK as Marte has recommended: 

    """
    If so, can you test by programming the Zigbee shell sample on one of them, and then send read attribute command (zcl attr read) to the lock device and see if the data type is still incorrect?
    """

Children
No Data
Related