# # 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 # See storage config details at http://source.android.com/tech/storage/ mkdir /mnt/shell/emulated 0700 shell shell mkdir /storage/emulated 0555 root root mkdir /oem 0550 root root # Set permissions for persist partition mkdir /persist 0771 system system export EXTERNAL_STORAGE /storage/emulated/legacy export EMULATED_STORAGE_SOURCE /mnt/shell/emulated export EMULATED_STORAGE_TARGET /storage/emulated # Support legacy paths symlink /storage/emulated/legacy /sdcard symlink /storage/emulated/legacy /mnt/sdcard symlink /storage/emulated/legacy /storage/sdcard0 symlink /mnt/shell/emulated/0 /storage/emulated/legacy on fs mount_all fstab.shamu setprop ro.crypto.fuse_sdcard true # 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 on post-fs-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 # 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 insmod /system/lib/modules/adsprpc.ko insmod /system/lib/modules/mhi.ko chown bluetooth net_bt_stack /sys/module/bluetooth_power/parameters/power chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_lpm chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_btwrite chown system system /sys/module/sco/parameters/disable_esco chown bluetooth net_bt_stack /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 net_bt_stack /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 net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock chmod 0660 /dev/ttyHS2 chown bluetooth net_bt_stack /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 net_bt_stack /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 # we will remap this as /mnt/sdcard with the sdcard fuse tool mkdir /data/media 0770 media_rw media_rw chown media_rw media_rw /data/media mkdir /data/misc/bluetooth 0770 bluetooth bluetooth # 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 #Create a folder for SRS to be able to create a usercfg file mkdir /data/data/media 0770 media media # 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:init.svc.wpa_supplicant=stopped stop dhcpcd 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 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 root group radio audio bluetooth gps service netmgrd /system/bin/netmgrd class main group radio service sensors /system/bin/sensors.qcom class core user root group root 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 p2p_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 wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.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 dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG class late_start disabled oneshot service dhcpcd_p2p /system/bin/dhcpcd -ABKLG class late_start disabled oneshot service iprenew_wlan0 /system/bin/dhcpcd -n class late_start disabled oneshot service iprenew_p2p /system/bin/dhcpcd -n class late_start disabled oneshot service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG class late_start disabled oneshot service iprenew_bt-pan /system/bin/dhcpcd -n class late_start disabled oneshot service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG disabled oneshot service dhcpcd_bnep1 /system/bin/dhcpcd -BKLG disabled oneshot service dhcpcd_bnep2 /system/bin/dhcpcd -BKLG disabled oneshot service dhcpcd_bnep3 /system/bin/dhcpcd -BKLG disabled oneshot service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG disabled oneshot service dhcpcd_eth0 /system/bin/dhcpcd -aABDKL class late_start disabled oneshot service iprenew_eth0 /system/bin/dhcpcd -n class late_start disabled oneshot service adspd /system/bin/adspd /dev/ttyHS3 class late_start 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 # virtual sdcard daemon running as media_rw (1023) service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated class late_start 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 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 # 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/sh /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 \ -o /data/data/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 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