Transmission performance with CC1101 radio


I am trying to determine the highest datarate possible using the CC1101 radio.

My use case is the transmission of media files.

With the following configuration I have only been able to achieve 1.24KBps:

  • modulation: 2-FSK

  • Frequency: 869,25 MHz

  • Datarate: 299.926 KBauds

  • udp as transport protocol

  • with gnrc_sixlowpan_iphc module disabled

To measure the data-rate I modified udp.c in examples/gnrc_networking

@ udp.c I am printing the time between each packet sent, the time of all packets sent and the total number of Bytes transmitted. I defined y and n:

uint32_t y = xtimer_now**();**

for (unsigned int i = 0; i < num**;** i**++)** {

uint32_t n = xtimer_now**();**

And m, before the for ends and x after it finishes

uint32_t m = xtimer_now**();**

printf**(“Time per packet (ms): %ld\n”,(m-n)/1000);**


uint32_t x = xtimer_now**();**

printf**(“Total Bytes sent: %u\n”,** strlen**(data__)*__num);**

printf**(“Total time (ms): %ld\n”,(x-y)/1000);**


Packets are sent by:

2016-07-04 14:35:27,609 - INFO # > udp send fe80::ff:fe00:66 5 01234567890123456789 100 9500

which sends through port 5 packets of 20 Bytes, 100 times with a delay of 9500 us between them.

As a result I get this:

2016-07-04 12:09:48,179 - INFO # Time per packet (ms): 13 2016-07-04 12:09:48,180 - INFO # Total Bytes sent: 2000 2016-07-04 12:09:48,180 - INFO # Total time (ms): 1612

In addition, with this configuration, I am receiving 38 packets of the 100 packets sent.

When trying to reduce the delay time between each packet to 9 000 us, the transmitter stops and does not send anymore even if I put back delay time to 9 500 us, only transmits back again when I reset it.

The more packets I try to send in that loop the larger the delay between packets needs to be.

How can I further investigate where the bottleneck comes from? Or if you have any idea on this issue?

Thanks in advance,