This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-CC1310: Strategy for working in noisy environment

Part Number: LAUNCHXL-CC1310
Other Parts Discussed in Thread: CC1310,


We've been using cc1310's for years and have a large established client base in Europe. We have now started selling in the US and have come across a few problem sites where the noise floor across the whole 915MHz spectrum is around -80dBm. 

We have conducted many tests with variations in the bandwidth, frequency, packet size and baud rate. Bottom line is that on our preferred data rate (38.4kbps) we are unable to achieve more than around a 50m range with clear LOS. Inside a building, where the noise floor is attenuated, we can achieve about 150m.

The noise source is a bit of a mystery, we have tried to isolate other 915MHz protocols, but there is nothing obvious. Perhaps LoRaWAN from oil and gas drilling rigs within a few miles away, though the noise does exceed the typical channels that LoRaWAN might use. The site is very remote, 30minutes drive to the nearest town, in the middle of nowhere. At this point we're also not ruling out environmental issues (like high iron content in the ground) as phone reception is very poor despite high signal strengths.

The two main FCC $15.247 compliant strategies we have tried are:

  • WB-DSSS (x8) with a deviation of 195KHz, rx windows 622KHz. 
  • 2-GFSK, with a deviation of 250KHz, rx window 622KHz (seems to give 500KHz bandwidth at 6dB).

However, neither achieve any more than ~50m and reception is lost when the RSSI reaches the noise floor, around the -80dBm.

Now using narrow band EU style frequencies work wonderfully across the whole 915 spectrum:

  • 2-GFSK, with a deviation of 19.2KHz, rx window of 98KHz. This gives us a range of about 200m in the same noisy environment, but is of course not a legal profile.

My hypothesis is that the size of the receive window is simply so large that it's a funnel for all the local noise. I have done some testing on this, but it's a little crazy and is all to shoehorn a solution where we transmit on a wide bandwidth to comply with FCC, but then receive on a very narrow band.

One approach I have been looking at is to transmit on 2-GFSK (250KHz deviation) and receive using a narrow band OOK on one of the peaks of the 2-GFSK signal. This strategy does appear to work with some limitation:

  • OOK won't go over 10kbps reliably
  • OOK does not receive the data correctly if the 2-GFSK deviation is greater than about 60-70KHz.

It works surprisingly well for a bitrate of 10kbps with the GFSK deviation set to 50KHz, where the OOK listens on the GFSK centre frequency + 50KHz. However, the more the baudrate or the transmitting deviation are increased, the higher the packet error. 

Two other solutions might be:

  • Use OOK, with the signal shaped to transmit over a 500KHz bandwidth.
  • Artificially increase the tx bandwidth for 2-GFSK without increasing the deviation beyond a narrow band.

To my knowledge, these solutions are both beyond what your API of the cc1310 radio can achieve.

So, finally, here are my questions:

  1. Is that a reasonable strategy? Or is there some other-way to get more reliability with a high noise floor?
  2. How can I get OOK working at 38.4kbps, receiving one peak of the 2-gfsk at a deviation of 250KHz? From the forum, I hear that OOK is not very well supported your end. 
  3. Is there another way to transmit in an FCC compliant way, but receive the same signal on a narrow receive filter BW?

NB: We see no difference, using the LAUNCHXL-CC1310 or our H/W, they behave identically.

Thank you for any help or insight.


- Oliver

  • Reporting some progress since Friday, though not sure I can explain where why deviation slips.

    Transmitting at 2GFSK, on 19.2KHz and a deviation of 250KHz, I can almost successfully receive OOK at a deviation of 207KHz; if I increase the RX window to 98KHz.

    The BER is 0.03%.

    The working OOK RX window is between 205KHz and 230KHz from the center frequency of the 2GFSK transmission; 207KHz has the lowest error rate. Note, the is no cap array delta on this test, so there could be an intrinsic offset on both sides too.

    Two observations:

    - At a transmitted deviation above 50KHz, the OOK is not 1:1 and needs to listen on a slightly lower frequency than expected. Not sure how to calculate the actual center point.

    - At higher baud rates, the RX window needs to be larger - this makes sense. Haven't managed to increase baud above 19.2KHz yet.

    The original questions still stand.

    Most importantly, is this a sensible way to address the noise floor problem?


    - Oliver

  • Hi Oliver,

    Thank you for including so much detail in your question(s). Resources are a little constrained due to the summer months but I am replying just to make you aware I am looking into this and will get back to you as soon as possible.


  • Oliver, we believe that the best way of combatting the noise problem is to avoid (hopefully) the noise by moving around it (this is assuming that the noise is not flat across the full spectrum. One way of implementing this is to use frequency hopping with fairly narrow channel (as you suggest above). We are offering software solutions for this in our TI 15.4 stack (but you would need to modify it somewhat) . Now, this might mean large protocol changes for you compared to what you have today (frequency hopping is also harder to do with very low power). An other alternative is that you expand you're current protocol to using two frequencies with a relatively wide frequency spacing.  In a such solution the receiver could scan the two frequencies and the transmitter could try one and then go to the other if you did not get an "ack" on the first try. For this you would need to use the 500kHz + for example with the DSSS solution. 

    Have you tried moving the RF frequency around - is it -80 dBm all over?

  • Hi engiNerd,

    Thanks for the response. Alas, the noise floor is pretty consistent across the whole 915 band. We already implement a multi channel solution and can manually or automatically select the channels to communicate on - where each channel is spaced at 622KHz and transmitting on a 500KHz WB-DSSS bandwidth ~36-37 channels to play with.

    I would be interested to get a quick demo of your frequency hoping solution and some source code to look at. If there is something that will run on the launchpads, I can ask one of our US field engineers to try it on site before putting in the effort to change our stack.

    I appreciate that it may involve a significant change to the use of the system, if I can prove that it works (or doesn't) in situ, then the effort will be worthwhile; we have about 5000 devices due to be installed on that sire.

    Kind Regards

    - Oliver

  • Hmmm, it seems like you have already done quite a lot here. Are you really sure that the noise floor is that constant, I find that a bit strange, but I have also not measured.... By the way, if you have a very strong blocker, it will desensitize the whole radio such that it will look like you have a flat noise floor. It would be interesting to check the noise floor with a narrowband setting (like 10kHz) - it is still flat? Anyway, you will find more stuff about the 15.4 stack here: You would try the 5kbit/s LRM - this adds DSSS+FEC in addition to the hopping, but might be too slow for you??? Next one you should try is the 50kbit/s.

    Another frequency hopping protocol that also offers mesh is WiSUN - note that for the moment this solution does not offer support for low power nodes: 

  • More info about the Long Rang Mode can be found here: