#
# Copyright 2014 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.fugu.usb.rc
import init.intel.tools.rc
import init.fugu.diag.rc
on early-init
mount debugfs debugfs /sys/kernel/debug mode=0755
# IMG Graphics
symlink /dev/dri/card0 /dev/card0
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
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
# Android creates by-name disk links with the disk controller
# in the generated path, so that the names pulled out of the GPT
# can be associated with the correct disk. Create a shortcut to
# /dev/block/by-name so that we can use the same fstabs everywhere.
symlink /dev/block/pci/pci0000:00/0000:00:01.0/by-name /dev/block/by-name
# 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
# KSM options
write /sys/kernel/mm/ksm/pages_to_scan 100
write /sys/kernel/mm/ksm/sleep_millisecs 500
write /sys/kernel/mm/ksm/run 1
# Mount the sep filesystem
mount sepfs sepfs /sys/fs/sepfs
on fs
mkdir /logs 0770 system log
mkdir /factory 0775 system system
mount_all ./fstab.fugu
swapon_all ./fstab.fugu
setprop ro.crypto.fuse_sdcard true
restorecon_recursive /factory
on early-boot
# set RLIMIT_MEMLOCK to 64MB
setrlimit 8 67108864 67108864
setprop ro.audio.flinger_standbytime_ms 600000
on boot
# 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 1500000
write /proc/sys/net/core/wmem_max 1500000
write /proc/sys/net/ipv4/tcp_limit_output_bytes 1500000
setprop net.tcp.buffersize.wifi 500000,1000000,1500000,500000,1000000,1500000
chown system system /sys/class/backlight/psb-bl/brightness
chown system system /sys/class/backlight/psb-bl/max_brightness
chown system system /sys/class/backlight/psb-bl/actual_brightness
chmod 0664 /sys/class/backlight/psb-bl/brightness
chmod 0664 /sys/class/backlight/psb-bl/max_brightness
chmod 0664 /sys/class/backlight/psb-bl/actual_brightness
# Wifi
setprop wifi.interface wlan0
on post-fs
# Performance tweaks for interactive governor
chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chown system system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
chmod 0660 /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
chown system system /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
chmod 0660 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
chown system system /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
chmod 0660 /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate
chown system system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse
chown system system /sys/devices/system/cpu/cpufreq/interactive/touchboostpulse
chown system system /sys/devices/system/cpu/cpufreq/interactive/touchboostpulse_duration
chown system system /sys/devices/system/cpu/cpufreq/interactive/touchboost_freq
chmod 0220 /sys/devices/system/cpu/cpufreq/interactive/touchboostpulse
chmod 0220 /sys/devices/system/cpu/cpufreq/interactive/boostpulse
# Tune interactive governor parameters for Android TV UI animations
write /sys/devices/system/cpu/cpufreq/interactive/timer_rate 4000
write /sys/devices/system/cpu/cpufreq/interactive/timer_slack 16000
write /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load 90
write /sys/devices/system/cpu/cpufreq/interactive/target_loads 70
write /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration 800000
# SEP
copy /system/etc/security/sep_policy.conf /sys/fs/sepfs/load
chown system system /dev/dx_sep_q0
chmod 0666 /dev/dx_sep_q0
chown system system /dev/dx_sep_q1
chmod 0666 /dev/dx_sep_q1
# hdmi cec
chown system system /sys/module/tngdisp/parameters/hdmi_state
chmod 0440 /sys/module/tngdisp/parameters/hdmi_state
chown system system /sys/module/tngdisp/parameters/hdmi_edid_src_phy_addr
chmod 0440 /sys/module/tngdisp/parameters/hdmi_edid_src_phy_addr
on post-fs-data
mkdir /data/media 0770 media_rw media_rw
# 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/dhcp 0770 dhcp wifi
mkdir /data/tombstones 0771 system system
# Bluetooth
setprop ro.bt.bdaddr_path "/factory/bt/bd_addr.conf"
chmod 0660 /sys/class/rfkill/rfkill2/state
chown bluetooth net_bt_stack /sys/class/rfkill/rfkill2/state
chown bluetooth net_bt_stack /sys/class/rfkill/rfkill2/type
# Create directory used by audio subsystem
mkdir /data/misc/audio 0770 audio audio
mkdir /data/system 0775 system system
setprop vold.post_fs_data_done 1
setprop init.post_fs_data.bootreason ${ro.boot.bootreason}
# itux
# Set this property to enable Thermal service
setprop persist.service.thermal 1
# Properties for Thermal Service
setprop persist.thermal.turbo.dynamic 1
setprop ro.thermal.ituxversion 3.0
setprop persist.thermal.shutdown.msg 0
setprop persist.thermal.shutdown.vibra 0
setprop persist.thermal.shutdown.tone 0
chown system system /sys/module/intel_mid_osip/parameters/force_shutdown_occured
chown system system /sys/module/intel_mid_osip/parameters/thermal_shutdown_occured
chown system system /sys/devices/platform/coretemp.0/temp2_threshold1
chown system system /sys/devices/platform/coretemp.0/temp2_threshold2
chown system system /sys/devices/virtual/thermal/thermal_zone6/emul_temp
chown system system /sys/devices/virtual/thermal/thermal_zone7/emul_temp
# Stop led blinking and reduce brightness
write /sys/class/leds/white/device/led_lighting_effect 1
write /sys/class/leds/white/brightness 0
# Playready
mkdir /data/mediadrm/playready/ 0770 mediadrm mediadrm
copy /system/vendor/firmware/PR-ModelCert /data/mediadrm/playready/bgroupcert.dat
chown mediadrm mediadrm /data/mediadrm/playready/bgroupcert.dat
chmod 0440 /data/mediadrm/playready/bgroupcert.dat
on property:init.post_fs_data.bootreason=*
# Create dump dir and collect dumps. (use the same location as in init.rc)
mkdir /data/dontpanic 0750 root log
copy /proc/emmc_ipanic_console /data/dontpanic/ipanic_console
chown root log /data/dontpanic/ipanic_console
chmod 0640 /data/dontpanic/ipanic_console
copy /proc/emmc_ipanic_threads /data/dontpanic/ipanic_threads
chown root log /data/dontpanic/ipanic_threads
chmod 0640 /data/dontpanic/ipanic_threads
copy /proc/emmc_ipanic_gbuffer /data/dontpanic/ipanic_gbuffer
chown root log /data/dontpanic/ipanic_gbuffer
chmod 0640 /data/dontpanic/ipanic_gbuffer
# Clear panic partition
write /proc/emmc_ipanic_header 1
on property:init.svc.wpa_supplicant=stopped
stop dhcpcd
service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -g@android:wpa_wlan0
class main
socket wpa_wlan0 dgram 660 wifi wifi
group system wifi inet bluetooth
disabled
oneshot
service p2p_supplicant /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-m/data/misc/wifi/p2p_supplicant.conf \
-puse_p2p_group_interface=1p2p_device=1use_multi_chan_concurrent=1 \
-O/data/misc/wifi/sockets \
-e/data/misc/wifi/entropy.bin \
-g@android:wpa_wlan0
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
service dhcpcd_eth0 /system/bin/dhcpcd -aABDKL
class main
disabled
oneshot
service dhcpcd_wlan0 /system/bin/dhcpcd -ABKL
class main
disabled
oneshot
service dhcpcd_p2p /system/bin/dhcpcd -aABKL
class main
disabled
oneshot
service iprenew_eth0 /system/bin/dhcpcd -n
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
# Bluetooth related services
service BtFwLoader /system/bin/BtFwLoader
class main
group bluetooth net_bt_stack
user bluetooth
oneshot
service dhcpcd_bt-pan /system/bin/dhcpcd -ABKL
class main
group bluetooth wifi system dhcp
disabled
oneshot
service iprenew_bt-pan /system/bin/dhcpcd -n
group bluetooth system dhcp
disabled
oneshot
# 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
# 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
# interval:60s margin:20s
service watchdogd /sbin/watchdogd 60 20
class core
oneshot
seclabel u:r:watchdogd:s0
# Reset the watchdog counter once boot is completed
on property:sys.boot_completed=1
write /sys/devices/virtual/misc/watchdog/counter "0"
service pvrsrvctl /system/vendor/bin/pvrsrvctl --no-module --start
class core
oneshot
user root
# Enable native bridge for target executables
on early-init
mount binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc
on property:ro.enable.native.bridge.exec=1
copy /system/etc/binfmt_misc/arm_exe /proc/sys/fs/binfmt_misc/register
copy /system/etc/binfmt_misc/arm_dyn /proc/sys/fs/binfmt_misc/register