# # Copyright 2015 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 init.bullhead.usb.rc import init.bullhead.diag.rc import init.bullhead.fp.rc import init.bullhead.sensorhub.rc import init.bullhead.ramdump.rc import init.bullhead.misc.rc on early-init mount debugfs debugfs /sys/kernel/debug chown system system /sys/kernel/debug/kgsl/proc on charger # disable FPS clk write /sys/bus/spi/drivers/fpc1020/spi1.2/clk_enable 0 # low power governing write /sys/devices/system/cpu/cpu1/online 0 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/cpu0/cpufreq/scaling_governor powersave # Disable CPU retention write /sys/module/lpm_levels/system/a53/cpu0/retention/idle_enabled 0 write /sys/module/lpm_levels/system/a53/cpu1/retention/idle_enabled 0 write /sys/module/lpm_levels/system/a53/cpu2/retention/idle_enabled 0 write /sys/module/lpm_levels/system/a53/cpu3/retention/idle_enabled 0 write /sys/module/lpm_levels/system/a57/cpu4/retention/idle_enabled 0 write /sys/module/lpm_levels/system/a57/cpu5/retention/idle_enabled 0 # Disable L2 retention write /sys/module/lpm_levels/system/a53/a53-l2-retention/idle_enabled 0 write /sys/module/lpm_levels/system/a57/a57-l2-retention/idle_enabled 0 on property:sys.boot_completed=1 # allow CPUs to go in deeper idle state than C0 write /sys/module/lpm_levels/parameters/sleep_disabled 0 #end boot time fs tune write /sys/block/mmcblk0/queue/scheduler noop write /sys/block/mmcblk0/queue/rq_affinity 0 write /sys/block/mmcblk0/queue/read_ahead_kb 128 write /sys/block/dm-0/queue/read_ahead_kb 128 write /sys/block/dm-1/queue/read_ahead_kb 128 write /sys/block/dm-2/queue/read_ahead_kb 128 write /sys/block/mmcblk0/queue/iostats 1 on init # Load persistent dm-verity state verity_load_state # Set permissions for persist partition mkdir /persist 0771 system system mkdir /firmware 0771 system system symlink /sdcard /storage/sdcard0 # NXP HAL expects /dev/pn54x symlink /dev/pn548 /dev/pn54x write /sys/block/zram0/comp_algorithm lz4 write /sys/block/zram0/max_comp_streams 4 write /proc/sys/vm/page-cluster 0 on fs mount_all ./fstab.bullhead swapon_all ./fstab.bullhead restorecon_recursive /persist on early-boot # set RLIMIT_MEMLOCK to 64MB setrlimit 8 67108864 67108864 # Allow subsystem (modem etc) debugging write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug} write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout} write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout} write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout} # Update dm-verity state and set partition.*.verified properties verity_update_state # Busy loop to wait for devices booted by devstart_sh just in case device not ready exec - root root system -- /system/bin/init.qcom.devwait.sh on boot # execute script to set initial CPU settings # don't run as a service to avoid race conditions exec - root root system -- /system/bin/init.bullhead.power.sh # update foreground cpuset now that processors are up # foreground gets all CPUs except CPU 3 # CPU 3 is reserved for the top app write /dev/cpuset/foreground/cpus 0-2,4-5 write /dev/cpuset/background/cpus 0 write /dev/cpuset/system-background/cpus 0-2 write /dev/cpuset/top-app/cpus 0-5 # 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 /dev/ttyHS0 chmod 0660 /dev/ttyHS0 chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo chmod 0660 /sys/class/rfkill/rfkill0/device/extldo # Fingerprint chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/clk_enable chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/wakeup_enable chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/irq # create symlink for fb1 as HDMI symlink /dev/graphics/fb1 /dev/graphics/hdmi # setup permissions for fb1 related nodes chown system graphics /sys/class/graphics/fb1/hpd chown system graphics /sys/class/graphics/fb1/vendor_name chown system graphics /sys/class/graphics/fb1/product_description chmod 0664 /sys/devices/virtual/graphics/fb1/hpd chmod 0664 /sys/devices/virtual/graphics/fb1/vendor_name chmod 0664 /sys/devices/virtual/graphics/fb1/product_description # Grant permission to modify the color_temp setting chown system graphics /sys/class/graphics/fb0/color_temp chmod 0664 /sys/class/graphics/fb0/color_temp # Allow QMUX daemon to assign port open wait time chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait #Create QMUX deamon socket area 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 # Subsytem Restart write /sys/bus/msm_subsys/devices/subsys0/restart_level "related" write /sys/bus/msm_subsys/devices/subsys1/restart_level "related" write /sys/bus/msm_subsys/devices/subsys2/restart_level "related" write /sys/bus/msm_subsys/devices/subsys3/restart_level "related" # Subsytem Ramdump collection write /sys/module/subsystem_restart/parameters/enable_ramdumps 1 write /sys/module/msm_poweroff/parameters/download_mode 0 # Adjust socket buffer to enlarge TCP receive window for high bandwidth write /proc/sys/net/ipv4/tcp_adv_win_scale 1 # 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 # Leds 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 # Wifi firmware reload path chown wifi wifi /sys/module/wlan/parameters/fwpath # Wifi firmware reload path chown wifi wifi /sys/module/wlan/parameters/fwpath on post-fs symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice mkdir /persist/data 0700 system system mkdir /persist/data/sfs 0700 system system mkdir /persist/data/tz 0700 system system mkdir /persist/data/app_g 0700 system system mkdir /persist/widevine 0770 drm system start qseecomd # Busy loop to wait for qseecomd started exec - root root system -- /system/bin/init.bullhead.qseecomd.sh # Start devices by sysfs trigger start devstart_sh on post-fs-data # boot time fs tune write /sys/block/mmcblk0/queue/iostats 0 write /sys/block/mmcblk0/queue/scheduler cfq write /sys/block/mmcblk0/queue/iosched/slice_idle 0 write /sys/block/mmcblk0/queue/read_ahead_kb 2048 write /sys/block/dm-0/queue/read_ahead_kb 2048 write /sys/block/dm-1/queue/read_ahead_kb 2048 write /sys/block/dm-2/queue/read_ahead_kb 2048 # Mark the copy complete flag to not completed mkdir /data/misc/radio 0770 radio radio write /data/misc/radio/copy_complete 0 chown radio radio /data/misc/radio/copy_complete chmod 0660 /data/misc/radio/copy_complete #Update touch firmware if required write /sys/bus/i2c/devices/2-0020/check_fw 1 write /sys/devices/soc.0/f9924000.i2c/power/control on # Create /data/time folder for time-services mkdir /data/time/ 0700 system system # Create the directories used by CnE subsystem mkdir /data/connectivity 0771 system system # NFC: create data/nfc for nv storage mkdir /data/vendor/nfc 0770 nfc nfc # use qcril.db to handle Ecc and load MBN copy /system/etc/qcril.db /data/misc/radio/qcril.db chown radio radio /data/misc/radio/qcril.db chmod 0600 /data/misc/radio/qcril.db # Create folder for mm-qcamera-daemon mkdir /data/misc/camera 0770 camera camera # change permission for ldaf chown input system /persist/calibration chmod 0650 /persist/calibration chown input system /persist/calibration/offset chmod 0640 /persist/calibration/offset chown input system /persist/calibration/xtalk chmod 0640 /persist/calibration/xtalk #Create directories for Location services mkdir /data/misc/location 0770 gps gps mkdir /data/misc/location/mq 0770 gps gps mkdir /data/misc/location/xtwifi 0770 gps gps mkdir /data/misc/location/gpsone_d 0770 system gps # Audio mkdir /data/misc/audio 0770 audio audio # perf daemon mkdir /data/misc/perfd 0755 root system chmod 2755 /data/misc/perfd rm /data/misc/perfd/default_values # Subsytem Ramdump collection mkdir /data/ramdump 0700 root root setprop vold.post_fs_data_done 1 service irsc_util /system/bin/irsc_util "/etc/sec_config" class main user root oneshot service rmt_storage /system/bin/rmt_storage class core user root group system wakelock shutdown critical service start_hci_filter /vendor/bin/wcnss_filter class late_start user bluetooth group bluetooth system disabled on property:wc_transport.start_hci=true start start_hci_filter on property:wc_transport.start_hci=false stop start_hci_filter # QMUX must be in multiple groups to support external process connections service qmuxd /system/bin/qmuxd class main user radio group radio audio bluetooth wakelock gps service perfd /system/bin/perfd class main user root group system writepid /dev/cpuset/system-background/tasks service qti /system/vendor/bin/qti class main user radio group radio net_raw diag usb net_admin service netmgrd /system/bin/netmgrd class main group radio system wakelock service per_mgr /system/bin/pm-service class core user system group system net_raw service per_proxy /system/bin/pm-proxy class core user system group system net_raw disabled on property:init.svc.per_mgr=running start per_proxy on property:sys.shutdown.requested=* stop per_proxy on property:ro.boot.hardware.sku=LGH790 setprop ro.boot.wificountrycode US on property:ro.boot.hardware.sku=LGH791 setprop ro.boot.wificountrycode 00 on property:ro.boot.hardware.sku=LGH791F setprop ro.boot.wificountrycode 00 on property:ro.boot.hardware.sku=LGH798 setprop ro.boot.wificountrycode 00 service thermal-engine /system/bin/thermal-engine class main user root 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 group root service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -puse_p2p_group_interface=1 \ -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot service loc_launcher /system/bin/loc_launcher #loc_launcher will start as root and set its uid to gps class late_start group gps inet net_raw diag net_admin wifi service cnss-daemon /system/bin/cnss-daemon -n -l class late_start service qseecomd /vendor/bin/qseecomd class core user root group root service msm_irqbalance /system/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 service time_daemon /system/bin/time_daemon class late_start user root group root service charger /charger class charger critical seclabel u:r:charger:s0 service qcamerasvr /vendor/bin/mm-qcamera-daemon class late_start user camera group camera system inet input graphics writepid /dev/cpuset/system-background/tasks on property:persist.radio.atfwd.start=false stop atfwd service atfwd /system/bin/ATFWD-daemon class late_start user system group system radio on property:ro.debuggable=1 start ss_ramdump service ss_ramdump /system/bin/subsystem_ramdump class main user root group root system disabled service cnd /system/bin/cnd class late_start socket cnd stream 660 root inet group root wakelock service imsqmidaemon /system/bin/imsqmidaemon class main user system socket ims_qmid stream 0660 system radio group radio net_raw log diag service imsdatadaemon /system/bin/imsdatadaemon class main user system socket ims_datad stream 0660 system radio group system wifi radio inet net_raw log diag net_admin disabled on property:sys.ims.QMI_DAEMON_STATUS=1 start imsdatadaemon service bullhead-sh /system/bin/init.bullhead.sh class late_start user radio group system oneshot # bugreport is triggered by holding down volume down, volume up and power service bugreport /system/bin/dumpstate -d -p -B -z \ -o /data/user_de/0/com.android.shell/files/bugreports/bugreport class main disabled oneshot keycodes 114 115 116 service devstart_sh /system/bin/init.qcom.devstart.sh class main user root group root system disabled oneshot