Charger mode on i.MX8MQ and Android 8.1

cancel
Showing results for 
Search instead for 
Did you mean: 

Charger mode on i.MX8MQ and Android 8.1

Jump to solution
974 Views
huanxin_jiang
Contributor II

We are developing on i.MX8MQ and Android 8.1 BSP. We have battery and need charger manager.

We have implemented the battery/charger drivers and the healthd daemon is working well. Android shows correct battery capacity and charging/discharging information. The question is if we power on the unit by plugging in the USB-C adapter it should boot into “charger” mode that shows a big battery icon on screen and plays charging animation. The method is setting “androidboot.mode=charger” in uboot but when I did this I didn’t see that the “charger” service is running. I can manually start the charger service by the following commands on the console:

 

$ su

# charger

 

It then starts the battery animation on the screen that is corresponding to the real battery level, and with the following logs (see attachments):

 

[   19.315741] charger:

[   19.318054] charger: *************** LAST KMSG ***************

[   19.323904] charger:

[   19.326273] charger: last_kmsg not found. Cold reset?

[   19.331353] charger:

[   19.333634] charger: ************* END LAST KMSG *************

[   19.339481] charger:

[   19.341763] charger: --------------- STARTING CHARGER MODE ---------------

[   19.383070] charger: Could not open animation description at /res/values/charger/animation.txt

[   19.391753] charger: Could not parse animation description. Using default animation.

 

So the key is to automatically start the “charger” service when “androidboot.mode=charger” is set. I tried to modify device/fsl/evk_8mq/init.rc and system/core/rootdir/init.rc, but it didn’t work. In system/core/init/init.cpp it triggers the “charger” event when boot mode is charger but it looks not working:

 

pastedImage_1.png

Can you help have a look on this?

Attached are a log that including the manual starting of the charger service, and a picture when the charger service is running.

It looks that we just need a simple setting in init.rc that starts the charger service if boot mode is charger. I did the following changes in init.rc, but it doesn’t work:

 

diff --git a/evk_8mq/init.rc b/evk_8mq/init.rc

index 3309b05..ebbd1a9 100644

--- a/evk_8mq/init.rc

+++ b/evk_8mq/init.rc

@@ -138,6 +138,17 @@ on early-boot

     # Dectect DSF streams when scanning media

     setprop ro.FSL_DSF_PARSER 1

 

+on charger

+    # Enable Power modes and set the CPU Freq Sampling rates

+    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave"

+    write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold 90

+    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate 50000

+    write /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy 1

+    write /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor 4

+    write /sys/devices/system/cpu/cpu1/online 0

+    write /sys/devices/system/cpu/cpu2/online 0

+    write /sys/devices/system/cpu/cpu3/online 0

+

service wpa_supplicant /vendor/bin/hw/wpa_supplicant \

     -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf -N \

     -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \

@@ -223,6 +234,9 @@ service g3d /vendor/bin/g3d

     group system

     oneshot

 

+service charger /sbin/charger

+    class charger

+

on property:wc_transport.start_hci=true

     start start_hci_filter

Thanks,

Huanxin Jiang

Netscout

0 Kudos
1 Solution
540 Views
huanxin_jiang
Contributor II

Thanks and we've resolved this issue. There was a SELINUX policy issue with the charger service.

View solution in original post

0 Kudos
2 Replies
541 Views
huanxin_jiang
Contributor II

Thanks and we've resolved this issue. There was a SELINUX policy issue with the charger service.

View solution in original post

0 Kudos
540 Views
diegoadrian
NXP Employee
NXP Employee

Hello,

Just to be sure.

Are you trying to see the boot animation for the battery charging?

Anyway, Investigating I found that the BatteryMonitor.cpp file has something to do with the battery status of the device. Just let investigate a little more about this.

Best Regards,

Diego. 

0 Kudos