The power-saving mode (PSM) allows minimizing power consumption up to 0.4 µA in the sleep mode. Of course, attached sensors and peripherals should support power saving too.

Note: I cannot guarantee that the firmware will work correctly in your case because it greatly depends on the schematic of your DIY device. I exhort you to wash your DIY device in an ultrasonic cleaner because a small current leak may consume a battery.

Limitations

The power-saving mode has the following limitations:

  • GPIO input, the switch mode – the firmware detects ON and OFF states’ changes by a signal rising or falling edge. The CC2530 has a hardware limitation of this implementation. You can add only one switch on pin ranges P00..P07, P10..P13, P14..P17, P20..P23. Therefore, you can have up to four switches in your configuration. If you define a switch on a pin, you cannot use other pins in the corresponding range for other sensors because it may cause problems with detecting signal edges.
  • You may use a board with an amplifier (for example, Ebyte E18, CC2530 + CC2592), but this combination of chips consumes about 180 mA in the active mode instead of 25 mA of CC2530.
  • Some sensors are incompatible with PSM (for example, Pulse Generator, SenseAir8, Sensirion SPS30).

The following configuration options may help you to create your battery-powered device:

External wake-up – it is a special input type. It wakes up the chip from sleep mode and instructs it to send periodic reports immediately. After this, the chip stays active for 3 seconds and goes to PSM.

If the external wake-up option is selected on Input 1, the firmware also uses it as a system button and allows you to reset the device.

External sensor power control – it is a special output type. The firmware sets the configured output to the HIGH state before reading a sensor’s value and sets it to LOW after that. The CC2530 and CC2531 chips allow you to use pins P10 and P11 to supply power up to 20 ma to external sensors.

If your sensors require more power, you may use any output connected to an external transistor worked in the switch mode. Please, note the firmware sets all output to the LOW state when it transits to the sleep mode. Therefore the transistor should be switched off with the LOW control signal.

This output should be defined immediately before a controlled sensor or a group of sensors.

Typical configuration

LED

The LED indicator works differently in PSM if it is configured.

One short blink per four seconds – the device is connecting to a network.

Sporadic short blinks – the firmware indicates the following actions: clicks, switches, external wake-up signals, periodic reports.

Two short blinks – the firmware cannot send a report to a coordinator.

Pairing

The firmware starts the pairing process immediately after flashing. It tries to connect for about 60 seconds. In case of an unsuccessful attempt, the firmware goes to sleep mode. If you need more time, you should configure the external wake-up input (for example, a button). The signal on that input extends the time for the next 60 seconds.

Re-pairing

Power on, wait 2 seconds, power off, repeat this cycle three times. If the status LED is configured, it should light at a half-bright level for more than 2 seconds while the firmware initializes internal NVRAM memory.

If you selected GPIO or the external wake-up option on Input 1, it acts as a system button. You may click and hold it for 10 seconds. If the status LED is configured, it should light at a half-bright level after 10 seconds.


Comments
Harvey Specter
Posted at 11:41 September 17, 2021
MK
Reply
Author

Hi, I have now “End device without routing” as Device type and pin P00 set as External wake-up, but cc2530 does not go to the sleep mode. Is it necessary to have PSM as Device type, or can I have End device without routing and then wake it up with some pin?

    Harvey Specter
    Posted at 12:56 September 17, 2021
    Owner
    Reply
    Author

    PSM means ‘power saving mode.’ So, yes, you should select this device type.

Harvey Specter
Posted at 09:22 July 31, 2021
Lantastic
Reply
Author

I installed the PSM firmware on a CC2530+CC2591 module, no GPIO or sensors, just a input 1 on P00 External Wakeup with pull-up. The device never goes to sleep and keeps flooding the coordinator with continuous reports. I did not manage to make it going to sleep.
Any idea ?

    Harvey Specter
    Posted at 03:52 August 2, 2021
    Owner
    Reply
    Author

    Hi. What does the device report if it has only the wakeup button?

      Harvey Specter
      Posted at 06:36 August 2, 2021
      Lantastic
      Reply
      Author

      In this test it had only the wakeup input configured. I just need to monitor a contact on a garage door, so I reflashed the device with an input switch configured and now it seems to work as expected. The device wakes up at every signal edge falling or rising. Will keep the battery consumption monitored.

        Harvey Specter
        Posted at 06:41 August 2, 2021
        Owner
        Reply
        Author

        Ok. Great! What current do you get now when the device sleeps?

          Harvey Specter
          Posted at 12:38 August 2, 2021
          Lantastic
          Author

          Not easy to measure because when I insert the multimeter in series to the power supply, the device becomes unstable. I managed to measure around 400uA with the contact open. I could not take a measurement with the contact closed.

Harvey Specter
Posted at 11:20 June 25, 2021
Olivier
Reply
Author

Hello, with premium PSM, is it possible to wakeup every X seconds for example, without using external PIN? Is it also possible to test premium PSM for a day ?
Thanks a lot for this great job.
Olivier

    Harvey Specter
    Posted at 11:28 June 25, 2021
    Owner
    Reply
    Author

    Hello. Yes, the PSM firmware wakeup if the reporting interval is not zero. Sorry, but you cannot test the PSM version without a license.

Harvey Specter
Posted at 23:05 May 9, 2021
Nokia
Reply
Author

Hi,

Is there any ZigBee solution for a DIY end device with a low (maybe 1-5 mA?) standby power consumption? I.e. the device is not in deep sleep, and is always ready to immediately receive a command from the coordinator. I know this is possible in commercial products (the Danalock smart lock for example can last many months with 7200mAh total battery capacity), but I would like to achieve similar with a DIY device/firmware. Any suggestions would be appreciated.

Thanks

    Harvey Specter
    Posted at 03:31 May 10, 2021
    Owner
    Reply
    Author

    Hi,
    Does the Danalock smart lock use the CC2530 chip?

      Harvey Specter
      Posted at 08:24 July 3, 2021
      Nokia
      Reply
      Author

      Hello,

      I’m not sure of the chipset used. However, I’ve looked more into this and it seems the POLL_RATE variable is what is being used – when sending a lock or unlock command to the Danalock it isn’t always instant, so it seems to poll for queued commands every few seconds. Can this be done with the deep sleep so that for instance it checks for new commands every 5 seconds? Would this enable 5+ months of battery life?

      Thanks

        Harvey Specter
        Posted at 09:39 July 3, 2021
        Owner
        Reply
        Author

        Hello
        There is the “Poll for queued commands” option on the “Expert” tab. It will work in the PSM version too. You can measure consumption and calculate battery lifetime for your case. The average consumption is 30uA in 120 seconds (~21ma per day).

Harvey Specter
Posted at 17:12 April 11, 2021
Damian
Reply
Author

I have problem with pairing CC2530 in PSM. The same firmware generated but as end device without routing pairs succesfully. But when I set PSM – the it will announce itself, start to interview but interview will fail… I tink that device goes to sleep too fast, and it is not waiting for interview to complete. Next wake up whole procedure starts again – announce, start to interview and after a while interview failed…

    Harvey Specter
    Posted at 03:48 April 12, 2021
    Owner
    Reply
    Author

    You should add the External wake-up input to your device and configuration. When you pair a device, you should press this button every 30-40 seconds.

      Harvey Specter
      Posted at 06:10 April 12, 2021
      Damian
      Reply
      Author

      I really don’t want to… External wake-up also sends periodic report, and I need to read counter value each 60 secs, not faster… I could rewrite code to check when last read was done, but I don’t need external wakeup so it is redundant for me.. Could it be fixed in firmware – to not enter into sleep until pairing is done?

        Harvey Specter
        Posted at 06:38 April 12, 2021
        Owner
        Reply
        Author

        The firmware does not send reports if it is not paired. So, you may press the external wakeup button only when you pair a device and do not touch it other times.

Leave a Reply