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 # See storage config details at http://source.android.com/tech/storage/ 29 mkdir /mnt/shell/emulated 0700 shell shell 30 mkdir /storage/emulated 0555 root root 31 32 mkdir /oem 0550 root root 33 34 # Set permissions for persist partition 35 mkdir /persist 0771 system system 36 37 export EXTERNAL_STORAGE /storage/emulated/legacy 38 export EMULATED_STORAGE_SOURCE /mnt/shell/emulated 39 export EMULATED_STORAGE_TARGET /storage/emulated 40 41 # Support legacy paths 42 symlink /storage/emulated/legacy /sdcard 43 symlink /storage/emulated/legacy /mnt/sdcard 44 symlink /storage/emulated/legacy /storage/sdcard0 45 symlink /mnt/shell/emulated/0 /storage/emulated/legacy 46 47 on fs 48 mount_all fstab.shamu 49 setprop ro.crypto.fuse_sdcard true 50 51 # Keeping following partitions outside fstab file. As user may not have 52 # these partition flashed on the device. Failure to mount any partition in fstab file 53 # results in failure to launch late-start class. 54 55 wait /dev/block/platform/msm_sdcc.1/by-name/persist 56 mount ext4 /dev/block/platform/msm_sdcc.1/by-name/persist /persist nosuid nodev barrier=1 57 restorecon_recursive /persist 58 mkdir /persist/data 0700 system system 59 mkdir /persist/data/sfs 0700 system system 60 mkdir /persist/data/tz 0700 system system 61 mkdir /persist/public 0755 system radio 62 mkdir /persist/public/hiddenmenu 0775 system radio 63 mkdir /persist/public/hiddenmenu/data 0775 system radio 64 65 wait /dev/block/platform/msm_sdcc.1/by-name/oem 66 mount ext4 /dev/block/platform/msm_sdcc.1/by-name/oem /oem ro nosuid nodev context=u:object_r:oemfs:s0 67 68 mkdir /fsg 0755 root root 69 mount ext4 /dev/block/platform/msm_sdcc.1/by-name/mdm1m9kefs3 /fsg ro nosuid nodev barrier=0 context=u:object_r:fsg_file:s0 70 71 # Enable rmnet data and aggregation 72 setprop persist.rmnet.mux enabled 73 setprop persist.rmnet.data.enable true 74 setprop persist.data.wda.enable true 75 setprop persist.data.df.agg.dl_pkt 10 76 setprop persist.data.df.agg.dl_size 4096 77 78 on post-fs-data 79 mkdir /data/tombstones 0771 system system 80 mkdir /tombstones/modem 0771 system system 81 mkdir /tombstones/lpass 0771 system system 82 mkdir /tombstones/wcnss 0771 system system 83 mkdir /tombstones/dsps 0771 system system 84 85 # SENSORS 86 #Create directory used by sensor subsystem(dsps) 87 mkdir /data/system/sensors 88 chmod 0775 /data/system/sensors 89 90 # AKM setting data 91 mkdir /data/misc/sensors 92 chmod 0775 /data/misc/sensors 93 94 mkdir /persist/sensors 95 chmod 0775 /persist/sensors 96 97 mkdir /persist/mdm 0770 radio radio 98 99 #Subsystem RAM-dumps 100 mkdir /data/ss-ram-dumps 0750 radio log 101 mkdir /data/ss-ram-dumps/bp-dumps 0750 radio log 102 103 # rild files 104 mkdir /data/misc/audio_cutback 0770 radio audio 105 106 on early-boot 107 # set RLIMIT_MEMLOCK to 64MB 108 setrlimit 8 67108864 67108864 109 # Allow subsystem (modem etc) debugging 110 write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug} 111 write /sys/kernel/boot_adsp/boot 1 112 113 # Subsytem Restart 114 #venus 115 write /sys/bus/msm_subsys/devices/subsys0/restart_level "related" 116 write /sys/bus/msm_subsys/devices/subsys0/recovery_policy "skip_restart" 117 #adsp 118 write /sys/bus/msm_subsys/devices/subsys1/restart_level "related" 119 write /sys/bus/msm_subsys/devices/subsys1/recovery_policy "skip_restart" 120 #vpu 121 write /sys/bus/msm_subsys/devices/subsys2/restart_level "related" 122 write /sys/bus/msm_subsys/devices/subsys2/recovery_policy "skip_restart" 123 #esoc0 (mdm) 124 write /sys/bus/msm_subsys/devices/subsys3/restart_level "related" 125 write /sys/bus/msm_subsys/devices/subsys3/recovery_policy "skip_restart" 126 127 on boot 128 insmod /system/lib/modules/adsprpc.ko 129 insmod /system/lib/modules/mhi.ko 130 chown bluetooth net_bt_stack /sys/module/bluetooth_power/parameters/power 131 chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type 132 chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state 133 chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto 134 chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm 135 chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite 136 chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_lpm 137 chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_btwrite 138 chown system system /sys/module/sco/parameters/disable_esco 139 chown bluetooth net_bt_stack /sys/module/hci_smd/parameters/hcismd_set 140 chmod 0660 /sys/module/bluetooth_power/parameters/power 141 chmod 0660 /sys/module/hci_smd/parameters/hcismd_set 142 chmod 0660 /sys/class/rfkill/rfkill0/state 143 chmod 0660 /proc/bluetooth/sleep/proto 144 chown bluetooth net_bt_stack /dev/ttyHS0 145 chmod 0660 /sys/module/hci_uart/parameters/ath_lpm 146 chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite 147 chmod 0660 /dev/ttyHS0 148 chown bluetooth net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock 149 chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock 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 # we will remap this as /mnt/sdcard with the sdcard fuse tool 259 mkdir /data/media 0770 media_rw media_rw 260 chown media_rw media_rw /data/media 261 262 mkdir /data/misc/bluetooth 0770 bluetooth bluetooth 263 264 # Create the directories used by the Wireless subsystem 265 mkdir /data/misc/wifi 0770 wifi wifi 266 mkdir /data/misc/wifi/sockets 0770 wifi wifi 267 mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi 268 mkdir /data/misc/dhcp 0770 dhcp dhcp 269 chown dhcp dhcp /data/misc/dhcp 270 271 # Create the directories used by CnE subsystem 272 mkdir /data/connectivity 0771 system system 273 chown system system /data/connectivity 274 275 mkdir /data/connectivity/nsrm 0771 system system 276 chown system system /data/connectivity/nsrm 277 278 # Create directory used by audio subsystem 279 mkdir /data/misc/audio 0770 audio audio 280 281 # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections 282 # We chown/chmod /persist again so because mount is run as root + defaults 283 chown system system /persist 284 chmod 0771 /persist 285 chmod 0664 /sys/devices/platform/msm_sdcc.1/polling 286 chmod 0664 /sys/devices/platform/msm_sdcc.2/polling 287 chmod 0664 /sys/devices/platform/msm_sdcc.3/polling 288 chmod 0664 /sys/devices/platform/msm_sdcc.4/polling 289 290 # Chown polling nodes as needed from UI running on system server 291 chown system system /sys/devices/platform/msm_sdcc.1/polling 292 chown system system /sys/devices/platform/msm_sdcc.2/polling 293 chown system system /sys/devices/platform/msm_sdcc.3/polling 294 chown system system /sys/devices/platform/msm_sdcc.4/polling 295 296 #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant 297 mkdir /data/system 0775 system system 298 #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant 299 300 #Create directories for Location services 301 mkdir /data/misc/location 0770 gps gps 302 mkdir /data/misc/location/mq 0770 gps gps 303 mkdir /data/misc/location/xtwifi 0770 gps gps 304 mkdir /data/misc/location/quipc 0770 gps system 305 mkdir /data/misc/location/gsiff 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 #Create a folder for SRS to be able to create a usercfg file 326 mkdir /data/data/media 0770 media media 327 328 # NFC local data and nfcee xml storage 329 mkdir /data/nfc 0770 nfc nfc 330 mkdir /data/nfc/param 0770 nfc nfc 331 332 # Audio DSP permissions 333 mkdir /data/adspd 0770 media media 334 mkdir /data/adspd/1 0770 media media 335 336 on property:init.svc.wpa_supplicant=stopped 337 stop dhcpcd 338 339 on property:bluetooth.isEnabled=true 340 start btwlancoex 341 write /sys/class/bluetooth/hci0/idle_timeout 7000 342 343 on property:ro.bluetooth.ftm_enabled=true 344 start ftmd 345 346 on property:persist.env.fastdorm.enabled=true 347 setprop persist.radio.data_no_toggle 1 348 349 service irsc_util /system/bin/irsc_util "/etc/sec_config" 350 class main 351 user root 352 oneshot 353 354 service mdm_helper /system/bin/mdm_helper 355 user root 356 group root system radio 357 class core 358 onrestart setprop ro.service.mdm_helper_restarted "true" 359 360 service tcmd /system/bin/tcmd_mini 361 class core 362 user radio 363 group radio net_raw net_admin 364 disabled 365 366 service bridgemgrd /system/bin/bridgemgrd 367 class late_start 368 user radio 369 group radio 370 371 # QMUX must be in multiple groups to support external process connections 372 service qmuxd /system/bin/qmuxd 373 class main 374 user root 375 group radio audio bluetooth gps 376 377 service netmgrd /system/bin/netmgrd 378 class main 379 group radio 380 381 service sensors /system/bin/sensors.qcom 382 class core 383 user root 384 group root 385 386 on property:ro.use_data_netmgrd=false 387 # netmgr not supported on specific target 388 stop netmgrd 389 390 # Adjust socket buffer to enlarge TCP receive window for high bandwidth 391 # but only if ro.data.large_tcp_window_size property is set. 392 on property:ro.data.large_tcp_window_size=true 393 write /proc/sys/net/ipv4/tcp_adv_win_scale 2 394 395 service p2p_supplicant /system/bin/wpa_supplicant \ 396 -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ 397 -I/system/etc/wifi/p2p_supplicant_overlay.conf \ 398 -puse_p2p_group_interface=1p2p_device=1 \ 399 -m/data/misc/wifi/p2p_supplicant.conf \ 400 -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 401 # we will start as root and wpa_supplicant will switch to user wifi 402 # after setting up the capabilities required for WEXT 403 # user wifi 404 # group wifi inet keystore 405 class main 406 socket wpa_wlan0 dgram 660 wifi wifi 407 disabled 408 oneshot 409 410 service wpa_supplicant /system/bin/wpa_supplicant \ 411 -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ 412 -I/system/etc/wifi/wpa_supplicant_overlay.conf \ 413 -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 414 # we will start as root and wpa_supplicant will switch to user wifi 415 # after setting up the capabilities required for WEXT 416 # user wifi 417 # group wifi inet keystore 418 class main 419 socket wpa_wlan0 dgram 660 wifi wifi 420 disabled 421 oneshot 422 423 service dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG 424 class late_start 425 disabled 426 oneshot 427 428 service dhcpcd_p2p /system/bin/dhcpcd -ABKLG 429 class late_start 430 disabled 431 oneshot 432 433 service iprenew_wlan0 /system/bin/dhcpcd -n 434 class late_start 435 disabled 436 oneshot 437 438 service iprenew_p2p /system/bin/dhcpcd -n 439 class late_start 440 disabled 441 oneshot 442 443 service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG 444 class late_start 445 disabled 446 oneshot 447 448 service iprenew_bt-pan /system/bin/dhcpcd -n 449 class late_start 450 disabled 451 oneshot 452 453 service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG 454 disabled 455 oneshot 456 457 service dhcpcd_bnep1 /system/bin/dhcpcd -BKLG 458 disabled 459 oneshot 460 461 service dhcpcd_bnep2 /system/bin/dhcpcd -BKLG 462 disabled 463 oneshot 464 465 service dhcpcd_bnep3 /system/bin/dhcpcd -BKLG 466 disabled 467 oneshot 468 469 service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG 470 disabled 471 oneshot 472 473 service dhcpcd_eth0 /system/bin/dhcpcd -aABDKL 474 class late_start 475 disabled 476 oneshot 477 478 service iprenew_eth0 /system/bin/dhcpcd -n 479 class late_start 480 disabled 481 oneshot 482 483 service adspd /system/bin/adspd /dev/ttyHS3 484 class late_start 485 socket adspdsock stream 0660 media media 486 user media 487 group media input 488 489 #start GNSS/Sensor interface daemon 490 service gsiff_daemon /system/vendor/bin/gsiff_daemon 491 class late_start 492 user gps 493 group gps net_raw 494 495 on property:sys.boot_completed=1 496 start qcom-post-boot 497 498 on property:ro.debuggable=1 499 start ss_ramdump 500 501 on property:ro.data.large_tcp_window_size=true 502 # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB) 503 write /proc/sys/net/ipv4/tcp_adv_win_scale 2 504 505 # virtual sdcard daemon running as media_rw (1023) 506 service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated 507 class late_start 508 509 on charger 510 write /sys/class/leds/lcd-backlight/brightness 100 511 mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1 512 start thermal-engine 513 514 service charger /charger 515 class charger 516 group log 517 seclabel u:r:healthd:s0 518 519 # Allow usb charging to be disabled peristently 520 on property:persist.usb.chgdisabled=1 521 write /sys/class/power_supply/battery/charging_enabled 0 522 523 on property:persist.usb.chgdisabled=0 524 write /sys/class/power_supply/battery/charging_enabled 1 525 526 service qseecomd /system/bin/qseecomd 527 class core 528 user root 529 group root 530 531 service mpdecision /system/bin/mpdecision --avg_comp 532 class main 533 user root 534 535 service ss_ramdump /system/bin/subsystem_ramdump 536 class main 537 user root 538 group root 539 disabled 540 541 service thermal-engine /system/bin/thermal-engine 542 class main 543 user root 544 group root 545 546 service time_daemon /system/bin/time_daemon 547 class late_start 548 user root 549 group root 550 551 on property:init.svc.bootanim=stopped 552 start usf-post-boot 553 554 service qcamerasvr /system/bin/mm-qcamera-daemon 555 class late_start 556 user camera 557 group camera system inet input graphics 558 559 service bdAddrLoader /system/bin/bdAddrLoader -p ro.boot.btmacaddr -s -x 560 class main 561 user bluetooth 562 group system bluetooth 563 oneshot 564 565 on property:vold.decrypt=trigger_reset_main 566 stop gnss-svcd 567 568 # When QCA1530 is known not to present 569 on property:persist.qca1530=no 570 stop gnss-svcd 571 stop gnss-detect 572 write /sys/kernel/qca1530/chip_state 0 573 574 on property:init.svc.surfaceflinger=stopped 575 stop ppd 576 577 service mmi-touch-sh /system/bin/sh /init.mmi.touch.sh atmel 578 class main 579 user root 580 oneshot 581 582 # bugreport is triggered by holding down volume down, volume up and power 583 service bugreport /system/bin/dumpstate -d -p -B \ 584 -o /data/data/com.android.shell/files/bugreports/bugreport 585 class main 586 disabled 587 oneshot 588 keycodes 114 115 116 589 590 service mdm_helper_proxy /system/bin/mdm_helper_proxy 591 class core 592 user system 593 group system 594 disabled 595 596 # Stop mdm_helper_proxy in case of shutdown 597 on property:sys.shutdown.requested=* 598 stop mdm_helper_proxy 599 600 # Start mdm_helper_proxy after RIL. 601 on property:ro.mdm_helper_proxy_req=true 602 start mdm_helper_proxy 603 604 on property:init.svc.ril-daemon=running 605 setprop ro.mdm_helper_proxy_req true 606