XBee Pro 900 Range problem..

I just got a set of XBee Pro 900s with RPSMA and the duck antennas. Doing a simple loopback in an open field yields a range of about 300 feet. This is line of sight, each antenna 6 feet off the ground.

Clearly something is amiss. If I swap the modules out for the 2.4GHz 50mw Series 2, range jumps to 2000+feet.

I changed from a loop back to a simple single direction transmit, so I could isolate if one module was better at transmitting. Same results… indicating one of them may have a problem with the internal operations for transmit and receive.

It would seem there are a few possibilities:

(1) One of the XBee modules has a bad connection to the antenna.

(2) One of the antennas is bad

(3) I have the wrong antennas (the 2.4GHz ones).

(4) One of the XBees is bad.

Removing either antenna reduces the range to less then 100 feet, so it would appear the antennas are working at least somewhat.

Power draw during transmit at 9600 baud is about 45ma, which is much less then the datasheet indicates for power draw at maximum transmission.

I have confirmed the order (for the 900MHZ antennas), but it is very difficult to tell them apart. Based on the length and looking at the datasheets they appear to be the 900MHz ones.

If I had a third module, it would be easy to swap out the module and antenna to locate the problem source.

Before I return to Sparkfun for a swap, I thought I would check to see if anyone else has seen this problem. Clearly the direct line of sight range for the 900MHz modules should be much more then 300 feet. :wink:

Jeff

Power draw is a clue. But you’ll have to look using a current probe on a 'scope, as the 45mA you’re seeing is probably the receiver, and the transmitter has a low duty cycle.

Is the AT command register you use to choose the power at max?

I don’t recall, but perhaps it defaults to some lower power. And it’s dependent on what regulator domain you’re in. These are frequency hopping radios so they meet the regulations on duty cycle vs. frequencies occupied.

As to 300ft - line of sight, I assume.

The modules are 17dBm (50mW), into rubby ducky which are 0 or 2 dBi gain, or so. Let’s assume 0, since these are small, and f = 900MHz.

The math says, for 1/10 mile, +17dBm -76dB (path loss), no antenna gain on either end, = -58dBm received signal strength.

The receivers are spec’d at -100dBm signal for a 1% packet error rate. So 100-58 = 36dB of margin- that’s a lot. The margin can be used for fading, obstructions in the path, or lack of full Fresnel zone clearance, or any combination. It’s a “link budget”, spend it as needed!

We should add loss, even in line of sight, if the antennas are not elevated to avoid Fresnel zone attenuation. This is more important as the path length increases, with low height antennas. Most common is terrain or tall buildings in the path, more impact if close to an antenna. Diffraction does tend to offset this, but this goes into the black art of RF engineering. Here’s a graphic: http://www.cdt21.com/resources/siryo8.asp

The first Fresnel zone clearance, at 1/10th mi. is about 12 ft. for antenna height.

The second zone is about 17 ft.

So pay attention to antenna height.

And… compare the actual received signal strength as estimated by the Digi status info versus the math; in line of sight, the two should agree to say 6-10dB.

stevech:
Power draw is a clue. But you’ll have to look using a current probe on a 'scope, as the 45mA you’re seeing is probably the receiver, and the transmitter has a low duty cycle.

Is the AT command register you use to choose the power at max?

I don’t recall, but perhaps it defaults to some lower power. And it’s dependent on what regulator domain you’re in. These are frequency hopping radios so they meet the regulations on duty cycle vs. frequencies occupied.

As to 300ft - line of sight, I assume.

The modules are 17dBm (50mW), into rubby ducky which are 0 or 2 dBi gain, or so. Let’s assume 0, since these are small, and f = 900MHz.

The math says, for 1/10 mile, +17dBm -76dB (path loss), no antenna gain on either end, = -58dBm received signal strength.

The receivers are spec’d at -100dBm signal for a 1% packet error rate. So 100-58 = 36dB of margin- that’s a lot. The margin can be used for fading, obstructions in the path, or lack of full Fresnel zone clearance, or any combination. It’s a “link budget”, spend it as needed!

We should add loss, even in line of sight, if the antennas are not elevated to avoid Fresnel zone attenuation. This is more important as the path length increases, with low height antennas. Most common is terrain or tall buildings in the path, more impact if close to an antenna. Diffraction does tend to offset this, but this goes into the black art of RF engineering. Here’s a graphic: http://www.cdt21.com/resources/siryo8.asp

The first Fresnel zone clearance, at 1/10th mi. is about 12 ft. for antenna height.

The second zone is about 17 ft.

So pay attention to antenna height.

And… compare the actual received signal strength as estimated by the Digi status info versus the math; in line of sight, the two should agree to say 6-10dB.

Great idea on looking at the power draw on the scope. Like you said, at 9600 baud the duty cycle was probably pretty low.

I looked at the datasheet, and as far as I can tell there are no AT commands (or API commands) for changing output power. Indeed at 300 feet that 36db of margin is a lot. This was tested with direct line of sight. I could actually see the ducky antenna at that range, so no obstructions at all. Swapping to the wire antenna based 2.4 GHz modules instantly improved the range almost 10 fold, and perhaps more (ran out of room)

It is a good idea to see what the received signal strength is in a direct line of sight test. I’ll give that a try and see what it reports.

Either way, I suspect there is some kind of hardware problem with one or both modules. I am planning on using this at a data transmission in a high powered rocket, so I’d like to get range with a 0db gain antenna of at least 3000-4000 feet. At 4000 feet, propagation loss would be 93db, so I would still be well within the -100 dbm receive level. Even at my eventual goal of 30000 feet, I am close to being in range. Add in a nice high gain antenna and I would be good to go.

Thanks for the great suggestions!

Jeff

check the AT register for received signal strength and see if one end is a lot weaker than the other

stevech:
check the AT register for received signal strength and see if one end is a lot weaker than the other

Good idea… I’ll check the received signal strength at different distances. The great people at Sparkfun are sending me an extra 900 unit to try out. With three of them I should be able to isolate a single bad board. Sweet!

Jeff

Jeff

I have the same situation as you, I ordered 2 of the Xbee Pro 900 with a wire antenne. I had ranges of 300 to 400 yards with them. I decided to add the duck antennes from sparkfun figuring they would give me more range. The range with the new duck antennes has dropped from 300 yards to 300 feet.

Have you figured out the problem with your setup?

I am having the same problems. My work has bought about 20-30 Xbee Pro 900s and all of them have the same problem. Only getting about 300 ft with 6 feet clearance. If you get about 30 ft above the ground you can get about 850 ft. We have found that if you go into API mode of the module you will notice about 75% packet lose. It has something to do with sending too much data faster than those module can process and receive an ACK on that packet from the opposing module. We started using API so we can see more details about what is going on.

tshrove:
I am having the same problems. My work has bought about 20-30 Xbee Pro 900s and all of them have the same problem. Only getting about 300 ft with 6 feet clearance. If you get about 30 ft above the ground you can get about 850 ft. We have found that if you go into API mode of the module you will notice about 75% packet lose. It has something to do with sending too much data faster than those module can process and receive an ACK on that packet from the opposing module. We started using API so we can see more details about what is going on.

In any modem, wired like dial-up or wireless, you need to provide flow control so you don't overrun the channel's capacity. That will vary by time and conditions, e.g., timeouts and retries of transmissions for error correction. The XBee has a CTS bit which can go false (if you configure for such) when the transmit buffer is full, meaning don't send more while CTS is false.

Better, your application has some sort of logical protocol handshaking with the far end, for flow control.

But atop all this, antenna gain/size, directionality, and elevation to provide what’s called Fresnel Zone clearance, also govern received signal strength. You can easily do the math to determine if a link should work, for a given transmitter power, transmitting antenna gain, clear line of sight path attenuation (from laws of physics), receiver antenna gain, and required signal strength (per receiver specifications). That’s called a link budget.