Toybox.BluetoothLowEnergy blows through battery

i've got a background watchface that uses BLE every 5 minutes to communicate with a pi-like device.  it works fine but i've noticed it uses the watch battery way faster than i think it should.

no matter whether i read 1 characteristic or 3 characteristics every 5 minutes, it uses about 3% battery per hour on a forerunner 645m (vs 0.4%/hour for a built-in basic watchface, or 1.5%/hour for a background watchface that uses communication webrequests every 5 minutes.) 

then i tried disabling everything except "Ble.setScanState(Ble.SCAN_STATE_SCANNING)" and had it disable scanning and exit the background process immediately after the first scan return (onScanResults) and it still uses 3% battery per hour!

i've also tested on an Epix2 and see 0.8% battery per hour which is better but still seems a lot for an Epix2 (i haven't compared to a communications bg wf on Epix yet.)

i guess connect iq is just doing something extremely inefficient like leaving BLE radio fully enabled whenever an app uses it at all...is there anything else I can try that might reduce battery use for BLE?

  • Actually, at the 3 in-person CIQ summits, everyone came home with a new watch.  I got my 645m at the one in 2018.  I first had a beer with alphamonkey and the rest of the CIQ folks at the summit in 2017 (and Garmin paid for the beers!).

    When alphamonkey heard I was using BLE to talk to a pi, he asked me to write it up.  I did one prior to that about backgrounding