Community
cancel
Showing results for 
Search instead for 
Did you mean: 
EHalt
Beginner
1,675 Views

How to change BLE Tx power?

Hi,

I working with a tinyTILE board with the Intel Curie. Is there a way to change the BLE transmit power?

The documentation indicates that the BLE Tx power can be between -20 dBm to +4 dBm at increments of 4 dBm, the default being 0 dBm. I would like to increase the Tx power on my device to +4 dBm, but haven't found an obvious way to do it.

The CurieBLE library appears to use an older version of BLEPeripheral library. The current version of the BLE Peripheral library has a setTxPower method. I upgraded my BLEPeripheral library in the Arduino IDE but found that it had no effect, the setTxPower method was unrecognized. The CurieBLE library seems to have its own, older, version of the BLEPeripheral library.

I am running Arduino IDE 1.8.2 on Windows 7.

Intel Curie Boards 2.0.2 installed

BLEPeripheral version 0.4.0

Any advice for either setting the BLE Tx power or upgrading the BLEPeripheral within CurieBLE?

Thanks!

0 Kudos
8 Replies
idata
Community Manager
163 Views

Hi WhoLiz,

 

 

Thank you for contacting us. I've been looking for the method to change the Tx power using the CurieBLE library. Looking at the library I found a method called setTxPower. This seems to be the variable from which you can configure the transmitter power, however, you mention that changing anything here had no effect.

 

 

Did you just try changing the Tx power to 4dB or have you tried changing to other values (anything from -20dBm to 0dBm)? We want to make sure the IDE is properly installed, to make sure the issue is only related to changing the Tx power and not to the IDE configuration.

 

 

In case you haven't seen it, the getting started guide of the tinyTile can be found here: https://www.element14.com/community/docs/DOC-84364/l/tinytile-gettingstartedguidepdf .

 

 

Also, in case you're using an older version, you can find the CurieBLE library here: https://github.com/01org/corelibs-arduino101 .

 

 

We'll be waiting for your response and continue to investigate to find if there's a step missing needed to transmit at 4dBm.

 

 

Regards,

 

-Sergio A

 

EHalt
Beginner
163 Views

Hi Sergio,

Thanks for the response.

The BLEPeripheral library with the setTxPower method is in the most recent version of the library at https://github.com/sandeepmistry/arduino-BLEPeripheral https://github.com/sandeepmistry/arduino-BLEPeripheral

However, the CurieBLE library seems to have an older version of the BLEPeripheral library without the setTxPower method.

https://github.com/01org/corelibs-arduino101/blob/master/libraries/CurieBLE/src/BLEPeripheral.h https://github.com/01org/corelibs-arduino101/blob/master/libraries/CurieBLE/src/BLEPeripheral.h

So despite updating the BLEPeripheral library in the Arduino IDE, the setTxPower method is unrecognized:

C:\Users\wholiz\Documents\Arduino\HeartRateMonitor\HeartRateMonitor.ino: In function 'void setup()':

HeartRateMonitor:51: error: 'class BLEPeripheral' has no member named 'setTxPower'

bool txpower_set = blePeripheral.setTxPower(4);

^

exit status 1

'class BLEPeripheral' has no member named 'setTxPower'

When I attempted to copy over the newer BLEPeripheral class to the CurieBLE library, i receive the following error:

In file included from C:\Users\wholiz\Documents\Arduino\libraries\arduino_926432\src/utility/lib_aci.h:34:0,

from C:\Users\wholiz\Documents\Arduino\libraries\arduino_926432\src/nRF8001.h:9,

from C:\Users\wholiz\AppData\Local\Arduino15\packages\Intel\hardware\arc32\2.0.2\libraries\CurieBLE\src/BLEPeripheral.h:26,

from C:\Users\wholiz\AppData\Local\Arduino15\packages\Intel\hardware\arc32\2.0.2\libraries\CurieBLE\src/CurieBLE.h:44,

from C:\Users\wholiz\Documents\Arduino\HeartRateMonitor\HeartRateMonitor.ino:24:

C:\Users\wholiz\Documents\Arduino\libraries\arduino_926432\src/utility/hal_platform.h:75:6: error: # error "Unsupported platform"

# error "Unsupported platform"

^

exit status 1

Error compiling for board Arduino/Genuino 101.

Is there an easy way to update the CurieBLE library with the updated BLEPeripheral code?

Thanks!

idata
Community Manager
163 Views

Hi WhoLiz,

 

 

Thank you for the detailed description. Please allow to research further about this issue. We'll contact you as soon as we have more information. We appreciate your patience.

 

 

Regards,

 

-Sergio

 

EHalt
Beginner
163 Views

Hi Sergio,

I found that the BLEDevice class has a setTxPower method. CurieBLE.h declares a global BLEDevice object, BLE, which can be used to set the Tx Power.

bool txpower_set = BLE.setTxPower(4);

Signal strength does appears to change when using this method.

Thanks

idata
Community Manager
163 Views

Thanks for the update. We'll take this new information into consideration and continue to investigate. We'll post a reply very soon.

 

We appreciate your patience.

 

 

Regards,

 

-Sergio A

 

idata
Community Manager
163 Views

Hi WhoLiz,

 

 

Thank you for your patience. Unfortunately, at this time, Intel is unable to comment on using API commands that are not made available as part of our shipping configuration. We recommend that you get in contact with Element14 support and the device manufacturer for further assistance.

 

 

We apologize for any inconvenience.

 

 

Regards,

 

-Sergio A

 

Sidney_L_Intel
Employee
163 Views

Hello, WhoLiz:

You are correct that the BLE stack / hardware is capable of changing the transmission power. The component manufacturer also warns that there exists the possibility of not meeting regulations in certain configuration when the transmission power is set to the max. Thus, the default manufacturer power setting is used and the API for power configuration is disabled.

Regards,

Sid

EHalt
Beginner
163 Views

Hi,

Like I mentioned, I was able to change the Tx power to +4dBm with the above mentioned function. The difference was noticeable on Nordic's nRF Connect mobile app.

SidLeung, would you please elaborate or share a web source regarding the transmission power regulations you mentioned?

Thanks very much!

Reply