Fixing your cheap nrf24l01+ pa/lna module

nrf24l01+pa+lnaThe typical cheap nrf24l01+ pa/lna is sensitive to noise, badly shielded and energy hungry. Chinese sellers advertising them with “wireless communication up to 1000 meters!”. In reality although you can call yourself lucky if you reach with a unmodified module 10 meters.

Luckily, you can fix this.

Add a proper power regulator

By example you could use the switching LM2596 DC-DC power regulator. The pa/lna module need 120mA minimum on maximum power output. Make sure your regulator delivers enough current and to connect GND between your external regulator and your RPi/Arduino/µC/whatever. Better, if possbile, would be a linear power regulator. A linear power regulator doesn’t have the problem of output ripple.

Get rid of the noise from your power source



In case you bought a cheap switching power regulator (like LM2956s china clones) you probably now got a lot of noise on your power rail. Filter this out with a simple LC-Filter. A 3.3µH chocke in combination with a 220µF capacitor should do the job.Just solder it on a little bit of prototype board and connect it right behind your voltage regulator.

Because people asked, see: Building a LC-Filter


Shield your module

The normal nrf24l01+ pa/lna is terrible unshielded. But there is an ugly fix for that. Simply wrap it up in cling film to prevent short cuts and after that in adhesive tinfoil.

Note: The tinfoil touches the ground from the antenna connector.

Pick the right channel

It is important to pick a good channel for your RF Network. The RF24 scanner can help you with this. Keep in mind that random sources like microwaves, by example, can disturb the performance of some channels, try a little bit which channel performs the best for you.


With this modifications i got about 1000m free line of sight out of the modules. In a forest non free line of sight i measured about 270m, but this are probably not the maximal ranges possible. I need to test further.

Any question, comments or success storys? Let me know in the comments. :)

This entry was posted in ugly fix. Bookmark the permalink.

26 Responses to Fixing your cheap nrf24l01+ pa/lna module

  1. Pingback: Building a LC-Filter for your nrf24l01+ pa/lna module | the ugly fix

  2. A good article. The simple shrink wrap and foil shielding is brilliantly simple! Great ideas and advice!

  3. Pingback: Fixing the Terrible Range of your Cheap NRF24L01+ PA/LNA Module | Hackaday

  4. Widi says:

    Hello, thanks for the info, but how about linear v reg ams1117 3v3?

    • Oitzu says:

      The ams1117 3v3 should be fine. But if you use it, have a close look at the application hints in the ams1117 datasheet. It gives you great details about stability and ripple rejection.

      • Widi says:

        So it doesnt mean that linear vreg is better?

        • Oitzu says:

          Linear and switching regulators have booth advantages and disadvantages.

          The characteristics you want to look at are Efficiency and Ripple/Noise.


          Linear Efficiency:
          Low on high voltage difference
          High on low voltage difference

          Switching Efficiency:
          High, except at low load currents.
          (low = in the uA range)

          Linear Ripple/Noise:

          Switching Ripple/Noise:
          Med/High due to switching ripple

          For a RF-Application like the nrf24l01+ you want ripple and noise to be as low as possible. Therefore a linear reg is the better choice.
          I mentioned the ripple rejection because a linear regulator also has the capability to reject the ripple that is coming from the input. For example if you are using a switching regulator followed by a linear regulator.

          Links to the topic:

          • Widi says:

            Thanks for the info, i got so much to learn, i make a diy rc tx/rx using arduino and nrf24l01+ pa lna and losing signal after like 20 meter or so its really frustating

          • Oitzu says:

            You still got problems after applying all this?
            Does the behaviour change with different sending levels?

          • Widi says:

            I did this project like 5 months ago actually, back then i was using switching vreg, and i did shield the module using aluminium from soda can, but the range is pretty bad, then i replace the vreg with ams1117 3v3, but no luck, all the test using 250kbps and max pa level

  5. Flevmatoid says:

    Yeah, and by reducing the bandwidth up to the minimum you can boost its sensitivity to the maximum, thus doubling the range

  6. Terry King says:

    There is a MUCH easier way to get good power regulation and bypass capacitors for the nRF24L01 modules. See:
    The $1.50 “Base module” solves the problems well.
    And see the example code…

    • Oitzu says:

      Maybe i should rephrase the part about power regulator.
      ” Better, if possbile, would be a linear power regulator. A linear power regulator doesn’t have the problem of output ripple.” is actually a reference on that. :)

  7. Lars R says:

    If you have some time, could your write some comments here in terms of whether you think this ( is a good idea or not, in general and with respect to your project.

    Many thanks

    • Oitzu says:

      Hi Lars,

      i read your project page and i think the concept itself is great.
      But i’m really struggling to decide if this is good idea or not.
      The reliability of a transmission could benefit from this concept but i’m a little bit worried of the datarate that could be achieved.
      Bottleneck datarate-wise would possible be the speed of the used microcontroller capped by the rate it could analyse incoming data.
      But i know nothing about the processing power of the nrf52.

      • Lars R. says:

        Thank you for pointing that out. From the three suggestions made, checking if at least one of the modules received a package with valid CRC, is the simplest. But a baudrate of 1Mbps might require a 32bit MPU with a couple of MHz to ensure that all receiver modules are handled in time.
        The nRF52 includes a Cortex M4F for custom programs. But I guess, first of all, its more about collecting the data together and processing all receiver modules in time.
        Once the data is together, lets assume 8 cycles per byte and module for comparison, thus 24 cycles per byte for the data from 3 modules. In that case, for 1Mbps, comparing the bytes requires 3MHz (24cycles * 1Mbps / 8Bit per Byte) in addition.

        • Oitzu says:

          Well yeah, the nRF52 looks like it should handle this with ease.
          About “first of all, its more about collecting the data”, whats your plan to actually achieve that?
          Connect a few external receivers to the SPI-Bus of the nrf52 (nrf24l01+ or similiar?) or interconnect multiple nrf52?

  8. Lars R. says:

    I like the nRF52 for combining Nordic 2.4GHz and BLE with a Cortex M4. However, for this particular application, one might use a MCU that suits best in terms of features, widespread usage and developers preferences. That could be a nRF52 as well as a STM32F4.
    I was thinking about nRF52 because it is my understanding that the nRF52/1 provides more protocol options in terms of receiving packages with faulty CRC (Can the nRF24 do that?), which is required for case 1b (comparing the packages at byte level). For the case 1a (checking if a package with valid CRC is received in at least one of the receivers without looking at each byte separately) receiving packages with faulty CRC from the nRF chip is not required.
    For a start, maybe it is best to have a separate SPI for each module. The nRF52 has 3 SPI, which enables combing a total of 4 receivers (1 internal, 3 external via SPI). STM32F4 can have up to 8+x SPI (SPI+USART).
    For 3 receivers that are just checked for providing a package with valid CRC (case 1a), it is probably straight forward. But when the number of receivers is increased and the packages are compared at the byte level (case 1b), one better uses DMA to read the data of the package currently received from all modules, while the CPU processes the data from the previous package that was already transferred into the memory by DMA.
    Furthermore, one could even to the byte or bit comparison on a Raspberry that receives the packages from all receivers over one SPI channel with several MHz from the MCU. It is just that all the package data from all the receivers needs to be collected in real time and with a communication frequency that is supported by those receivers.

  9. Jimmy says:

    Ahaa, its pleasant discussion on the topic of this article at this place at this web site, I have read
    all that, so now me also commenting here.

  10. Ravindu says:

    Hi, i have used this module with an arduin uno. Uno is USB powered and rf module is powered by a kia378R033pi regulator. but after few minutes both regulator and rf module gets very hot and finally rf miodule burned.. can you please tell me what is the problem
    Thanks in advance

    • Oitzu says:

      after reading the kia datasheet there is no obvious reason to me, why this should have failed. Maybe a faulty rf module? Do you measured if the kia is maybe faulty and giving over voltage? Any schematics of your test-setup?

  11. Matthias says:

    Shielding a sma nrf24l01 is working on the same way?

    • Oitzu says:

      Yes, should work the same way. But it is probably not needed on the pure (without the PA/LNA) SMA module.

  12. john says:

    could you please explain more in detail what you mean with

    “Note: The tinfoil touches the ground from the antenna connector.”

    Are you talking about the antennas “Ground” Pin or just the golden base of th antenna which is attached to the pcb?

    Thank you!

Leave a Reply to Flevmatoid Cancel reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>