| # |
| # Copyright 2014 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.shamu.usb.rc |
| import init.shamu.power.rc |
| import init.shamu.diag.rc |
| |
| on early-init |
| mkdir /firmware 0771 system system |
| symlink /data/tombstones /tombstones |
| mount debugfs debugfs /sys/kernel/debug |
| chown system system /sys/kernel/debug/kgsl/proc |
| |
| on init |
| # Load persistent dm-verity state |
| verity_load_state |
| |
| mkdir /oem 0550 root root |
| |
| # Set permissions for persist partition |
| mkdir /persist 0771 system system |
| |
| symlink /sdcard /storage/sdcard0 |
| |
| on fs |
| mount_all fstab.shamu |
| |
| # Keeping following partitions outside fstab file. As user may not have |
| # these partition flashed on the device. Failure to mount any partition in fstab file |
| # results in failure to launch late-start class. |
| wait /dev/block/platform/msm_sdcc.1/by-name/oem |
| mount ext4 /dev/block/platform/msm_sdcc.1/by-name/oem /oem ro nosuid nodev context=u:object_r:oemfs:s0 |
| |
| mkdir /fsg 0755 root root |
| mount ext4 /dev/block/platform/msm_sdcc.1/by-name/mdm1m9kefs3 /fsg ro nosuid nodev barrier=0 context=u:object_r:fsg_file:s0 |
| |
| restorecon_recursive /persist |
| mkdir /persist/data 0700 system system |
| mkdir /persist/data/sfs 0700 system system |
| mkdir /persist/data/tz 0700 system system |
| mkdir /persist/public 0755 system radio |
| mkdir /persist/public/hiddenmenu 0775 system radio |
| mkdir /persist/public/hiddenmenu/data 0775 system radio |
| |
| # Enable rmnet data and aggregation |
| setprop persist.rmnet.mux enabled |
| setprop persist.rmnet.data.enable true |
| setprop persist.data.wda.enable true |
| setprop persist.data.df.agg.dl_pkt 10 |
| setprop persist.data.df.agg.dl_size 4096 |
| |
| # Adjust parameters for dm-verity device |
| write /sys/block/dm-0/queue/read_ahead_kb 2048 |
| |
| # Update dm-verity state and set partition.*.verified properties |
| verity_update_state |
| |
| on post-fs-data |
| mkdir /tombstones/modem 0771 system system |
| mkdir /tombstones/lpass 0771 system system |
| mkdir /tombstones/wcnss 0771 system system |
| mkdir /tombstones/dsps 0771 system system |
| |
| # SENSORS |
| #Create directory used by sensor subsystem(dsps) |
| mkdir /data/system/sensors |
| chmod 0775 /data/system/sensors |
| |
| # AKM setting data |
| mkdir /data/misc/sensors |
| chmod 0775 /data/misc/sensors |
| |
| mkdir /persist/sensors |
| chmod 0775 /persist/sensors |
| |
| mkdir /persist/mdm 0770 radio radio |
| |
| #Subsystem RAM-dumps |
| mkdir /data/ss-ram-dumps 0750 radio log |
| mkdir /data/ss-ram-dumps/bp-dumps 0750 radio log |
| |
| # rild files |
| mkdir /data/misc/audio_cutback 0770 radio audio |
| |
| 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/kernel/boot_adsp/boot 1 |
| |
| # Subsytem Restart |
| #venus |
| write /sys/bus/msm_subsys/devices/subsys0/restart_level "related" |
| write /sys/bus/msm_subsys/devices/subsys0/recovery_policy "skip_restart" |
| #adsp |
| write /sys/bus/msm_subsys/devices/subsys1/restart_level "related" |
| write /sys/bus/msm_subsys/devices/subsys1/recovery_policy "skip_restart" |
| #vpu |
| write /sys/bus/msm_subsys/devices/subsys2/restart_level "related" |
| write /sys/bus/msm_subsys/devices/subsys2/recovery_policy "skip_restart" |
| #esoc0 (mdm) |
| write /sys/bus/msm_subsys/devices/subsys3/restart_level "related" |
| write /sys/bus/msm_subsys/devices/subsys3/recovery_policy "skip_restart" |
| |
| on boot |
| chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power |
| chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type |
| chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state |
| chown bluetooth bluetooth /proc/bluetooth/sleep/proto |
| chown bluetooth bluetooth /proc/bluetooth/sleep/lpm |
| chown bluetooth bluetooth /proc/bluetooth/sleep/btwrite |
| chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm |
| chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite |
| chown system system /sys/module/sco/parameters/disable_esco |
| chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set |
| chmod 0660 /sys/module/bluetooth_power/parameters/power |
| chmod 0660 /sys/module/hci_smd/parameters/hcismd_set |
| chmod 0660 /sys/class/rfkill/rfkill0/state |
| chmod 0660 /proc/bluetooth/sleep/proto |
| chown bluetooth bluetooth /dev/ttyHS0 |
| chmod 0660 /sys/module/hci_uart/parameters/ath_lpm |
| chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite |
| chmod 0660 /dev/ttyHS0 |
| chown bluetooth bluetooth /sys/devices/platform/msm_serial_hs.0/clock |
| chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock |
| |
| # update foreground cpuset now that processors are up |
| # reserve CPU 3 for the top app |
| write /dev/cpuset/foreground/cpus 0-2 |
| write /dev/cpuset/foreground/boost/cpus 0-3 |
| write /dev/cpuset/background/cpus 0 |
| write /dev/cpuset/system-background/cpus 0-1 |
| write /dev/cpuset/top-app/cpus 0-3 |
| |
| chmod 0660 /dev/ttyHS2 |
| chown bluetooth bluetooth /dev/ttyHS2 |
| |
| #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 /dev/socket/mpdecision 2775 root system |
| chmod 2775 /dev/socket/mpdecision |
| |
| setprop wifi.interface wlan0 |
| |
| #readable symlinks for video nodes |
| mkdir /dev/video |
| symlink /dev/video32 /dev/video/venus_dec |
| symlink /dev/video33 /dev/video/venus_enc |
| |
| setprop ro.telephony.call_ring.multiple false |
| |
| chown system system /sys/bus/i2c/devices/1-004a/tsp |
| |
| chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state |
| |
| # Allow QMUX daemon to assign port open wait time |
| chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait |
| |
| #port-bridge |
| chmod 0660 /dev/smd0 |
| chown system system /dev/smd0 |
| |
| #BT DUN port-bridge |
| chmod 0660 /dev/smd7 |
| chown bluetooth bluetooth /dev/smd7 |
| |
| #For bridgemgr daemon to inform the USB driver of the correct transport |
| chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport |
| |
| # 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 |
| |
| #To allow interfaces to get v6 address when tethering is enabled |
| write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2 |
| write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2 |
| |
| # 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 |
| |
| # Set the console loglevel to < KERN_INFO |
| # Set the default message loglevel to KERN_INFO |
| # write /proc/sys/kernel/printk "6 6 1 7" |
| |
| write /sys/bus/platform/drivers/xhci_msm_hsic/unbind msm_hsic_host |
| write /sys/module/rmnet_usb/parameters/mux_enabled 1 |
| write /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links 8 |
| write /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev 17 |
| write /sys/module/rmnet_usb/parameters/rmnet_data_init 1 |
| chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait |
| |
| # Audio DSP permissions |
| chown media media /dev/ttyHS3 |
| chown media media /sys/devices/c55_ctrl/gpio_ap_int/edge |
| chown media media /sys/devices/c55_ctrl/gpio_ap_int/value |
| chown media media /sys/devices/c55_ctrl/gpio_c55_int/value |
| chown media media /sys/devices/c55_ctrl/gpio_core/value |
| chown media media /sys/devices/c55_ctrl/gpio_reset/value |
| |
| # subsystem ramdump collection |
| on property:persist.sys.qc.sub.rdump.on=* |
| write /sys/module/subsystem_restart/parameters/enable_ramdumps ${persist.sys.qc.sub.rdump.on} |
| |
| # permissions for CapSense firmware update |
| chown radio radio /sys/devices/cycapsense_prog.1/cycapsense_fw |
| chmod 0220 /sys/devices/cycapsense_prog.1/cycapsense_fw |
| |
| # msm specific files that need to be created on /data |
| on post-fs-data |
| # Create the directories used by the Wireless subsystem |
| mkdir /data/misc/wifi 0770 wifi wifi |
| mkdir /data/misc/wifi/sockets 0770 wifi wifi |
| mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi |
| mkdir /data/misc/dhcp 0770 dhcp dhcp |
| chown dhcp dhcp /data/misc/dhcp |
| |
| # Create the directories used by CnE subsystem |
| mkdir /data/connectivity 0771 system system |
| chown system system /data/connectivity |
| |
| mkdir /data/connectivity/nsrm 0771 system system |
| chown system system /data/connectivity/nsrm |
| |
| # Create directory used by audio subsystem |
| mkdir /data/misc/audio 0770 audio audio |
| |
| # 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 system system /persist |
| chmod 0771 /persist |
| chmod 0664 /sys/devices/platform/msm_sdcc.1/polling |
| chmod 0664 /sys/devices/platform/msm_sdcc.2/polling |
| chmod 0664 /sys/devices/platform/msm_sdcc.3/polling |
| chmod 0664 /sys/devices/platform/msm_sdcc.4/polling |
| |
| # Chown polling nodes as needed from UI running on system server |
| chown system system /sys/devices/platform/msm_sdcc.1/polling |
| chown system system /sys/devices/platform/msm_sdcc.2/polling |
| chown system system /sys/devices/platform/msm_sdcc.3/polling |
| chown system system /sys/devices/platform/msm_sdcc.4/polling |
| |
| #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant |
| mkdir /data/system 0775 system system |
| #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant |
| |
| #Create directories for gpsone_daemon services |
| mkdir /data/misc/gpsone_d 0770 system gps |
| |
| #Create directories for QuIPS |
| mkdir /data/misc/quipc 0770 gps system |
| |
| #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 |
| |
| #Create directory from IMS services |
| mkdir /data/shared 0755 |
| chown system system /data/shared |
| |
| #Create directory for FOTA |
| mkdir /data/fota 0771 |
| chown system system /data/fota |
| |
| #Create directory for hostapd |
| mkdir /data/hostapd 0770 system wifi |
| |
| # Create /data/time folder for time-services |
| mkdir /data/time/ 0700 system system |
| |
| mkdir /data/audio/ 0770 media audio |
| |
| setprop vold.post_fs_data_done 1 |
| |
| # NFC local data and nfcee xml storage |
| mkdir /data/nfc 0770 nfc nfc |
| mkdir /data/nfc/param 0770 nfc nfc |
| |
| # Audio DSP permissions |
| mkdir /data/adspd 0770 media media |
| mkdir /data/adspd/1 0770 media media |
| |
| on property:bluetooth.isEnabled=true |
| start btwlancoex |
| write /sys/class/bluetooth/hci0/idle_timeout 7000 |
| |
| on property:ro.bluetooth.ftm_enabled=true |
| start ftmd |
| |
| on property:persist.env.fastdorm.enabled=true |
| setprop persist.radio.data_no_toggle 1 |
| |
| service irsc_util /system/bin/irsc_util "/etc/sec_config" |
| class main |
| user root |
| oneshot |
| |
| service mdm_helper /system/bin/mdm_helper |
| user root |
| group root system wakelock radio |
| class core |
| onrestart setprop ro.service.mdm_helper_restarted "true" |
| |
| service tcmd /system/bin/tcmd_mini |
| class core |
| user radio |
| group radio net_raw net_admin |
| disabled |
| |
| service bridgemgrd /system/bin/bridgemgrd |
| class late_start |
| user radio |
| group radio |
| |
| # 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 netmgrd /system/bin/netmgrd |
| class main |
| group radio |
| |
| service imsqmidaemon /system/bin/imsqmidaemon |
| class main |
| user system |
| socket ims_qmid stream 0660 system radio |
| group radio log |
| |
| service imsdatadaemon /system/bin/imsdatadaemon |
| class main |
| user root |
| socket ims_datad stream 0660 system radio |
| group system wifi radio inet log readproc |
| disabled |
| |
| on property:sys.ims.QMI_DAEMON_STATUS=1 |
| start imsdatadaemon |
| |
| service ims_rtp_daemon /system/bin/ims_rtp_daemon |
| class main |
| user root |
| socket ims_rtpd stream 0660 system radio |
| group system radio inet log |
| disabled |
| |
| on property:sys.ims.DATA_DAEMON_STATUS=1 |
| start ims_rtp_daemon |
| |
| service sensors /system/bin/sensors.qcom |
| class core |
| user root |
| group root wakelock |
| writepid /dev/cpuset/system-background/tasks |
| |
| on property:ro.use_data_netmgrd=false |
| # netmgr not supported on specific target |
| stop 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 |
| |
| service wpa_supplicant /system/bin/wpa_supplicant \ |
| -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ |
| -I/system/etc/wifi/p2p_supplicant_overlay.conf \ |
| -puse_p2p_group_interface=1p2p_device=1 \ |
| -m/data/misc/wifi/p2p_supplicant.conf \ |
| -e/data/misc/wifi/entropy.bin -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 adspd /system/bin/adspd /dev/ttyHS3 |
| class main |
| socket adspdsock stream 0660 media media |
| user media |
| group media input |
| |
| on property:sys.boot_completed=1 |
| start qcom-post-boot |
| |
| on property:ro.debuggable=1 |
| start ss_ramdump |
| |
| 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 |
| |
| on charger |
| write /sys/class/leds/lcd-backlight/brightness 100 |
| mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1 |
| start thermal-engine |
| |
| service charger /charger |
| class charger |
| group log |
| seclabel u:r:healthd:s0 |
| |
| # Allow usb charging to be disabled peristently |
| on property:persist.usb.chgdisabled=1 |
| write /sys/class/power_supply/battery/charging_enabled 0 |
| |
| on property:persist.usb.chgdisabled=0 |
| write /sys/class/power_supply/battery/charging_enabled 1 |
| |
| service qseecomd /system/bin/qseecomd |
| class core |
| user root |
| group root |
| |
| service mpdecision /system/bin/mpdecision --avg_comp |
| class main |
| user root |
| group root readproc |
| writepid /dev/cpuset/system-background/tasks |
| |
| service ss_ramdump /system/bin/subsystem_ramdump |
| class main |
| user root |
| group root |
| disabled |
| |
| service thermal-engine /system/bin/thermal-engine |
| class main |
| user root |
| group root |
| |
| service time_daemon /system/bin/time_daemon |
| class late_start |
| user root |
| group root |
| |
| on property:init.svc.bootanim=stopped |
| start usf-post-boot |
| |
| service qcamerasvr /system/bin/mm-qcamera-daemon |
| class late_start |
| user camera |
| group camera system inet input graphics |
| |
| service bdAddrLoader /system/bin/bdAddrLoader -p ro.boot.btmacaddr -s -x |
| class main |
| user bluetooth |
| group system bluetooth |
| oneshot |
| |
| on property:vold.decrypt=trigger_reset_main |
| stop gnss-svcd |
| |
| on verity-logging |
| exec u:r:slideshow:s0 -- /sbin/slideshow warning/verity_red_1 warning/verity_red_2 |
| |
| # When QCA1530 is known not to present |
| on property:persist.qca1530=no |
| stop gnss-svcd |
| stop gnss-detect |
| write /sys/kernel/qca1530/chip_state 0 |
| |
| on property:init.svc.surfaceflinger=stopped |
| stop ppd |
| |
| service mmi-touch-sh /system/bin/init.mmi.touch.sh atmel |
| class main |
| user root |
| 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 mdm_helper_proxy /system/bin/mdm_helper_proxy |
| class core |
| user system |
| group system wakelock |
| disabled |
| |
| # Stop mdm_helper_proxy in case of shutdown |
| on property:sys.shutdown.requested=* |
| stop mdm_helper_proxy |
| |
| # Start mdm_helper_proxy after RIL. |
| on property:ro.mdm_helper_proxy_req=true |
| start mdm_helper_proxy |
| |
| on property:init.svc.ril-daemon=running |
| setprop ro.mdm_helper_proxy_req true |
| |
| service atfwd /system/bin/ATFWD-daemon |
| class late_start |
| user system |
| group system radio |
| |
| service cnd /system/bin/cnd |
| class late_start |
| socket cnd stream 660 root inet |