Sending API packets to an XBee.

    Jan 08 2011 | 8:28 pm
    Hi there,
    Does anyone know how i would go about making a patch for getting API packet communication using an Xbee explorer with an xbee with coordinator api firmware loaded, to read data from 2 xbee end devices set up with AT commands.
    Any information would be greatly appreciated, i am pretty stuck on this one
    Many Thanks

    • Jan 09 2011 | 10:59 pm
      If you don't find any other solutions (but I hope you do as I would also like to delve into these things :D ), you can use Processing where, I am guessing, there are libraries and then use maxlink ( to communicate between Processing and max. It's a long roundabout but it is better than nothing!
    • Jan 09 2011 | 11:02 pm
      For the moment I really don't know anything about the XBees but did you also try the [serial] object?
    • Jan 11 2011 | 12:45 am
      At one point I spent some time working with XBee radios. You will want to get cozy with the serial object and parsing the data. Below is a simple patch I wrote to send AT messages to the Xbee board for configuration.
      I don't think I ever got so far as actually parsing the API messages coming from the board though. Would be nice to put my little box of Xbees to use eventually!
    • Jan 16 2011 | 8:50 pm
      Thats a quality patch
      thanks for that.
      I've managed to see incoming data now through X-CTU,
      but i can't seem to find how to access it through max/msp
      Thank you all for posting so quick and sorry for my late reply
      Kind regards
    • Jan 18 2011 | 3:19 pm
      i can now see the incoming data through [print] in the max window,
      i just don't know how to interpret the data stream.
      its all a bit greek to me
      many thanks
    • Jul 28 2012 | 8:53 pm
      Did you figured out this?
      i am trying to use xbees without any micro controller (arduino,funnel) with max. i found tutorial and AT commands to get 2 xbees talking together but i didn't figured out how to get xbee value into max with the serial object or how to send value to control the digital out .
      if you successed on this, please give some step or examples to follow.
    • Jul 28 2012 | 9:44 pm
      Hi freeka,
      I used 2 XBees S1 and I know that once you pair them it is pretty easy from then on. If you have more than 2 or if you have XBee S2 it might be a bit more difficult to get them rolling. (Did you test them with the Arduino IDE Serial Monitor and they work?) One will send serial data and the other one will grab it.
      Prior steps:
      1. Select proper port (ex: a)
      2. Type the right baud (ex:9600)
      All the best,
    • Jul 28 2012 | 10:00 pm
      thanks for your reply !
      til now the only situation i have been using xbee was with funnel or minibee.
      configuring the xbee wasn't really hard for this purpose ( baudrate, pan id and if you want it as coordinator or end device)
      but now that i try to use the xbee as an end device without funnel or micro controller, everything get confusing.
      i have been messing around with x-ctu on windows trying to follow this :
      but when i come back to osx and tried to get the data inside max with the patched linked on the tutorial nothing is showing up.
      i tried to look with with arduino IDE serial as well but nothing....
      It would be nice of you, if you could describe me the exact configuration you had on both xbees and all the important steps you did to get it working :)
      my goal at first would be to set a digital input on the xbee end device and receiving the information inside max.
      i am on a macbook pro 10.7.4, i think the 2 xbees i use are from serie 1, the coordinator is plug on an usb xbee explorer, the end device is on usb explorer as well ( usb not plugged) and i do all my wiring on the pins of the explorer ( gnd, 3,3v, Di2)
      merci beaucoup!
    • Jul 28 2012 | 10:12 pm
      I really depends what you are really trying to achieve. You said, for example that you changed your OS. Did you install the FTDI chip driver for that usb xbee explorer?
      I would recommend trying to get it working within the Arduino IDE before working inside Max.
    • Jul 28 2012 | 10:23 pm
      yeah sure, what count for now is having something showing up on the serial monitor.
      drivers might be ok on the both side windows/osx as i already used it with xbee plugged on funnel on osx ( i can choose the explorer in the serial port of the arduino ide) and as x-ctu was working on windows. i do think the problem really comes on the confinguration of the xbees.
      (but we agree that arduino IDE would be only to use the serial monitor right?)
    • Jul 28 2012 | 10:29 pm
      If you think you have problems with the configs that is what you should solve first. I would recommend using some microcontrollers and the SoftwareSerial.
    • Jul 28 2012 | 10:31 pm
      AH! but that's exactly my problem. its working perfect with microcontrollers. The problem only come when i try to use the xbee without micro controller.
    • Jul 28 2012 | 11:09 pm
      i got it !
      found a soft called moltosenso for osx, and it now works....
    • Jul 29 2012 | 11:58 am
      I did a whole project with api mode xbees and ended up building an mxj object that did all the stuff. I've been meaning to give this away... Let me dig around the hard drive..
    • Jul 29 2012 | 12:03 pm
      Here it is, you need to copy some files to your support directory to make RXTX work in mxj, it only works with named XBees so you need to give them names in XCTU or whatever you're using to set them up. Works pretty reliably for me even at high baud rates but YMMV.
    • Jul 29 2012 | 12:03 pm
      Damn it, just over the upload limit...
    • Jul 29 2012 | 1:41 pm
    • Jul 29 2012 | 2:01 pm
      I just blogged it, been meaning to for about a year, just really hate the internet.
    • Jul 29 2012 | 2:07 pm
      Thank you!
      so if i understand by saying" ADC_IO support can easily be added by fiddling the source code" you mean that as it is now, its done to be used with a microcontroller right?
    • Jul 29 2012 | 2:17 pm
      It works fine with arduino's on the other end, I've done a whole project with them
      There I'm sending packets that control the LEDs and stuff and receiving packets that describe the knob twiddling. Works fine with up to ten and at baud rates of up to 57,600. Any faster and the arduinos can't handle the serial buffer correctly, would probably need a really tight main loop to hit 115,200 reliably.
      The ADC_IO thing is for people who sample directly on to the XBee and don't use microcontrollers, there's an XBee firmware that allows you to just wire up sensors direct and send the data back at a sample rate you set with some message. I never bothered implementing it cos I never needed it but I figured some people might want it so I thought I'd tell them where to look. It's just a matter of handling those packets back from Andrew's api in the source code I wrote, not a big task.
      Hope it helps you.
    • Jul 29 2012 | 2:23 pm
      Ok, in the meantime this is exactly what i try to achieve, using xbee without microcontrollers.
      i tried this but no luck all the value i got from the serial are totally random.
      "there's an XBee firmware that allows you to just...." do you remember what firmware it is?
      on the other hand, if i still understand you correctly, i could use for example two funnel FIO in same time by naming my xbee and using your mxj object?
      and yes you help a lot! there is not so much going on about xbee and max/msp sadly...
    • Jul 29 2012 | 3:37 pm
      Yeah I remember that page, you want it without microcontrollers? So you read the analogue data to a pin and send it back? Like this guy
      The firmware will be in the list for your model in XCTU it'll probably have a name with IO or ADC in it, then you just wire the sensor to the right pin, make sure it's voltage is in the correct range for the XBee (you might need to wire something to vref) and it should start sending data back which you can pretty easily adapt my code to receive... Look for the part where mine handles incoming packets, it checks for type and does something for node discovery responses and something else for actual data, you need to add a response for ADC_IO packets and then send the data out of an outlet in the same way it does already.
      Keep going you're nearly there.
    • Jul 29 2012 | 3:58 pm
      OLALALA! finally got it working with processing atleast using that lib
      (its actually the ame guy that you mentionned in your example just before)
      , now i need to figure out what to do with the packet inside max/msp.
      Note that there is no special firmware to do this , the version just need to be atleast version 10A1.
      So now i basically need a serial object guru , that will help me to unpack all this mess, byte blabalbalbalbla
    • Jul 29 2012 | 4:19 pm
      If you're sending API data you're better off adapting my external IMHO, doing it through the serial object is likely to be a pain, though if you're only using one XBee it might not be so hard if all the packets are the same length, there'll be a load of header data which you can discard and then the data you want probably split between two bytes (I think it sends 10 bit data from the ADC) just left shift the MSB and add it to the LSB et voila. Download the XBee API pdf off here and look for the ADC_IO packet description it'll tell you which bytes to go for.
      But tbh if you're only using one remote XBee to do ADC sampling and not sending anything back I'd just stick to serial mode and ditch API mode, there's more overhead with API packets compared to serial. API mode is more useful for mesh networking where things can drop in and out and other funky stuff.
    • Jul 29 2012 | 4:25 pm
      i am just in the first step, experimenting and trying but the final goal is to use 2 or 3 xbees without microcontroller that will talk to max. I will use some one xbee for input but the others will be pwm output, so it sounds like your external will be helpfull at some point!
      But for some reason its not working on my machine. the mxj is greyed out. i puted the files as you described in the txt file. i am remember i already had this kind of problem with mxj but don't remember how i fixed it.
      i am on mac 10.7.4 using max 6.
      Any idea?
    • Jul 29 2012 | 4:37 pm
      Restart max? If Max was already running when you copied them then it won't know the new jars have been added.
    • Jul 29 2012 | 4:38 pm
      Awww i am more Keen than that to try new external, i already rebooted the computer 6 times :)
    • Jul 29 2012 | 4:41 pm
      What does the max window say? It should list the jars it has access to and any trouble it's having loading mxjs.
    • Jul 29 2012 | 4:42 pm
      java.lang.NoClassDefFoundError: org/apache/log4j/Logger
      at XBee4Max.(
      Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
      at Method)
      at java.lang.ClassLoader.loadClass(
      at sun.misc.Launcher$AppClassLoader.loadClass(
      at java.lang.ClassLoader.loadClass(
      ... 1 more
      (mxj) unable to alloc instance of XBee4Max
    • Jul 29 2012 | 4:51 pm
      Ah, whoops I forgot Andy's api uses log4j, you just need to copy this jar in there as well. Your poor computer being restarted 6 times.
    • Jul 29 2012 | 4:56 pm
      better but still not working.
      this sounds like its coming from the src files i had to drop in my library. i puted it in the main library maybe i have to build a java folder in the users/library ????
      java.lang.NoClassDefFoundError: com/rapplogic/xbee/RxTxSerialComm
      restart count : 8
    • Jul 29 2012 | 5:02 pm
      This looks like it's having difficulty opening the serial port I remember this was a complete bitch when I first ported the library to a different machine, have you defo copied contents of the support folder to support?
      You might have to copy them somewhere else too.... brb
    • Jul 29 2012 | 5:06 pm
      Try copying the stuff from support into /Library/Java/Extensions see if that works...
    • Jul 29 2012 | 5:12 pm
      it is already there, as you said in the txt file. but this is the only sot i puted these files.
      "have you defo copied contents of the support folder to support?"
      what do you mean?
    • Jul 29 2012 | 5:20 pm
      Hmmm just meant have you definitely copied those files. Hang on a minute I'm being well stupid. You need this too doh.
    • Jul 29 2012 | 5:26 pm
      ahahahaha. maybe we should link that topic to your blog then :)
      i don't have red error anymore. but i got a tiny error
      XBee4Max: Cannot open port
      XBee4Max: ERROR
      i changed my /dev/tty.usb... and baudrate tho.
      maybe reboot 9
      i gotta run so i try later and let you know!
      thanks for your great help i appreciate.
    • Jul 29 2012 | 5:29 pm
      Will probably work now when you give it the right /dev/tty.usb------- just copy it out of Arduino. Will update blog, cheers for being a guinea pig! Let us know how you get on.
    • Nov 17 2012 | 8:25 pm
      I don't know if you noticed this. A bit late but nonetheless.
    • Nov 20 2012 | 2:56 pm
      Yes seen that one, when i was doing the research.
      but thank you for point it again!
      have a good day
    • Sep 17 2013 | 4:07 pm
      The XBee4Max external looks great! Can it send a simple on/off message to a mesh network of Xbees or does there need to be an Arduino on each node? I'm not receiving data into Max, just sending it out.