begginer, how to custom frimware


I am waiting to the
iDigi X4 Starter Kit ZB

Meanwhile read the “XBee/XBee-PRO ZB RF Modules” and “EM250 spec”
and interested in “Writing Custom firmware” using current firmware and adding some features
like: the end device XBee/XBee-PRO will read I/O without sending them but store them to local buffer (will get in and out of sleep mode only for that ),
, then when “long sleep” will ended the entire data will be sent

  1. is it possible
  2. can some one point me to document how to Custom firmware, didn’t found any way of doing it (, is it C,asmbler)
  3. also a little bit confused from the connection of phyton XBeeConfigBlockDDOfunction and API. Are those the same?


  1. Yes it is possible to develop a custom firmware stack, but this would blow away the Digi-created firmware on the module and all our features with it. You would no longer be using “current firmware”, but your own creation instead and whatever capabilities you code into it.

  2. To develop an application layer stack to ride on top of the Ember stack, you’ll need to coordinate with Ember regarding this development. If you need this stack to also be Zigbee or Zigbee Pro featureset compliant, you’d want to coordinate with the Zigbee Alliance as well. Digi would not be able to assist you in this matter, as we only support our firmware stack on the module.

  3. This is a question you’d want to ask in the python forum.

Another way I can think of is attach a micro controller with memory to the XBee RF module. Then when the XBee comes out of sleep it notifies the micro controller (via a sleep pin). The micro controller get the data from the XBee and stores it.
Then every so many sleep periods have passed the micro controller sends the collected data through the XBee to the coordinator.

what about taking sampling outof XBee
letting the micro controller to do sampling and storing the data

after long sleep the XBee wake ,and send this data from the micro controler to the cordinator

how can I tell the XBee to do that?
as I understand it

  1. sending “setup” comands from cordinator to XBee sensor
    including sleep times
  2. and including telling the XBee when wake up use UART to ask micro controller for streaming data to XBee, can this be done? programed from cordinator? any example?
    the EM250 spec mention SPI,I2C can those be used? how?
  3. broadcasting it out

That is getting closer to a working solution and near to what I’m working on. I have the hardware working and can send/receive data between the host (Wi-9P gateway using Digi Dia) and the end node. Now I’m working on the transferring the data between the Gateway to my Windows PC.

Read the XBee ZB document and for now don’t bother with the Ember spec. Every thing you need is built into the XBee ZB stack. I bought these just so I didn’t have to bothered with getting this part working.

The End Device is set-up by the host control through the coordinator just like seting-up one of the LTH sensors. There will be some addition code to set-up the host to receive the serial data from the end device.

On the XBee ZB modules there is a pin that indicates when the module is sleeping. Use this to tell the micro controller when the module is awake and to send data.
The micro controller can also be put to sleep and have the XBee sleep pin wake the micro.

When the XBee wakes and signals the micro the micro sends the data as asyc 8-N-1 to the XBee (info is in the XBee ZB doc) and is how the XBIB dev boards do it.

There is some information about micro controller interfacing in the Digi Wiki,

There is also scattered information in these forums.

I think its better the ‘Unicast’ than ‘Broadcast’ unless all the nodes need to receive the data.