Skip to contentSkip to conversation

Droid 4: suspend to RAM?

DISCUSSION Pavel Machek 3 participants 9 messages Jul 25, 2018 – Aug 10, 2018

lore
Share & tools
lore
#0 lore raw

Hi!

I have two big problems with droid 4. #1 is that it lost 2 SMS.. and I have no idea why. Second is power consumption -- it seems to be rather high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Best regards, Pavel

Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180725/2480d3a3/attachment.sig>
#1 lore raw

Hi Pavel

Quoted 4 lines · Pavel Machek

Hi!

I have two big problems with droid 4. #1 is that it lost 2 SMS.. and I have no idea why. Second is power consumption -- it seems to be rather

Depend how do you set the SMS buffering using CNMI if I remember. Modem has 1024bytes of memory most of the time that can buffer more then 1 sms. Modem rise a irq when they receive a call or sms, or you an use the serial but omap family can loose the first char coming from the serial so you can lost the sms because parsing fail

Quoted 5 lines

high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

Quoted 7 lines

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Sorry but pm subsystem has debug mode that you can test in a easy way. You can even wakeup by any rtc alarm easily.

Michael

Quoted 5 lines

Best regards, Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#2 lore raw

HI!

Quoted 9 lines
Quoted 3 lines

I have two big problems with droid 4. #1 is that it lost 2 SMS.. and I have no idea why. Second is power consumption -- it seems to be rather

Depend how do you set the SMS buffering using CNMI if I remember. Modem has 1024bytes of memory most of the time that can buffer more then 1 sms. Modem rise a irq when they receive a call or sms, or you an use the serial but omap family can loose the first char coming from the serial so you can lost the sms because parsing fail

I am using USB connection to the modem. And yes, I'm using rather strange CNMI settings (but other did not work).

Quoted 8 lines
Quoted 8 lines

high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

Quoted 7 lines
Quoted 4 lines

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Sorry but pm subsystem has debug mode that you can test in a easy way. You can even wakeup by any rtc alarm easily.

Yes, that is how it works on PC (but there power button works, too). Is it expected to work on Droid in v4.18?

Thanks,
Pavel

Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180725/7630565b/attachment.sig>
#3 lore raw

Hi!

Quoted 13 lines
Quoted 13 lines
Quoted 12 lines

high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Quoted 5 lines
Quoted 2 lines

Sorry but pm subsystem has debug mode that you can test in a easy way. You can even wakeup by any rtc alarm easily.

Yes, that is how it works on PC (but there power button works, too). Is it expected to work on Droid in v4.18?

I tried setting up wakeup using RTC, but no, it does not seem to work:

root at devuan:/my/tui/d4# rtcwake -m no -s 5
rtcwake: wakeup using /dev/rtc0 at Fri Jul 27 11:28:44 2018 root at devuan:/my/tui/d4# echo mem > /sys/power/state

Pavel

Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180727/970666f8/attachment.sig>
#4 lore raw
Quoted 17 lines · Pavel Machek

Hi!

Quoted 16 lines
Quoted 15 lines
Quoted 5 lines

high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

Quoted 7 lines

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Sorry but pm subsystem has debug mode that you can test in a easy way. You can even wakeup by any rtc alarm easily.

Quoted 8 lines
Quoted 2 lines

Yes, that is how it works on PC (but there power button works, too). Is it expected to work on Droid in v4.18?

I tried setting up wakeup using RTC, but no, it does not seem to work:

root at devuan:/my/tui/d4# rtcwake -m no -s 5
rtcwake: wakeup using /dev/rtc0 at Fri Jul 27 11:28:44 2018 root at devuan:/my/tui/d4# echo mem > /sys/power/state

Works for me here as tested on next-20180808, maybe you don't have CONFIG_RTC_DRV_CPCAP? Maybe you are trying to use CONFIG_RTC_DRV_OMAP?

Then for deeper idle modes, you need to also idle UARTs, and unbind or unload USB related modules. You should get to something like 160mW power consumption with mdm6600 enabled and SoC suspended that way.

Then again system running idle is about the same with timers and interrupts working so I'd just idle UARTs and unload USB modules :)

My UART idle script below for reference.

Regards,

Tony

8< ----------------
#!/bin/bash

# Configure PM runtime autosuspend
uarts=$(find /sys/bus/platform/devices/4*.serial/power/ -type d) for uart in $uarts; do
echo -n 3000 > $uart/autosuspend_delay_ms
echo -n enabled > $uart/wakeup
echo -n auto > $uart/control
done

# Configure wake-up from suspend
uarts=$(find /sys/class/tty/tty[SO]*/power/ -type d 2>/dev/null) for uart in $uarts; do
echo -n enabled > $uart/wakeup
done

echo -n 1 > /sys/kernel/debug/pm_debug/enable_off_mode

#5 lore raw
Quoted 23 lines · Tony Lindgren
Quoted 22 lines · Pavel Machek

Hi!

Quoted 13 lines
Quoted 13 lines
Quoted 12 lines

high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Quoted 5 lines
Quoted 2 lines

Sorry but pm subsystem has debug mode that you can test in a easy way. You can even wakeup by any rtc alarm easily.

Yes, that is how it works on PC (but there power button works, too). Is it expected to work on Droid in v4.18?

I tried setting up wakeup using RTC, but no, it does not seem to work:

Quoted 7 lines
Quoted 3 lines

root at devuan:/my/tui/d4# rtcwake -m no -s 5
rtcwake: wakeup using /dev/rtc0 at Fri Jul 27 11:28:44 2018 root at devuan:/my/tui/d4# echo mem > /sys/power/state

Works for me here as tested on next-20180808, maybe you don't have CONFIG_RTC_DRV_CPCAP? Maybe you are trying to use CONFIG_RTC_DRV_OMAP?

I tried with mainline... there will be no graphics in next, right? And yes, I had CONFIG_RTC_DRV_CPCAP and not CONFIG_RTC_DRV_OMAP.

Quoted 3 lines

Then for deeper idle modes, you need to also idle UARTs, and unbind or unload USB related modules. You should get to something like 160mW power consumption with mdm6600 enabled and SoC suspended that way.

That's slightly interesting. echo mem > /sys/power/state should do all the work, right? Disable UARTs etc. Plus, is 160mW still a bit high?

Quoted 4 lines

Then again system running idle is about the same with timers and interrupts working so I'd just idle UARTs and unload USB modules :)

My UART idle script below for reference.

Thanks, let me try...

Pavel

Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180808/7ac2c84e/attachment.sig>
#6 lore raw
Quoted 7 lines · Pavel Machek
Quoted 3 lines · Tony Lindgren

Then for deeper idle modes, you need to also idle UARTs, and unbind or unload USB related modules. You should get to something like 160mW power consumption with mdm6600 enabled and SoC suspended that way.

That's slightly interesting. echo mem > /sys/power/state should do all the work, right? Disable UARTs etc. Plus, is 160mW still a bit high?

Yes suspend will do it, you still need to configure wake-up events though at least for the UARTs. I think I got enabled mdm6600 to low-power state after connecting over UART ts27010 and then suspending OHCI:

        ohci=$(find /sys/bus/platform/devices -name \*.ohci)
        devices=$(find ${ohci}/ -type d -name control)
        for device in ${devices}; do
                echo -n "auto" > ${device}/level
                echo -n "control" > ${device}/level
        done

        echo "usb-phy at 1" > /sys/bus/platform/drivers/phy-mapphone-mdm6600/unbind

For power consumption, 160mW is high yeah. We currently cannot hit core retention on omap4 until some GPIO issues are fixed. I've been trying to think for a good fix for that, but need to debug it more when I get a chance.

Quoted 1 line

From few months ago, I recall I got droid4 to run at around 65mW idle

with WLAN connected and modem off with my test hacks. With modem on and USB suspended I think I got to around 100mW.

Then I recall measuring droid4 with stock android in flight mode measuring at around 15 - 30mW. But that requires off mode to work on omap4, maybe we'll get to that too at some point after core retention.

Regards,

Tony

#7 lore raw
In reply to Tony Lindgren
Quoted 21 lines · Tony Lindgren
Quoted 20 lines · Pavel Machek

Hi!

Quoted 18 lines
Quoted 8 lines
Quoted 8 lines

high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

Quoted 7 lines
Quoted 4 lines

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Sorry but pm subsystem has debug mode that you can test in a easy way. You can even wakeup by any rtc alarm easily.

Yes, that is how it works on PC (but there power button works, too). Is it expected to work on Droid in v4.18?

Quoted 8 lines
Quoted 5 lines

I tried setting up wakeup using RTC, but no, it does not seem to work:

root at devuan:/my/tui/d4# rtcwake -m no -s 5
rtcwake: wakeup using /dev/rtc0 at Fri Jul 27 11:28:44 2018 root at devuan:/my/tui/d4# echo mem > /sys/power/state

Works for me here as tested on next-20180808, maybe you don't have CONFIG_RTC_DRV_CPCAP? Maybe you are trying to use

CONFIG_RTC_DRV_OMAP?

I have right config, and it works for me on next-20180808. Power button wakes it up, as expected, and even usbnet connections survive, which is good.

Unfortunately, next-20180808 has no video support, which may also be reason why it works. I guess I'll need to dust off serial cable and look for logs...
Pavel

Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180810/e11be57d/attachment.sig>
#8 lore raw
In reply to Tony Lindgren

Hi!

Quoted 21 lines · Pavel Machek
Quoted 20 lines

Hi!

Quoted 18 lines
Quoted 8 lines
Quoted 8 lines

high even before modem (and thus USB) is enabled.

Interestingly, CyanogenMod and Jolla seem to have higher power consumption than stock operating system.

(My Linux can survive for 10 hours, stock system could survive for 4 days if I'm not mistaken).

Quoted 7 lines
Quoted 4 lines

I thought I would experiment with suspend to RAM.. and it indeed seemed to suspend ok, but I could not wake it up. Do I need to set up wakeup with button somehow? Is suspend to RAM required for good power consumption?

Sorry but pm subsystem has debug mode that you can test in a easy way. You can even wakeup by any rtc alarm easily.

Yes, that is how it works on PC (but there power button works, too). Is it expected to work on Droid in v4.18?

Quoted 8 lines
Quoted 5 lines

I tried setting up wakeup using RTC, but no, it does not seem to work:

root at devuan:/my/tui/d4# rtcwake -m no -s 5
rtcwake: wakeup using /dev/rtc0 at Fri Jul 27 11:28:44 2018 root at devuan:/my/tui/d4# echo mem > /sys/power/state

Works for me here as tested on next-20180808, maybe you don't have CONFIG_RTC_DRV_CPCAP? Maybe you are trying to use CONFIG_RTC_DRV_OMAP?

Mainline seems to fail suspend, with CONFIG_DRM turned off. Aha, and same behaviour with CONFIG_DRM on. Why is it different today?

[  334.933532] Charging, 4350000 uV, 532000 uA
[  338.093109] PM: suspend entry (deep)
[  338.096710] PM: Syncing filesystems ... done.
[  338.138977] Freezing user space processes ... (elapsed 0.001
seconds) done.
[  338.147338] OOM killer disabled.
[  338.150604] Freezing remaining freezable tasks ... (elapsed 0.001
seconds) done.
[  338.159240] Suspending console(s) (use no_console_suspend to debug)
[  338.168212] phy phy-usb-phy at 1.1: phy poweroff failed --> -19
[  338.181518] l4_wkup_cm:clk:0018:0: failed to disable
[  338.183227] PM: noirq suspend of devices failed
[  338.187377] g_ether gadget: reset config
[  338.187408] g_ether gadget: ecm deactivated
[  338.187408] usb0: gether_disconnect
[  338.513092] OOM killer enabled.
[  338.516296] Restarting tasks ... done.
[  338.529266] PM: suspend exit
[  338.698577] g_ether gadget: high-speed config #1: CDC Ethernet
(ECM)
[  338.704986] g_ether gadget: init ecm
[  338.708587] g_ether gadget: notify connect true
[  338.713958] g_ether gadget: activate ecm
[  338.717895] usb0: qlen 10
[  338.720550] g_ether gadget: ecm_open
[  338.724151] usb0: eth_start
[  338.727111] g_ether gadget: packet filter 0c
[  338.731414] g_ether gadget: ecm req21.43 v000c i0000 l0
[  338.993835] cpcap_usb_detect: 27 callbacks suppressed

With USB unplugged, suspend seems to behave as expected, even on v4.18-rc8, and it seems to work even with X running and modem online. Good.

Quoted 6 lines

Then for deeper idle modes, you need to also idle UARTs, and unbind or unload USB related modules. You should get to something like 160mW power consumption with mdm6600 enabled and SoC suspended that way.

Then again system running idle is about the same with timers and interrupts working so I'd just idle UARTs and unload USB modules :)

Ok, let me play with it some more.

Thanks for help,
Pavel

Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180810/47d7f8d5/attachment-0001.sig>