| # |
| # Copyright 2013 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.hammerhead.usb.rc |
| import init.hammerhead_svelte.rc |
| import init.hammerhead.diag.rc |
| import init.hammerhead_fp.rc |
| |
| on early-init |
| 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 |
| |
| # Set permissions for persist partition |
| mkdir /persist 0771 system system |
| mkdir /firmware 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.hammerhead |
| restorecon_recursive /persist |
| setprop ro.crypto.fuse_sdcard true |
| |
| on early-boot |
| # set RLIMIT_MEMLOCK to 64MB |
| setrlimit 8 67108864 67108864 |
| |
| on boot |
| # Enable DEBUG_SUSPEND, DEBUG_EXIT_SUSPEND, and DEBUG_WAKEUP |
| write /sys/module/wakelock/parameters/debug_mask 7 |
| |
| # bluetooth |
| chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type |
| chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state |
| chmod 0660 /sys/class/rfkill/rfkill0/state |
| |
| # bluetooth LPM |
| chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm |
| chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite |
| |
| #bluetooth UART dev |
| chown bluetooth net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock |
| chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock |
| |
| #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 |
| |
| # Camera Recording |
| mkdir /dev/video |
| symlink /dev/video32 /dev/video/venus_dec |
| symlink /dev/video33 /dev/video/venus_enc |
| |
| # Allow QMUX daemon to assign port open wait time |
| chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait |
| |
| #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 2097152 |
| write /proc/sys/net/core/wmem_max 2097152 |
| |
| # create symlink for fb1 as HDMI |
| symlink /dev/graphics/fb1 /dev/graphics/hdmi |
| |
| # setup permissions for fb1 related nodes |
| chown system graphics /sys/class/graphics/fb1/hpd |
| chown system graphics /sys/class/graphics/fb1/vendor_name |
| chown system graphics /sys/class/graphics/fb1/product_description |
| chmod 0664 /sys/devices/virtual/graphics/fb1/hpd |
| chmod 0664 /sys/devices/virtual/graphics/fb1/vendor_name |
| chmod 0664 /sys/devices/virtual/graphics/fb1/product_description |
| |
| # 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 |
| |
| # Subsytem Restart |
| #adsp |
| write /sys/bus/msm_subsys/devices/subsys0/restart_level "related" |
| #modem |
| write /sys/bus/msm_subsys/devices/subsys1/restart_level "related" |
| #venus |
| write /sys/bus/msm_subsys/devices/subsys2/restart_level "related" |
| |
| # Subsytem Ramdump collection |
| mkdir /data/tombstones 0777 system system |
| mkdir /data/tombstones/ramdump 0777 system system |
| restorecon_recursive /data/tombstones |
| write /sys/module/subsystem_restart/parameters/enable_ramdumps 1 |
| |
| # leds |
| chown system system /sys/class/leds/red/on_off_ms |
| chown system system /sys/class/leds/green/on_off_ms |
| chown system system /sys/class/leds/blue/on_off_ms |
| chown system system /sys/class/leds/red/rgb_start |
| chmod 664 /sys/class/leds/lcd-backlight/brightness |
| |
| on post-fs-data |
| write /sys/kernel/boot_adsp/boot 1 |
| |
| mkdir /data/media 0770 media_rw media_rw |
| |
| # NFC: create data/nfc for nv storage |
| mkdir /data/nfc 0770 nfc nfc |
| mkdir /data/nfc/param 0770 nfc nfc |
| |
| # wifi |
| chown wifi system /persist/wifi |
| |
| # bluetooth |
| mkdir /data/misc/bluetooth 0770 bluetooth bluetooth |
| |
| # Create directory used by audio subsystem |
| mkdir /data/misc/audio 0770 audio audio |
| |
| # Create directory used by sensor subsystem |
| mkdir /data/system 0755 system system |
| mkdir /data/system/sensors |
| chmod 755 /data/system/sensors |
| |
| # AKM setting data |
| mkdir /data/misc/sensors |
| chmod 775 /data/misc/sensors |
| |
| # Sensor |
| mkdir /persist/sensors |
| chmod 775 /persist/sensors |
| write /persist/sensors/sensors_settings 1 |
| chmod 660 /persist/sensors/sensors_settings |
| |
| # communicate with mpdecision and thermald |
| mkdir /dev/socket/mpdecision 2770 root system |
| |
| # save rtc time offsets |
| mkdir /data/system/time 0700 system system |
| |
| # Ecc_Handler qcril.db |
| mkdir /data/misc/radio 0770 radio radio |
| symlink /system/etc/qcril.db /data/misc/radio/qcril.db |
| |
| setprop vold.post_fs_data_done 1 |
| |
| # Set the CPU Freq Sampling rates |
| write /sys/module/msm_thermal/core_control/enabled 0 |
| write /sys/devices/system/cpu/cpu1/online 1 |
| write /sys/devices/system/cpu/cpu2/online 1 |
| write /sys/devices/system/cpu/cpu3/online 1 |
| write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "ondemand" |
| write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "ondemand" |
| write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "ondemand" |
| write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "ondemand" |
| write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold 90 |
| write /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate 50000 |
| write /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy 1 |
| write /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor 4 |
| write /sys/devices/system/cpu/cpufreq/ondemand/down_differential 10 |
| write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core 70 |
| write /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core 3 |
| write /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq 960000 |
| write /sys/devices/system/cpu/cpufreq/ondemand/sync_freq 960000 |
| write /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load 80 |
| restorecon_recursive /sys/devices/system/cpu/cpufreq/ondemand |
| write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000 |
| write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 300000 |
| write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000 |
| write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 300000 |
| write /sys/module/msm_thermal/core_control/enabled 1 |
| chown root.system /sys/devices/system/cpu/mfreq |
| chmod 220 /sys/devices/system/cpu/mfreq |
| chown root.system /sys/devices/system/cpu/cpu1/online |
| chown root.system /sys/devices/system/cpu/cpu2/online |
| chown root.system /sys/devices/system/cpu/cpu3/online |
| chmod 664 /sys/devices/system/cpu/cpu1/online |
| chmod 664 /sys/devices/system/cpu/cpu2/online |
| chmod 664 /sys/devices/system/cpu/cpu3/online |
| write /dev/cpuctl/apps/cpu.notify_on_migrate 1 |
| |
| on charger |
| # Booting modem |
| wait /dev/block/platform/msm_sdcc.1/by-name/modem |
| mount vfat /dev/block/platform/msm_sdcc.1/by-name/modem /firmware ro shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0 |
| wait /dev/block/platform/msm_sdcc.1/by-name/system |
| mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1 |
| start rmt_storage |
| start irsc_util |
| |
| # Enable Power modes and set the CPU Freq Sampling rates |
| write /sys/module/lpm_resources/enable_low_power/l2 2 |
| write /sys/module/lpm_resources/enable_low_power/pxo 1 |
| write /sys/module/lpm_resources/enable_low_power/vdd_dig 1 |
| write /sys/module/lpm_resources/enable_low_power/vdd_mem 1 |
| write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1 |
| write /sys/module/msm_thermal/core_control/enabled 0 |
| write /sys/devices/system/cpu/cpu1/online 1 |
| write /sys/devices/system/cpu/cpu2/online 1 |
| write /sys/devices/system/cpu/cpu3/online 1 |
| write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave" |
| write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave" |
| write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "powersave" |
| write /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor "powersave" |
| write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000 |
| write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 300000 |
| write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000 |
| write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 300000 |
| write /sys/module/msm_thermal/core_control/enabled 1 |
| write /sys/devices/system/cpu/cpu1/online 0 |
| write /sys/devices/system/cpu/cpu2/online 0 |
| write /sys/devices/system/cpu/cpu3/online 0 |
| start mpdecision |
| |
| on property:init.svc.wpa_supplicant=stopped |
| stop dhcpcd |
| |
| on property:sys.boot_completed=1 |
| # Enable Power modes |
| write /sys/module/lpm_resources/enable_low_power/l2 2 |
| write /sys/module/lpm_resources/enable_low_power/pxo 1 |
| write /sys/module/lpm_resources/enable_low_power/vdd_dig 1 |
| write /sys/module/lpm_resources/enable_low_power/vdd_mem 1 |
| write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu2/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu3/power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/suspend_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu2/standalone_power_collapse/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu3/standalone_power_collapse/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu2/retention/idle_enabled 1 |
| write /sys/module/pm_8x60/modes/cpu3/retention/idle_enabled 1 |
| start mpdecision |
| |
| # enable slimport detection |
| write /sys/module/slimport/parameters/enable_irq 1 |
| |
| # enable logging of wake up reasons to kernel logs |
| write /sys/module/msm_show_resume_irq/parameters/debug_mask 1 |
| |
| on property:ro.debuggable=1 |
| start ssr_ramdump |
| |
| service rmt_storage /system/bin/rmt_storage |
| class core |
| user root |
| group system |
| |
| service bridgemgrd /system/bin/bridgemgrd |
| class main |
| 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 gps |
| |
| service netmgrd /system/bin/netmgrd |
| class main |
| group radio |
| |
| # QCOM sensor |
| service sensors /system/bin/sensors.qcom |
| class main |
| user root |
| group root |
| |
| service irsc_util /system/bin/irsc_util "/etc/sec_config" |
| class main |
| user root |
| oneshot |
| |
| service p2p_supplicant /system/bin/wpa_supplicant \ |
| -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ |
| -I/system/etc/wifi/wpa_supplicant_overlay.conf -N \ |
| -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ |
| -I/system/etc/wifi/p2p_supplicant_overlay.conf \ |
| -puse_p2p_group_interface=1 -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 -aABDKL |
| class late_start |
| disabled |
| oneshot |
| |
| service dhcpcd_p2p /system/bin/dhcpcd -aABKL |
| 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_eth0 /system/bin/dhcpcd -aABDKL |
| class late_start |
| disabled |
| oneshot |
| |
| service iprenew_eth0 /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_bt-pan /system/bin/dhcpcd -BKLG |
| disabled |
| oneshot |
| |
| service iprenew_bt-pan /system/bin/dhcpcd -n |
| disabled |
| oneshot |
| |
| service qseecomd /system/bin/qseecomd |
| class core |
| user root |
| group root |
| |
| # 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 |
| |
| service charger /sbin/healthd -c |
| class charger |
| critical |
| seclabel u:r:healthd:s0 |
| |
| service qcamerasvr /system/bin/mm-qcamera-daemon |
| class late_start |
| user camera |
| group camera system inet input |
| |
| service bdAddrLoader /system/bin/bdAddrLoader -f /persist/bluetooth/.bdaddr -h -x |
| class main |
| user bluetooth |
| group system bluetooth |
| 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 mpdecision /system/bin/mpdecision --no_sleep --avg_comp |
| class main |
| user root |
| group root system |
| disabled |
| |
| service ssr_ramdump /system/bin/subsystem_ramdump -m -t emmc |
| class main |
| user root |
| group root |
| disabled |
| |
| service thermal-engine /system/bin/thermal-engine-hh |
| class main |
| user root |
| group radio system |
| |
| service vss_init /vendor/bin/vss_init |
| class late_start |
| user root |
| group root |
| disabled |
| |
| service time_daemon /system/bin/time_daemon |
| class late_start |
| user root |
| group root |