Most reliable "best" radio
-
Surprise! I'm getting it the nRF24L01 modules to send and receive, even along my worst-case transmission path, though for some reason ack's aren't being received along that worst-case path. Not sure why there would be an asymetry like that. Apparently the RadioLib library didn't default to full transmission power, because when I set transmit power to 0dB (which gets amplified by the PA), I'm now getting great radio communication. And this is the 2.4Ghz band, no less. Who would have thought? I'm flabbergasted. If anyone wants to replicate, I've posted my modified RadioLib sketches to source-code tab of the openhardware.io project for the nRF24L01 adapter.
Even if I increase the datarate to 1mbps, the majority of the packets are still getting through. This may turn out to be a closer horserace than I had originally thought: it may yet require some careful measruements to separate out the winner.
[Edit: As a result, I just now ordered some of these E01-2G4M27D: https://www.aliexpress.com/item/3256801616913450.html?spm=a2g0o.order_list.0.0.24f21802jP9dtI
presently on sale for $4.34 each with free shipping, which allegedly contain TCXO's and, hopefully, should be a further step-up in performance. In fact, these may be the top-end of what's currently available on the market in the nRF24L01 series.Now the long wait for them to arrive....]
@NeverDie One other late thought is to have some standard of antennae selection. I was thinking to make the different radios comparable some limit would be needed, I was thinking I'd stick to the bare 1/4 WL wire. But, reality of antenna science is probably far more complex. Thoughts?
-
@NeverDie said in Most reliable "best" radio:
If anyone wants to replicate, I've posted my modified RadioLib sketches to source-code tab of the openhardware.io project for the nRF24L01 adapter.
That is my aim (to replicate). I've got these radios on order, but from China.
@NeverDie said in Most reliable "best" radio:
Not sure why there would be an asymetry like that.
I'm thinking... maybe because of the compounded probability of the second (ack) transmission? Maybe having a secondary transmision counter for the ack would help? I'll play with it if I'm not too late. As said, you move fast.
@Larson said in Most reliable "best" radio:
That is my aim (to replicate).
Great! When you do, be aware that I found a bug in the RadioLib library wrt the nRF24L01, but it's easily patched: replace micros() with millis() in this section of their library code:
int16_t nRF24::receive(uint8_t* data, size_t len) { // start reception int16_t state = startReceive(); RADIOLIB_ASSERT(state); // wait for Rx_DataReady or timeout //uint32_t start = _mod->micros(); uint32_t start; start = millis(); while(_mod->digitalRead(_mod->getIrq())) { _mod->yield(); // check timeout: 15 retries * 4ms (max Tx time as per datasheet) //if(_mod->micros() - start >= 60000) { if((millis() - start) >= 60000) { standby(); clearIRQ(); return(RADIOLIB_ERR_RX_TIMEOUT); } }I commented out their erroneous code and put my corrected code beneath it. Doing this will allow the radio to listen in Rx mode for a minute before timing out. If you don't make the change, it will time out after 60ms, which I can't imagine is what they intended.
Of course, you may choose to use/try a different nRF24L01 library entirely. There are plenty to chose from.
-
@NeverDie said in Most reliable "best" radio:
If anyone wants to replicate, I've posted my modified RadioLib sketches to source-code tab of the openhardware.io project for the nRF24L01 adapter.
That is my aim (to replicate). I've got these radios on order, but from China.
@NeverDie said in Most reliable "best" radio:
Not sure why there would be an asymetry like that.
I'm thinking... maybe because of the compounded probability of the second (ack) transmission? Maybe having a secondary transmision counter for the ack would help? I'll play with it if I'm not too late. As said, you move fast.
@Larson said in Most reliable "best" radio:
I'll play with it if I'm not too late
I imagine you'll have plenty of time. I'll try again when the E01-2G4M27D's (see edited comment above) arrive, but unfortunately those may not arrive until the end of July according to aliexpress.
-
@NeverDie One other late thought is to have some standard of antennae selection. I was thinking to make the different radios comparable some limit would be needed, I was thinking I'd stick to the bare 1/4 WL wire. But, reality of antenna science is probably far more complex. Thoughts?
@Larson said in Most reliable "best" radio:
@NeverDie One other late thought is to have some standard of antennae selection. I was thinking to make the different radios comparable some limit would be needed, I was thinking I'd stick to the bare 1/4 WL wire. But, reality of antenna science is probably far more complex. Thoughts?
You raise a good point. Not really sure. I'll have to marinate on that one. For better or worse, some modules more or less force the use of different antennas than just a wire-whip or spring, because they come equipped with SMA connectors or u.fl connectors or they have trace antennas. As near as I can tell, dipole antennas are generally the best overall, unless you're deliberately trying to do something directional. So, one could maybe argue that we should test with dipole antennas, although that's easier said than done because it's easier with some modules than others.
I started this radio testing with the expectation that one radio, or at least one type of radio, would stand head-and-shoulders above the rest, regardless of antenna type. However, maybe that won't turn out to be the case, which will in itself be be an interesting result if that's how it plays out. For instance, by picking the E01-2G4M27D to test with, I'm certainly giving the nRF24L01 far more advantage than it ever would have if I were using just regular dirt cheap nRF24L01 modules without any PA or LNA. Those by themselves would have no chance of competing, except at very short range. However, for very short range applications, they may very well be winners because of their 2mbps data rate.
-
@Larson said in Most reliable "best" radio:
That is my aim (to replicate).
Great! When you do, be aware that I found a bug in the RadioLib library wrt the nRF24L01, but it's easily patched: replace micros() with millis() in this section of their library code:
int16_t nRF24::receive(uint8_t* data, size_t len) { // start reception int16_t state = startReceive(); RADIOLIB_ASSERT(state); // wait for Rx_DataReady or timeout //uint32_t start = _mod->micros(); uint32_t start; start = millis(); while(_mod->digitalRead(_mod->getIrq())) { _mod->yield(); // check timeout: 15 retries * 4ms (max Tx time as per datasheet) //if(_mod->micros() - start >= 60000) { if((millis() - start) >= 60000) { standby(); clearIRQ(); return(RADIOLIB_ERR_RX_TIMEOUT); } }I commented out their erroneous code and put my corrected code beneath it. Doing this will allow the radio to listen in Rx mode for a minute before timing out. If you don't make the change, it will time out after 60ms, which I can't imagine is what they intended.
Of course, you may choose to use/try a different nRF24L01 library entirely. There are plenty to chose from.
@NeverDie said in Most reliable "best" radio:
Of course, you may choose to use/try a different nRF24L01 library entirely. There are plenty to chose from.
As I say to my physician, dentist, and probably my mother: you lead, and I will follow. Your library is my library.
-
@Larson said in Most reliable "best" radio:
@NeverDie One other late thought is to have some standard of antennae selection. I was thinking to make the different radios comparable some limit would be needed, I was thinking I'd stick to the bare 1/4 WL wire. But, reality of antenna science is probably far more complex. Thoughts?
You raise a good point. Not really sure. I'll have to marinate on that one. For better or worse, some modules more or less force the use of different antennas than just a wire-whip or spring, because they come equipped with SMA connectors or u.fl connectors or they have trace antennas. As near as I can tell, dipole antennas are generally the best overall, unless you're deliberately trying to do something directional. So, one could maybe argue that we should test with dipole antennas, although that's easier said than done because it's easier with some modules than others.
I started this radio testing with the expectation that one radio, or at least one type of radio, would stand head-and-shoulders above the rest, regardless of antenna type. However, maybe that won't turn out to be the case, which will in itself be be an interesting result if that's how it plays out. For instance, by picking the E01-2G4M27D to test with, I'm certainly giving the nRF24L01 far more advantage than it ever would have if I were using just regular dirt cheap nRF24L01 modules without any PA or LNA. Those by themselves would have no chance of competing, except at very short range. However, for very short range applications, they may very well be winners because of their 2mbps data rate.
@NeverDie said in Most reliable "best" radio:
I started this radio testing with the expectation that one radio, or at least one type of radio, would stand head-and-shoulders above the rest, regardless of antenna type.
Yep. And that is why I was thrilled with your earlier conclusions about the SX1262. Andreas Spiess convinced me that maximizing design parameters depend on the needs. Bit rate, bandwidth, power demands, range, and other factors are all working against each other, or with each other. Wish I knew the fundamentals and that is my aim. It would be fun to stay with one radio and just change the parameters and antennae. That has probably been done in academic circles. Imagine what led to the progressive development of different radios. I'm sure it wasn't random. We are left to discover why.
Back to school for me.
-
It seems that I was able to get an improvemet from no ACKs to a majority of ACKs just by installing fresh batteries on the receiver. That was an improvement from 2.9v with the old batteries to 3.2v with the new fresh AA's. So... it makes me wonder whether there'd be even more improvement if it were running at the maximum allowed 3.6v. So, I tried powering it with an external power supply, but performance went down dramatically even at the 3.2v level. I guess probably from longer wires or maybe some other source of noise. Anyhow, just memorializing these findings here as a reminder in case it's worth exploring this topic further in the future.
-
It seems that I was able to get an improvemet from no ACKs to a majority of ACKs just by installing fresh batteries on the receiver. That was an improvement from 2.9v with the old batteries to 3.2v with the new fresh AA's. So... it makes me wonder whether there'd be even more improvement if it were running at the maximum allowed 3.6v. So, I tried powering it with an external power supply, but performance went down dramatically even at the 3.2v level. I guess probably from longer wires or maybe some other source of noise. Anyhow, just memorializing these findings here as a reminder in case it's worth exploring this topic further in the future.
@NeverDie Maybe just ripple on the DC? Did you scope it to see? Maybe try with 10n , 100n and 470uF caps across the DC power line? - Or if there is an onboard regulator on the RF module, then maybe that gets more noisey as the voltage drop across it increases?
-
@skywatch said in Most reliable "best" radio:
Do you have any links to this please?
Sure, Here it is on Amazon. I got mine at Coastal Farm and Ranch. While I'm now using it for skunks and racoons, I initially used it on the swim platform of my old wooden boat that was a party scene for sea otters. They can really stink up the boat after a winter.
-
@NeverDie Maybe just ripple on the DC? Did you scope it to see? Maybe try with 10n , 100n and 470uF caps across the DC power line? - Or if there is an onboard regulator on the RF module, then maybe that gets more noisey as the voltage drop across it increases?
@skywatch said in Most reliable "best" radio:
@NeverDie Maybe just ripple on the DC? Did you scope it to see? Maybe try with 10n , 100n and 470uF caps across the DC power line? - Or if there is an onboard regulator on the RF module, then maybe that gets more noisey as the voltage drop across it increases?
It does already have 100n (=0.1uF) across the DC power line, extremely near the inputs to the nRF24L01. I didn't check those other things though. However, given how widespread the use of the nRF24L01 is on this forum, if anyone happens to know whether powering it with voltage at the higher end of its range improves performance, please post. I think for the LoRa chips it doesn't matter, because they all down-convert anyway. Maybe the nRF24L01 does as well? I really hadn't expected the nRF24L01, boosted as it was with PA and LNA, to do as well as it did. So, there's that added layer of PA + LNA complexity that may have something to do with it, not just the nRF24L01 chip itself. If I was focused on just one particular chip or module, I could do those tests. But multiply that workload by six or so other radio modules, all with different idiosyncrasies, and I quickly run out of time. I may have bitten off more than I can chew. So, I just have to draw the line and either come back to it in the future or not, depending on how the global picture develops. But if someone already happens to know the answer, then hopefully they might make a posting.
This guy just recently did a video on nRF24L01 problems:
NRF24 Frustration - Radio module doesn't work? – 12:46
— Electronoobsand the very first thing he talks about is long wires.
-
@NeverDie said in Most reliable "best" radio:
I started this radio testing with the expectation that one radio, or at least one type of radio, would stand head-and-shoulders above the rest, regardless of antenna type.
Yep. And that is why I was thrilled with your earlier conclusions about the SX1262. Andreas Spiess convinced me that maximizing design parameters depend on the needs. Bit rate, bandwidth, power demands, range, and other factors are all working against each other, or with each other. Wish I knew the fundamentals and that is my aim. It would be fun to stay with one radio and just change the parameters and antennae. That has probably been done in academic circles. Imagine what led to the progressive development of different radios. I'm sure it wasn't random. We are left to discover why.
Back to school for me.
@Larson said in Most reliable "best" radio:
@NeverDie said in Most reliable "best" radio:
I started this radio testing with the expectation that one radio, or at least one type of radio, would stand head-and-shoulders above the rest, regardless of antenna type.
Yep. And that is why I was thrilled with your earlier conclusions about the SX1262. Andreas Spiess convinced me that maximizing design parameters depend on the needs. Bit rate, bandwidth, power demands, range, and other factors are all working against each other, or with each other. Wish I knew the fundamentals and that is my aim. It would be fun to stay with one radio and just change the parameters and antennae. That has probably been done in academic circles. Imagine what led to the progressive development of different radios. I'm sure it wasn't random. We are left to discover why.
Back to school for me.
I did that once with the RFM69, and the parameters on that radio are numerous and a real challenge to fully understand. The API of the newer LoRa radios is a lot simpler, which is fine by me.
If it weren't for the 2mbps, or even 1mbps, capability of the nRF24L01 (and related nrf5x modules, of course), I would drop the nRF24L01 like a hot brick. But those high datarates, and especially mysensors support for OTA updates using it, offer a compelling advantage.
So, now that there's a common test platform--one without long wires--we'll just see how it all develops.
It would be fun to test the si4468, which looks very capable, but I think I'm already at the limit of what I can consider all at one time.
-
@Larson Now that you have a PPK2, there's an easy way you can check for whether or not your plain, ordinary nRF24L01 chips are fake or not: looking at the Tx and Rx current draws and comparing them to the datasheet. For instance, on this particular nRF24L01 module:
Here is the Tx and Rx profile from running the RadioLib transmit script I posted in source code section:

The first plateau is the transmit current. The second plateau is the Rx current, where it's listening for an ACK. Well, as you can see, the Tx current is about 26-27ma and the Rx current is around 14-15ma. So, next, compare that to the specifications in the nRF24L01 datasheet:

and you can see that the values don't match. Not even close! 26-27ma is way beyond the spec of 11.3ma for maximum current draw,and 14-15ma is above the max of 12.3ma for Rx. So, the chip on this module, even though it says, as you can clearly see in the photo itself, that it is NRF 24L01+, it's a total fake. No question about it. Not only that, but if you want to, you can identify exactly which fake chip that it is, by looking at the datasheets of known fakes and looking for a match.
When in doubt you can also measure and compare sleep currents, which varies between the real and various fake chips. As you'd probably expect, Nordic has the lowest sleep current of any of them, at least as far as I'm aware.
-
@Larson In this case, it's almost certainly the si24R1 chip, because if you look at the datasheet here: https://datasheet.lcsc.com/lcsc/1811142211_Nanjing-Zhongke-Microelectronics-Si24R1_C14436.pdf and zoom in on the electrical specification, you see that the specified currents are:

which is a very close match.
:smile:
I've written about this before (here: https://forum.mysensors.org/topic/1664/which-are-the-best-nrf24l01-modules/285 , where it took me a lot of effort to finally figure all this out), but it's so buried at this point that I doubt anyone new to the game is even aware of it. So, I include it here, as bonus perk for anyone who happens to be reading this thread. Nice, ya?
-
By the way, if I did end up using the nRF24L01 (or nRF5x series), I'd like to do what I outlined in the last post on that thread (https://forum.mysensors.org/topic/1664/which-are-the-best-nrf24l01-modules/309?_=1654977950928), which is to do channel hopping and time synchronization among motes. There are some interesting demos on distributed time synchronization which are pretty cool:
Proportional Integral Clock Synchronization in Wireless Sensor Networks – 01:00
— Kasım Sinan YıldırımOne simple (but maybe not the best technique) is to have each node transmit its local time in some kind of sequence, while the other nodes listen and take note. Then by averaging these local times over a few iterations, the group converges onto a single time. Pretty neat, huh? I would imagine that, more efficient and less complex, would be to have a powered wireless time server, and then everything syncs to that.
-
And this youtube succinctly explains why it's worthwhile:
Wheel of Blinking LEDs – Wireless Time Synchronization – 02:50
— Analog Devices, Inc.TL;DR: much longer battery life, among other things.
-
@skywatch said in Most reliable "best" radio:
@NeverDie Maybe just ripple on the DC? Did you scope it to see? Maybe try with 10n , 100n and 470uF caps across the DC power line? - Or if there is an onboard regulator on the RF module, then maybe that gets more noisey as the voltage drop across it increases?
It does already have 100n (=0.1uF) across the DC power line, extremely near the inputs to the nRF24L01. I didn't check those other things though. However, given how widespread the use of the nRF24L01 is on this forum, if anyone happens to know whether powering it with voltage at the higher end of its range improves performance, please post. I think for the LoRa chips it doesn't matter, because they all down-convert anyway. Maybe the nRF24L01 does as well? I really hadn't expected the nRF24L01, boosted as it was with PA and LNA, to do as well as it did. So, there's that added layer of PA + LNA complexity that may have something to do with it, not just the nRF24L01 chip itself. If I was focused on just one particular chip or module, I could do those tests. But multiply that workload by six or so other radio modules, all with different idiosyncrasies, and I quickly run out of time. I may have bitten off more than I can chew. So, I just have to draw the line and either come back to it in the future or not, depending on how the global picture develops. But if someone already happens to know the answer, then hopefully they might make a posting.
This guy just recently did a video on nRF24L01 problems:
NRF24 Frustration - Radio module doesn't work? – 12:46
— Electronoobsand the very first thing he talks about is long wires.
@NeverDie You probably already considered this but using a co-ax cable for the power would offer some sheilding and also after watching the video you linked maybe some of those tiny ferrite beads on the data and power at the radio might be of help.
I had to chuckle when the guy in the video showed how he connected an external antenna without first removing the link to the PCB one!
If I can I will try one of the cdebyte modules on 3.6V and see if they are still good... Remind me in a week if I don't get it done!
-
@NeverDie You probably already considered this but using a co-ax cable for the power would offer some sheilding and also after watching the video you linked maybe some of those tiny ferrite beads on the data and power at the radio might be of help.
I had to chuckle when the guy in the video showed how he connected an external antenna without first removing the link to the PCB one!
If I can I will try one of the cdebyte modules on 3.6V and see if they are still good... Remind me in a week if I don't get it done!
@skywatch said in Most reliable "best" radio:
those tiny ferrite beads
Have you tried it before? Exactly which tiny ferrite beads do you recommend? Mouser lists over 4,200 different ones.
-
Well, the nRF24L01 datasheet says, "The nRF24L01 transmitter PLL operates in open loop when in TX
mode. It is important to never keep the nRF24L01 in TX mode for more than 4ms at a time."Disappointing, but I believe I can work around that limitation.
Why is there a limitation on Tx time but not Rx time? Is it a thermal issue of some kind?
-
@Larson In this case, it's almost certainly the si24R1 chip, because if you look at the datasheet here: https://datasheet.lcsc.com/lcsc/1811142211_Nanjing-Zhongke-Microelectronics-Si24R1_C14436.pdf and zoom in on the electrical specification, you see that the specified currents are:

which is a very close match.
:smile:
I've written about this before (here: https://forum.mysensors.org/topic/1664/which-are-the-best-nrf24l01-modules/285 , where it took me a lot of effort to finally figure all this out), but it's so buried at this point that I doubt anyone new to the game is even aware of it. So, I include it here, as bonus perk for anyone who happens to be reading this thread. Nice, ya?
@NeverDie said in Most reliable "best" radio:
I've written about this before (here: https://forum.mysensors.org/topic/1664/which-are-the-best-nrf24l01-modules/285 , where it took me a lot of effort to finally figure all this out), but it's so buried at this point that I doubt anyone new to the game is even aware of it. So, I include it here, as bonus perk for anyone who happens to be reading this thread. Nice, ya?
Yes, very nice. But how would you know where to look for the si24R1 chip amongst the others? I haven't read the other thread, just yet - it is the end of a very long sweaty fuse-setting day. Not only just a perk, your writing on these subjects is a library for others. Like today, I'm reading Nick Gammon's posts from 2012. They are there and very relevant still - I spend much of the day reading them. In 2032, should we get that far, folks will be upstudying your material.
-
@Larson Somewhere I found a list of known clones. I linked to it in the original thread that I referenced above. si24R1 is China's clone of the nRF24L01. Ebyte even explicitly advertises it as a clone on their website and in their aliexpress store. A lot of times if you see an advertisement for an "enhanced power" nRF24L01 that doesn't otherwise contain a PA, it's an si24R1, because it has a 7dBm Tx power, versus a max 0dBm Tx power for the nRF24L01.