# Clarification of AO setting (API Output Mode)

**URL:** <https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577>\
**Category:** XBee - Zigbee\
**Tags:** zdo, zha, xbee, zigbee\
**Created:** [July 23, 2020, 1:52pm UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577 "2020-07-23T13:52:26Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![eulerlagrange](https://avatars.discourse-cdn.com/v4/letter/e/eb8c5e/32.png) [@eulerlagrange](https://forums.digi.com/u/eulerlagrange)\
**Post date:** [July 23, 2020, 1:52pm UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/1 "2020-07-23T13:52:26Z")

</div>

Could I ask for some more detail on AO mode bit settings please?

According to the documentation:

```
Bit 0 - Output in Native/Explicit API format
Bit 1 - Supported ZDO request pass-through
Bit 2 - Unsupported ZDO request pass-through
Bit 3 - Binding request pass-through
Bit 4 - Echo received supported ZDO requests out the serial port
Bit 5 - Suppress all ZDO messages from being sent out the serial port and disable pass-through

```

So I’d like to know:

- What is “supported” vs “unsupported” ZDO request? Is it that certain ZDP clusters are not supported? Or would a Simple\_Descriptor\_request (Cluster Id 0x0004) for an Endpoint other than E6 or E8 be considered as “unsupported”.
- Is there another type of Zigbee message beyond “supported” and “unsupported” request? For example, I can see Node\_Descriptor\_responses (Cluster Id 0x8002) whether or not Bit 1/2 are set.
- Does pass-through strictly mean that the Xbee’s ZDO takes no notice of it?

I’m looking at developing a simple ZHA device, so my understanding is that I need to implement the ZHA profile on one or more custom endpoints. So since the Xbee’s ZDO only knows about E6 and E8 endpoints, do I need to turn on bit 1 (Supported ZDO pass-thru) and, in my host program, respond to the Active\_EP\_request (0x0005) by supplying my endpoint list, and respond to the Simple\_Desc\_request (0x0004) by supplying the profile,clusters,etc for each of my endpoints?

Having turned on bit 1 (Supported ZDO pass-thru) it means I’ll also need to handle any other ZDP commands that the Xbee would have handled automatically. Is that correct? So I’m thinking of the other boilerplate stuff like IEEE\_addr\_req, NWK\_addr\_req, Node\_desc, etc, would need to be explicitly handled. At least until, I turn bit 1 off again.

I know there’s a few Xbee libraries around, but I’m just thinking through what needs to be implemented and what I can assume the module can carry on doing for me.

---

<div class="post-metadata">

**Author:** ![mvut](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.digi.com/mvut/32/31_2.png) [@mvut](https://forums.digi.com/u/mvut)\
**Post date:** [July 23, 2020, 2:25pm UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/2 "2020-07-23T14:25:14Z")

</div>

Supported vs not supported references the Digi application directly on the XBee product.

Yes, pass thru means just that. The xbee app ignores the ZDO request and passes it out the UART for an external application to process.

You would want bits 2 and 3

---

<div class="post-metadata">

**Author:** ![eulerlagrange](https://avatars.discourse-cdn.com/v4/letter/e/eb8c5e/32.png) [@eulerlagrange](https://forums.digi.com/u/eulerlagrange)\
**Post date:** [July 28, 2020, 9:21am UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/3 "2020-07-28T09:21:15Z")

</div>

That answer invites a homologous question, which is:

- what is a cluster that “references the Digi application directly on the XBee product” ?

There’s few dozen clusters that are specified by ZigBee as part of the ZDP; isn’t there _any_ documentation on how the XBee’s ZDO handles these individually and whether they fall into the supported/unsupported/other category?

I’m trying to find this out asynchronously to waiting for an answer, by experimenting with firing various clusters at my XBee, but it would be good to get this more on a manufacturer’s spec basis, so we can do grown up stuff, like change management, QA, …

---

<div class="post-metadata">

**Author:** ![mvut](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.digi.com/mvut/32/31_2.png) [@mvut](https://forums.digi.com/u/mvut)\
**Post date:** [July 28, 2020, 9:26am UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/4 "2020-07-28T09:26:36Z")

</div>

Try [https://www.digi.com/resources/documentation/digidocs/90001539/#reference/r\_zb\_zdo\_transmissions.htm%3FTocPath%3DTransmission%252C%2520addressing%252C%2520and%2520routing|ZDO%2520transmissions|\_\_\_\_\_0](https://www.digi.com/resources/documentation/digidocs/90001539/#reference/r_zb_zdo_transmissions.htm%3FTocPath%3DTransmission%252C%2520addressing%252C%2520and%2520routing%7CZDO%2520transmissions%7C _____ 0)

---

<div class="post-metadata">

**Author:** ![eulerlagrange](https://avatars.discourse-cdn.com/v4/letter/e/eb8c5e/32.png) [@eulerlagrange](https://forums.digi.com/u/eulerlagrange)\
**Post date:** [August 10, 2020, 12:50pm UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/5 "2020-08-10T12:50:52Z")

</div>

You’re either referring to the final line on that page which says “Refer to the Zigbee specification…”, which is just another level of indirection of the same homologue.

Or you are saying that the 7 clusters listed on the page is the definitive list of supported clusters which will be need to be handled by the host program if bit 1 of AO is set? Which would then beg the question: what about node\_desc\_req, power\_desc\_req, simple\_desc\_req, active\_ep\_req, at al, which are listed as Mandatory by the ZigBee spec. Especially since without active\_ep\_req and simple\_desc\_req, there’s not much a peer ZigBee compliant device could do with us. Are these not supported ZDO requests then?

I had already looked at that page, but felt it hadn’t answered my question fully, so if you can confirm it’s definitive (complete) that could be a useful clarification.

---

<div class="post-metadata">

**Author:** ![mvut](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.digi.com/mvut/32/31_2.png) [@mvut](https://forums.digi.com/u/mvut)\
**Post date:** [August 10, 2020, 1:01pm UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/6 "2020-08-10T13:01:44Z")

</div>

You are going to need to query the active clusters to find out what is supported by the XBee directly. That would be cluster ID 0005.

---

<div class="post-metadata">

**Author:** ![eulerlagrange](https://avatars.discourse-cdn.com/v4/letter/e/eb8c5e/32.png) [@eulerlagrange](https://forums.digi.com/u/eulerlagrange)\
**Post date:** [August 11, 2020, 7:52am UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/7 "2020-08-11T07:52:00Z")

</div>

You mean 0004, the Simple\_Descriptor\_req? 0005 is the Active\_EP\_req which returns (as we all know) the Digi end points of E6 and E8.

But now, if we attempt to send a 0004 to ask for the ZDO clusters supported on EP 0, it returns (0x82 - INVALID\_EP), which is in accordance with the ZigBee spec p207, i.e. “The supplied endpoint was equal to 0x00 or 0xff.”

Unless you mean something else?

---

<div class="post-metadata">

**Author:** ![mvut](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.digi.com/mvut/32/31_2.png) [@mvut](https://forums.digi.com/u/mvut)\
**Post date:** [August 11, 2020, 8:00am UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/8 "2020-08-11T08:00:30Z")

</div>

The active end points are E6 and E8. That is it.

---

<div class="post-metadata">

**Author:** ![eulerlagrange](https://avatars.discourse-cdn.com/v4/letter/e/eb8c5e/32.png) [@eulerlagrange](https://forums.digi.com/u/eulerlagrange)\
**Post date:** [August 11, 2020, 11:09am UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/9 "2020-08-11T11:09:45Z")

</div>

Yes, those are the digi EPs…

However the question was: which _ZDP_ _clusters_ on EP 0 are a) considered to be supported, b) non-supported, c) something else. I believe the explicit answer is expressed in the form of 3 lists of 16bit cluster ids drawn exhaustively from the list of cluster ids documented in the ZigBee device profile. Thanks for trying to help me out, but if you don’t have an explicit list, maybe someone else does, or I’ll just find out through experiment.

(The experiments are yielding some success which is good news, so I can at least now write a host program which allows itself to be registered on a Smartthings system as a simple On/Off device, and the user button can be integrated into an Automation via the Smartthings App)

---

<div class="post-metadata">

**Author:** ![mvut](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.digi.com/mvut/32/31_2.png) [@mvut](https://forums.digi.com/u/mvut)\
**Post date:** [August 13, 2020, 8:43am UTC](https://forums.digi.com/t/clarification-of-ao-setting-api-output-mode/21577/10 "2020-08-13T08:43:56Z")

</div>

The specific Digi XBee application profile end points and cluster ID’s have not been published outside of what is listed in the manual.
