Fixing the Terrible Range of your Cheap NRF24L01+ PA/LNA Module

nRF24L01+ PA/LNA module specs look great on paper. Wireless communication up to 1000m in a small package readily available from a variety of cheap sources in China? The hard work of software connectivity already done by a variety of open source projects? Sounds great! But if you mashed BUY and are getting maybe 1% of that range, don’t worry because thanks to these clear directions, they can be fixed.

[Oitzu] got vastly better performance from his cheap units with a mixture of providing better power, controlling noise, adding shielding, and being careful to choose the right channel. He claims that “with [these] modifications I got about 1000m free line of sight out of the modules. In a forest with non free line of sight I measured about 270m, but these are probably not the maximum ranges possible. I need to test further.”

Modified nRF24L01+ PA/LNA modules and the MySensors software framework were used in another of [Oitzu]’s projects we recently featured: his solar-powered, networked birdhouses where they handle transmitting camera images to a Raspberry Pi for later uploading via the mobile network. He was able to get the aforementioned 270m in the woods, but not even a tenth of that before doing the simple modifications.

57 thoughts on “Fixing the Terrible Range of your Cheap NRF24L01+ PA/LNA Module

  1. Seems to me that the module was working fine, and that it was entirely the fault of the user who fed it with crap power and put it in a noisy environment.

    Considering that these module do not claim to do any filtering of the power lines, and clearly state that they need >100ma for transmit at full power, having a well designed power supply seems like a no brainer, especially when you consider that the packet nature of those radios necessitates rapid switching between transmit/recieve which will wreak havoc on a poorly designed SMPS supply. Also, if you want to have any hope of the crappy ‘1/4 wave’ whip antennas working you need to mount them on a ground plane (probably roughly what he did by wrapping the entire thing in aluminum foil), again an issue that is a complete non-sequitur if the module had been correctly mounted in a metal box with just the antenna mounted on a feedthrough SMA.

    1. You’re absolutely right. When you buy such a cheap, unshielded module, you don’t buy a complete radio, you just buy a piggy back PCB, that saves you from having to solder QFN ICs and doing all the microwave rf matching.
      It doesn’t save you from having to acquire rf knowledge to build a complete, functioning and compliant device.
      If you’re after that, buy a shielded, certified module with integrated micro, that’ll cost you about 100 times the money.

      1. @fuckface At the time i was writing that post it was mainly aimed at users having trouble to get the modules working, also the post was initially only focused on the shielding fix and expanded later with more errors that could occur.
        So yes, you are totally right about that a unstable power supply is the user fault, but that doesn’t prevent the user from doing it wrong. :)

        About noise: Well, on maximum power the module will not work without a shield regardless of a noise free envoirment and a clean powersupply. Isn’t mounting the module in a metal box not just a way of adding a bigger (volume wise) shield?

        @cyk: Actually there are shielded modules out there which claim to be FCC approved that will only cost you just 3 times the money. ;)

    2. @fface: (Potty mouth!) You’re right, and you’re wrong.

      What percentage of projects using nRF24 modules do we see here (a fairly savvy audience) where people just power them off the 5V rail of their Arduino? Tons. How many shield the things? None. With counterpoise? Please!

      The point is that if you buy one of these modules and follow the directions (haha! get it!) you’ll end up with the same thing that everyone has — a bare nRF24 module jammed into a breadboard under a tangle of wires sealed in a cardboard box.

      Documenting a better way to do it may not, in itself, be a hack. But it can certainly up the level of hackery in general. And that’s what we’re really here for, right?

      1. It’s 3.3V. I got lucky and can use max power w/o even having to use an external supply, unshielded too. I’ll do it when/if I run into issues…haven’t done much RF testing yet, still coding.

    1. If you’re interested in homebrew 2.4GHz antennas, checkout “andrew mcneil”‘s channel on YouTube. He literally has dozens of very informative 2.4GHz antenna builds and related videos.

        1. I made a 915 MHz omnidirectional biquad adapted from Andrew McNeil’s 2.4 GHz one (https://www.youtube.com/watch?v=4t6OliwhJ5g) for my Ubiquiti router car-to-home link. It works pretty well and was easier and more compact than a collinear for the same gain. http://superkuh.com/915MHz-Omnidirectional-Biquad.jpg

          His construction techniques using cut straws or metal sheet jigs for repeated wire cutting/bending have helped a lot. RG-402 semi-rigid coax for ease of soldering also.

  2. Those radios are fun because the majority of them coming out of China are actually counterfit chips. They work pretty well for being fakes, but the funny part is that the genuine radios actually have a design flaw that the counterfits don’t because they match the specification. You won’t notice unless you use the high throughput ping-pong mode; a counterfit won’t talk to a genuine because one of the bits in the packet is flipped! I recommend always buying them in pairs until you get your software fully bug free…

    1. I use the RFM75 or RFM73 which are clones with the proper bit for the nodes. However I use a NRF with PA/LNA big antenna at the center to get good range. It pisses me off a lot that I cannot use the auto ACK between them. Or that hoperf does not make their “high power” version with a LNA and external antenna.

  3. Nothing about changing bitrate to 250K…that alone improves range a lot.
    What about antenna – is it directional and matched?

    Tinfoil shielding is quite funny to me….

    1. Years ago I did some tests to get the longest range possible from some XRF radio modules with standard whip antennas running at 868.3mhz. I discovered that if I set the over-the-air baudrate down to 1.2k I achieved 3.4km when the antennas were aligned just right, with 1km giving a great signal.

      I also did a quick video to show the difference in terms of how much transmission is done between a packet being repeatedly sent at 250k and then at 1.2k by holding a wireless bug detector next to the transceiver:

        1. Radio novice here.
          But more power at a lower rate, I thought it balanced out. Like a text message versus a call. I’m having difficulty finding the words for this.

          1. It does balance out, roughly. Higher data rates require propotionally more bandwidth, greater bandwidth proportionally increases received noise, requiring higher transmit power to overcome, so you end up with the power * data rate product being about constant for a given path and a given signal/noise ratio (which translates into 1/(error rate)). That’s assuming that the receiver bandwidth is reduced along with the data rate, but I don’t know if modules like these do that.

          2. @BrightBlueJim is right. As long as you can still increase your power or decrease your bit rate, you can kind of trade them one for another. But in practice things are different: a shorter packet with the same SNR has a smaller chance of being impacted by some other transmission in the shared band.
            This is why people tend to use the RX power at maximum and only then decrease the bit rate if the SNR/range is not acceptable.

        2. Thanks for the clarification, though the XRF modules I have run on 2v-3.6v and only consume 36mA when transmitting at full power, so not very much energy is used to transmit slow data at long distances.

  4. On the majority of transceiver modules I’ve purchased, the nRF24L01+ is an unlicensed clone, not made by Nordic Semi. The clones’ weakness is that they’re extremely sensitive to power supply noise. 50mV p-p of switching noise is enough to degrade their usable range to a few feet. And if there’s a PA/LNA, well… you know what they say about garbage in, garbage out.

    For the modules without PA/LNA, I start by soldering a 10uF ceramic SMD cap directly to the VCC/GND header pins. This helps, but often isn’t enough when powered from an average switcher. Instead of making the cap larger, I connect the module’s VCC and GND each through a 1ohm resistor; which in combo with the added cap, makes a more effective Pi filter. This always does the trick, and results in the expected range.

    For the modules with PA/LNA, I use 100uF and 2x 0.1ohm. Plus I usually add a LC Pi filter on the switcher output.

    This should be considered required knowledge for working with nRF24L01+ modules.

  5. Here is what I have learned from using these:
    1. careful about the power supply: a. decouple your LDO properly(it needs 1-2uF ceramic, not 100n + 100u electrolytic!). b. use a decoupling cap next to the module (1-2 uF ceramic).
    2. use a linear instead of a switching power supply
    3. Don’t use polling over SPI to check if there is a received packet like most of the libs out there do. This increases the noise. Use the IRQ pin
    4. 250Kbps does wonders
    5. Careful about cheap connectors, solder it if you can.
    6. A big ground near the module is preferred, like putting it in a metal box with a good contact to antenna ground.
    7. Don’t use long wires to the module, specially cheap stuff. See here: http://www.electrobob.com/bad-wires/

    1. This is excellent advice. I’m having issues myself with some shielded version of the PA+LNB versions, I presumed ordering the shielded versions would fix my issues, but it didn’t.

      I use these module boards to attach my units: http://www.addicore.com/nRF24L01-Adapter-p/123.htm

      The issue I have is that the module only sends when I physically hold the unit in my hand, I presume it’s related to the grounding of the module. When I hold it I get superb range. Looking at the above I’m going to try and add some ceramic capacitors (http://uk.rs-online.com/web/p/products/8523315), do I need to add them across the ground and vcc at both the radio and the modules I use above? With regards having to hold the unit, how could I fix this, I metal box isn’t an option for my application. Any thing else I should be aware of?

      Any help or advice would be greatly appreciated, I’m new to electronics!

      1. BTW Be really careful using large values ceramic caps (MLCC) on those OLD 1117 regulators which is shown in your link. The regulator is very old and was designed before MLCC, so it is not stable without having some minimal ESR. It is only designed for electrolytic caps. The part is very cheap ($0.03 from China), so it gets around.

        I read my datasheet and knew about the issues for the original part LM1117 that it is based on, so I designed in a series resistor. Just for the hell of it, I tested out the outputs when I use them in my design. https://hackaday.io/project/11427-low-cost-ntsc-gaming-with-arm-cortex-m/log/37823-pcb-layoutbuild

        go to bottom of the page:
        The scope picture with the saw tooth wave is because the ESR of the MLCC is so low that regulator goes into oscillation. By adding a series resistor (1R) that I have designed in, the output is as expected.

        Lesson of day: Don’t mix old regulators with large value ceramics caps without reading datasheets – preferably the one they are based on. Use chips that are designed in the last 5-10 years.

        Your second link capacitor has shitty Y5V dielectric as their values drops to a small fraction under bias. You want X7R, or X5R dielectrics. In general, keep the leads/connections very short when you use decoupling caps as the inductance of the leads adds impedance.

        1. Hi @fpgacomputer,

          Thank you for the reply, of which I think I understood most of it :-/

          SO given that I use the modules I linked too, how would you set things up (Capacitors / Resistors for example). I’m completely new to electronics, so the simpler, the better (I barely understand decoupling, oops). That said, I’ve spent weeks trying to get things working and am pulling my hair out. I’m really not sure why holding my modules makes them work perfectly, from what I’ve read it could be related to the grounding of it? BTW, currently I connect the module to the 5v line of my Arduino Uno.

          Any help would be very gratefully appreciated.

        1. Hi Bogdan,

          I can put some pictures up, but the wiring is pretty simple. I’ve basically got the adaptor board wired into my Arduino, and the shielded / non shielded NRF plunged into the adaptor board. The code works perfect, no question, confirmed using the non amplified versions.

          Like I say, if I hold the module the range is amazing and the transmissions perfect, if I don’t it’s terrible and transmissions are very slow, I presume it needs a better ground?

          I’m a little confused about the decoupling / resistor business, do you suggest I put small capacitor, for example 0.1 across the gnd / vcc along with a 1k resistor on both the radio and where the wires leave the Arduino for the adaptor board?

          Excuse my lack of knowledge!

    1. See how they have a board with nice decoupling next to the module? Most people will skip the board and hook up the module directly, skipping that capacitor and using thin wires. Also, the PA version of the NRF burns more current than the RFM69 (low power).

    1. lora will not save you if you make a bad design. ” getting maybe 1% of that range” as the article says points to some fundamental issues. of course, you can always get a crappy module, but they generally seem to be ok.

  6. Those nrf24L01+ chips have this nice bit 0 in register 09 marked as RPD – Received Power Detector. When there is any signal received on selected channel with strength over -64dBm, bit changes to 1 when you switch off RX mode. Why not use this function to quickly scan over entire channel range, find one channel that is empty and send to receiver a command to switch to that channel?
    Also I thought that everybody knows that each IC and each module needs its own power filters next to them. There are even sockets designed for logic chips that have 10nF or 100nF capacitor build in across Vdd and GND pins…

    1. I tried. The quickly scan is not a good measure. I live in an urban area with lots of WiFis around. Using that method I find something on every channel. What I found to give better results is to go to the frequency of wifi channel 8-9. Why: most APs default to channel 1, some use 6 or 11, which are the non overlapping ones. If nobody manually sets their AP there, 8-9 should be the quietest area.

  7. I’ve got some, and I appear to be lucky, in that they appear to be genuine ones. They have the built in antennna, and don’t have great range, but for the application I wanted, monitoring of things like plant water levels every so often, they have good enough range.

  8. One thing i would like to know is if these ultracheap “clone boards” actually are anywhere near the specs they should be for an RF-application. Are the RF traces impedance controlled? Do they even bother to check the impedances they get at pcb fab with test strips? And how well is the power distribution network of these boards designed? Do they actually do a proper PDN analysis and make shure the impedance of the power network is up to the task at hand?

    1. In your dreams….they even start taking out components off the cheapest modules. https://ncrmnt.org/2015/03/13/how-do-i-cost-optimize-nrf24l01/
      It may be that the modules are cloned from some better designed ones, but i know for sure there are at least 3 designs for the small power and 3 for the high power modules. So, maybe not.

      If you want something better, but still low cost look at HopeRF modules, they have the RFM75 (newest or 73 older). They are really compatible with the genuine NRF (won’t ACK with fake ones). You can get them from some of the big distributors as well, not crapbay.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s