blob: cdec20827808be392da87e2ec0ef21948df856d2 [file] [log] [blame]
#
# Copyright 2012 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.mako.usb.rc
on early-init
# for backwards compatibility
export EXTERNAL_STORAGE /storage/sdcard0
mkdir /storage 0050 system sdcard_r
mkdir /storage/sdcard0 0000 system system
symlink /storage/sdcard0 /sdcard
symlink /storage/sdcard0 /mnt/sdcard
on init
# Set permissions for persist partition
mkdir /persist 0771 system system
mkdir /tombstones 0771 system system
mkdir /firmware 0771 system system
on fs
mount_all ./fstab.mako
#modem firmware files
wait /dev/block/platform/msm_sdcc.1/by-name/modem
mount vfat /dev/block/platform/msm_sdcc.1/by-name/modem /firmware ro dmask=177 fmask=177
setprop ro.crypto.fuse_sdcard true
on early-boot
# set RLIMIT_MEMLOCK to 64MB
setrlimit 8 67108864 67108864
on boot
chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power
chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type
chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
chown bluetooth bluetooth /proc/bluetooth/sleep/proto
chown system system /sys/module/sco/parameters/disable_esco
chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set
chmod 0660 /sys/module/bluetooth_power/parameters/power
chmod 0666 /sys/module/hci_smd/parameters/hcismd_set
chmod 0660 /sys/class/rfkill/rfkill0/state
chmod 0660 /proc/bluetooth/sleep/proto
chown bluetooth bluetooth /dev/ttyHS0
chmod 0660 /dev/ttyHS0
chown bluetooth bluetooth /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
# Allow QMUX daemon to assign port open wait time
chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait
#Remove SUID bit for iproute2 ip tool
chmod 0755 /system/bin/ip
#port-bridge
chmod 0660 /dev/smd0
chown system system /dev/smd0
#BT DUN port-bridge
chmod 0660 /dev/smd7
chown bluetooth bluetooth /dev/smd7
chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state
# create symlink for fb1 as HDMI
symlink /dev/graphics/fb1 /dev/graphics/hdmi
# Remove write permissions to video related nodes
chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
chmod 0664 /sys/devices/virtual/graphics/fb1/video_mode
chmod 0664 /sys/devices/virtual/graphics/fb1/format_3d
# Change owner and group for media server and surface flinger
chown system system /sys/devices/virtual/graphics/fb1/format_3d
#For bridgemgr daemon to inform the USB driver of the correct transport
chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport
chmod 660 /dev/rtc0
chown system system /dev/rtc0
chown root system /proc/net/ip_conntrack
#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
# do not panic when a subsystem crashes
write /sys/module/subsystem_restart/parameters/restart_level 3
# 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 0775 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
# to observe dnsmasq.leases file for dhcp information of soft ap.
chown dhcp system /data/misc/dhcp
write /dev/wcnss_wlan 1
# 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 directory used by sensor subsystem(dsps)
mkdir /data/system/sensors
chmod 665 /data/system/sensors
write /data/system/sensors/settings 1
chmod 666 /data/system/sensors/settings
mkdir /data/misc/sensors
chmod 775 /data/misc/sensors
#Create directories for gpsone_daemon services
mkdir /data/misc/gpsone_d 0770 system gps
#Create directories for Location services
mkdir /data/misc/location 0770 gps gps
mkdir /data/misc/location/mq 0770 gps gps
#Provide the access to hostapd.conf only to root and group
chmod 0660 /data/hostapd/hostapd.conf
# Create /data/time folder for time-services
mkdir /data/time/ 0700 system system
mkdir /data/audio 0770 media audio
# Enable the setgid bit on the directory
chmod 2770 /data/audio
mkdir /data/bluetooth 0770 bluetooth bluetooth
# Enable the setgid bit on the directory
chmod 2770 /data/bluetooth
mkdir /data/qcks 0770 system system
setprop vold.post_fs_data_done 1
# Enable Power modes and set the CPU Freq Sampling rates
write /sys/module/rpm_resources/enable_low_power/L2_cache 1
write /sys/module/rpm_resources/enable_low_power/pxo 1
write /sys/module/rpm_resources/enable_low_power/vdd_dig 1
write /sys/module/rpm_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/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/power_collapse/idle_enabled 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/cpu0/cpufreq/scaling_min_freq 384000
write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 384000
write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 384000
write /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 384000
chown system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
chown system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chown system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
chown system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
chown system /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
chown system /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
chown system /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
chown system /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
chown system /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
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
on property:init.svc.wpa_supplicant=stopped
stop dhcpcd
service rmt_storage /system/bin/rmt_storage
class main
user root
service hciattach /system/bin/sh /system/etc/init.mako.bt.sh
class late_start
user bluetooth
group qcom_oncrpc bluetooth net_bt_admin system
disabled
oneshot
on property:bluetooth.hciattach=true
start hciattach
on property:bluetooth.hciattach=false
write /sys/module/hci_smd/parameters/hcismd_set 0
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 kickstart /system/bin/qcks -i /firmware/image/
class main
oneshot
service netmgrd /system/bin/netmgrd
class main
service sensors /system/bin/sensors.qcom
class late_start
user root
group root
service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
-Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf \
-C/data/misc/wifi/sockets
class main
group wifi inet
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
service p2p_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
-Dnl80211 -iwlan0 -c/data/misc/wifi/p2p_supplicant.conf \
-C/data/misc/wifi/sockets
class main
group wifi inet
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 p2p
class late_start
disabled
oneshot
service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG
disabled
oneshot
service hdmid /system/bin/hdmid
class late_start
socket hdmid stream 0660 root system graphics
disabled
service hostapd /system/bin/hostapd -d /data/hostapd/hostapd.conf
class late_start
user root
group root
oneshot
disabled
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 1
service time_daemon /system/bin/time_daemon
class late_start
user root
group root
oneshot
service ril-daemon1 /system/bin/rild -c 1
class late_start
socket rild1 stream 660 root radio
socket rild-debug1 stream 660 radio system
user root
disabled
group radio cache inet misc audio sdcard_rw qcom_oncrpc diag
service profiler_daemon /system/bin/profiler_daemon
class late_start
user root
group root
disabled
service charger /charger
class charger
# create virtual SD card at /storage/sdcard0, based on the /data/media directory
# daemon will drop to user/group system/media_rw after initializing
# underlying files in /data/media will be created with user and group media_rw (1023)
service sdcard /system/bin/sdcard /data/media 1023 1023
class late_start
# Create ext4 filesystems when the partitions are empty or corrupted.
service setup_fs /system/bin/setup_fs \
/dev/block/platform/msm_sdcc.1/by-name/userdata \
/dev/block/platform/msm_sdcc.1/by-name/cache \
/dev/block/platform/msm_sdcc.1/by-name/tombstones
class core
user root
group root
oneshot
service thermald /system/bin/thermald
class main
service mpdecision /system/bin/mpdecision --no_sleep --avg_comp
class main
service qcamerasvr /system/bin/mm-qcamera-daemon
class late_start
user camera
group camera system inet input
service conn_init /system/bin/logwrapper /system/bin/conn_init
class late_start
user system
group system wifi
oneshot