blob: 7c0b93621770fe1a554f3989642d14c9f3f1b279 [file] [log] [blame]
#
# 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
on early-init
mount debugfs debugfs /sys/kernel/debug
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 /storage/emulated/legacy 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
on fs
mount_all ./fstab.hammerhead
setprop ro.crypto.fuse_sdcard true
write /sys/kernel/boot_adsp/boot 1
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
chown bluetooth net_bt_stack /dev/ttyHS99
chmod 0660 /dev/ttyHS99
chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto
chmod 0660 /proc/bluetooth/sleep/proto
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
chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
# 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
# Invensense IIO settings
chown system system /dev/iio:device0
chown system system /sys/bus/iio/devices/iio:device0/uevent
chown system system /sys/bus/iio/devices/iio:device0/dev
chown system system /sys/bus/iio/devices/iio:device0/buffer/length
chown system system /sys/bus/iio/devices/iio:device0/buffer/enable
chown system system /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_en
chown system system /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_type
chown system system /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_index
chown system system /sys/bus/iio/devices/iio:device0/sampling_frequency_available
chown system system /sys/bus/iio/devices/iio:device0/reg_dump
chown system system /sys/bus/iio/devices/iio:device0/temperature
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_scale
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_x_calibbias
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_y_calibbias
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_z_calibbias
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_x_offset
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_y_offset
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_z_offset
chown system system /sys/bus/iio/devices/iio:device0/self_test_samples
chown system system /sys/bus/iio/devices/iio:device0/self_test_threshold
chown system system /sys/bus/iio/devices/iio:device0/gyro_enable
chown system system /sys/bus/iio/devices/iio:device0/gyro_fifo_enable
chown system system /sys/bus/iio/devices/iio:device0/power_state
chown system system /sys/bus/iio/devices/iio:device0/sampling_frequency
chown system system /sys/bus/iio/devices/iio:device0/self_test
chown system system /sys/bus/iio/devices/iio:device0/gyro_matrix
chown system system /sys/bus/iio/devices/iio:device0/secondary_name
chown system system /sys/bus/iio/devices/iio:device0/reg_write
chown system system /sys/bus/iio/devices/iio:device0/debug_smd_enable_testp1
chown system system /sys/bus/iio/devices/iio:device0/debug_smd_enable_testp2
chown system system /sys/bus/iio/devices/iio:device0/debug_smd_exe_state
chown system system /sys/bus/iio/devices/iio:device0/debug_smd_delay_cntr
chown system system /sys/bus/iio/devices/iio:device0/event_display_orientation
chown system system /sys/bus/iio/devices/iio:device0/event_accel_motion
chown system system /sys/bus/iio/devices/iio:device0/event_smd
chown system system /sys/bus/iio/devices/iio:device0/event_pedometer
chown system system /sys/bus/iio/devices/iio:device0/in_accel_scale
chown system system /sys/bus/iio/devices/iio:device0/in_accel_x_calibbias
chown system system /sys/bus/iio/devices/iio:device0/in_accel_y_calibbias
chown system system /sys/bus/iio/devices/iio:device0/in_accel_z_calibbias
chown system system /sys/bus/iio/devices/iio:device0/in_accel_x_offset
chown system system /sys/bus/iio/devices/iio:device0/in_accel_y_offset
chown system system /sys/bus/iio/devices/iio:device0/in_accel_z_offset
chown system system /sys/bus/iio/devices/iio:device0/in_accel_x_dmp_bias
chown system system /sys/bus/iio/devices/iio:device0/in_accel_y_dmp_bias
chown system system /sys/bus/iio/devices/iio:device0/in_accel_z_dmp_bias
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_x_dmp_bias
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_y_dmp_bias
chown system system /sys/bus/iio/devices/iio:device0/in_anglvel_z_dmp_bias
chown system system /sys/bus/iio/devices/iio:device0/pedometer_int_on
chown system system /sys/bus/iio/devices/iio:device0/pedometer_on
chown system system /sys/bus/iio/devices/iio:device0/accel_pedometer_step_on
chown system system /sys/bus/iio/devices/iio:device0/pedometer_steps
chown system system /sys/bus/iio/devices/iio:device0/pedometer_time
chown system system /sys/bus/iio/devices/iio:device0/smd_enable
chown system system /sys/bus/iio/devices/iio:device0/smd_threshold
chown system system /sys/bus/iio/devices/iio:device0/smd_delay_threshold
chown system system /sys/bus/iio/devices/iio:device0/smd_delay_threshold2
chown system system /sys/bus/iio/devices/iio:device0/display_orientation_on
chown system system /sys/bus/iio/devices/iio:device0/dmp_on
chown system system /sys/bus/iio/devices/iio:device0/dmp_int_on
chown system system /sys/bus/iio/devices/iio:device0/dmp_event_int_on
chown system system /sys/bus/iio/devices/iio:device0/dmp_output_rate
chown system system /sys/bus/iio/devices/iio:device0/batchmode_timeout
chown system system /sys/bus/iio/devices/iio:device0/batchmode_wake_fifo_full_on
chown system system /sys/bus/iio/devices/iio:device0/six_axes_q_on
chown system system /sys/bus/iio/devices/iio:device0/three_axes_q_on
chown system system /sys/bus/iio/devices/iio:device0/ped_q_on
chown system system /sys/bus/iio/devices/iio:device0/step_detector_on
chown system system /sys/bus/iio/devices/iio:device0/motion_lpa_on
chown system system /sys/bus/iio/devices/iio:device0/motion_lpa_freq
chown system system /sys/bus/iio/devices/iio:device0/motion_lpa_duration
chown system system /sys/bus/iio/devices/iio:device0/motion_lpa_threshold
chown system system /sys/bus/iio/devices/iio:device0/accel_enable
chown system system /sys/bus/iio/devices/iio:device0/accel_fifo_enable
chown system system /sys/bus/iio/devices/iio:device0/firmware_loaded
chown system system /sys/bus/iio/devices/iio:device0/accel_matrix
chown system system /sys/bus/iio/devices/iio:device0/in_magn_scale
chown system system /sys/bus/iio/devices/iio:device0/compass_enable
chown system system /sys/bus/iio/devices/iio:device0/compass_matrix
chown system system /sys/bus/iio/devices/iio:device0/name
chown system system /sys/bus/iio/devices/iio:device0/trigger/current_trigger
chown system system /sys/bus/iio/devices/iio:device0/power/runtime_status
chown system system /sys/bus/iio/devices/iio:device0/power/control
chown system system /sys/bus/iio/devices/iio:device0/power/runtime_suspended_time
chown system system /sys/bus/iio/devices/iio:device0/power/runtime_active_time
chown system system /sys/bus/iio/devices/iio:device0/power/autosuspend_delay_ms
chown system system /sys/bus/iio/devices/iio:device0/dmp_firmware
chown system system /sys/bus/iio/devices/iio:device0/pressure_enable
on post-fs-data
mkdir /data/media 0770 media_rw media_rw
# 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
# Sensor
mkdir /persist/sensors
chmod 775 /persist/sensors
# 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
# communicate with mpdecision and thermald
mkdir /dev/socket/mpdecision 0770 system system
chmod 2770 /dev/socket/mpdecision
setprop vold.post_fs_data_done 1
# 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/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
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
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
chown system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chown system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
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
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/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/devices/system/cpu/cpu1/online 0
write /sys/devices/system/cpu/cpu2/online 0
write /sys/devices/system/cpu/cpu3/online 0
on property:init.svc.wpa_supplicant=stopped
stop dhcpcd
service rmt_storage /system/bin/rmt_storage
class main
user root
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
service irsc_util /system/bin/logwrapper /system/bin/irsc_util "/etc/sec_config"
class main
user root
oneshot
service p2p_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/wpa_supplicant_overlay.conf \
-O/data/misc/wifi/sockets -N \
-ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
-I/system/etc/wifi/wpa_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/logwrapper /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/wpa_supplicant_overlay.conf \
-O/data/misc/wifi/sockets \
-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_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 qseecomd /system/bin/qseecomd
class late_start
user system
group system
# virtual sdcard daemon running as media_rw (1023)
service sdcard /system/bin/sdcard /data/media /mnt/shell/emulated 1023 1023
class late_start
# Binding fuse mount point to /storage/emulated/legacy
on property:init.svc.sdcard=running
wait /mnt/shell/emulated/0
mount none /mnt/shell/emulated/0 /storage/emulated/legacy bind
service charger /charger
class charger
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
service thermal-engine /system/bin/thermal-engine
class main
user root
group root