Difference between revisions of "PinePhone Power Management"

From Dejvino's Knowledge Base
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
The above can be automatically executed every few minutes as a systemd daemon or via cron. This is an example of a systemd timer:
 
The above can be automatically executed every few minutes as a systemd daemon or via cron. This is an example of a systemd timer:
  
{{codeblock|title=/usr/local/sbin/powermax|1=<pre>#!/bin/bash
+
==== /usr/local/sbin/powermax ====
 +
<syntaxhighlight lang="bash">
 +
#!/bin/bash
 
FONLINE=/sys/class/power_supply/axp20x-usb/online
 
FONLINE=/sys/class/power_supply/axp20x-usb/online
 
FLIMIT=/sys/class/power_supply/axp20x-usb/input_current_limit
 
FLIMIT=/sys/class/power_supply/axp20x-usb/input_current_limit
Line 18: Line 20:
 
     echo 900000 > $FLIMIT
 
     echo 900000 > $FLIMIT
 
fi
 
fi
</pre>}}
+
</syntaxhighlight>
  
 +
==== /etc/systemd/system/... ====
 
{{codeblock|title=/etc/systemd/system/powermax.service|1=[Unit]
 
{{codeblock|title=/etc/systemd/system/powermax.service|1=[Unit]
 
Description=Powermax
 
Description=Powermax
Line 29: Line 32:
 
Description=Powermax
 
Description=Powermax
 
[Timer]
 
[Timer]
OnUnitActiveSec=1min
+
OnBootSec=1min
[Installl]
+
OnUnitActiveSec=2min
 +
[Install]
 
WantedBy=timers.target}}
 
WantedBy=timers.target}}
  
 +
==== Activation ====
 
{{codeblock|1=systemctl daemon-reload
 
{{codeblock|1=systemctl daemon-reload
 
systemctl enable powermax.timer}}
 
systemctl enable powermax.timer}}

Latest revision as of 19:52, 14 September 2020

How to handle power management on PinePhone.

Input Current Limit

By default the AXP803 limits the input current to 500 mA which is way too low to use the phone and charge it. It is possible to manually increase this limit (assuming the power source can handle it):

echo 900000 > /sys/class/power_supply/axp20x-usb/input_current_limit

Current Fixing Daemon

The above can be automatically executed every few minutes as a systemd daemon or via cron. This is an example of a systemd timer:

/usr/local/sbin/powermax

#!/bin/bash
FONLINE=/sys/class/power_supply/axp20x-usb/online
FLIMIT=/sys/class/power_supply/axp20x-usb/input_current_limit
if [[ `cat $FONLINE` -eq 0 ]]; then
    return 0;
fi
if [[ `cat $FLIMIT` -eq 500000 ]]; then
    echo 900000 > $FLIMIT
fi

/etc/systemd/system/...

/etc/systemd/system/powermax.service[Unit] Description=Powermax [Service] Type=oneshot ExecStart=/usr/local/sbin/powermax

/etc/systemd/system/powermax.timer[Unit] Description=Powermax [Timer] OnBootSec=1min OnUnitActiveSec=2min [Install] WantedBy=timers.target

Activation

systemctl daemon-reload systemctl enable powermax.timer

Related

External Links