====== Information ======
* Resources for the Google/Motorola Nexus 6
====== xda-developers ======
* https://forum.xda-developers.com/nexus-6
====== Latest platform-tools ======
===== Linux =====
* https://dl-ssl.google.com/android/repository/platform-tools-latest-linux.zip
===== Windows =====
* https://dl-ssl.google.com/android/repository/platform-tools-latest-windows.zip
* https://dl-ssl.google.com/android/repository/latest_usb_driver_windows.zip
====== Factory Image ======
* https://developers.google.com/android/nexus/images#shamu
====== Filesystem Maintenance ======
===== Notes =====
* Can only be done within TWRP Recovery either via built-in Terminal or over ADB
* Ideal to do before a clean ROM flash, after an improper shutdown, and/or after configuring all apps/copying over all data
===== Quick-commands =====
==== ext4 ====
=== Encrypted ===
* This expects ''/data'' and ''/cache'' to be ''ext4''
* This expects ''/data'' to be encrypted
* Boot TWRP, enter encryption password, and immediately run the following from a computer
adb shell "umount '/sdcard' && umount '/cache' && umount '/data' && e2fsck -y -f -v '/dev/block/mmcblk0p41' && e2fsck -y -f -v '/dev/block/mmcblk0p26' && e2fsck -y -f -v '/dev/block/mmcblk0p21' && e2fsck -y -f -v '/dev/block/mmcblk0p1' && e2fsck -y -f -v '/dev/block/dm-0' && e2fsck -y -f -v '/dev/block/mmcblk0p38' && mount '/system' && mount '/data' && mount '/cache' && mount '/firmware' && rm -Rf '/data/dalvik-cache' && fstrim -v '/system' && fstrim -v '/data' && fstrim -v '/cache' && fstrim -v '/firmware' && sync && umount '/system' && umount '/data' && umount '/cache' && umount '/firmware' && reboot"
=== Unencrypted ===
* This expects ''/data'' and ''/cache'' to be ''ext4''
* This expects ''/data'' to be unencrypted
* Boot TWRP, enter encryption password, and immediately run the following from a computer
adb shell "umount '/data' && umount '/cache' && umount '/sdcard' && e2fsck -y -f -v '/dev/block/mmcblk0p41' && e2fsck -y -f -v '/dev/block/mmcblk0p26' && e2fsck -y -f -v '/dev/block/mmcblk0p21' && e2fsck -y -f -v '/dev/block/mmcblk0p1' && e2fsck -y -f -v '/dev/block/mmcblk0p42' && e2fsck -y -f -v '/dev/block/mmcblk0p38' && mount '/system' && mount '/data' && mount '/cache' && mount '/firmware' && rm -Rf '/data/dalvik-cache' && fstrim -v '/system' && fstrim -v '/data' && fstrim -v '/cache' && fstrim -v '/firmware' && sync && umount '/system' && umount '/data' && umount '/cache' && umount '/firmware' && reboot"
===== Information =====
* ''/dev/block/mmcblk0p41'' is ''/system''
* ''/dev/block/mmcblk0p38'' is ''/cache''
* ''/dev/block/mmcblk0p42'' is ''/data'' and ''/sdcard''
* ''/dev/block/mmcblk0p1'' is ''/firmware''
* All 5 partitions are ''ext4''
===== Unmount Partitions =====
umount '/system'
umount '/cache'
umount '/data'
umount '/sdcard'
umount '/firmware'
==== AIO ====
****
umount '/system' '/cache' '/data' '/sdcard' '/firmware'
===== ext4 Filesystem Maintenance =====
e2fsck -y -f -v '/dev/block/mmcblk0p41'
e2fsck -y -f -v '/dev/block/mmcblk0p38'
e2fsck -y -f -v '/dev/block/mmcblk0p42'
e2fsck -y -f -v '/dev/block/mmcblk0p1'
===== Mount Partitions =====
mount '/system'
mount '/data'
mount '/cache'
mount '/firmware'
==== AIO ====
****
mount -a
===== Clear Dalvik/ART Cache =====
adb shell
mount '/data'
rm -Rf '/data/dalvik-cache'
===== fstrim =====
* If done immediately after booting TWRP, ''/data'' and ''/cache'' are already mounted, but ''/system'' and ''/firmware'' aren't
adb shell
mount '/system' && mount '/firmware'
fstrim -v '/system' && fstrim -v '/data' && fstrim -v '/cache' && fstrim -v '/firmware' && sync
==== Quick-command ====
* Run after booting into TWRP
adb shell "mount -a || fstrim -v '/system' && fstrim -v '/data' && fstrim -v '/cache' && fstrim -v '/firmware' && sync"
===== Erase Everything =====
* This **requires** a radio re-flash ((can use ''flash-base.sh'' from the latest [[#factory_image | Factory Image]]))
* This does not erase the bootloader nor recovery
sudo fastboot erase 'all'
===== Flash Base =====
* Requires a Factory Image extracted to ''~/Downloads''
sudo fastboot flash 'bootloader' ~/'Downloads/shamu-'*'/bootloader-shamu-moto-'*'.img' && sudo fastboot reboot-bootloader && sleep 5 && sudo fastboot flash 'radio' ~/'Downloads/shamu-'*'/radio-shamu-'*'.img' && sudo fastboot reboot-bootloader
====== Ideal Stack ======
* As of: 2017/10/28
* F2FS TWRP
* LineageOS for easy microG + UnifiedNlp
* FrancoKernel
* microG
* Magisk
====== microG ======
===== Flash Order ======
* **Boot** to Recovery
* ROM
* **Reboot** to Recovery
* Advanced Wipe -> Erase everything except **System**, format **Data** and **Cache** to **F2FS**
* **Reboot** to Recovery
* Kernel
* Magisk
* **Reboot** to System
===== F2FS TWRP =====
* https://forum.xda-developers.com/nexus-6/development/unofficial-twrp-3-1-1-f2fs-shamu-t3627852
===== LineageOS for easy microG + UnifiedNlp =====
* https://forum.xda-developers.com/nexus-6/development/rom-lineageos-easy-microg-unifiednlp-t3632360
===== FrancoKernel =====
* https://kernels.franco-lnx.net/Nexus6/7.1.2/anyKernel
* https://forum.xda-developers.com/nexus-6/orig-development/kernel-franco-kernel-r1-t2987173
==== Settings ====
=== Script ===
nano ~/'Downloads/99-kernel.sh' && adb push ~/'Downloads/99-kernel.sh' '/storage/emulated/0' && rm ~/'Downloads/99-kernel.sh' && sync
#!/system/bin/sh
# I/O Scheduler (noop)
echo noop > /sys/block/mmcblk0/queue/scheduler
echo noop > /sys/block/mmcblk0rpmb/queue/scheduler
# fsync (disabled)
echo N > /sys/module/sync/parameters/fsync_enabled
# Vibration Intensity (75)
echo 75 > /sys/drv2605/rtp_strength
# Display Profile (obsanity_standard)
echo 245 245 256 > /sys/devices/platform/kcal_ctrl.0/kcal
echo 273 > /sys/devices/platform/kcal_ctrl.0/kcal_sat
echo 255 > /sys/devices/platform/kcal_ctrl.0/kcal_val
echo 255 > /sys/devices/platform/kcal_ctrl.0/kcal_cont
echo 0 > /sys/devices/platform/kcal_ctrl.0/kcal_hue
=== Install Script ===
* This requires [[#magisk|Magisk]]
adb shell
su
mv '/storage/emulated/0/99-kernel.sh' '/magisk/.core/service.d/99-kernel.sh' && chown 'root':'root' '/magisk/.core/service.d/99-kernel.sh' && chmod '755' '/magisk/.core/service.d/99-kernel.sh' && sync
=== Check Settings ===
== I/O Schedulers ==
****
cat '/sys/block/mmcblk0/queue/scheduler' '/sys/block/mmcblk0rpmb/queue/scheduler'
== fsync ==
****
cat '/sys/module/sync/parameters/fsync_enabled'
== Vibration Strength ==
****
cat '/sys/drv2605/rtp_strength'
== Display Profile ==
****
cat '/sys/devices/platform/kcal_ctrl.0/kcal' '/sys/devices/platform/kcal_ctrl.0/kcal_sat' '/sys/devices/platform/kcal_ctrl.0/kcal_val' '/sys/devices/platform/kcal_ctrl.0/kcal_cont' '/sys/devices/platform/kcal_ctrl.0/kcal_hue'
===== Magisk =====
* https://forum.xda-developers.com/apps/magisk/official-magisk-v7-universal-systemless-t3473445
===== F-Droid =====
==== Install ====
****
wget -O ~/'Downloads/FDroid.apk' 'https://f-droid.org/FDroid.apk' && adb install ~/'Downloads/FDroid.apk' && adb shell 'sync' && rm -f ~/'Downloads/FDroid.apk' && sync
==== microG Repo ====
* https://microg.org/download.html
adb shell input text "microg.org/fdroid/repo"
adb shell input text "9BD06727E62796C0130EB6DAB39B73157451582CBD138E86C468ACC395D14165"
===== Apps =====
==== APK Restore ====
* This batch-installs multiple APKs
* ''cd'' into the directory containing the APKs
* [[https://stackoverflow.com/a/20271392 | Source]]
nano 'apk.sh' && chmod +x 'apk.sh'
#!/bin/sh
for file in *.apk
do
adb install $file
done
./'apk.sh'
==== F-Droid ====
=== Core ===
* 8 apps
* FakeStore
* microG DroidGuard Helper
* microG Services Core
* microG Services Framework Proxy
* NominatimNlpBackend
* LocalGsmNlpBackend
* LocalWifiNlpBackend
* Yalp Store ((set to spoof Nexus 6 because of https://github.com/yeriomin/YalpStore/issues/213))
=== Extras ===
* 17 apps
* OneTimePad
* K-9 Mail
* KeePassDroid
* AndStatus
* M.A.L.P.
* WiFiAnalyzer
* Document Viewer
* Feeder
* Maps & GPS Navigation OsmAnd+
* Conversations
* DAVdroid
* OpenTasks
* Loyalty Card Keychain
* SatStat
* Forecastie
* AsteroidOS Sync
* Firefox Klar
==== Yalp Store ====
* 7 apps
* Ingress
* Keybase
* Obenkyo
* Pokémon GO
* Steam
* VLC
* VPN.AC Client
==== Disable ====
* ''com.google.android.apps.tycho'' is Project Fi
* ''com.google.android.apps.gcs'' is Google Connectivity Services ((if using microG, GCS will crash after reboots frequently; disabling it doesn't seem to break anything))
* ''org.lineageos.updater'' isn't usable with custom LineageOS builds
adb shell
su
pm disable 'com.android.email'
pm disable 'com.google.android.apps.gcs'
pm disable 'org.lineageos.jelly'
pm disable 'com.cyanogenmod.eleven'
pm disable 'com.google.android.apps.tycho'
pm disable 'org.lineageos.updater'
===== LocalGsmNlpBackend =====
==== FastLacellsGenerator ====
* https://github.com/sobrus/FastLacellsGenerator
=== Dependencies ===
* [[linux;distros;fedora_workstation_gnome|Fedora Workstation (GNOME)]]
sudo dnf install 'sqlite' && sync
=== Download ===
****
wget -O ~/'Downloads/FastLacellsGenerator-master.zip' 'https://github.com/sobrus/FastLacellsGenerator/archive/master.zip' && unzip ~/'Downloads/FastLacellsGenerator-master.zip' -d ~/'Downloads'
=== Config ===
* ''TOKEN'' should be a OpenCelliD API token
* ''MMC'' includes all US
nano ~/'Downloads/FastLacellsGenerator-master/config'
MCC="310|311|312|313|316"
TOKEN="x"
=== Download and Generate Map Data ===
* OpenCelliD apparently only allows 1 download per-day.
* If the generated ''lacells.db'' isn't around 300MB+, this is a problem
cd ~/'Downloads/FastLacellsGenerator-master' && ~/'Downloads/FastLacellsGenerator-master/flg'
=== Push Map Data ===
****
adb push ~/'Downloads/FastLacellsGenerator-master/lacells.db' '/storage/emulated/0/LocalGSMBackend/lacells.db.new'
=== Cleanup ===
****
rm -Rf ~/'Downloads/FastLacellsGenerator-master.zip' ~/'Downloads/FastLacellsGenerator-master' && sync
=== External database location ===
/storage/emulated/0/LocalGSMBackend
adb shell input text "/storage/emulated/0/LocalGSMBackend"
====== Legacy ======
===== Flash Order ======
* **Boot** to Recovery
* ROM
* GApps
* **Reboot** to Recovery
* Advanced Wipe -> Erase everything except **System**, format **Data** and **Cache** to **F2FS**
* **Reboot** to Recovery
* Kernel
* Magisk
* **Reboot** to System
===== F2FS TWRP =====
* https://forum.xda-developers.com/nexus-6/development/unofficial-twrp-3-1-1-f2fs-shamu-t3627852
===== LineageOS =====
* https://download.lineageos.org/shamu
* https://forum.xda-developers.com/nexus-6/orig-development/rom-cm14-1-nexus-6-shamu-t3514362
===== FrancoKernel =====
* https://kernels.franco-lnx.net/Nexus6/7.1.2/anyKernel
* https://forum.xda-developers.com/nexus-6/orig-development/kernel-franco-kernel-r1-t2987173
===== Magisk =====
* https://forum.xda-developers.com/apps/magisk/official-magisk-v7-universal-systemless-t3473445
==== Modules ====
=== Unified Hosts Adblock ===
* https://forum.xda-developers.com/apps/magisk/magisk-unified-hosts-adblocker-t3559019
* Use ''fgp''
hosts
===== The Open GApps Project =====
* http://opengapps.org
* https://github.com/opengapps/arm/releases
* Pico is fine
* Nano also works if Google Search is necessary ((only useful for Android Wear))
==== gapps-config.txt ====
* Place on root of Internal Storage
# No Debug logs
# https://github.com/opengapps/opengapps/wiki/Advanced-Features-and-Options#debug-logs
#NoDebug
# Smart Pre-ODEXing of APKs
# https://github.com/opengapps/opengapps/wiki/Advanced-Features-and-Options#skip-smart-pre-odexing-of-apks
PreODEX
# Exclude GApps
# https://github.com/opengapps/opengapps/wiki/Advanced-Features-and-Options#include-or-exclude-gapps
# Expects Nano package
DialerFramework
CalSync
GoogleTTS
PackageInstallerGoogle
BatteryUsage
FaceDetect
FaceUnlock
Speech
# Remove Stock apps
# https://github.com/opengapps/opengapps/wiki/Advanced-Features-and-Options#remove-stock-apps
# Expects LineageOS
(Eleven)
(Email)
(Jelly)
===== App Disable =====
adb shell
su
pm disable 'com.google.android.syncadapters.calendar'
pm disable 'com.google.android.syncadapters.contacts'
pm disable 'com.android.email'
pm disable 'org.lineageos.jelly'
pm disable 'com.cyanogenmod.eleven'
====== Other Information ======
===== Display =====
==== DPI ====
* Native DPI is 493
* Default DPI is 560
* Works as low as 240
wm density '493'
wm density '240'
wm density reset
==== Resolution ====
* Native resolution is 1440x2560
* Can upscale to 2160x3840
* Can downscale to 1080x1920
* Works as low as 540x960 ((Ingress UI starts to overlap any lower than this))
wm size 2160x3840
wm size 1080x1920
wm size 540x960
wm size reset