Some information about the battery/charging and realted topics is in the intro guide.
Battery that comes with PinePhone is specified to be charged to 4.35V and there are some data available from the manufacturer, that can be used to calculate remaning capacity from open-circuit voltage and battery temperature. Maximum continuous charging current (AKA fast-charge) is ~1.3A which matches well enough to the default charging current set in the PMIC. Default charge termination voltage is 4.2V.
I have also performed my own measurements of the battery. I did a full charge and then discharged the battery by letting the phone idle at around 1W power consumption, until the battery voltage under load fell to ~3V. Then I charged the battery at ~0.25C until it was full again.
The phone was idle with all wireless interfaces powered down and with only two processes running (init + measurement script) to achieve as smooth power consumption profile as possible.
Voltage vs. capacity reported by PMIC
The results show that capacity reported by PMIC doesn't match reality at high charge levels/voltages. The power consumption was smooth the entire discharge cycle, and the capacity should have been falling in linear fashion.
Voltage vs. power consumption
The power consumption was steadily dropping as the battery voltage got lower. The difference between power consumption at the beginning and at the end was ~11%, which is significant. This is explainable by the phone's use of linear voltage regulators, that have worsening efficiency whith rising difference between the input and output voltages.
Voltage vs. charge/discharge current
This shows that the dicharge cycle took 12h and the charge cycle took 4.7h at 0.25C. At 0.5C (fast charge), the charge time should be around 2.5h. Though it's not recommended to use the fast charge all the time, as it decreases the battery's life expectancy.
Voltage vs. OCV reported by PMIC vs. OCV calculated from the current load
I took the RDC (internal resistance of the battery) as reported by PMIC and calculated OCV voltage using the current and the voltage under load. The results match the reported OCV voltage by the PMIC. This shows that PMIC does the same. The current OCV voltage is not measured by PMIC, it's just calculated.
Improved capacity reporting
Based on the raw data, I've calculated that the battery has the total capacity of 12Wh, by summing up work done by the battery for each 1 minute measurement interval of the discharge cycle.
To improve the
percentual capacity reporting in Linux, I've created a OCV/capacity table and
axp20x-battery.c driver to report capacity based on
detailed OCV/capacity curve that can be put into the device tree. This uses much
more data points than the PMICs internal OCV table, and will eventually also
allow for specifying multiple OCV/capacity curves for various battery
- power: supply: axp20×_battery: Add support for reporting OCV/capacity
- arm64: dts: pinephone: Add detailed OCV to capactiy conversion table
To support charging to 4.35V, I've patched the driver to allow to set the higher charge termination voltage via sysfs:
Some considerations when charging to 4.35V
Modem's recommended maximum Vbat voltage is 4.3V. Absolute maximum is 4.7V. At the end of the charging cycle, the modem voltage may exceed the recommended maximum voltage by ~50–75mV for a brief period of time (eg. ~1h). This will happen especially if modem is in low power state, otherwise various losses on the PCB traces and power switch would contribute to modem seeing a lower than Vbat voltage.
Personally, I'm not worried. But it's your decision to make whether you want to charge to 4.35V or not.