# # Copyright (C) 2016 The Android Open-Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import /vendor/etc/init/hw/init.${ro.hardware}.usb.rc on charger # Set runtime stune value write /dev/stune/schedtune.prefer_idle 0 write /dev/stune/schedtune.boost 0 # Offline CPUs write /sys/devices/system/cpu/cpu2/online 0 write /sys/devices/system/cpu/cpu3/online 0 write /sys/devices/system/cpu/cpu4/online 0 write /sys/devices/system/cpu/cpu5/online 0 write /sys/devices/system/cpu/cpu6/online 0 write /sys/devices/system/cpu/cpu7/online 0 wait /dev/block/platform/soc/${ro.boot.bootdevice} # Enable UFS powersaving write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 1 write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 1 write /sys/class/typec/port0/port_type sink write /sys/module/lpm_levels/parameters/sleep_disabled N service vendor.charger /system/bin/charger class charger seclabel u:r:charger:s0 on early-init mount debugfs debugfs /sys/kernel/debug chmod 0755 /sys/kernel/debug # Loading kernel modules in background start vendor.insmod_sh write /sys/module/dm_verity/parameters/prefetch_cluster 0 on init # Disable UFS powersaving write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 0 write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 0 write /sys/module/lpm_levels/parameters/sleep_disabled Y # QSEE rpmb listener need symlink for bootdevice wait /dev/block/platform/soc/${ro.boot.bootdevice} symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice # start qseecomd early as we mount system/ vendor/ early # vold needs keymaster that needs qseecomd start vendor.qseecomd # Support legacy paths symlink /sdcard /mnt/sdcard symlink /sdcard /storage/sdcard0 # disable thermal hotplug for thermal write /sys/module/msm_thermal/core_control/enabled 0 # bring back all cores write /sys/devices/system/cpu/cpu0/online 1 write /sys/devices/system/cpu/cpu1/online 1 write /sys/devices/system/cpu/cpu2/online 1 write /sys/devices/system/cpu/cpu3/online 1 write /sys/devices/system/cpu/cpu4/online 1 write /sys/devices/system/cpu/cpu5/online 1 write /sys/devices/system/cpu/cpu6/online 1 write /sys/devices/system/cpu/cpu7/online 1 # configure governor settings for little cluster write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "schedutil" write /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us 500 write /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us 20000 # configure governor settings for big cluster write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "schedutil" write /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us 500 write /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us 20000 # Set boottime stune value write /dev/stune/schedtune.prefer_idle 1 write /dev/stune/schedtune.boost 100 # set default schedTune value for foreground/top-app write /dev/stune/foreground/schedtune.prefer_idle 1 write /dev/stune/top-app/schedtune.boost 10 write /dev/stune/top-app/schedtune.prefer_idle 1 # Disable retention write /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled N write /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled N write /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled N write /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled N write /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled N write /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled N write /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled N write /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled N write /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled N write /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled N write /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled N write /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled N # b/37682684 Enable suspend clock reporting write /sys/kernel/debug/clk/debug_suspend 1 # ZRAM setup write /sys/block/zram0/comp_algorithm lz4 write /proc/sys/vm/page-cluster 0 on init setprop vendor.thermal.config thermal_info_config.json on fs mount_all /vendor/etc/fstab.${ro.hardware} --early mkdir /persist/data 0700 system system mkdir /persist/display 0770 system graphics mkdir /persist/rfs 0770 root system mkdir /persist/hlos_rfs 0770 root system mkdir /persist/elabel 0700 system system chmod 0770 /persist/rfs chmod 0770 /persist/rfs/shared chmod 0770 /persist/rfs/msm chmod 0770 /persist/rfs/msm/adsp chown system system /persist/rfs/msm/adsp chmod 0770 /persist/rfs/msm/mpss chown system system /persist/rfs/msm/mpss mkdir /persist/rfs/msm/slpi 0770 system system chmod 0770 /persist/rfs/mdm chmod 0770 /persist/rfs/mdm/adsp chown system system /persist/rfs/mdm/adsp chmod 0770 /persist/rfs/mdm/mpss chown system system /persist/rfs/mdm/mpss mkdir /persist/rfs/mdm/slpi 0770 system system chmod 0770 /persist/rfs/mdm/sparrow chown system system /persist/rfs/mdm/sparrow mkdir /persist/rfs/mdm/tn 0770 system system chmod 0770 /persist/rfs/apq chmod 0770 /persist/rfs/apq/gnss chmod 0770 /persist/hlos_rfs # b/78019660 Remove unlabeled persist_rfs_file rm /persist/rfs/msm/mpss/server_check.txt # for android.hardware.health@2.0-service.marlin cycle count backup mkdir /persist/battery 0700 system system restorecon_recursive /persist on late-fs # Start devices by sysfs trigger start vendor.devstart_sh # Start services for bootanim start vendor.power-hal-1-3 start surfaceflinger start bootanim start vendor.hwcomposer-2-1 start vendor.configstore-hal start vendor.gralloc-2-0 # Wait for hwservicemanager ready since fsck might be triggered in mount_all --late # In such case, init won't responce the property_set from hwservicemanager and then # cause services for bootanim not running. wait_for_prop hwservicemanager.ready true # Mount RW partitions which need run fsck mount_all /vendor/etc/fstab.${ro.hardware} --late # Required for time_daemon mkdir /persist/time 0770 system system # Start time daemon early so that the system time can be set early start vendor.time_daemon on post-fs # set RLIMIT_MEMLOCK to 64MB setrlimit 8 67108864 67108864 chmod 0664 /sys/devices/virtual/graphics/fb0/idle_time chown system graphics /sys/devices/virtual/graphics/fb0/idle_time write /sys/devices/virtual/graphics/fb0/idle_time 100 # Wait qseecomd started wait_for_prop sys.listeners.registered true on property:sys.listeners.registered=true # load IPA FWs start vendor.ipastart_sh on post-fs-data # We can start netd here before in is launched in common init.rc on zygote-start start netd # b/38048356 Setup debug folders for camera mkdir /data/vendor/camera 0770 camera camera # b/38496103 Setup debug folders for display mkdir /data/vendor/display 0770 system graphics # b/65834073 Create rfs folder for tftp_server mkdir /data/vendor/tombstones/rfs 0770 root system # keep that at the end of on post-fs-data # Set indication (checked by vold) that we have finished this action setprop vold.post_fs_data_done 1 # Wait until the system time is set wait_for_prop sys.time.set true # zygote need to be started after otapreopt which will be done on post-fs-data on zygote-start # zygote is started in common init.rc # and now we can continue to initialize /data/ mkdir /data/tombstones 0771 system system mkdir /tombstones/modem 0771 system system mkdir /tombstones/lpass 0771 system system mkdir /tombstones/wcnss 0771 system system mkdir /tombstones/dsps 0771 system system mkdir /data/misc/qvop 0660 system system mkdir /data/misc/hbtp 0750 system system mkdir /data/misc/seemp 0700 system system # Create directory for TZ Apps mkdir /data/misc/qsee 0770 system system mkdir /data/media 0770 media_rw media_rw chown media_rw media_rw /data/media mkdir /data/vendor/ipa 0770 radio radio chown radio radio /data/vendor/ipa # Create the directories used by the Wireless subsystem mkdir /data/vendor/wifi 0771 wifi wifi mkdir /data/vendor/wifi/wpa 0770 wifi wifi mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi mkdir /data/misc/dhcp 0770 dhcp dhcp chown dhcp dhcp /data/misc/dhcp # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections # We chown/chmod /persist again so because mount is run as root + defaults chown root system /persist chmod 0771 /persist chown system system /persist/WCNSS_qcom_wlan_nv.bin # Trigger WLAN driver load write /sys/kernel/boot_wlan/boot_wlan 1 #create port-bridge log dir mkdir /data/misc/port_bridge 0770 radio radio chmod 0770 /data/misc/port_bridge #create netmgr log dir mkdir /data/vendor/netmgr 0771 radio radio chmod 0771 /data/vendor/netmgr # Create the directories used by CnE subsystem mkdir /data/connectivity 0771 system system chown system system /data/connectivity # Create the directories used by DPM subsystem mkdir /data/dpm 0771 system system chown system system /data/dpm mkdir /data/dpm/nsrm 0771 system system chown system system /data/dpm/nsrm # Create directory used by audio subsystem mkdir /data/vendor/audio 0770 audio audio # Create directory for audio delta files mkdir /data/vendor/audio/acdbdata 0770 media audio mkdir /data/vendor/audio/acdbdata/delta 0770 media audio # Create directory used by the DASH client mkdir /data/misc/dash 0770 media audio # Create directory for radio mkdir /data/vendor/radio 0773 system radio # Create directory used by display clients mkdir /data/misc/display 0770 system graphics # Setup sensors-related directories and permissions mkdir /persist/sensors 0775 chown root system /persist/sensors write /persist/sensors/sensors_settings 1 chown root system /persist/sensors/sensors_settings chmod 664 /persist/sensors/sensors_settings chown root system /persist/sensors/sns.reg chmod 664 /persist/sensors/sns.reg mkdir /data/vendor/sensors 0770 chown system system /data/vendor/sensors # These files might have been created by root from a prior build - make sure # they are accessible to the sensors daemon chown system system /data/vendor/sensors/cal.bin chown system system /data/vendor/sensors/cal.txt # /dev/sensors only supports an ioctl to get the current SLPI timestamp; # allow the sensors daemon to perform this as non-root chown root system /dev/sensors chmod 660 /dev/sensors # Mark the copy complete flag to not completed write /data/vendor/radio/copy_complete 0 chown radio radio /data/vendor/radio/copy_complete chmod 0660 /data/vendor/radio/copy_complete # File flags for prebuilt ril db file write /data/vendor/radio/prebuilt_db_support 1 chown radio radio /data/vendor/radio/prebuilt_db_support chmod 0400 /data/vendor/radio/prebuilt_db_support write /data/vendor/radio/db_check_done 0 chown radio radio /data/vendor/radio/db_check_done chmod 0660 /data/vendor/radio/db_check_done # Create directories for Location services mkdir /data/vendor/location 0770 gps gps mkdir /data/vendor/location/mq 0770 gps gps mkdir /data/vendor/location/xtwifi 0770 gps gps # NFC local data and nfcee xml storage mkdir /data/vendor/nfc 0770 nfc nfc # b/62837579 elabel directory mkdir /data/misc/elabel 0700 system system on early-boot # wait for devices wait_for_prop sys.qcom.devup 1 # wait for insmod_sh to finish all modules wait_for_prop sys.all.modules.ready 1 # Update dm-verity state and set partition.*.verified properties verity_update_state # Permission for laser sensor driver chown camera camera /sys/class/wahoo_laser/laser/enable_ps_sensor # Permission for Vibrator chown system system /sys/class/leds/vibrator/device/mode chown system system /sys/class/leds/vibrator/device/od_clamp chown system system /sys/class/leds/vibrator/device/rtp_input chown system system /sys/class/leds/vibrator/device/scale chown system system /sys/class/leds/vibrator/device/set_sequencer chown system system /sys/class/leds/vibrator/device/autocal_result chown system system /sys/class/leds/vibrator/device/ctrl_loop chown system system /sys/class/leds/vibrator/device/ol_lra_period chown system system /sys/class/leds/vibrator/device/autocal chown system system /sys/class/leds/vibrator/device/lp_trigger_effect chown system system /sys/class/leds/vibrator/device/lra_wave_shape chown system system /sys/class/leds/vibrator/device/od_clamp # Permission for LED driver chown system system /sys/class/leds/red/on_off_ms chown system system /sys/class/leds/green/on_off_ms chown system system /sys/class/leds/blue/on_off_ms chown system system /sys/class/leds/red/rgb_start chown system system /sys/class/leds/green/rgb_start chown system system /sys/class/leds/blue/rgb_start chown system system /sys/class/graphics/fb0/msm_fb_persist_mode # dumpstate needs to read, vendor.health-hal needs to be able to RW chown system system /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/cycle_counts_bins # HardwareInfo needs to be able to read CC bins chmod 644 /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/cycle_counts_bins # dumpstate needs to read, vendor.health-hal needs to be able to RW chown system system /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/power_supply/bms/charge_full # HardwareInfo needs to be able to read charge_full chmod 644 /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/power_supply/bms/charge_full on boot mkdir /dev/socket/qmux_radio 0770 radio radio chmod 2770 /dev/socket/qmux_radio mkdir /dev/socket/qmux_audio 0770 media audio chmod 2770 /dev/socket/qmux_audio mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth chmod 2770 /dev/socket/qmux_bluetooth mkdir /dev/socket/qmux_gps 0770 gps gps chmod 2770 /dev/socket/qmux_gps # Create NETMGR daemon socket area mkdir /dev/socket/netmgr 0750 radio radio setprop wifi.interface wlan0 # Assign TCP buffer thresholds to be ceiling value of technology maximums # Increased technology maximums should be reflected here. write /proc/sys/net/core/rmem_max 8388608 write /proc/sys/net/core/wmem_max 8388608 # Bluetooth chown bluetooth net_bt /sys/class/rfkill/rfkill0/type chown bluetooth net_bt /sys/class/rfkill/rfkill0/state chmod 0660 /sys/class/rfkill/rfkill0/state chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo chmod 0660 /sys/class/rfkill/rfkill0/device/extldo # Wifi firmware reload path chown wifi wifi /sys/module/wlan/parameters/fwpath # default country code setprop ro.boot.wificountrycode 00 # Make the ftm4 command node writeable from dumpstate chown system system /sys/devices/virtual/input/ftm4_touch/cmd # WLAN debug access chown system system /d/icnss/stats service vendor.init-elabel-sh /system/bin/init.elabel.sh class late_start user system group system oneshot service vendor.init-radio-sh /vendor/bin/init.radio.sh class late_start user radio group root radio oneshot service vendor.folio_daemon /system/bin/folio_daemon class late_start user system group system uhid disabled on property:init.svc.zygote=running start vendor.folio_daemon on property:init.svc.zygote=stopped stop vendor.folio_daemon on property:vendor.qcom.thermalcfg=* restart vendor.thermal-engine service vendor.thermal-engine /vendor/bin/thermal-engine -c ${vendor.qcom.thermalcfg:-/vendor/etc/thermal-engine.conf} class hal user root group root system diag socket thermal-send-client stream 0666 system system socket thermal-recv-client stream 0660 system system socket thermal-recv-passive-client stream 0666 system system service vendor.msm_irqbalance /vendor/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf socket msm_irqbalance seqpacket 660 root system class core user root group root writepid /dev/cpuset/system-background/tasks on property:persist.sys.ssr.restart_level=* start vendor.ssr_setup service vendor.ssr_setup /vendor/bin/ssr_setup oneshot disabled service vendor.ssr_diag /vendor/bin/ssr_diag class late_start user system group system disabled service vendor.per_mgr /vendor/bin/pm-service class core user system group system ioprio rt 4 shutdown critical service vendor.per_proxy /vendor/bin/pm-proxy class core user system group system disabled on property:sys.post_boot.parsed=1 # Enable PowerHAL hint processing setprop vendor.powerhal.init 1 on property:sys.boot_completed=1 # Set runtime stune value write /dev/stune/schedtune.prefer_idle 0 write /dev/stune/schedtune.boost 0 # Enable power setting and set sys.post_boot.parsed to 1 start vendor.power_sh # Enable UFS powersaving write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 1 write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 1 write /sys/module/lpm_levels/parameters/sleep_disabled N # Setup final cpuset write /dev/cpuset/top-app/cpus 0-7 write /dev/cpuset/foreground/cpus 0-3,6-7 write /dev/cpuset/background/cpus 0-1 write /dev/cpuset/system-background/cpus 0-3 write /dev/cpuset/restricted/cpus 0-3 # UFS health chmod 755 /sys/kernel/debug/ufshcd0 chmod 644 /sys/kernel/debug/ufshcd0/err_state chmod 644 /sys/kernel/debug/ufshcd0/power_mode chmod 644 /sys/kernel/debug/ufshcd0/host_regs chmod 644 /sys/kernel/debug/ufshcd0/show_hba chmod 644 /sys/kernel/debug/ufshcd0/dump_device_desc chmod 644 /sys/kernel/debug/ufshcd0/dump_health_desc chmod 755 /sys/kernel/debug/ufshcd0/stats chmod 644 /sys/kernel/debug/ufshcd0/stats/req_stats chmod 644 /sys/kernel/debug/ufshcd0/stats/query_stats chmod 644 /sys/kernel/debug/ufshcd0/stats/err_stats # QCOM FG SRAM dump for dumpstate chown system system /d/fg/sram/data chown system system /d/fg/sram/count chown system system /d/fg/sram/address # com.google.android.hardwareinfo needs to be able to read cycle counts chmod 0666 /sys/class/power_supply/bms/cycle_count_id trigger sys-boot-completed-set # We want one opportunity per boot to enable zram, so we # use a trigger we fire from the above stanza. If # persist.sys.zram_enabled becomes true after boot, # we don't want to run swapon_all at that time. on sys-boot-completed-set && property:persist.sys.zram_enabled=1 swapon_all /vendor/etc/fstab.${ro.hardware} write /proc/sys/vm/swappiness 100 on property:init.svc.vendor.per_mgr=running start vendor.per_proxy on shutdown stop vendor.per_proxy # Disable subsystem restart write /sys/module/subsystem_restart/parameters/disable_restart_work 0x9889deed service vendor.qseecomd /vendor/bin/qseecomd class core user root group root shutdown critical service vendor.time_daemon /vendor/bin/time_daemon class core user root group root service vendor.ss_ramdump /vendor/bin/subsystem_ramdump class main user root group root system disabled on property:persist.sys.ssr.enable_ramdumps=1 write /sys/module/subsystem_restart/parameters/enable_ramdumps 1 mkdir /data/vendor/ssrdump 771 root system mkdir /data/vendor/ramdump 771 root system start vendor.ss_ramdump on property:persist.sys.ssr.enable_ramdumps=0 write /sys/module/subsystem_restart/parameters/enable_ramdumps 0 service vendor.sensors /vendor/bin/sensors.qcom class core user system group system # Grants the ability for this daemon to bind IPC router ports so it can # register QMI services capabilities NET_BIND_SERVICE service vendor.adsprpcd /vendor/bin/adsprpcd class main user media group media service vendor.irsc_util /vendor/bin/irsc_util "/vendor/etc/sec_config" class core user root oneshot service vendor.rmt_storage /vendor/bin/rmt_storage class core user root ioprio rt 0 shutdown critical service vendor.tftp_server /vendor/bin/tftp_server class core user root group root system service vendor.cnss-daemon /vendor/bin/cnss-daemon -n -l class late_start user system group system inet wifi service vendor.imsqmidaemon /vendor/bin/imsqmidaemon class main user system socket ims_qmid stream 0660 system radio group radio log diag service vendor.imsdatadaemon /vendor/bin/imsdatadaemon class main user system socket ims_datad stream 0660 system radio group system wifi radio inet log disabled on property:vendor.ims.QMI_DAEMON_STATUS=1 start vendor.imsdatadaemon service vendor.ims_rtp_daemon /vendor/bin/ims_rtp_daemon class main user system group radio diag inet log disabled service vendor.imsrcsservice /vendor/bin/imsrcsd class hal user system group radio diag inet log disabled on property:vendor.ims.DATA_DAEMON_STATUS=1 start vendor.ims_rtp_daemon start vendor.imsrcsservice service vendor.cnd /vendor/bin/cnd class main user radio group inet system wifi radio wakelock service vendor.netmgrd /vendor/bin/netmgrd class main user root group root wifi wakelock radio inet service vendor.port-bridge /vendor/bin/port-bridge class main user radio group radio system inet oneshot service vendor.ipacm /vendor/bin/ipacm class main user radio group radio inet service vendor.qti /vendor/bin/qti class main user radio group radio net_raw diag usb net_admin on property:wc_transport.start_hci=true start vendor.hci_filter on property:wc_transport.start_hci=false stop vendor.hci_filter service vendor.loc_launcher /vendor/bin/loc_launcher class late_start group gps inet diag wifi service vendor.pd_mapper /vendor/bin/pd-mapper class core service vendor.atfwd /vendor/bin/ATFWD-daemon class late_start user system group system radio disabled on property:persist.radio.atfwd.start=true start vendor.atfwd on property:persist.radio.atfwd.start=false stop vendor.atfwd # b/68982314 on property:sys.uidcpupower=* write /proc/uid_cpupower/enable 1 on property:sys.uidcpupower=0 write /proc/uid_cpupower/enable 0 # bugreport is triggered by holding down volume down, volume up and power service bugreport /system/bin/dumpstate -d -p -z class main disabled oneshot keycodes 114 115 116 service vendor.power_sh /vendor/bin/init.power.sh class main user root group root system disabled oneshot service vendor.devstart_sh /vendor/bin/init.qcom.devstart.sh class main user root group root system disabled oneshot service vendor.ipastart_sh /vendor/bin/init.qcom.ipastart.sh class main user system group net_admin disabled oneshot service vendor.insmod_sh /vendor/bin/init.insmod.sh class main user root group root system disabled oneshot # b/70518189 vDSO experiments on property:sys.vdso=* write /sys/module/vdso/parameters/enable_32 1 write /sys/module/vdso/parameters/enable_64 1 on property:sys.vdso=false write /sys/module/vdso/parameters/enable_32 0 write /sys/module/vdso/parameters/enable_64 0 on property:sys.vdso=64 write /sys/module/vdso/parameters/enable_32 0 on property:sys.vdso=32 write /sys/module/vdso/parameters/enable_64 0 # charger driver exposes now finer grain control, map demo mode to those properties # demo mode can only be exit wipping data which will also reset the persist properties on property:sys.retaildemo.enabled=1 setprop persist.vendor.charge.stop.level 35 setprop persist.vendor.charge.start.level 30 on property:sys.boot_completed=1 # init-fingerprint-sh is for stopping fps_hal after init retry fail serval times # It keeps running until max init retry or fps_hal running successfully # vendor.fps_hal restarts until max init retry times # # /vendor/bin/init.fingerprint.sh [max_init_retry_times] service init-fingerprint-sh /vendor/bin/init.fingerprint.sh 10 group root user root disabled oneshot on property:sys.boot_completed=1 start init-fingerprint-sh on property:vendor.fps.init.succeed=true && property:init.svc.vendor.fps_hal=stopped start init-fingerprint-sh