TDMA with Digi XTend 900 modem

I am working on a project where we have several remote XTend 900 modules reporting GPS data to a central location. My predecessor has implemented this using TDMA as follows:

The system consists of several remote units on a single hopping channel. The units use GPS PPS data to synchronize so that each one broadcasts during a specific (unique) time slot. The time slot for a typical unit is 20-50 ms long (depending on how many units are sharing the hopping channel) and repeats every 250 ms, giving us four samples per second from each unit. The message sent by each unit during its time slot is about 150 bytes long.

For each hopping channel used by remote units, there is a receiver at our central station. The idea is that each receiver is responsible for the stream of data coming from units on a single hopping channel. This stream is then de-multiplexed in software to give one sample from each remote unit every 250 ms.

The problem is this… Each remote unit is frequency hopping independently of the others, so there is no guarantee that the incoming stream of messages will follow the usual frequency hopping scheme for a given channel. Thus, I believe, the receiver is actually “resetting” its frequency hopping scheme between messages–falling back to the initialization mode where it searches for a transmission on any of the 50 available frequencies.

I have three questions:

The first is whether someone can recommend a better scheme than the one we are currently using. Each remote unit needs to send 4 messages of 150 bytes each per second, and we would like to support 20-50 remote units.

The second, more specific, question is whether there is a way to synchronize frequency hopping between units. Since we have a GPS PPS source, in principle we should be able to follow the same hopping scheme that would be used for a given channel, but with each message sent from a different remote unit. However, looking through the user manual I don’t see any documented commands which would allow us to synchronize frequency hopping in this way.

Finally, I wonder if someone can describe in greater detail how the frequency hopping scheme works. At the moment, our maximum packet length is set to 200 bytes and we shut down the transmitter between messages, so each 150-byte message sent from a remote unit is sent as an individual packet during that unit’s TDMA time slot. However, it’s not clear to me whether a single transmitter will attempt to send the next message (250 ms later) on the next hopping frequency, or if hopping has a timed component which would cause it to “skip” some frequencies. It also isn’t clear to me how the receiver “searches” for transmitters during initialization, or what conditions might cause it to be re-initialized. This information would help a lot when I’m trying to understand/model the behaviour of our system.

Thanks so much for your help!

At 50 nodes, you are more than doubling the radios throughput capabilities. This means that this is simply not going to work with that many nodes.

No, the radio hops to the new channel as soon as it is done transmitting the current data.

I wonder if you can expand on the radio’s throughput capabilities.

As I understand it, the radios are capable of 115 kbps on each channel. With 10 channels, that would be 1.15 Mbps. If each message is 150 bytes, and if we’re trying to send 4 messages per second from each of 50 units, that would be 240 kbps.

Of course, there is some overhead which isn’t accounted for here, but it’s not clear to me where the limit you mention comes from.

If the radios hop only when they are done transmitting the current data, then in principle we could synchronize the units by, e.g., forcing them to send a fixed number of messages every second. The only difficulty then is getting them all started at the same point in the hopping sequence. Is there any way to “reset” the radio to the start of the hopping sequence?

No, that is a total of 115.2kbps period using all 50 frequencies.

I think you may have misunderstood me… In testing, sending 150-byte messages on a single hopping channel, I’ve been able to get throughput rates of at least 75 kbps. The datasheet specifies a throughput rate of 115 kbps. I assume the difference is simply due to the overhead of sending a number of smaller messages.

Of course, a single hopping channel uses all 50 frequencies, as you say, but it doesn’t use them all at once–that’s why we can operate several channels simultaneously. By making use of those unused frequencies, we can increase the throughput rate, but at the expense of a few collisions.

The link you provide seems to indicate that when a second hopping channel is used, we can expect about 4% collisions in theory but 10% in the real world when we have 25 frequencies to work with. For a system that has 50 frequencies, like the XTend 900, presumably those figures become 2% and 5%.

Adding a second channel, I would expect to get at least 150 kbps (double my measured rate) minus 5% loss due to collisions, or about 142 kbps.

If we use 10 channels, I might expect 750 kbps minus 18% using the theoretical formula, or perhaps 45% in the real world. This would give us about 412 kbps total throughput rate using all 10 channels.

The big question on my mind right now–what I would need to know in order to test these limits–is if there is a way to put the frequency hopping mechanism into a known state (i.e., reset it to the first hopping channel) so that I can synchronize between multiple units. Presumably this is done on start-up, but I wonder if there is a way to do it without actually cutting power to the radio. When the unit goes into pin sleep mode, does it reset the hopping frequency? How about when it goes into shutdown?


It is not a second channel for the radio so much as it is a 2nd radio network operating on a different hopping pattern using the same 50 frequencies.

The RF Data rate is 115.2 k bits per second. 8 bits per bite. If you are sending 150 bytes 4 times per second, that is 600 bytes per second. That 600 bytes = 4,800 bits per second just from 1 node.

Sending data in one direction with no guaranteed delivery system from 20 nodes, you have a total throughput of 96,000bits per second. At 25 nodes sending data, you have reached 120,000 bits per second which then exceeds the 115.2kbps data rate.

The nodes are always listening on all channels and only transmit on a specific channel. The sync function occurs while the radios is assembling the data packet and initializing the channel.

This is not a synchronized product. It uses a pseudorandom pattern for the frequency hopping mechanism. You might want to use the Polling function on the radio to control who talks when.

I see. This makes things a bit easier. I had assume that the receiver was only listening on the next frequency in the hopping pattern, but if I understand correctly it is always listening on every frequency–only the transmitter is specifically aware of the hopping pattern. Is that correct?

Synchronization of transmission times isn’t a problem. As mentioned above, I’m using the GPS PPS output to synchronize transmissions. The big question for me has been whether it was necessary/possible to synchronize the hopping patterns of several transmitters operating on a single hopping channel. However, if I understand correctly that the receiver is not specifically aware of the hopping pattern, then it wouldn’t really matter if the transmitters were synchronized or not.

The Xtend is an Asynchonus product. It has 50 frequencies that 10 unique Psudorandom hopping patterns share.

Modules with the same HP or Hopping channel/pattern are able to hear each other.

Module operating on Different HP or Hopping channel patterns are NOT able to cross communicate.