| #!/system/bin/sh |
| # Copyright (c) 2009-2014, The Linux Foundation. All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions are met: |
| # * Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # * Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # * Neither the name of The Linux Foundation nor |
| # the names of its contributors may be used to endorse or promote |
| # products derived from this software without specific prior written |
| # permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| # IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| # NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
| # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
| # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| # |
| |
| # Actions on fast factory test mode |
| chown -h bluetooth.bluetooth /sys/module/bluetooth_power/parameters/power |
| chown -h bluetooth.bluetooth /sys/class/rfkill/rfkill0/type |
| chown -h bluetooth.bluetooth /sys/class/rfkill/rfkill0/state |
| chown -h bluetooth.bluetooth /proc/bluetooth/sleep/proto |
| chown -h system.system /sys/module/sco/parameters/disable_esco |
| chown -h bluetooth.bluetooth /sys/module/hci_smd/parameters/hcismd_set |
| chmod -h 0660 /sys/module/bluetooth_power/parameters/power |
| chmod -h 0660 /sys/module/hci_smd/parameters/hcismd_set |
| chmod -h 0660 /sys/class/rfkill/rfkill0/state |
| chmod -h 0660 /proc/bluetooth/sleep/proto |
| chown -h bluetooth.bluetooth /dev/ttyHS0 |
| chmod -h 0660 /dev/ttyHS0 |
| chown -h bluetooth.bluetooth /sys/devices/platform/msm_serial_hs.0/clock |
| chmod -h 0660 /sys/devices/platform/msm_serial_hs.0/clock |
| |
| chmod -h 0660 /dev/ttyHS2 |
| chown -h bluetooth.bluetooth /dev/ttyHS2 |
| |
| #Create QMUX deamon socket area |
| mkdir -p /dev/socket/qmux_radio |
| chown -h radio.radio /dev/socket/qmux_radio |
| chmod -h 2770 /dev/socket/qmux_radio |
| mkdir -p /dev/socket/qmux_audio |
| chown -h media.audio /dev/socket/qmux_audio |
| chmod -h 2770 /dev/socket/qmux_audio |
| mkdir -p /dev/socket/qmux_bluetooth |
| chown -h bluetooth.bluetooth /dev/socket/qmux_bluetooth |
| chmod -h 2770 /dev/socket/qmux_bluetooth |
| mkdir -p /dev/socket/qmux_gps |
| chown -h gps.gps /dev/socket/qmux_gps |
| chmod -h 2770 /dev/socket/qmux_gps |
| |
| # Allow QMUX daemon to assign port open wait time |
| chown -h radio.radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait |
| |
| setprop wifi.interface wlan0 |
| |
| setprop ro.telephony.call_ring.multiple false |
| |
| #Remove SUID bit for iproute2 ip tool |
| chmod -h 0755 /system/bin/ip |
| |
| chmod -h 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state |
| |
| # setup permissions for fb1 related nodes |
| chown -h system.graphics /sys/class/graphics/fb1/hpd |
| chown -h system.system /sys/class/graphics/fb1/hdcp/tp |
| chmod -h 0664 /sys/devices/virtual/graphics/fb1/hpd |
| chmod -h 0664 /sys/devices/virtual/graphics/fb1/hdcp/tp |
| chmod -h 0664 /sys/devices/virtual/graphics/fb1/video_mode |
| chmod -h 0664 /sys/devices/virtual/graphics/fb1/format_3d |
| |
| # Change owner and group for media server and surface flinger |
| chown -h system.system /sys/devices/virtual/graphics/fb1/format_3d |
| |
| #For bridgemgr daemon to inform the USB driver of the correct transport |
| chown -h radio.radio /sys/class/android_usb/f_rmnet_smd_sdio/transport |
| |
| #To allow interfaces to get v6 address when tethering is enabled |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet0/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet1/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet2/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet3/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet4/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet5/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet6/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet7/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra |
| echo 2 > /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra |
| |
| # To prevent out of order acknowledgements from making |
| # connection tracking to treat them as not belonging to |
| # the connection they belong to. |
| # Otherwise, a weird issue happens in which some long |
| # connections on high-throughput links get dropped when |
| # an ack packet comes out of order |
| echo 1 > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal |
| |
| #TODO: |
| # basic network init |
| # ifup lo |
| # hostname localhost |
| # domainname localdomain |
| |
| # set RLIMIT_NICE to allow priorities from 19 to -20 |
| # setrlimit 13 40 40 |
| |
| # Memory management. Basic kernel parameters, and allow the high |
| # level system server to be able to adjust the kernel OOM driver |
| # parameters to match how it is managing things. |
| echo 1 > /proc/sys/vm/overcommit_memory |
| echo 4 > /proc/sys/vm/min_free_order_shift |
| chown -h root.system /sys/module/lowmemorykiller/parameters/adj |
| chmod -h 0664 /sys/module/lowmemorykiller/parameters/adj |
| chown -h root.system /sys/module/lowmemorykiller/parameters/minfree |
| chmod -h 0664 /sys/module/lowmemorykiller/parameters/minfree |
| |
| # Tweak background writeout |
| echo 200 > /proc/sys/vm/dirty_expire_centisecs |
| echo 5 > /proc/sys/vm/dirty_background_ratio |
| |
| # Permissions for System Server and daemons. |
| chown -h radio.system /sys/android_power/state |
| chown -h radio.system /sys/android_power/request_state |
| chown -h radio.system /sys/android_power/acquire_full_wake_lock |
| chown -h radio.system /sys/android_power/acquire_partial_wake_lock |
| chown -h radio.system /sys/android_power/release_wake_lock |
| chown -h system.system /sys/power/autosleep |
| chown -h system.system /sys/power/state |
| chown -h system.system /sys/power/wakeup_count |
| chown -h radio.system /sys/power/wake_lock |
| chown -h radio.system /sys/power/wake_unlock |
| chmod -h 0660 /sys/power/state |
| chmod -h 0660 /sys/power/wake_lock |
| chmod -h 0660 /sys/power/wake_unlock |
| |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/timer_rate |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/boost |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/boost |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/boostpulse |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/input_boost |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/input_boost |
| chown -h system.system /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration |
| chmod -h 0660 /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration |
| |
| # Assume SMP uses shared cpufreq policy for all CPUs |
| chown -h system.system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq |
| chmod -h 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq |
| |
| chown -h system.system /sys/class/timed_output/vibrator/enable |
| chown -h system.system /sys/class/leds/keyboard-backlight/brightness |
| chown -h system.system /sys/class/leds/lcd-backlight/brightness |
| chown -h system.system /sys/class/leds/button-backlight/brightness |
| chown -h system.system /sys/class/leds/jogball-backlight/brightness |
| chown -h system.system /sys/class/leds/red/brightness |
| chown -h system.system /sys/class/leds/green/brightness |
| chown -h system.system /sys/class/leds/blue/brightness |
| chown -h system.system /sys/class/leds/red/device/grpfreq |
| chown -h system.system /sys/class/leds/red/device/grppwm |
| chown -h system.system /sys/class/leds/red/device/blink |
| chown -h system.system /sys/class/leds/red/brightness |
| chown -h system.system /sys/class/leds/green/brightness |
| chown -h system.system /sys/class/leds/blue/brightness |
| chown -h system.system /sys/class/leds/red/device/grpfreq |
| chown -h system.system /sys/class/leds/red/device/grppwm |
| chown -h system.system /sys/class/leds/red/device/blink |
| chown -h system.system /sys/class/timed_output/vibrator/enable |
| chown -h system.system /sys/module/sco/parameters/disable_esco |
| chown -h system.system /sys/kernel/ipv4/tcp_wmem_min |
| chown -h system.system /sys/kernel/ipv4/tcp_wmem_def |
| chown -h system.system /sys/kernel/ipv4/tcp_wmem_max |
| chown -h system.system /sys/kernel/ipv4/tcp_rmem_min |
| chown -h system.system /sys/kernel/ipv4/tcp_rmem_def |
| chown -h system.system /sys/kernel/ipv4/tcp_rmem_max |
| chown -h root radio /proc/cmdline |
| |
| # Define TCP buffer sizes for various networks |
| # ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, |
| setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208 |
| setprop net.tcp.buffersize.wifi 524288,1048576,2097152,262144,524288,1048576 |
| setprop net.tcp.buffersize.lte 524288,1048576,2097152,262144,524288,1048576 |
| setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208 |
| setprop net.tcp.buffersize.hspa 4094,87380,1220608,4096,16384,1220608 |
| setprop net.tcp.buffersize.hsupa 4094,87380,1220608,4096,16384,1220608 |
| setprop net.tcp.buffersize.hsdpa 4094,87380,1220608,4096,16384,1220608 |
| setprop net.tcp.buffersize.hspap 4094,87380,1220608,4096,16384,1220608 |
| setprop net.tcp.buffersize.edge 4093,26280,35040,4096,16384,35040 |
| setprop net.tcp.buffersize.gprs 4092,8760,11680,4096,8760,11680 |
| setprop net.tcp.buffersize.evdo 4094,87380,262144,4096,16384,262144 |
| |
| # Assign TCP buffer thresholds to be ceiling value of technology maximums |
| # Increased technology maximums should be reflected here. |
| echo 2097152 > /proc/sys/net/core/rmem_max |
| echo 2097152 > /proc/sys/net/core/wmem_max |
| |
| # Set the property to indicate type of virtual display to 0 |
| # 0 indicates that virtual display is not a Wifi display and that the |
| # session is not exercised through RemoteDisplay in the android framework |
| setprop persist.sys.wfd.virtual 0 |
| |
| # Set this property so surfaceflinger is not started by system_init |
| setprop system_init.startsurfaceflinger 0 |
| |
| # Configurate USB in FFBM mode, two big change for USB. |
| # 1) Using diag,adb in FFBM mode, too many interface will cause |
| # problem in factory for multi-line test |
| # 2) Not config usb serialnum. Using the default value:"0123456789ABCDEF" |
| # Keep the USB serialnum no change for devices. this fix the problem |
| # of port change for various devices. |
| chown -h root.system /sys/devices/platform/msm_hsusb/gadget/wakeup |
| chmod -h 220 /sys/devices/platform/msm_hsusb/gadget/wakeup |
| setprop persist.sys.usb.config diag,adb |
| |
| # Start the following services needed for fftm |
| start logd |
| start config_bluetooth |
| start media |
| start fastmmi |
| start wcnss-service |
| start qcom-post-boot |
| start rmt_storage |
| start qcom-c_main-sh |
| start irsc_util |
| start qcamerasvr |
| start qcomsysd |
| start ptt_ffbm |
| start ftm_ffbm |