diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 1a06807..fd21ea7 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -1,2 +1,2 @@
PRODUCT_MAKEFILES := \
- $(LOCAL_DIR)/device_peregrine.mk
+ $(LOCAL_DIR)/full_peregrine.mk
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 028c4d0..47e5e03 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -29,13 +29,18 @@
LOCAL_PATH := device/motorola/perergine
BOARD_CUSTOM_BOOTIMG_MK := device/motorola/peregrine/mkbootimg.mk
-TARGET_RECOVERY_FSTAB := $(LOCAL_PATH)/rootdir/etc/fstab.qcom
+BOARD_HAS_NO_MISC_PARTITION := true
+
+TARGET_UNIFIED_DEVICE := true
+TARGET_INIT_VENDOR_LIB := libinit_msm
-# fix this up by examining /proc/mtd on a running device
BOARD_USERDATAIMAGE_PARTITION_SIZE := 8589934592
+TARGET_RECOVERY_FSTAB := device/motorola/peregrine/rootdir/etc/fstab.qcom
+
#TWRP
DEVICE_RESOLUTION := 720x1280
TW_IGNORE_MAJOR_AXIS_0 := true
TW_EXTERNAL_STORAGE_PATH := "/external_sd"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "external_sd"
+#TW_CUSTOM_POWER_BUTTON := 107
diff --git a/README.mkdn b/README.mkdn
new file mode 100644
index 0000000..a4f2ff8
--- /dev/null
+++ b/README.mkdn
@@ -0,0 +1,37 @@
+HOW-TO for building CyanogenMod
+_______________________________
+
+- First, follow http://source.android.com/source to figure out how to get your build environment running, etc
+- Make a directory for your build source, then sync CyanogenMod: repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
+- Then you need to add this to .repo/local_manifests/roomservice.xml (if you dont have it then create it and put this in):
+
+
+
+
+
+
+
+
+
+
+
+
+
+- Do a repo sync and it should grab everything you need
+- Plug in your phone, and run the extract files script against a working cyanogenmod build
+- Change directory to the top, and source the build environment setup: . build/envsetup.sh
+- Use the command brunch peregrine, and wait as your meal cooks.
+- It should output an update.zip in out/target/product/peregrine/... you've made CyanogenMod. Congratulations.
+
+
+
+List of Contributers to the device tree
+___________________________________________________________________________
+
+- DHacker
+- Shabbypenguin
+- SomCom3x
+
+A full CHANGELOG for CyanogenMod can be found in its vendor: https://github.com/CyanogenMod/android_vendor_cm/blob/ics/CHANGELOG.mkdn
+
+Keep in mind guys, CyanogenMod is open source, and a community project. Get involved, and help us code for a better future :D
diff --git a/cm.mk b/cm.mk
index cc2cfe4..2e02c6a 100644
--- a/cm.mk
+++ b/cm.mk
@@ -1,18 +1,13 @@
-## Specify phone tech before including full_phone
-$(call inherit-product, vendor/cm/config/gsm.mk)
-
-# Release name
-PRODUCT_RELEASE_NAME := peregrine
-
# Inherit some common CM stuff.
$(call inherit-product, vendor/cm/config/common_full_phone.mk)
+# Boot animation
+TARGET_SCREEN_WIDTH := 720
+TARGET_SCREEN_HEIGHT := 1280
+
# Inherit device configuration
-$(call inherit-product, device/motorola/peregrine/device_peregrine.mk)
+$(call inherit-product, device/motorola/peregrine/full_peregrine.mk)
## Device identifier. This must come after all inclusions
-PRODUCT_DEVICE := peregrine
+PRODUCT_RELEASE_NAME := peregrine
PRODUCT_NAME := cm_peregrine
-PRODUCT_BRAND := motorola
-PRODUCT_MODEL := peregrine
-PRODUCT_MANUFACTURER := motorola
diff --git a/device-proprietary-files.txt b/device-proprietary-files.txt
new file mode 100644
index 0000000..9aecffe
--- /dev/null
+++ b/device-proprietary-files.txt
@@ -0,0 +1,2 @@
+# proprietary file list
+# bin/filename
diff --git a/device_peregrine.mk b/device_peregrine.mk
index d862e3f..e69b39e 100644
--- a/device_peregrine.mk
+++ b/device_peregrine.mk
@@ -1,22 +1,27 @@
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
-# The gps config appropriate for this device
-$(call inherit-product, device/common/gps/gps_us_supl.mk)
-
$(call inherit-product-if-exists, vendor/motorola/peregrine/peregrine-vendor.mk)
-DEVICE_PACKAGE_OVERLAYS += device/motorola/peregrine/overlay
+LOCAL_PATH := device/motorola/peregrine
-$(call inherit-product, build/target/product/full.mk)
+# peregrine specific overlay
+DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/overlay
# Ramdisk
PRODUCT_PACKAGES += \
- fstab.qcom
+ init.qcom.rc \
+ fstab.qcom
# TWRP
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/rootdir/etc/twrp.fstab:recovery/root/etc/twrp.fstab
-PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
-PRODUCT_NAME := full_peregrine
-PRODUCT_DEVICE := peregrine
+PRODUCT_LOCALES := en_US
+PRODUCT_LOCALES += xhdpi
+PRODUCT_AAPT_CONFIG := normal hdpi xhdpi
+PRODUCT_AAPT_PREF_CONFIG := xhdpi
+
+$(call inherit-product, frameworks/native/build/phone-xhdpi-1024-dalvik-heap.mk)
+
+$(call inherit-product, device/motorola/msm8226-common/msm8226.mk)
+$(call inherit-product, device/motorola/msm8226-common/keylayout/keylayout.mk)
diff --git a/extract-files.sh b/extract-files.sh
new file mode 100755
index 0000000..246c631
--- /dev/null
+++ b/extract-files.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+export VENDOR=motorola
+export DEVICE=peregrine
+# Comment these out if there is no common device tree for this device
+export COMMON_DEVICE=msm8226-common
+export BOARD_VENDOR=motorola-qcom
+export TARGET_BOARD_PLATFORM=msm8226
+
+../$COMMON_DEVICE/extract-files.sh $@
diff --git a/full_peregrine.mk b/full_peregrine.mk
new file mode 100644
index 0000000..648054d
--- /dev/null
+++ b/full_peregrine.mk
@@ -0,0 +1,36 @@
+#
+# Copyright (C) 2013 The CyanogenMod 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.
+#
+
+#
+# This file is the build configuration for a full Android
+# build for peregrine hardware. This cleanly combines a set of
+# device-specific aspects (drivers) with a device-agnostic
+# product configuration (apps). Except for a few implementation
+# details, it only fundamentally contains two inherit-product
+# lines, full and peregrine, hence its name.
+#
+
+# Inherit from those products. Most specific first.
+$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)
+# Inherit from peregrine device
+$(call inherit-product, device/motorola/peregrine/device_peregrine.mk)
+
+## Device identifier. This must come after all inclusions
+PRODUCT_DEVICE := peregrine
+PRODUCT_NAME := full_peregrine
+PRODUCT_BRAND := motorola
+PRODUCT_MODEL := peregrine
+PRODUCT_MANUFACTURER := motorola
diff --git a/overlay/frameworks/base/core/res/res/xml/storage_list.xml b/overlay/frameworks/base/core/res/res/xml/storage_list.xml
new file mode 100644
index 0000000..67ff1e4
--- /dev/null
+++ b/overlay/frameworks/base/core/res/res/xml/storage_list.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/overlay/packages/apps/Phone b/overlay/packages/apps/Phone
new file mode 120000
index 0000000..0f8d39e
--- /dev/null
+++ b/overlay/packages/apps/Phone
@@ -0,0 +1 @@
+../services/Telephony/
\ No newline at end of file
diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml
new file mode 100644
index 0000000..aa26186
--- /dev/null
+++ b/overlay/packages/services/Telephony/res/values/config.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+ true
+
+
+ true
+
diff --git a/rootdir/Android.mk b/rootdir/Android.mk
index 4477b0f..bfb2319 100644
--- a/rootdir/Android.mk
+++ b/rootdir/Android.mk
@@ -8,3 +8,11 @@ LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := etc/fstab.qcom
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := init.qcom.rc
+LOCAL_MODULE_TAGS := optional eng
+LOCAL_MODULE_CLASS := ETC
+LOCAL_SRC_FILES := etc/init.qcom.rc
+LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
+include $(BUILD_PREBUILT)
diff --git a/rootdir/etc/fstab.qcom b/rootdir/etc/fstab.qcom
index 93efb3b..1101fc5 100644
--- a/rootdir/etc/fstab.qcom
+++ b/rootdir/etc/fstab.qcom
@@ -10,6 +10,8 @@
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 defaults recoveryonly
/dev/block/platform/msm_sdcc.1/by-name/boot /boot emmc defaults recoveryonly
/dev/block/platform/msm_sdcc.1/by-name/recovery /recovery emmc defaults recoveryonly
-/devices/platform/msm_sdcc.3/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
+
+/dev/block/mmcblk1p1 /external_sd auto default recoveryonly
+/devices/msm_sdcc.2/mmc_host auto vfat defaults voldmanaged=sdcard1:auto,migrate=target,noemulatedsd
/devices/platform/msm_hsusb_host auto auto defaults voldmanaged=usbdisk:auto
/dev/block/zram0 none swap defaults zramsize=134217728
diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc
new file mode 100755
index 0000000..09673fd
--- /dev/null
+++ b/rootdir/etc/init.qcom.rc
@@ -0,0 +1,640 @@
+# Copyright (c) 2009-2012,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.
+#
+
+import init.qcom.usb.rc
+# import init.target.rc
+
+on early-init
+ write /sys/block/mmcblk0/queue/scheduler noop
+
+on init
+ loglevel 8
+
+ # Set permissions for persist partition
+ mkdir /persist 0771 system system
+ # See storage config details at http://source.android.com/tech/storage/
+ mkdir /mnt/shell/emulated 0700 shell shell
+ mkdir /storage/emulated 0555 root root
+
+ #External storage directories
+ mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
+ mkdir /storage/sdcard1 0700 root root
+ mkdir /storage/emulated/legacy 0555 root root
+ mkdir /mnt/media_rw/usbdisk 0700 media_rw media_rw
+ mkdir /storage/usbdisk 0700 root root
+
+ export EXTERNAL_STORAGE /storage/emulated/legacy
+ export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
+ export EMULATED_STORAGE_TARGET /storage/emulated
+ export SECONDARY_STORAGE /storage/sdcard1
+
+ # Support legacy paths
+ symlink /storage/emulated/legacy /sdcard
+ symlink /storage/emulated/legacy /mnt/sdcard
+ symlink /storage/emulated/legacy /storage/sdcard0
+ symlink /storage/usbdisk /usbdisk
+ symlink /storage/usbdisk /mnt/usbdisk
+
+on fs
+ setprop ro.crypto.fuse_sdcard true
+
+on early-boot
+ # set RLIMIT_MEMLOCK to 64MB
+ setrlimit 8 67108864 67108864
+ # Allow subsystem (modem etc) debugging
+ write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug}
+ exec /system/bin/sh /init.qcom.early_boot.sh ${ro.board.platform}
+ exec /system/bin/sh /init.qcom.syspart_fixup.sh ${ro.board.platform} ${ro.serialno}
+
+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 bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm
+ chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite
+ 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 0660 /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 /sys/module/hci_uart/parameters/ath_lpm
+ chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite
+ 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
+
+ chmod 0660 /dev/ttyHS2
+ chown bluetooth bluetooth /dev/ttyHS2
+
+ #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
+
+ # Prevents permission denied error for telephony
+ chmod 0644 /proc/cmdline
+
+ setprop wifi.interface wlan0
+
+# Define TCP buffer sizes for various networks
+# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
+ setprop net.tcp.buffersize.wifi 524288,2097152,4194304,262144,524288,1048576
+
+
+ setprop ro.telephony.call_ring.multiple false
+
+ #Remove SUID bit for iproute2 ip tool
+ chmod 0755 /system/bin/ip
+
+
+ chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state
+
+ #For bridgemgr daemon to inform the USB driver of the correct transport
+ chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport
+
+ # For setting tcp delayed ack
+ chown system system /sys/kernel/ipv4/tcp_delack_seg
+ chown system system /sys/kernel/ipv4/tcp_use_userconfig
+
+# Define TCP delayed ack settings for WiFi & LTE
+ setprop net.tcp.delack.default 1
+ setprop net.tcp.delack.wifi 20
+ setprop net.tcp.delack.lte 8
+ setprop net.tcp.usercfg.default 0
+ setprop net.tcp.usercfg.wifi 1
+ setprop net.tcp.usercfg.lte 1
+
+ #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
+ write /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra 2
+ write /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra 2
+ write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2
+ write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2
+
+ # 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
+ write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1
+
+ # NFC local data and nfcee xml storage
+ mkdir /data/nfc 0770 nfc nfc
+ mkdir /data/nfc/param 0770 nfc nfc
+
+ # Flash storage isn't a good entropy source, and only causes locking
+ # overhead in the kernel. Turn it off.
+ write /sys/block/mmcblk0/queue/add_random 0
+
+ setprop ro.hw.device ${ro.boot.device}
+ setprop ro.hw.hwrev ${ro.boot.hwrev}
+ setprop ro.hw.radio ${ro.boot.radio}
+
+ # activate zram
+ swapon_all fstab.qcom
+ write /proc/sys/vm/page-cluster
+
+# 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 0770 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
+ chown dhcp dhcp /data/misc/dhcp
+
+ # Create directory used by audio subsystem
+ mkdir /data/misc/audio 0770 audio audio
+
+ # Create directory used by the DASH client
+ mkdir /data/misc/dash 0770 media 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 directories for Location services
+ mkdir /data/misc/location 0770 gps gps
+ mkdir /data/misc/location/mq 0770 gps gps
+ mkdir /data/misc/location/xtwifi 0770 gps gps
+ mkdir /data/misc/location/gpsone_d 0770 system gps
+ mkdir /data/misc/location/quipc 0770 gps system
+ mkdir /data/misc/location/gsiff 0770 gps gps
+
+ #Create directory from IMS services
+ mkdir /data/shared 0755
+ chown system system /data/shared
+
+ #Create directory for FOTA
+ mkdir /data/fota 0771
+ chown system system /data/fota
+
+ #Create directory for hostapd
+ mkdir /data/hostapd 0770 system wifi
+
+ # 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
+
+ setprop vold.post_fs_data_done 1
+
+ #Create a folder for SRS to be able to create a usercfg file
+ mkdir /data/data/media 0770 media media
+
+on property:init.svc.surfaceflinger=stopped
+ stop ppd
+ stop hdmid
+
+on property:init.svc.wpa_supplicant=stopped
+ stop dhcpcd
+
+on property:bluetooth.isEnabled=true
+ start btwlancoex
+ write /sys/class/bluetooth/hci0/idle_timeout 7000
+
+service qcom-c_core-sh /system/bin/sh /init.qcom.class_core.sh
+ class core
+ user root
+ oneshot
+
+service qcom-c_main-sh /system/bin/sh /init.class_main.sh
+ class main
+ user root
+ oneshot
+
+service ril-qmi /system/bin/sh /init.qcom.ril.sh
+ class main
+ user root
+ oneshot
+
+on property:vold.decrypt=trigger_restart_framework
+ start qcom-c_main-sh
+ start config_bluetooth
+
+on property:persist.env.fastdorm.enabled=true
+ setprop persist.radio.data_no_toggle 1
+
+service irsc_util /system/bin/logwrapper /system/bin/irsc_util "/etc/sec_config"
+ class main
+ user root
+ oneshot
+
+service rmt_storage /system/bin/rmt_storage
+ class core
+ user root
+ disabled
+
+on property:ro.boot.emmc=true
+ start rmt_storage
+
+service rfs_access /system/bin/rfs_access
+ class core
+ user system
+ group system net_raw
+
+on property:ro.boot.emmc=true
+ start rfs_access
+
+service config_bluetooth /system/bin/sh /system/etc/init.qcom.bt.sh
+ class core
+ user root
+ oneshot
+
+service hciattach /system/bin/sh /system/etc/init.qcom.bt.sh
+ class late_start
+ user bluetooth
+ group bluetooth net_bt_admin
+ disabled
+ oneshot
+
+on property:bluetooth.hciattach=true
+ start hciattach
+
+on property:bluetooth.hciattach=false
+ setprop bluetooth.status off
+
+service bridgemgrd /system/bin/bridgemgrd
+ class late_start
+ user radio
+ group radio qcom_diag
+ disabled
+
+service port-bridge /system/bin/port-bridge /dev/smd0 /dev/ttyGS0
+ class late_start
+ user system
+ group system inet
+ disabled
+
+service qmiproxy /system/bin/qmiproxy
+ class main
+ user radio
+ group radio qcom_diag
+ disabled
+
+# 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 qcom_diag
+ disabled
+
+service netmgrd /system/bin/netmgrd
+ class main
+ disabled
+
+on property:ro.use_data_netmgrd=false
+ # netmgr not supported on specific target
+ stop netmgrd
+
+# Adjust socket buffer to enlarge TCP receive window for high bandwidth
+# but only if ro.data.large_tcp_window_size property is set.
+on property:ro.data.large_tcp_window_size=true
+ write /proc/sys/net/ipv4/tcp_adv_win_scale 2
+
+service btwlancoex /system/bin/sh /system/etc/init.qcom.coex.sh
+ class late_start
+ user bluetooth
+ group bluetooth net_bt_admin inet net_admin net_raw
+ disabled
+ oneshot
+
+service p2p_supplicant /system/bin/wpa_supplicant \
+ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
+ -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \
+ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
+ -I/system/etc/wifi/wpa_supplicant_overlay.conf \
+ -O/data/misc/wifi/sockets -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 \
+ -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 ptt_socket_app /system/bin/ptt_socket_app -d
+ class main
+ user root
+ group root
+ oneshot
+
+service ptt_ffbm /system/bin/ptt_socket_app -f -d
+ user root
+ group root
+ disabled
+ oneshot
+
+service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG
+ class late_start
+ disabled
+ oneshot
+
+service iprenew_bt-pan /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 gpsone_daemon /system/bin/gpsone_daemon
+ class late_start
+ user gps
+ group gps inet net_raw
+ disabled
+
+service quipc_igsn /system/bin/quipc_igsn
+ class late_start
+ user gps
+ group inet gps qcom_diag
+ disabled
+
+service quipc_main /system/bin/quipc_main
+ class late_start
+ user gps
+ group gps net_admin wifi inet qcom_diag
+ disabled
+
+service location_mq /system/bin/location-mq
+ class late_start
+ user gps
+ group gps
+ disabled
+
+service xtwifi_inet /system/bin/xtwifi-inet-agent
+ class late_start
+ user gps
+ group inet gps
+ disabled
+
+service xtwifi_client /system/bin/xtwifi-client
+ class late_start
+ user gps
+ group net_admin wifi inet gps
+ disabled
+
+service lowi-server /system/bin/lowi-server
+ class late_start
+ user gps
+ group gps net_admin wifi inet qcom_diag
+ disabled
+
+service fm_dl /system/bin/sh /system/etc/init.qcom.fm.sh
+ class late_start
+ user root
+ group system fm_radio
+ disabled
+ oneshot
+
+on property:crypto.driver.load=1
+ insmod /system/lib/modules/qce.ko
+ insmod /system/lib/modules/qcedev.ko
+
+on property:crypto.driver.load=0
+ exec /system/bin/rmmod qcedev.ko
+ exec /system/bin/rmmod qce.ko
+
+service qcom-sh /system/bin/sh /init.qcom.sh
+ class late_start
+ user root
+ oneshot
+
+service qcom-post-boot /system/bin/sh /system/etc/init.qcom.post_boot.sh
+ class late_start
+ user root
+ disabled
+ oneshot
+
+service wifi-crda /system/bin/sh /system/etc/init.crda.sh
+ class late_start
+ user root
+ disabled
+ oneshot
+
+on property:sys.boot_completed=1
+ start qcom-post-boot
+ write /sys/block/mmcblk0/queue/scheduler row
+
+service hostapd /system/bin/hostapd -dddd /data/hostapd/hostapd.conf
+ class late_start
+ user root
+ group root
+ oneshot
+ disabled
+
+service ds_fmc_appd /system/bin/ds_fmc_appd -p "rmnet0" -D
+ class late_start
+ group radio wifi inet
+ disabled
+ oneshot
+
+on property:persist.data.ds_fmc_app.mode=1
+ start ds_fmc_appd
+
+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 2
+
+service ril-daemon1 /system/bin/rild -c 1
+ class main
+ socket rild1 stream 660 root radio
+ socket rild-debug1 stream 660 radio system
+ user root
+ disabled
+ group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log
+
+service ril-daemon2 /system/bin/rild -c 2
+ class main
+ socket rild2 stream 660 root radio
+ socket rild-debug2 stream 660 radio system
+ user root
+ disabled
+ group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log
+
+service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
+ class late_start
+
+service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
+ class late_start
+ disabled
+
+service fuse_usbdisk /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/usbdisk /storage/usbdisk
+ class late_start
+ disabled
+
+# 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 ssr_diag /system/bin/ssr_diag
+ class late_start
+ user system
+ group system
+
+# SSR setting
+on property:persist.sys.ssr.restart_level=*
+ exec /system/bin/sh /init.qcom.ssr.sh ${persist.sys.ssr.restart_level}
+
+service hvdcp /system/bin/hvdcp
+ class core
+ user root
+ disabled
+
+on property:persist.usb.hvdcp.detect=true
+ start hvdcp
+
+on property:persist.usb.hvdcp.detect=false
+ stop hvdcp
+
+# CM Performance Profiles
+
+# Powersave
+on property:sys.perf.profile=0
+ start mpdecision
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor powersave
+ write /sys/class/devfreq/qcom,cpubw.55 powersave
+
+# Balanced
+on property:sys.perf.profile=1
+ start mpdecision
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
+ write /sys/class/devfreq/qcom,cpubw.55 msm_cpufreq
+
+# High performance
+on property:sys.perf.profile=2
+ stop mpdecision
+ write /sys/devices/system/cpu/cpu0/online 1
+ 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 performance
+ write /sys/class/devfreq/qcom,cpubw.65 performance
diff --git a/rootdir/etc/twrp.fstab b/rootdir/etc/twrp.fstab
index 50653bf..fc429ee 100644
--- a/rootdir/etc/twrp.fstab
+++ b/rootdir/etc/twrp.fstab
@@ -1,8 +1,20 @@
-# mount point fstype device
+# mount point fstype device
-/data f2fs /dev/block/platform/msm_sdcc.1/by-name/userdata flags=fsflags="inline_xattr"
+/data f2fs /dev/block/platform/msm_sdcc.1/by-name/userdata flags=fsflags="inline_xattr";length=-16384
/cache ext4 /dev/block/platform/msm_sdcc.1/by-name/cache
/system ext4 /dev/block/platform/msm_sdcc.1/by-name/system
/boot emmc /dev/block/platform/msm_sdcc.1/by-name/boot
/recovery emmc /dev/block/platform/msm_sdcc.1/by-name/recovery
-/external_sd vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1 flags=display="Micro SDcard";storage;wipeingui;removable
+/pds emmc /dev/block/platform/msm_sdcc.1/by-name/pds flags=backup=1;display=PDS
+/utags emmc /dev/block/platform/msm_sdcc.1/by-name/utags flags=backup=1;display=utags
+/persist emmc /dev/block/platform/msm_sdcc.1/by-name/persist flags=backup=1;display=persist
+# Some of those partitions (e.g. modem, fsg) are actually ext4, but shouldn't be mounted in normal circumstances.
+/modem emmc /dev/block/platform/msm_sdcc.1/by-name/modem flags=backup=1;display=NON-HLOS
+/modemst1 emmc /dev/block/mmcblk0p17 flags=backup=1;display=modemst1
+/modemst2 emmc /dev/block/mmcblk0p18 flags=backup=1;display=modemst2
+/fsg emmc /dev/block/mmcblk0p21 flags=backup=1;display=fsg
+/fsc emmc /dev/block/mmcblk0p22 flags=backup=1;display=fsc
+/sp emmc /dev/block/platform/msm_sdcc.1/by-name/sp flags=backup=1;display=sp
+/cid emmc /dev/block/mmcblk0p25 flags=backup=1;display=cid
+/external_sd auto /dev/block/mmcblk1p1 /dev/block/mmcblk1 flags=display="microSD card";storage;wipeingui;removable
+/usb-otg auto /dev/block/sda1 /dev/block/sda flags=display="USB OTG";storage;wipeingui;removable
diff --git a/system.prop b/system.prop
index 450bc8b..5f9c2f2 100644
--- a/system.prop
+++ b/system.prop
@@ -1,3 +1,4 @@
#
# system.prop for peregrine
#
+rild.libargs=-d /dev/smd0