# Copyright (c) 2009-2012, 2014-2018, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of The Linux Foundation nor # the names of its contributors may be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # import init.qcom.power.rc import init.qcom.usb.rc import init.samsung.rc on early-init mount debugfs debugfs /sys/kernel/debug chmod 0755 /sys/kernel/debug chown root system /dev/kmsg chmod 0620 /dev/kmsg # ZRAM setup write /sys/block/zram0/comp_algorithm lz4 write /proc/sys/vm/page-cluster 0 on init # Create cgroup mount point for memory mkdir /sys/fs/cgroup/memory/bg 0750 root system write /sys/fs/cgroup/memory/bg/memory.swappiness 140 write /sys/fs/cgroup/memory/bg/memory.move_charge_at_immigrate 1 chown root system /sys/fs/cgroup/memory/bg/tasks chmod 0660 /sys/fs/cgroup/memory/bg/tasks write /sys/module/qpnp_rtc/parameters/poweron_alarm 1 on fs wait /dev/block/platform/soc/${ro.boot.bootdevice} symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice mount_all /vendor/etc/fstab.qcom # Set permissions for persist partition chown root system /mnt/vendor/persist chmod 0771 /mnt/vendor/persist mkdir /mnt/vendor/persist/bluetooth 0770 bluetooth bluetooth mkdir /mnt/vendor/persist/bms 0700 root system mkdir /mnt/vendor/persist/data 0700 system system mkdir /mnt/vendor/persist/display 0770 system graphics mkdir /mnt/vendor/persist/hvdcp_opti 0770 root system mkdir /mnt/vendor/persist/time 0770 system system restorecon_recursive /mnt/vendor/persist on late-fs # boot time fs tune write /sys/block/sda/queue/iostats 0 write /sys/block/sda/queue/scheduler cfq write /sys/block/sda/queue/iosched/slice_idle 0 write /sys/block/sda/queue/read_ahead_kb 2048 write /sys/block/sda/queue/nr_requests 256 write /sys/block/dm-0/queue/read_ahead_kb 2048 write /sys/block/dm-1/queue/read_ahead_kb 2048 on post-fs-data mkdir /data/vendor/misc 01771 system system # Create directory used by display clients mkdir /data/vendor/display 0770 system graphics # Create directory used by media clients mkdir /data/vendor/media 0770 mediacodec media # Create directories for fingerprint mkdir /data/misc/stargate 0770 system system mkdir /data/misc/stargate/bg_estimation 0770 system system mkdir /data/misc/stargate/calib_test 0770 system system mkdir /data/misc/stargate/database 0770 system system # Create directory for tftp mkdir /data/vendor/tombstones 0771 system system # Create folder for mm-qcamera-daemon mkdir /data/misc/camera 0770 camera camera mkdir /data/vendor/camera 0770 camera camera mkdir /data/vendor/ramdump 0771 root system mkdir /data/vendor/bluetooth 0770 bluetooth bluetooth mkdir /data/vendor/ramdump/bluetooth 0770 bluetooth bluetooth # Create the directories used by the Wireless subsystem mkdir /data/vendor/wifi 0770 wifi wifi mkdir /data/vendor/wifi/wpa 0770 wifi wifi mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi # Create netmgr log dir mkdir /data/vendor/netmgr 0770 radio radio chmod 0770 /data/vendor/netmgr # Create ipacm log dir mkdir /data/vendor/ipa 0770 radio radio chmod 0770 /data/vendor/ipa # Create the directories used by CnE subsystem mkdir /data/vendor/connectivity 0771 radio radio chown radio radio /data/vendor/connectivity # Create directory used by audio subsystem mkdir /data/vendor/misc/audio 0770 audio audio # Create directory for audio delta files mkdir /data/vendor/misc/audio/acdbdata 0770 media audio mkdir /data/vendor/misc/audio/acdbdata/delta 0770 media audio # Create directory for radio mkdir /data/vendor/radio 0770 system radio # Create directory for modem_config mkdir /data/vendor/modem_config 0570 radio root # 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 mkdir /dev/socket/location 0770 gps gps mkdir /dev/socket/location/mq 0770 gps gps mkdir /dev/socket/location/xtra 0770 gps gps # SSC/SLPI sensors mkdir /persist/sensors chown root system /persist/sensors chmod 0775 /persist/sensors chown root system /persist/sensors/sensors_settings chmod 0664 /persist/sensors/sensors_settings chown root system /persist/sensors/sns.reg chmod 0664 /persist/sensors/sns.reg chown root system /persist/PRSensorData.txt chmod 0660 /persist/PRSensorData.txt chown root system /persist/PSensor3cm_ct.txt chmod 0660 /persist/PSensor3cm_ct.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 0660 /dev/sensors # Create /data/vendor/time folder for time-services mkdir /data/vendor/time 0700 system system setprop vold.post_fs_data_done 1 # Create PERFD deamon related dirs mkdir /data/vendor/perfd 0770 root system chmod 2770 /data/vendor/perfd rm /data/vendor/perfd/default_values # NFC local data and nfcee xml storage mkdir /data/nfc 0770 nfc nfc mkdir /data/nfc/param 0770 nfc nfc # Create IOP deamon related dirs mkdir /data/vendor/iop 0700 root system # 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 on early-boot # Set RLIMIT_MEMLOCK to 64MB setrlimit 8 67108864 67108864 # Allow subsystem (modem etc) debugging write /sys/kernel/boot_adsp/boot 1 write /sys/kernel/boot_slpi/boot 1 chown root audio /sys/kernel/boot_adsp/boot # SSR setup 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" write /sys/bus/msm_subsys/devices/subsys4/restart_level "related" write /sys/bus/msm_subsys/devices/subsys5/restart_level "related" on boot # Access permission for Bluetooth chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power chown bluetooth net_bt /sys/class/rfkill/rfkill0/type chown bluetooth net_bt /sys/class/rfkill/rfkill0/state chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo chown bluetooth net_bt /dev/ttyHS0 chmod 0660 /sys/module/bluetooth_power/parameters/power chmod 0660 /sys/class/rfkill/rfkill0/device/extldo chmod 0660 /sys/class/rfkill/rfkill0/state chmod 0660 /dev/ttyHS0 chown system system /sys/module/msm_core/parameters/polling_interval chown system system /sys/module/msm_core/parameters/disabled chown system system /sys/kernel/debug/msm_core/enable chown system system /sys/kernel/debug/msm_core/ptable # Access permission for fingerprint chown system system /sys/devices/soc/soc:fpc_fpc1020/irq chown system system /sys/devices/soc/soc:fpc_fpc1020/enable_key_events chown system system /sys/devices/soc/soc:fpc_fpc1020/enable_wakeup chown system system /sys/devices/soc/soc:fpc_fpc1020/proximity_state # Access permission for secure touch chmod 0660 /sys/devices/soc/75ba000.i2c/i2c-12/12-0020/secure_touch_enable chmod 0440 /sys/devices/soc/75ba000.i2c/i2c-12/12-0020/secure_touch chown system drmrpc /sys/devices/soc/75ba000.i2c/i2c-12/12-0020/secure_touch_enable chown system drmrpc /sys/devices/soc/75ba000.i2c/i2c-12/12-0020/secure_touch # Access permission for smartPA chmod 0666 /dev/i2c-3 chmod 0666 /dev/i2c-9 # 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 mkdir /persist/drm 0770 system system mkdir /persist/bluetooth 0770 bluetooth bluetooth mkdir /persist/misc 0770 system system mkdir /persist/alarm 0770 system system mkdir /persist/time 0770 system system mkdir /persist/data 0700 system system mkdir /persist/data/sfs 0700 system system mkdir /persist/data/tz 0700 system system mkdir /persist/qc_senseid 0700 system system mkdir /persist/bms 0700 root system mkdir /persist/wlan_bt 0700 system system mkdir /persist/audio 0777 media audio mkdir /persist/display 0770 system graphics restorecon_recursive /persist # Create NETMGR daemon socket area mkdir /dev/socket/netmgr 0750 radio radio # LED torch permissions chmod 0666 /sys/class/leds/led:torch_0/brightness chmod 0666 /sys/class/leds/led:torch_1/brightness chmod 0666 /sys/class/leds/led:switch/brightness # Graphic node permissions chown system graphics /sys/class/graphics/fb0/idle_time chown system graphics /sys/class/graphics/fb0/dyn_pu chown system graphics /sys/class/graphics/fb0/modes chown system graphics /sys/class/graphics/fb0/mode chown system graphics /sys/class/graphics/fb0/msm_cmd_autorefresh_en chmod 0664 /sys/class/graphics/fb0/idle_time chmod 0664 /sys/class/graphics/fb0/dyn_pu chmod 0664 /sys/class/graphics/fb0/modes chmod 0664 /sys/class/graphics/fb0/mode chmod 0664 /sys/class/graphics/fb0/msm_cmd_autorefresh_en # 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 # Enable default router information in RA write /proc/sys/net/ipv6/conf/default/accept_ra_defrtr 1 # To prevent out of order acknowledgements from making # connection tracking to treat them as not belonging to # the connection they belong to. # Otherwise, a weird issue happens in which some long # connections on high-throughput links get dropped when # an ack packet comes out of order write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1 # Allow access for CCID command/response timeout configuration chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout # Wifi firmware reload path chown wifi wifi /sys/module/wlan/parameters/fwpath on property:sys.boot_completed=1 # Enable ZRAM on boot_complete swapon_all /vendor/etc/fstab.qcom # end boot time fs tune write /sys/block/sda/queue/read_ahead_kb 128 write /sys/block/sda/queue/nr_requests 128 write /sys/block/dm-0/queue/read_ahead_kb 128 write /sys/block/dm-1/queue/read_ahead_kb 128 write /sys/block/sda/queue/iostats 1 # CPE fw_name used by sound trigger HAL chown media audio /sys/kernel/wcd_cpe0/fw_name on property:persist.env.fastdorm.enabled=true setprop persist.radio.data_no_toggle 1 service vendor.cnd /vendor/bin/cnd class main user system group system wifi inet radio wakelock net_admin writepid /dev/cpuset/system-background/tasks service dpmQmiMgr /vendor/bin/dpmQmiMgr class main user system group radio system service 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 group system wakelock shutdown critical ioprio rt 0 writepid /dev/cpuset/system-background/tasks service vendor.tftp_server /vendor/bin/tftp_server class core user root writepid /dev/cpuset/system-background/tasks on property:vendor.wc_transport.start_hci=true start vendor.start_hci_filter on property:vendor.wc_transport.start_hci=false stop vendor.start_hci_filter service vendor.start_hci_filter /vendor/bin/wcnss_filter class late_start user bluetooth group bluetooth diag system wakelock disabled on property:vendor.wc_transport.start_root=true start vendor.hci_filter_root on property:vendor.wc_transport.start_root=false stop vendor.hci_filter_root service vendor.hci_filter_root /vendor/bin/wcnss_filter class late_start user bluetooth group bluetooth oem_2950 system disabled service vendor.atfwd /vendor/bin/ATFWD-daemon class late_start user system group system radio writepid /dev/cpuset/system-background/tasks service vendor.netmgrd /vendor/bin/netmgrd class main user root group root wifi wakelock radio inet writepid /dev/cpuset/system-background/tasks service vendor.ipacm /vendor/bin/ipacm class main user radio group radio inet writepid /dev/cpuset/system-background/tasks service vendor.dataqti /vendor/bin/qti class main user radio group radio oem_2901 diag usb writepid /dev/cpuset/system-background/tasks 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 writepid /dev/cpuset/system-background/tasks on property:ro.vendor.use_data_netmgrd=false # netmgr not supported on specific target stop vendor.netmgrd # Adjust socket buffer to enlarge TCP receive window for high bandwidth # but only if ro.data.large_tcp_window_size property is set. on property:ro.data.large_tcp_window_size=true write /proc/sys/net/ipv4/tcp_adv_win_scale 2 on property:sys.sysctl.tcp_adv_win_scale=* write /proc/sys/net/ipv4/tcp_adv_win_scale ${sys.sysctl.tcp_adv_win_scale} service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -O/data/vendor/wifi/wpa/sockets -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 interface android.hardware.wifi.supplicant@1.0::ISupplicant default interface android.hardware.wifi.supplicant@1.1::ISupplicant default class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot service cnss-daemon /vendor/bin/cnss-daemon -n -l class late_start user system group system inet net_admin wifi capabilities NET_ADMIN on property:sys.powerctl=* stop cnss-daemon service loc_launcher /vendor/bin/loc_launcher class late_start user gps group gps writepid /dev/cpuset/system-background/tasks service qcom-sh /vendor/bin/init.qcom.sh class late_start user root oneshot on property:ro.vendor.ril.mbn_copy_completed=1 write /data/vendor/radio/copy_complete 1 on property:ro.data.large_tcp_window_size=true # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB) write /proc/sys/net/ipv4/tcp_adv_win_scale 2 #service ril-daemon2 /vendor/bin/hw/rild -c 2 # class main # user radio # group radio cache inet misc audio log readproc wakelock # capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW service qseecomd /vendor/bin/qseecomd class core user root group root writepid /dev/cpuset/system-background/tasks service time_daemon /vendor/bin/time_daemon class main user root group root writepid /dev/cpuset/system-background/tasks # Start camera server as daemon service qcamerasvr /vendor/bin/mm-qcamera-daemon class late_start user camera group camera system inet input graphics writepid /dev/cpuset/system-background/tasks # Start up peripheral manager service per_mgr /vendor/bin/pm-service class core user system group system writepid /dev/cpuset/system-background/tasks service per_proxy /vendor/bin/pm-proxy class core user system group system writepid /dev/cpuset/system-background/tasks disabled on property:init.svc.per_mgr=running start per_proxy on property:sys.shutdown.requested=* stop per_proxy service thermal-engine /vendor/bin/thermal-engine -c ${sys.qcom.thermalcfg:-/vendor/etc/thermal-engine-8996.conf} 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 socket thermal-send-rule stream 0660 system system group system root diag writepid /dev/cpuset/system-background/tasks service adsprpcd /vendor/bin/adsprpcd class main user media group media # imsdatadaemon starts with root and UID will be downgraded to SYSTEM. service vendor.imsqmidaemon /vendor/bin/imsqmidaemon class main user system socket ims_qmid stream 0660 system radio group radio log diag writepid /dev/cpuset/system-background/tasks # imsdatadaemon starts with root and UID will be downgraded to SYSTEM. service vendor.imsdatadaemon /vendor/bin/imsdatadaemon class main user system socket ims_datad stream 0660 system radio group system wifi radio inet log diag writepid /dev/cpuset/system-background/tasks 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 main user system group radio diag inet log writepid /dev/cpuset/system-background/tasks disabled on property:vendor.ims.DATA_DAEMON_STATUS=1 start vendor.ims_rtp_daemon start vendor.imsrcsservice service ppd /vendor/bin/mm-pp-dpps class hal user system group system graphics socket pps stream 0660 system system on property:init.svc.surfaceflinger=restarting stop vendor.hwcomposer-2-1 start vendor.hwcomposer-2-1 on property:slpi.restart=1 write /sys/kernel/debug/msm_subsys/slpi restart