Bluetooth 5 Long Range

Hey everyone,

i would like to use the Long Range feature of the nrf52840 wich is used on the new Arduino Nano 33 BLE. If im right, the current Bluetooth Library (ArduinoBLE) does not support this.

Is there a way to use this feature with the ArduinoCore? I saw in the ArduinoCore-nRF528x-mbedos Git Repository that i should be able to use all mbed features in the Arduino IDE (with mbed:: ).

Can someone give me a little overview of what possibilities I have? I know this is a bigger project, but probably someone can help me where i should start =)

Thanks and kind regards

Hi,

Just say that I am also interested in this topic and I have been searching around but still not found anything. I will continue and post here if I found a way.

the ublox NINA306 states range of 1400 meters (0.86 miles) possible. Not sure how it's set up for the new NANO 33 but it may be something that can be adjusted. Only description for NANO is "close range" perhaps they lowered the transmit power to save power and pass FCC certs.

The u-blox EVK the TX power has been set to 0dBm max output as default from factory. I guess the same goes for the Nano 33 board as well. The u-blox module can give 8dBm TX power. When you add the long range protocol you will get another about 12-13dB. I did a quick range check with my mobile together with my Nano 33 board and get about the same range as my netgear nighthawk range. Using those two settings you will be able to transfer data more than 1000m. Without long range protocol but the TX set to 8dBm we have about 150m range in central Lund in free air in a BLE mesh network. An interesting questin is if you can use the AT commands u-blox has defined to set the parameters. I could not access the Nano 33 board with u-blox SW but it might work in the Arduino code? I also tried to use the Nordic development setup and could connect to the board but then I will probably loose the Arduino drivers if I download using it.
Long Range setting in the nRF Connect is greyed out and can't be activated, is it due to mobile is not supported or Nano 33?
I see two things to solve. 1. TX power setting, 2. Activate Long Range protocol.
Anyone from Arduino that reads this post and can help out with those configurations?

Hey,

i think i managed to build up a long range connection (coded phy) between 2 nanos. I used the mbed os features directly in the arduino ide. I have to clean up my code a little bit and will share the sketches within next 2 days.

wolframore:
...perhaps they lowered the transmit power to save power and pass FCC certs.

With coded phy (long range feature) one improves the sensitivty of the receiver. So tx power & FCC certs should not be an issue here.

I still have an fundamental issue with the long range feature. Is it right that i can either advertise with long range or build up a connection? So this means for the second case i have to advertise with a "normal range" and after my peripheral connects to the server i can use the long range feature?

Thats currently the way i do it but i dont know if there is another way..

See if I can help out.
Since BT 5.0 there is an advertizement Extension (AE) that use the new advertizement messengers using coded PHY (long range).
I am not sure if it is supported in the Arduino but it is needed to solve the lang range advertizement issue you see.

Can this help or you might already have found this information?
I found this link:

a few lines below I found this:

In the end of the page there is an extended scanning routine

Ublox has new modules. I’m meeting with the sales rep.. the 341 and 345 will be 750-1000m. Pricing looks competitive... Nina is still cool but I’m looking forward to trying them. BT 5.0.

But the module is based on nRF52840 which is BT 5.0. +8dbM TX power and AE support. BMD 341 uses the same chipset...
You have to go for BMD for the low cost long range, 1dB better sensitivity but 4dB lower TX power so shorter range, about half. Before going for BMD look into the memory capacity. Are you going for lithium cell check the voltage supply which is narrowed. I do not have any use of the new features BT 5.1 comes with, at least not yet.
RudiRatlos, have you been able to clean up the code yet? If you post it, someone might help to do the last trick :slight_smile:

ublox purchased BMD

JohanL:
I also tried to use the Nordic development setup and could connect to the board but then I will probably loose the Arduino drivers if I download using it.
Long Range setting in the nRF Connect is greyed out and can't be activated, is it due to mobile is not supported or Nano 33?

Can you post a bit of information about how you managed to connect to the Nano 33 BLE board using the Nordic development setup? I have this post on the Nordic Dev site.

Hi

RudiRatlos:
Hey,

i think i managed to build up a long range connection (coded phy) between 2 nanos. I used the mbed os features directly in the arduino ide. I have to clean up my code a little bit and will share the sketches within next 2 days.

With coded phy (long range feature) one improves the sensitivty of the receiver. So tx power & FCC certs should not be an issue here.

I still have an fundamental issue with the long range feature. Is it right that i can either advertise with long range or build up a connection? So this means for the second case i have to advertise with a "normal range" and after my peripheral connects to the server i can use the long range feature?

Thats currently the way i do it but i dont know if there is another way..

Did you manage to make it work? Any news?
Thks.

Are there any news?
It would be extremely helpful if I could change at least the TX power.
But later if course the long range feature would be needed urgently :frowning:

Thank you!

Is there someone who finally managed to change the tx power and the modulation mode to CODED PHY using Arduino Interface ?

I have tried to change the registers themselves using NRF_RADIO->TXPOWER and NRF_RADIO->MODE but it seems the ArduinoBLE library writes over the txpower and mode registers again and again...so it is impossible to change them by hand in the arduino code, maybe there is a part of the library code or in the mbed part in which it is possible to change the default value of these registers ?

Thank you,

There is a second post that might be interesting for everyone here.

https://forum.arduino.cc/index.php?topic=673224.0