ios - Bluetooth RSSI value drops inexplicably when iPhone is at rest -


we writing pair of core bluetooth applications. macos application implementing cbcentral​manager , ios application implementing cbperipheralmanager. ios peripheral's uibackgroundmodes key set bluetooth-peripheral in info.plist file.

the apps paired , sending messages , forth on bluetooth every 30 seconds. works whether ios app in foreground or background.

the mac application receiving rssi value of iphone. iphone sitting next mac rssi value fluctuates in range of -45 -65 dbs (with occasional drops -75 dbs). after extended length of time without iphone moving rssi drops range of -55 -75 dbs (with occasional drops -85 dbs or more).

the graph below illustrates behavior. x axis time in seconds , y axis dbs. in example rssi stays in range -45 -55 dbs 300 seconds. seemingly no reason rssi drops range -55 -75 dbs , stays in range indefinitely.

during period of lower rssi value apps continue send messages , forth not appear ios app has been suspended.

at 600 seconds iphone picked (which appears correlated small uptick of rssi value) , iphone moved 20 feet away (which causes rssi drop expected). @ 900 seconds iphone moved starting location corresponds last rise in rssi value.

we expecting rssi value drop when iphone moved away , increase when iphone moved close again.

but have no explanation why there initial drop of rssi value @ around 300 seconds. our problem cannot differentiate between rssi dropping unexplained reason , rssi dropping because iphone moved away mac.

questions:

1) there explanation rssi dropping on own without change in environment? ios reducing transmit power?

2) there way prevent rssi dropping or force programmatically?

3) there way programmatically recognize system has reduced signal strength allow calibrate subsequent values?

any explanations, fixes, and/or suggestions appreciated.

rssi vs time (in seconds) rssi vs time (in seconds)


Comments