Pololu Robotics & Electronics
My account Comments or questions? About Pololu Contact Ordering information Distributors

Configuring radio for high packet transmission rate


How can I configure the radio for a high successful packet transmission rate (possibly at the expense of other things like data rate)?

Each packet I’m sending will contain about 18 bytes. I’ve already picked a channel that doesn’t interfere with nearby WIFI (checked with a spectrum analyzer).

Here are some of the options I’ve seen in the CC2511 data sheet. Will tweaking these help?
[li]data rate[/li]
[li]channel bandwidth[/li]
[li]forward error correction[/li]
[li]modulation format[/li]
[li]output power (I think the Wixel libraries already set this to nearly the max value)[/li][/ul]

About my application:
One wixel (TX) sends packets at a regular interval (50ms) to another wixel (RX). When the RX side gets a packet, it starts a timer to time some event. So if a packet is not received, the event is not timed and we lose a measurement. And yes, the trigger to start the timer has to be sent remotely (RX cannot know by itself when to start timing).

Besides trying to increase the packet transmission rate for a single packet, I could try to design a protocol with multiple transmissions, but this is trickier. For example, I could have the TX side send 3 packets in a row. Depending on which one is received first by RX, it will have to add an offset to the timer value (e.g. add 0 if you got packet 1, add X if you got packet 2, add 2X if you got packet 3) because packets sent later will be received later and cause the timer to start later. This requires knowing the time interval between packet transmissions from the TX wixel. I’m basically trying to avoid this kind of complexity…


Maybe this info will also help. I modified the test_radio_signal app to additionally print out the number of packets that failed the CRC check and the total number of packets received (sum of good packets and bad CRC packets). Almost all of the packet error rate is due to CRC errors. Only occasionally will I lose a packet because the RX picked up nothing.



Our recommended radio settings for the Wixel can be found in radio_registers.c in the Wixel SDK. Those are the settings you are probably already using if you developed your app with the Wixel SDK.

It is probably a good idea to set FOCCFG to 0x1F to allow for wider differences in frequencies between Wixels. I wrote more about that in a previous post, but we have not made that change to the Wixel SDK yet.

When we were developing the Wixel, we did find that faster data rates caused a lower packet success rate. You might try making the data rate lower to see if that helps.

You could try enabling Forward Error Correction (FEC) as described in 13.11 of the datasheet. This requires you to use fixed packet length mode.

You might try selecting a different modulation mode in MDMCFG2. The MDMCFG2 documentation says that GFSK cannot be used with data rates above 250 kBaud.

The radio has many different options and it is possible that there are some options I did not list that would make a big difference.

Please let us know what you find out.