need your help on remote digital ouputs

Do XB24 series 1 & 2 support the digital output on the remote module? If yes, can you provide an example, Anyone ?

I can use the AT command and change the Digital outputs on the based RF module but not on the remote. The manuals only provide example on the digital inputs. I am still looking for the answer Yes or No, so i can decide if i have to change my layout with additional micro to do the job.

Thanks in advance.

Yes, the XBee 802.15.4 (formerly Series 1) and XNee ZNet 2.5 (formerly Series 2) modules both support digital output on remote modules. This is accomplished by remote command support. Initiating remote commands are only available from the API mode firmware, although both the AT and API mode firmware can respond to a remote command request received over the wireless interface. What you need to do is to load the API mode firmware on a module from which you wish to source the remote commands to change the state of a remote digital I/O pin.

The remote commands you need are the Dx or Px (where x is an integer), AC or WR.

Please see the table 7-07 on page 74 of the following document:

Here is an example to assert pin DIO0 to the high state:

  1. Formulate a remote command request (API Identifier 0x17, see page 60) using command name ‘D0’ and a command data value of 5 (digital output - high).

  2. Formulate a second remote command request to apply the changes using the command name ‘AC’ (if I wanted DIO0 to be high from power on, I would have used the ‘WR’ command to write these changes to NVRAM).

That’s it!

I hope that helps you and saves you from having to include the micro in your design…

Jordanh, Thanks for your prompt reply. But i tried every combination that i can think of, and i can never get them to work on either pair XB24 series 1, or 2. I am aware of series 1 & 2 they don’t talk to each other. Can you provide me allitle more detail on how to send the API operation as you previous suggested?

Here is what i tried,

  1. Leave both XB24 series-2 with the default firmware,

  2. Load the remote module with ZNET 2.5 ROUTER/END DEVICE API firmware, and leave the base with ZNET 2.5 ROUTER/END DEVICE AT firmware

  3. Load both base & remote with ZNET 2.5 ROUTER/END DEVICE API firmware

  4. There is no such these options for XB24 series 1. So i just use whatever firmware is avalable on series 1.

  5. MY address on series 2 is always FFFE.

  6. Series 1 document did not mention about API Identifier 0x17. So i tested both series with 0x17 and 0x08 identifier.

Here is my API data package,
7E 00 10 17 01 00 00 00 00 00 00 00 00 FF FE 02 44 30 05 6F
7E - Start Delimiter
00 10 - Length
17 - Command ID
01 - Frame ID
00 00 00 00 00 00 00 00 - 64-bit Coordinator Address
FF FE - 16-bit destination address
02 - AT command, Apply Change
44 30 - AT command name, D0
05 - AT command value output high
6F - checksum

API Identifier, 0x08
7E 00 05 08 01 44 30 05 7D
7E - Start DEL
00 05 - Length
08 - Command ID
01 - Frame ID
44 30 - AT command, D0
05 - value
7D - checksum

I spent awhole weekend to read the documents, knowledge base articles, went thru the support forum, play with all different combination of API, mofified the remmote and base address, and updated the checksum, etc… I hope Digi updates their documents, appnotes with details working example. Some thing like this appnote is also help,
but this appnote is only applied for the inputs. The output example is missing. Also i like to see the examples that work on both series 1 & 2 so their customers can benefit.

I appreciate if anyone wants to share more info.


I am really sorry to hear you are continuing to have trouble.

I looked over your frame and I believe the data parameter is specified incorrectly. The data parameter to the ‘Dx’ and ‘Px’ I/O commands are four actually bytes long. In fact, all integer parameters for remote commands are network byte ordered (MSB first) 32-bit words.

I reviewed our documentation and I believe this is not discussed. I am very sorry for the omission. I passed this information along to our documentation writers.

Here is an example frame which sets a node’s DIO0 pin to the logic high state:

7e 00 13 17 01 00 00 00 00 00 00 00 00 ff fe 02 44 30 00 00 00 05 6f

     API Identifier = 0x17
     Calculated Length:  0x13
     Frame checksum: 0x6f
            Frame ID: 0x01
            64-bit Address: 00:00:00:00:00:00:00:00 (coordinator)
            16-bit Address: 0xfffe (discover route)
            Options: 0x02 (apply changes)
            Command name: "D0"
            Command data (len=4):
            0000   00 00 00 05     

If you are still having difficulty, please let me know and we’ll troubleshoot this further!

Good luck!

Message was edited by: jordanh

Thanks Jordanh, but still No Luck for me. Again I tried all different parameter configurations available on the X-CTU software for both series 1 & 2 XB24. The DIOx are response Hi (or Lo) at reset. This means the RF modules is OK. But i can NOT get it to response to the API package. Can you set up a system on your side and test it? Pls give me step by step instruction if you get it to work. I like to see the demo on both series pls. Thanks a million!

We use remote I/O everyday on both 802.15.4 modules and ZNet 2.5 modules so we know the feature works. Just to be sure, however, we took a pair of ZNet 2.5 (formerly Series 2) modules running the released firmware and tested it using the packet you specified in your original e-mail. It worked! On the aside, I found out that my reply to you was not 100% correct. You need not specify 4 bytes for every integer. In fact, you can specify 1-4 bytes just as long as you get the ordering correct.

I believe we have a configuration problem here. I am going to outline my setup and setup instructions.

  1. I have one module and I load the 1141 (Coordinator API) firmware on to it using X-CTU. When the module is finished loading, I check the “Enable API” check box under “PC Settings” and re-verify that I can read from the module. I verify that the PAN is set to 234.

  2. I have another module and I load the 1341 (Router/End Device API) firmware onto it. Before I load this firmware I ensure the at the “Enable API” checkbox is still set. I also verify after the load that I can read from the module and its PAN is set to 234.

  3. The coordinator module should slow blink, indicating that it has successfully started a new network.

  4. The router module should blink at a faster rate, indicating that it has joined a PAN.

  5. I verify that the router has joined the correct PAN by pressing the SW1 switch on a development board or the button labeled “Ident” on an XBee adapter and see that the one of the LEDs on the coordinator module’s board blinks rapidly. If it does not, I instruct the router module to try to rejoin the 234 PAN on a different channel by rapidly pressing the same button four times.

  6. Once I have verified that both modules have joined the same PAN, I then sent the API packet you specified in your original e-mail (or the one I replied to you with) into the serial port of the router module and then verify that the pin goes from low to high on the coordinator module (as these are the addresses you specified in your API packet.)

If you can verify your setup all the way through step #6, could you please tell me what API message(s) you receive from the Router API module after you send the Remote AT Command Request frame?

Which firmware version are you running on each of your modules?

Hi Jordanh, Thanks for taking on my problems. I am learning something new here. By follow your suggestions, i loaded one with the ZNET 2.5 Coordinator API firmware 1141, and the other with ZNET 2.5 Router/End API firmware 1341. After I loaded the firmwares, i also read back. They both have same PAN ID 234, Scan channels 1FFE, and channel 11. But the Router MY is 2490, Coordinator MY is 0. I was not sure which firmware (coord/router) is dedicate for the remote, or base. So i swapped them around for testing using the API packages below,
I did not get any response, then i changed the 16-bit address,
Still no response.

I do not have the development boards to test for the led blinking. I normally use the XB series 1 with my own PC interface board as the base board, and other controller w/xb as the remote using the simple AT commands instead of API package. This time i developed a new remote interface board without another MCU or UART intervention. I expected the remote XB-series 2 will receive the API package over the air and set its output pins hi/low so i can control my own peripheral device . I do aware of the XB DIO electrical characteristics. All my control I/O’s are buffered. But I can’t get XB output to toggle. Here are my questions,

Is there anything else needed, beside the power & ground support the remote XB module with the correct firmware loaded in order to receive the API package over the air?

Can XB serial Rxd & Txd pins leave unconnected ? I assumed they both have pull-up internally.

Which COORD. or ROUTER firmware should be used on the remote system ?

Can I leave the DH & DL at default 0 on both COORD. & Router?

What about the preset MY ? Do I have to send the correct 16-bit address in the API package? Can i use FFFE for unknown broadcast address as well ?

Thank you in advance.