1 # 2 # Copyright 2014 The Android Open Source Project 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 # 16 17 import init.shamu.usb.rc 18 import init.shamu.power.rc 19 import init.shamu.diag.rc 20 21 on early-init 22 mkdir /firmware 0771 system system 23 symlink /data/tombstones /tombstones 24 mount debugfs debugfs /sys/kernel/debug 25 chown system system /sys/kernel/debug/kgsl/proc 26 27 on init 28 # Load persistent dm-verity state 29 verity_load_state 30 31 mkdir /oem 0550 root root 32 33 # Set permissions for persist partition 34 mkdir /persist 0771 system system 35 36 symlink /sdcard /storage/sdcard0 37 38 on fs 39 mount_all fstab.shamu 40 41 # Keeping following partitions outside fstab file. As user may not have 42 # these partition flashed on the device. Failure to mount any partition in fstab file 43 # results in failure to launch late-start class. 44 wait /dev/block/platform/msm_sdcc.1/by-name/oem 45 mount ext4 /dev/block/platform/msm_sdcc.1/by-name/oem /oem ro nosuid nodev context=u:object_r:oemfs:s0 46 47 mkdir /fsg 0755 root root 48 mount ext4 /dev/block/platform/msm_sdcc.1/by-name/mdm1m9kefs3 /fsg ro nosuid nodev barrier=0 context=u:object_r:fsg_file:s0 49 50 restorecon_recursive /persist 51 mkdir /persist/data 0700 system system 52 mkdir /persist/data/sfs 0700 system system 53 mkdir /persist/data/tz 0700 system system 54 mkdir /persist/public 0755 system radio 55 mkdir /persist/public/hiddenmenu 0775 system radio 56 mkdir /persist/public/hiddenmenu/data 0775 system radio 57 58 # Enable rmnet data and aggregation 59 setprop persist.rmnet.mux enabled 60 setprop persist.rmnet.data.enable true 61 setprop persist.data.wda.enable true 62 setprop persist.data.df.agg.dl_pkt 10 63 setprop persist.data.df.agg.dl_size 4096 64 65 # Adjust parameters for dm-verity device 66 write /sys/block/dm-0/queue/read_ahead_kb 2048 67 68 # Update dm-verity state and set partition.*.verified properties 69 verity_update_state 70 71 on post-fs-data 72 mkdir /tombstones/modem 0771 system system 73 mkdir /tombstones/lpass 0771 system system 74 mkdir /tombstones/wcnss 0771 system system 75 mkdir /tombstones/dsps 0771 system system 76 77 # SENSORS 78 #Create directory used by sensor subsystem(dsps) 79 mkdir /data/system/sensors 80 chmod 0775 /data/system/sensors 81 82 # AKM setting data 83 mkdir /data/misc/sensors 84 chmod 0775 /data/misc/sensors 85 86 mkdir /persist/sensors 87 chmod 0775 /persist/sensors 88 89 mkdir /persist/mdm 0770 radio radio 90 91 #Subsystem RAM-dumps 92 mkdir /data/ss-ram-dumps 0750 radio log 93 mkdir /data/ss-ram-dumps/bp-dumps 0750 radio log 94 95 # rild files 96 mkdir /data/misc/audio_cutback 0770 radio audio 97 98 on early-boot 99 # set RLIMIT_MEMLOCK to 64MB 100 setrlimit 8 67108864 67108864 101 102 # Allow subsystem (modem etc) debugging 103 # write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug} 104 105 write /sys/kernel/boot_adsp/boot 1 106 107 # Subsytem Restart 108 #venus 109 write /sys/bus/msm_subsys/devices/subsys0/restart_level "related" 110 write /sys/bus/msm_subsys/devices/subsys0/recovery_policy "skip_restart" 111 #adsp 112 write /sys/bus/msm_subsys/devices/subsys1/restart_level "related" 113 write /sys/bus/msm_subsys/devices/subsys1/recovery_policy "skip_restart" 114 #vpu 115 write /sys/bus/msm_subsys/devices/subsys2/restart_level "related" 116 write /sys/bus/msm_subsys/devices/subsys2/recovery_policy "skip_restart" 117 #esoc0 (mdm) 118 write /sys/bus/msm_subsys/devices/subsys3/restart_level "related" 119 write /sys/bus/msm_subsys/devices/subsys3/recovery_policy "skip_restart" 120 121 on boot 122 chown bluetooth net_bt_stack /sys/module/bluetooth_power/parameters/power 123 chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type 124 chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state 125 chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto 126 chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm 127 chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite 128 chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_lpm 129 chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_btwrite 130 chown system system /sys/module/sco/parameters/disable_esco 131 chown bluetooth net_bt_stack /sys/module/hci_smd/parameters/hcismd_set 132 chmod 0660 /sys/module/bluetooth_power/parameters/power 133 chmod 0660 /sys/module/hci_smd/parameters/hcismd_set 134 chmod 0660 /sys/class/rfkill/rfkill0/state 135 chmod 0660 /proc/bluetooth/sleep/proto 136 chown bluetooth net_bt_stack /dev/ttyHS0 137 chmod 0660 /sys/module/hci_uart/parameters/ath_lpm 138 chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite 139 chmod 0660 /dev/ttyHS0 140 chown bluetooth net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock 141 chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock 142 143 # update foreground cpuset now that processors are up 144 # reserve CPU 3 for the top app 145 write /dev/cpuset/foreground/cpus 0-2 146 write /dev/cpuset/foreground/boost/cpus 0-3 147 write /dev/cpuset/background/cpus 0 148 write /dev/cpuset/system-background/cpus 0-1 149 write /dev/cpuset/top-app/cpus 0-3 150 151 chmod 0660 /dev/ttyHS2 152 chown bluetooth net_bt_stack /dev/ttyHS2 153 154 #Create QMUX deamon socket area 155 mkdir /dev/socket/qmux_radio 0770 radio radio 156 chmod 2770 /dev/socket/qmux_radio 157 mkdir /dev/socket/qmux_audio 0770 media audio 158 chmod 2770 /dev/socket/qmux_audio 159 mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth 160 chmod 2770 /dev/socket/qmux_bluetooth 161 mkdir /dev/socket/qmux_gps 0770 gps gps 162 chmod 2770 /dev/socket/qmux_gps 163 164 mkdir /dev/socket/mpdecision 2775 root system 165 chmod 2775 /dev/socket/mpdecision 166 167 setprop wifi.interface wlan0 168 169 #readable symlinks for video nodes 170 mkdir /dev/video 171 symlink /dev/video32 /dev/video/venus_dec 172 symlink /dev/video33 /dev/video/venus_enc 173 174 setprop ro.telephony.call_ring.multiple false 175 176 chown system system /sys/bus/i2c/devices/1-004a/tsp 177 178 chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state 179 180 # Allow QMUX daemon to assign port open wait time 181 chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait 182 183 #port-bridge 184 chmod 0660 /dev/smd0 185 chown system system /dev/smd0 186 187 #BT DUN port-bridge 188 chmod 0660 /dev/smd7 189 chown bluetooth net_bt_stack /dev/smd7 190 191 #For bridgemgr daemon to inform the USB driver of the correct transport 192 chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport 193 194 # Assign TCP buffer thresholds to be ceiling value of technology maximums 195 # Increased technology maximums should be reflected here. 196 write /proc/sys/net/core/rmem_max 8388608 197 write /proc/sys/net/core/wmem_max 8388608 198 199 #To allow interfaces to get v6 address when tethering is enabled 200 write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2 201 write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2 202 write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2 203 write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2 204 write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2 205 write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2 206 write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2 207 write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2 208 write /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra 2 209 write /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra 2 210 write /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra 2 211 write /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra 2 212 write /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra 2 213 write /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra 2 214 write /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra 2 215 write /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra 2 216 write /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra 2 217 write /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra 2 218 write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2 219 write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2 220 221 # To prevent out of order acknowledgements from making 222 # connection tracking to treat them as not belonging to 223 # the connection they belong to. 224 # Otherwise, a weird issue happens in which some long 225 # connections on high-throughput links get dropped when 226 # an ack packet comes out of order 227 write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1 228 229 # Set the console loglevel to < KERN_INFO 230 # Set the default message loglevel to KERN_INFO 231 # write /proc/sys/kernel/printk "6 6 1 7" 232 233 write /sys/bus/platform/drivers/xhci_msm_hsic/unbind msm_hsic_host 234 write /sys/module/rmnet_usb/parameters/mux_enabled 1 235 write /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links 8 236 write /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev 17 237 write /sys/module/rmnet_usb/parameters/rmnet_data_init 1 238 chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait 239 240 # Audio DSP permissions 241 chown media media /dev/ttyHS3 242 chown media media /sys/devices/c55_ctrl/gpio_ap_int/edge 243 chown media media /sys/devices/c55_ctrl/gpio_ap_int/value 244 chown media media /sys/devices/c55_ctrl/gpio_c55_int/value 245 chown media media /sys/devices/c55_ctrl/gpio_core/value 246 chown media media /sys/devices/c55_ctrl/gpio_reset/value 247 248 # subsystem ramdump collection 249 on property:persist.sys.qc.sub.rdump.on=* 250 write /sys/module/subsystem_restart/parameters/enable_ramdumps ${persist.sys.qc.sub.rdump.on} 251 252 # permissions for CapSense firmware update 253 chown radio radio /sys/devices/cycapsense_prog.1/cycapsense_fw 254 chmod 0220 /sys/devices/cycapsense_prog.1/cycapsense_fw 255 256 # msm specific files that need to be created on /data 257 on post-fs-data 258 mkdir /data/misc/bluetooth 0770 bluetooth bluetooth 259 260 # Create the directories used by the Wireless subsystem 261 mkdir /data/misc/wifi 0770 wifi wifi 262 mkdir /data/misc/wifi/sockets 0770 wifi wifi 263 mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi 264 mkdir /data/misc/dhcp 0770 dhcp dhcp 265 chown dhcp dhcp /data/misc/dhcp 266 267 # Create the directories used by CnE subsystem 268 mkdir /data/connectivity 0771 system system 269 chown system system /data/connectivity 270 271 mkdir /data/connectivity/nsrm 0771 system system 272 chown system system /data/connectivity/nsrm 273 274 # Create directory used by audio subsystem 275 mkdir /data/misc/audio 0770 audio audio 276 277 # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections 278 # We chown/chmod /persist again so because mount is run as root + defaults 279 chown system system /persist 280 chmod 0771 /persist 281 chmod 0664 /sys/devices/platform/msm_sdcc.1/polling 282 chmod 0664 /sys/devices/platform/msm_sdcc.2/polling 283 chmod 0664 /sys/devices/platform/msm_sdcc.3/polling 284 chmod 0664 /sys/devices/platform/msm_sdcc.4/polling 285 286 # Chown polling nodes as needed from UI running on system server 287 chown system system /sys/devices/platform/msm_sdcc.1/polling 288 chown system system /sys/devices/platform/msm_sdcc.2/polling 289 chown system system /sys/devices/platform/msm_sdcc.3/polling 290 chown system system /sys/devices/platform/msm_sdcc.4/polling 291 292 #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant 293 mkdir /data/system 0775 system system 294 #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant 295 296 #Create directories for gpsone_daemon services 297 mkdir /data/misc/gpsone_d 0770 system gps 298 299 #Create directories for QuIPS 300 mkdir /data/misc/quipc 0770 gps system 301 302 #Create directories for Location services 303 mkdir /data/misc/location 0770 gps gps 304 mkdir /data/misc/location/mq 0770 gps gps 305 mkdir /data/misc/location/xtwifi 0770 gps gps 306 307 #Create directory from IMS services 308 mkdir /data/shared 0755 309 chown system system /data/shared 310 311 #Create directory for FOTA 312 mkdir /data/fota 0771 313 chown system system /data/fota 314 315 #Create directory for hostapd 316 mkdir /data/hostapd 0770 system wifi 317 318 # Create /data/time folder for time-services 319 mkdir /data/time/ 0700 system system 320 321 mkdir /data/audio/ 0770 media audio 322 323 setprop vold.post_fs_data_done 1 324 325 # NFC local data and nfcee xml storage 326 mkdir /data/nfc 0770 nfc nfc 327 mkdir /data/nfc/param 0770 nfc nfc 328 329 # Audio DSP permissions 330 mkdir /data/adspd 0770 media media 331 mkdir /data/adspd/1 0770 media media 332 333 on property:bluetooth.isEnabled=true 334 start btwlancoex 335 write /sys/class/bluetooth/hci0/idle_timeout 7000 336 337 on property:ro.bluetooth.ftm_enabled=true 338 start ftmd 339 340 on property:persist.env.fastdorm.enabled=true 341 setprop persist.radio.data_no_toggle 1 342 343 service irsc_util /system/bin/irsc_util "/etc/sec_config" 344 class main 345 user root 346 oneshot 347 348 service mdm_helper /system/bin/mdm_helper 349 user root 350 group root system wakelock radio 351 class core 352 onrestart setprop ro.service.mdm_helper_restarted "true" 353 354 service tcmd /system/bin/tcmd_mini 355 class core 356 user radio 357 group radio net_raw net_admin 358 disabled 359 360 service bridgemgrd /system/bin/bridgemgrd 361 class late_start 362 user radio 363 group radio 364 365 # QMUX must be in multiple groups to support external process connections 366 service qmuxd /system/bin/qmuxd 367 class main 368 user radio 369 group radio audio bluetooth wakelock gps 370 371 service netmgrd /system/bin/netmgrd 372 class main 373 group radio 374 375 service imsqmidaemon /system/bin/imsqmidaemon 376 class main 377 user system 378 socket ims_qmid stream 0660 system radio 379 group radio log 380 381 service imsdatadaemon /system/bin/imsdatadaemon 382 class main 383 user root 384 socket ims_datad stream 0660 system radio 385 group system wifi radio inet log readproc 386 disabled 387 388 on property:sys.ims.QMI_DAEMON_STATUS=1 389 start imsdatadaemon 390 391 service ims_rtp_daemon /system/bin/ims_rtp_daemon 392 class main 393 user root 394 socket ims_rtpd stream 0660 system radio 395 group system radio inet log 396 disabled 397 398 on property:sys.ims.DATA_DAEMON_STATUS=1 399 start ims_rtp_daemon 400 401 service sensors /system/bin/sensors.qcom 402 class core 403 user root 404 group root wakelock 405 writepid /dev/cpuset/system-background/tasks 406 407 on property:ro.use_data_netmgrd=false 408 # netmgr not supported on specific target 409 stop netmgrd 410 411 # Adjust socket buffer to enlarge TCP receive window for high bandwidth 412 # but only if ro.data.large_tcp_window_size property is set. 413 on property:ro.data.large_tcp_window_size=true 414 write /proc/sys/net/ipv4/tcp_adv_win_scale 2 415 416 service p2p_supplicant /system/bin/wpa_supplicant \ 417 -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ 418 -I/system/etc/wifi/p2p_supplicant_overlay.conf \ 419 -puse_p2p_group_interface=1p2p_device=1 \ 420 -m/data/misc/wifi/p2p_supplicant.conf \ 421 -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 422 # we will start as root and wpa_supplicant will switch to user wifi 423 # after setting up the capabilities required for WEXT 424 # user wifi 425 # group wifi inet keystore 426 class main 427 socket wpa_wlan0 dgram 660 wifi wifi 428 disabled 429 oneshot 430 431 service wpa_supplicant /system/bin/wpa_supplicant \ 432 -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ 433 -I/system/etc/wifi/wpa_supplicant_overlay.conf \ 434 -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 435 # we will start as root and wpa_supplicant will switch to user wifi 436 # after setting up the capabilities required for WEXT 437 # user wifi 438 # group wifi inet keystore 439 class main 440 socket wpa_wlan0 dgram 660 wifi wifi 441 disabled 442 oneshot 443 444 service adspd /system/bin/adspd /dev/ttyHS3 445 class main 446 socket adspdsock stream 0660 media media 447 user media 448 group media input 449 450 on property:sys.boot_completed=1 451 start qcom-post-boot 452 453 on property:ro.debuggable=1 454 start ss_ramdump 455 456 on property:ro.data.large_tcp_window_size=true 457 # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB) 458 write /proc/sys/net/ipv4/tcp_adv_win_scale 2 459 460 on charger 461 write /sys/class/leds/lcd-backlight/brightness 100 462 mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1 463 start thermal-engine 464 465 service charger /charger 466 class charger 467 group log 468 seclabel u:r:healthd:s0 469 470 # Allow usb charging to be disabled peristently 471 on property:persist.usb.chgdisabled=1 472 write /sys/class/power_supply/battery/charging_enabled 0 473 474 on property:persist.usb.chgdisabled=0 475 write /sys/class/power_supply/battery/charging_enabled 1 476 477 service qseecomd /system/bin/qseecomd 478 class core 479 user root 480 group root 481 482 service mpdecision /system/bin/mpdecision --avg_comp 483 class main 484 user root 485 group root readproc 486 writepid /dev/cpuset/system-background/tasks 487 488 service ss_ramdump /system/bin/subsystem_ramdump 489 class main 490 user root 491 group root 492 disabled 493 494 service thermal-engine /system/bin/thermal-engine 495 class main 496 user root 497 group root 498 499 service time_daemon /system/bin/time_daemon 500 class late_start 501 user root 502 group root 503 504 on property:init.svc.bootanim=stopped 505 start usf-post-boot 506 507 service qcamerasvr /system/bin/mm-qcamera-daemon 508 class late_start 509 user camera 510 group camera system inet input graphics 511 512 service bdAddrLoader /system/bin/bdAddrLoader -p ro.boot.btmacaddr -s -x 513 class main 514 user bluetooth 515 group system bluetooth 516 oneshot 517 518 on property:vold.decrypt=trigger_reset_main 519 stop gnss-svcd 520 521 on verity-logging 522 exec u:r:slideshow:s0 -- /sbin/slideshow warning/verity_red_1 warning/verity_red_2 523 524 # When QCA1530 is known not to present 525 on property:persist.qca1530=no 526 stop gnss-svcd 527 stop gnss-detect 528 write /sys/kernel/qca1530/chip_state 0 529 530 on property:init.svc.surfaceflinger=stopped 531 stop ppd 532 533 service mmi-touch-sh /system/bin/init.mmi.touch.sh atmel 534 class main 535 user root 536 oneshot 537 538 # bugreport is triggered by holding down volume down, volume up and power 539 service bugreport /system/bin/dumpstate -d -p -B -z \ 540 -o /data/user_de/0/com.android.shell/files/bugreports/bugreport 541 class main 542 disabled 543 oneshot 544 keycodes 114 115 116 545 546 service mdm_helper_proxy /system/bin/mdm_helper_proxy 547 class core 548 user system 549 group system wakelock 550 disabled 551 552 # Stop mdm_helper_proxy in case of shutdown 553 on property:sys.shutdown.requested=* 554 stop mdm_helper_proxy 555 556 # Start mdm_helper_proxy after RIL. 557 on property:ro.mdm_helper_proxy_req=true 558 start mdm_helper_proxy 559 560 on property:init.svc.ril-daemon=running 561 setprop ro.mdm_helper_proxy_req true 562 563 service atfwd /system/bin/ATFWD-daemon 564 class late_start 565 user system 566 group system radio 567 568 service cnd /system/bin/cnd 569 class late_start 570 socket cnd stream 660 root inet 571