Electron (SARA-U2xx) Power saving via fast dormancy

I have an application that sends a UDP packet every 15 secs

https://community.particle.io/t/electron-ways-to-save-power-with-15sec-udp-send/37350

I am solar powered and need find some power savings. looking at the SARA AT command manual there is a feature called “Fast Dormancy Activation” Section 7.16 (page 99) AT+UFDAC

Wikipedia tells me - "Fast Dormancy, or FD, is a mobile technology feature designed to reduce battery consumption and network utilization between mobile devices and their respective carrier networks during periods of data inactivity."
https://en.wikipedia.org/wiki/Fast_Dormancy

This seems like a pretty cool feature, will it work? Has any one tried it? What sort of power savings can we expect from it?

Thanks
Marshll

1 Like

The best person to ask about this is @Bdub but it’s the first I have heard of this feature on this forum.

I haven’t tried this mode yet, but it sounds very promising, at the expense of maybe increased latency or potentially missed data? I don’t have the time to investigate currently, but you can test it out with this code most likely:

There is no factory default for Fast Dormancy which seems odd.

static bool particle_disconnected() {
    return !Particle.connected();
}

// DO THIS FIRST!
void checkSettings() { 
    Particle.disconnect();
    waitUntil(particle_disconnected);
    // read current settings (make sure LOG_LEVEL_ALL is enabled to see what comes back, then you'll have a chance to restore factory defaults)
    Cellular.command("AT+UFDAC?\r\n");
    Particle.connect();
    waitUntil(Particle.connected);
}

void setPowerLow() { 
    Particle.disconnect();
    waitUntil(particle_disconnected);
    // delay makes sense, inhibit timer doesn't make sense to me :shrug:
    Cellular.command("AT+UFDAC=2,1,0\r\n"); // auto mode, delay 1s, inhibit 0s
    Particle.connect();
    waitUntil(Particle.connected);
}

void setPowerHigh() { 
    Particle.disconnect();
    waitUntil(particle_disconnected);
    Cellular.command("AT+UFDAC=3,5,5\r\n"); // disables FD, somewhat mimicking the command in the manual shown.  You should probably use the values found from checkSettings() though.
    Particle.connect();
    waitUntil(Particle.connected);
}

@rickkas7 or anyone, do y’all have time to do some current measurements?

1 Like

I can do it; I’m away for a week, but will try and get something done later today. I’ll report back any findings. If there is no report, I haven’t done it yet, so feel free to jump in!

Marshall

I’ve Implemented it remotely with no apparent adverse affects, I’m not in a position to measure the power savings. however this article Current Consumption Comparisons on page 9 throught 13 has relative power savings when implementing this feature. I would think that after suitable regression testing etc, this should make it into a future release of the firmware.

I’ll report back in week or so on specific power savings. In the meantime I have 10 identical units in the field, I’ll upgrade half of them and compare the results.

Regards
Marshall

3 Likes

Sounds promising! Looking forward to your A/B testing of multiple units!

I have had some comparison testing running over the last week and there is not much in it (using our cellular provider anyway)

Looking at the charts for the units the ones with fast dormancy implemented appear to charge slightly faster and discharge slightly slower. the caveat here is that the units are solar powered and installed in slightly different locations so it’s possible that they are actually charging at slightly different rates as well.

I’ve got a request into the network provider to see if they support fast dormancy, but this will be hard work getting a real response from them.

Additionally I will have to do side by side bench testing to see if there are any real gains to be had. I’ll report back again when this is done.

In short - Very small gains (if any), no harm is being done.

Regards

3 Likes

I would say it's guaranteed that they will be charging at different rates which will make accurate comparison difficult or next to impossible.

I think the only way to really test this is on the bench with an A/B comparison.

Looking forward to the bench testing. Should only take 24-48 hours to see the difference in consumed energy between the 2 differnet settings.