I am conducting some speed tests with my XBee Pro Series 2. I Send a bunch of 256-byte payloads from the ConnectPortX4 coordinator using the Python socket sendto function. It seems to take 250ms for each message to send.
I get similar results sending data the other way via an application I have written which sends a TX request message via the serial port at 115200 baud. When I send the message from my app, I can receive a TX status message if I set a non-zero frame ID. This status message comes back with all zeros following the frame ID, which is good as it implies zero TX retry attempts and successful delivery.
Does anyone have any ideas why the transmission of a 256-byte packet should take nearly 250ms to send over a tiny distance?
To rephrase the question, has anyone tried sending large packets over a short distance, and if so what kind of data rates did you achieve? I’m using a CPX4 coordinator with XBIB dev board (XBee Pro Series2), sending 256-byte packets from coordinator to router at close distance, then watching the data come in and timing the duration.
I can only achieve around 1KBps. Is this to be expected, or does this seem unnaturally slow?
There are a variety if issues here - the largest one is that ZigBee (the S2) can only send between 65 and 80 bytes per packet (depends on header options). So when you send 256 bytes from the X4, it uses a fragmentation header to mark the approximately 4 Zigbee packets required as related. So your 250msec is the time for all 8 packets to be exchanged - so 4 request/response cycles or about 40 msec per packet.
Keep in mind if device discovery kicks in, then your time to send 256 bytes could easily hit 5000 msec or more.
I am pretty sure you are not going to like ZigBee, because it was never designed to move a 256-byte packet. It doesn’t understand ‘streaming’ data or even baud-rates. ZigBee is a sensor network designed to move 10 or 12 byte packets
If your goal is moving large blocks of streaming data, then you’ll find a more predictable protocol like raw 802.15.4, which can easily move 1 packet of up to 100 bytes per 50 msec. However, it doesn’t ‘mesh’, so must be line of sight.
Many other proprietary systems can support a 256 or even 2048 byte packets as a single RF transmission.