XBee Shield

Xbee radios are an awesome way to add wireless capability to your Arduino project and now it's even easier with the XBee Shield. The shield form-factor mates directly with any dev board that has an Arduino standard footprint and equips it with wireless communication capabilities using the popular XBee module. This unit works with all XBee modules including the Series 1 and 2, standard and Pro versions.

The serial pins (DIN and DOUT) of the XBee are connected through an SPDT switch, which allows you to select a connection to either the UART pins (D0, D1) or any digital pins on the Arduino (D2 and D3 default). Power is taken from the 5V pin of the Arduino and regulated on-board to 3.3VDC before being supplied to the XBee. The shield also takes care of level shifting on the DIN and DOUT pins of the XBee. In the latest revision the diode level shifter is replaced with a more robust MOSFET level shifter.

The board also includes LEDs to indicate power and activity on DIN, DOUT, RSSI, and DIO5 pins of the XBee. The Arduino's reset button is brought out on the shield, and a 9x11 grid of 0.1" holes are available for prototyping. The shield does not come with headers installed; we recommend the 6 and 8-pin stackable headers. The XBee module is also not included.

Note: This is an older rev of the XBee Shield. If you are looking to purchase one of these shields please to the latest versions page here. Thanks!


  • Mounts directly onto your Arduino
  • DIN and DOUT pins of XBee can be connected to either the UART pins or any digital pin on the Arduino (D2 and D3 default)
  • 3.3V power regulation and MOSFET level shifting on-board
  • 9x11 grid of 0.1" spaced prototyping holes
  • Reset button brought out to shield
  • Power, DIN, DOUT, RSSI and DIO5 indicator LEDs


XBee Shield Product Help and Resources

XBee Shield Hookup Guide

June 5, 2014

How to get started with an XBee Shield and Explorer. Create a remote-control Arduino!

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

2 Soldering

Skill Level: Rookie - The number of pins increases, and you will have to determine polarity of components and some of the components might be a bit trickier or close together. You might need solder wick or flux.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #413224 / about 9 years ago / 3

    Would this shield work with an Arduino Due?

    • M-Short / about 9 years ago / 1

      The main purpose of this shield is to do the levelshifting from the Arduino's 5V to the XBees 3.3V. Since the Due runs at 3.3V the shield isn't really needed. I would just get the breakout board and connect power, ground, Din and Dout. But the board will take the Due's 5V power pin and regulate it to 3.3V, it will then level shift between 3.3V on the XBee side, and the 5V on the Due's side which might fry your Due's pins. So I'd avoid this shield on the Due.

  • Member #430175 / about 8 years ago / 2

    To use the XCTU software do I need an addition device like th USB adapter or explorer to program the xbee, for eg AT or API modes, or is this shield capable of doing this?

  • R0unin / about 9 years ago / 2

    Would it be possible to know what SMD MOSFET are being used on this board? Schematic is not clear, but Eagle Files shows its a SOT23-3 package MOSFET-NCHANNEL, but would like to know more specifics. Ideally it would be nice to see these also sold in strips of 10 like the SMD PTC or SMD Voltage regulators.

  • Member #573196 / about 8 years ago / 1

    Hi, Does anyone know if this shield works with Xbee PRO 868? This xbee may need up to 800mA, and I have seen that arduino mega is not able to provide them. Does the shield fit connections between them? Could someone help me?

  • Sembazuru / about 8 years ago / 1

    Minor nit to pick in the product description above. The DLINE/UART switch is actually a DPDT switch, not SPDT.

  • FlorinC / about 8 years ago / 1

    The photos show 2 kinds of shields. The shield in the last photo (plugged into the Arduino) is different than the other (the prototyping area is 12x11). Which one do you actually sell?

  • Member #504826 / about 8 years ago / 1

    Okay. I bought this shield to interface an XBee Pro S3B with my Arduino Uno R3. Not working - something is wrong. When I power it all up, the DI05 and the DOUT LEDs stay on all the time. Considering that I had to clip off an LED from the XBee Explorer board to get an XBee Pro S3B to successfully communicate with XCTU, are there any similar hardware mods that I have to do to this shield?

  • GregRWPI / about 8 years ago / 1

    N00b question - do I need to solder on the stackable headers? I'm assuming it's not enough just to connect them?

    Also, the shield doesn't fit well onto Arduino Uno - it's a little too long and bumps against the USB connector.

  • Member #405093 / about 8 years ago / 1

    Is the Xbee shield compatible with the arduino Leonardo?

  • Member #405093 / about 8 years ago / 1

    Is the Xbee shield compatible with the arduino Leonardo?

  • Member #517145 / about 8 years ago / 1

    Can I use the XBee with arduino uno without this shield if I use the 3v3 pin instead of 5v to deliver current?

  • Edan / about 8 years ago / 1

    I have the board. Sending messages to it with X-CTU I see the correct strings showing up within the Arduino serial monitor. When I use the serial monitor to send messages the other way, I get jibberish. I have the board set to UART, XBee 900 pro. Any ideas? I wrote a C# app to read the data being sent from the Arduino by listening to the serial port with Xbee connected. I just get the '?' character on RX from the arduino. I have tried every pin I can, so I know I have the correct pins. Lost. Thanks for any replies.

    • Edan / about 8 years ago / 2

      Solved the issue by reading this: https://forum.sparkfun.com/viewtopic.php?f=13&t=21832&p=166729#p166729

      Within X-CTU, go to the Modem Configuration tab. Scroll down into I/O settings, look to the bottom for PR, change it from 7F7F to 7FFF. Do this to both Xbee units, and the messages only going one way is solved.

  • Member #498417 / about 8 years ago / 1

    When uploading a sketch to the arduino during development I have needed to disconnect this shield. In the project that it is in, everything is permanently mounted, and it would be nice to be able to program the arduino if needed without removing the screws and detaching the shield. Is there a way around this limitation?

    It seems that on the shield offered by Arduino there is a switch that controls the serial communication and changing that jumper allows reprogramming of the arduino. Is there such an option on this board?

    • On the shield, slide the switch from UART to DLINE when programming your Arduino. Switch it back when you are done and that should negate having to remove the shield fully.

  • Member #498069 / about 8 years ago / 1

    could i just conect the xbee pro to my arduino uno without burning it¿? because xbee pro require 250mA at highest power and the arduino uno´s maximun power supply is 50mA on 3.3V pin (I don´t know on the 5V). If not how can I do to make it work at the highest power¿? Thank you!!

  • Member #493656 / about 8 years ago / 1

    Does this include some extra headers?

  • Member #425952 / about 9 years ago / 1

    Any information about the possibility to program the Arduino (Uno/Mega 2560) wirelessly with this shield?

  • DanJulio / about 9 years ago / 1

    I am confused how the level translator for DIN is supposed to work connected to an Arduino TX line that also has a series 1k resistor (such as the Sparkfun Arduino Pro 5V). Q1 is normally off because Vgs = 0 (g = 3V3, s = 3V3 via R5). When the Arduino pulls TX low then the voltage at the drain will be around 2.5V (as a result of the voltage divider created by the two 1k resistors - one on the Arduino and one on the shield). The FET's body diode should conduct but will only drop DIN a little (2.5v + Vf of the diode). This won't meet the logic low level requirements of the XBee.

    The circuit would work without the series resistor on the Arduino or when connected to D3 with the Switch set to DLINE because IN will be pulled to almost 0V and DIN will be pulled to within Vf of that voltage probably meeting the logic low level requirements of the XBee. The circuit will also probably work with the Arduino's 1k series resistor if R6 was 10k instead of 1k because the low level voltage would be 1/11 of 5V or ~45 mV.

    Am I missing something?

    • Member #498252 / about 8 years ago * / 1

      I also had issues with a Galileo board ( or here ) and the XBee shield. The level shifter on the Galileo board can't pull the TX pin low enough so the XBee module doesn't see any input. Replacing R6 with a 2K resistor solved the issue.

      What DanJulio proposes (10K) would work just fine too (I tested with R6 completely removed at some point).

  • Member #463434 / about 9 years ago / 1

    would this shield work with ( digi Xtenda 900 40 miles ) to hook it to arduino Uno ... i bought the correct break out for the same extenda and i don't know how to hook it to the Arduino I have ... thank you very much

  • Mr Maple Man / about 9 years ago * / 1

    Can this shield work with series 1 or series 2 XBee modules, and can either series communicate with any other series?

    • M-Short / about 9 years ago / 1

      Yes, it will work with both XBee Series 1 and XBee Series 2. But the 2 series modules can not communicate with each other as they use completely different hardware and firmware (that's why they are 2 different series).

  • Mr Maple Man / about 9 years ago / 1

    Can I format my XBee module (series 2) through this shield, or would I have to buy an additional product to be able to do that?

    • M-Short / about 9 years ago / 1

      This shield is designed to connect XBees to an Arduino, not the computer, if you want to connect to the computer we recommend the XBee Explorer USB.

  • Member #401925 / about 9 years ago / 1

    would this shield work with the 'RN41-XV Bluetooth Module - Chip Antenna'?

  • Robert451 / about 9 years ago / 1

    I'm hoping to use this shield on an Arduino Mega 2660 R3. The shield's product page mentions "any digital pin on the Arduino (D2 and D3 default)". How does one accomplish changing the default pins? In particular, how do I change it to use D16 and D17 on the Arduino Mega? Perhaps that's not possible, since those pins are completely off the shield. Or perhaps I could run a jumper over to those pins. But I need to make sure D2 and D3 are not interfered with (they are being used by something else). I see the "3" and "2" solder pads by TX and RX, but I'm not sure how to utilize those or if those are related to my goal.

    • The DLINE/UART switch changes the connection between D2/D3 and D1/D0. Check out the schematic to see more of how that works. You could definitely cut the header pins and run jumpers to different pins (like D16/D17 on the Mega), but keep in mind if you are going to be stacking shields this could interfere with any shield stacked on top of the Xbee shield, so maybe put that one top most.

  • ThomasW / about 9 years ago * / 1

    I'm running into a problem with this XBee Shield when used with a RedBoard (DEV-10908 ) where it doesn't receive the signal being sent to it. When the same shield is connected to a regular Arduino Uno R3 it receives the signal. When either the RedBoard or the Arudino are connected to the XBee while on a breadboard they work correctly. But when the XBee is moved to the Shield the Arudino works, but the RedBoard doesn't. Does anyone know what this problem could be or how to debug it? (I'm aware of the UART/DLINE switch and it is in the right position.)

    edit After switching the ATMega on the RedBoard with a different one reception is working correctly, so it seems that the source of the problem is with the settings on the ATMega included with the RedBoard.

  • NL / about 9 years ago / 1

    I don't know why haven't you made header holes for SDA and SCL pins on this shield ?! Unfortunately, I have to add wire jumpers in order to stack an I2C LCD screen on top of this shield... Would be appreciated if you take this into consideration for the next revisions.

    • MikeGrusin / about 9 years ago / 2

      This board was designed long before the header changes that came with the Uno R3. We're going to rev everything to use the new layout at some point, but of course it will take some time. Sorry for the inconvenience!

  • Member #393196 / about 9 years ago / 1

    Can I program a Xbee attached to an Arduino via the SPTD Switch? i mean i have an arduino Development Redboard and i want to buy this shield, just want to know that if i buy this shield, I can program the xbee or do i need a explorer?


    • M-Short / about 9 years ago / 1

      This shield will not work to connect the XBee to the computer, for that you will want an XBee Explorer USB.

  • gego / about 9 years ago / 1

    Should this work with the RN-XV WifFly? It's recommended on the product page, but for me, the example sketches all get stuck at "Attempting to connect to SPI UART...". The WiFly is getting power, the DIO5 LED is blinking at a constant rate on the shield, and I've run through the relevant pins (I believe) to check my soldering job for continuity (I'm using the correct shield headers).

    I need to set the switch on the shield to DLINE to upload the sketch, and have tried switching it back to UART and rebooting the Uno to see if that was the issue, but still no luck. I've also tried running the HardwareFactoryReset sketch (this is all brand new equipment, but worth a try), but it also gets stuck at the same point.

    Any help is appreciated.

    • M-Short / about 9 years ago / 1

      The shield should work fine, but if your sketch is trying to do anything with SPI that's probably your problem sine the RN-XV (and the shield) are UART only. Also, you will need the switch in DLINE to disconnect the module from the serial lines for programming, but you will want to switch it back to UART to connect it to the Arduino when you are actually running the sketch.

  • Member #412730 / about 9 years ago / 1

    Hi, I want to ask if this shield is compatible with the Arduino Motor Shield R3 (http://arduino.cc/en/Main/ArduinoMotorShieldR3)? I already read the specifications, I believe it is compatible, but I want to be sure.

    To my project (just to understand what i want to do): I want to control a robot like this way: PS3 Controller-(Bluetooth)->Processing-(XBee)->Arduino Uno. The robot itself is a simply tracked vehicle, I used the same Tamaya parts like in this blog "http://tinyurl.com/ay62vub". The range sensors I use or want to use is a Sharp GP2Y0A21YK0F IR Range Sensor and/or Parallax PING Ultrasonic Sensor. I want to use them for mapping and detecting, but I am not sure which one is the better choice, I just bought the Sharp IR Sensor, so I have no comparison. I already have Encoders for the wheels (http://tinyurl.com/a7umzt7) but these are, due to wheelspin etc., not accurate enough. I tried to use a mouse encoder from an old device for the odometry, but the libraries I found are sadly outdated or does not working (the data I receive are not logical) so I decided to try the "Parallax Mouse Sensor Kit" (http://tinyurl.com/bbjmtp6).

    I already finished the communication between the PS3 Controller and the Processing Sketch. Now I want to setup the communication between Processing and Arduino, but first I need the required parts, like a Xbee Shield, the Xbees itself (I thought about the "XBee 1mW Wire Antenna - Series 1", because I read that it is easier to build up a communication with the Series 1 than the Series 2) and of course the "XBee Explorer USB connector".

    The final goal for my project is to create an autonomous mobile robot which is able to do 2D mapping and path planning (this is basically SLAM). But it should also be able to control the robot with the PS3 Controller. The final robot should also have a video camera on board, but this will be realized totally independant, because it is not possible to transmit video data over the arduino (I thougth about this one: http://tinyurl.com/bd5u7ru). Right now I am far away from this, mainly due to lack of mony, and I know that this is hard to realize (I study Mechatronics/Robotics) and I know that SLAM is still a research Issue.

    • Member #412730 / about 9 years ago / 1

      I answered my question, yes it is compatible

  • Eliwu26 / about 9 years ago / 1

    My guess is this fixes the little problem with Wifly's not working with the last shield because of the diode?

    • I'm not sure what the issue was with the WiFly, but this rev adds a proper level shifting circuit, so that you can use a 5V (or 3.3V) arduino with the 3.3V XBee. The diode shifter didn't work for anything that didn't have a pullup on the DIN (RX) pin, which isn't normal. Some Xbees have the pullup disabled by default.

      • The Kontraptionist / about 9 years ago / 1

        I'd be a little careful about calling the level shifting circuit "proper" - the resistors in the circuit are 1K - 1K to +5 and +3V3. That's a pretty low impedance line, especially considering that the Arduino Pro has 1K resistors on the TX and RX lines (why is this by the way???) What bothers me is that the stand-alone level shifter (BOB-08745) has 10K resistors. I substituted 10K (Ask me how fun soldering was with only a regular iron and tweezers) and it at least works now with the Arduino Pro, but it barely pulls "LOW" to 1V

        I should say it works FINE with a Leonardo (and probably the Uno too) because they lack the resistors on RX and TX.

        • You have the FTDI and Xbee connected to the Pro and you have the switch in the UART position, correct? If so, what you are seeing has much more to do the fact you are running the FTDI and the XBee together on the same UART lines, not that level shifting resistors are 1k. Changing them to 10k helps, but that isn't the issue. The series resistors on the pro are there so you don't create bus contention on the UART lines when you have an FTDI and something else connected to the UART lines of the atmega. The same resistors are on all Arduinos EXCEPT the resistors are parallel to the Xbee lines instead of in series. The functional difference being the Pros will allow the FTDI to work but not the XBee and other Arduino's (Leo, Uno, etc.) will allow the XBee to work, but not the FTDI (or 8/16U2) connection. I'm not sure why the Pros are different, but it doesn't matter, you shouldn't use two devices connected to one set of UART lines. If you use software serial and move the switch to DLINE, you shouldn't have this problem.

  • MechCD / about 9 years ago / 1

    Can I still use DIO5 for other purposes or does the XBee need DIO5 exclusively? I have an Arduino Uno and need both DIO4 and DIO5 for interrupts.

    I have tried the shield without the XBee installed and when DIO5 is active on the Arduino, the LED lights up on the XBee shield.

  • Member #138181 / about 9 years ago / 1

    The prototyping holes are indicated as a 12x11 grid in the description. Some of the photos show 12x11, but others show 9x11. Which is it?

    • M-Short / about 9 years ago / 1

      Sorry, we just copied the description from the old version of the board, this one has a couple more components and so a slightly smaller prototyping area. The description should be fixed.

  • Member #374292 / about 9 years ago / 1

    I think the switch you are using for the communication lines is a DPDT switch. SPDT stands for single-pole dual-throw, but in this case there are two poles. Please correct me if I am wrong. Sorry for my bad english.

  • cdixon / about 9 years ago / 1

    One of my main complaints with this board has been its inability to mate securely with either the Arduino Uno or Duemilinove due to the USB connector on the Arduinos being just a little too tall for the headers. So, I was excited to see a new product, but then noticed that it states that it can mate (only) with the Pro (okay, I guess I can buy one of those too), but the link to the Pro in this product description goes to a page that notes that the Pro is discontinued. The pro isn't discontinued, but the link is bad.

    Anyway, please Spark Fun, please offer a shield that works with the Uno or Duemilinove, or, if this is that shield that I have been looking for, confirm which Arduinos it is compatible with including (fingers crossed!) the Arduinos that I already own.

    • M-Short / about 9 years ago / 1

      Make sure you are soldering the headers on. We get a lot of complaints about shields hitting the USB port because people aren't soldering the headers on. Also you are not going to be getting a good electrical connection and therefor your shield won't work unless the headers are soldered on as well, so you have to do it anyway.

    • Member #225843 / about 9 years ago / 1

      I noticed the shield being slightly too long and hitting the USB port as well. I ended up using a bunch of these headers above and below the shield to get it to fit properly:


    • it stacks nicely on all the arduino boards, including the Pro. we'll get the outdated links fixed shortly. if using stackable headers, it works just fine, you just can't use standard breakaway headers, the USB will get in the way.

  • singerng / about 9 years ago / 0

    does this work with the Leonardo? (SPI is on the ICSP header now...)

    • M-Short / about 9 years ago / 1

      This should work fine on the Leonardo, the shield doesn't use SPI.

Customer Reviews

No reviews yet.