Jul 1, 2015

Metro PCS LG F60 (MS395) Custom ROM Eva V1



INTRO


Let's get going!!


This is a modified stock ROM for Metro PCS LG Optimus F60 (MS395). Since this is a stock based rom (4.4.2 KitKat), it's stable and you can use it as daily driver.


Apps are Zipaligned and Debloated. You can immediately feel the phone is snappy and fast. Most of LG and Metro apps are removed, that will give you close to 4GB of internal space.





ROM FEATURES

Everything working - 4G LTE, Wifi, Camera, App Store, Hot Spot

Zipaligned, Deodexed, Debloated

Rooted, Busybox, Xposed Installer

Replaced LG Apps with Googles (Setup, Calendar, Keyboard)

LG G4 Sounds (Ringtones, Notifications, Alarms sound, UI)

Updated Apps, Ready to use



MANY THANKS TO

MikeHoncho - Updater Script
IncaKola - Custom Boot Animation, Updater Script




DOWNLOAD

Coming Soon!!



INSTALL

Your phone must be rooted and TWRP installed.

1. Copy ROM file to External SD card
2. Reboot to Recovery
3. Make a backup of your current phone
4. Factory Reset
5. Install downloaded Eva ROM
6. Make sure you see all steps completed from 1-6
7. Reboot System
8. First Boot will take couple of minutes
9. Follow the setup guide from the screen
10. Enjoy





SCREENSHOTS








DONATION

Not necessary but always welcome :)
Available from my blog @ www.projectkyle.com






Jun 30, 2015

Working Update-Script for Metro PCS LG F60

# updater-script-00_HEAD
# This updater-script has been automatically generated through ArchiKitchen (http://forum.xda-developers.com/showthread.php?t=2597220)
run_program("/sbin/mount", "-t", "auto", "/system");
delete_recursive("/system");
show_progress(1.0, 1961);
package_extract_dir("system", "/system");
# updater-script-10_SYMLINKS
symlink("/firmware/image/mba.b00", "/system/etc/firmware/mba.b00");
symlink("/firmware/image/mba.mdt", "/system/etc/firmware/mba.mdt");
symlink("/system/lib/modules/pronto/pronto_wlan.ko", "/system/lib/modules/wlan.ko");
symlink("/firmware/image/adsp.b00", "/system/etc/firmware/adsp.b00");
symlink("/firmware/image/adsp.b01", "/system/etc/firmware/adsp.b01");
symlink("/firmware/image/adsp.b02", "/system/etc/firmware/adsp.b02");
symlink("/firmware/image/adsp.b03", "/system/etc/firmware/adsp.b03");
symlink("/firmware/image/adsp.b04", "/system/etc/firmware/adsp.b04");
symlink("/firmware/image/adsp.b05", "/system/etc/firmware/adsp.b05");
symlink("/firmware/image/adsp.b06", "/system/etc/firmware/adsp.b06");
symlink("/firmware/image/adsp.b07", "/system/etc/firmware/adsp.b07");
symlink("/firmware/image/adsp.b08", "/system/etc/firmware/adsp.b08");
symlink("/firmware/image/adsp.mdt", "/system/etc/firmware/adsp.mdt");
symlink("/system/etc/wifi/WCNSS_qcom_cfg.ini", "/system/etc/firmware/wlan/prima/WCNSS_qcom_cfg.ini");
symlink("/system/etc/wifi/WCNSS_qcom_wlan_nv.bin", "/system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin");
symlink("/firmware/image/modem_fw.b00", "/system/etc/firmware/modem_fw.b00");
symlink("/firmware/image/modem_fw.b01", "/system/etc/firmware/modem_fw.b01");
symlink("/firmware/image/modem_fw.b02", "/system/etc/firmware/modem_fw.b02");
symlink("/firmware/image/modem_fw.b03", "/system/etc/firmware/modem_fw.b03");
symlink("/firmware/image/modem_fw.b04", "/system/etc/firmware/modem_fw.b04");
symlink("/firmware/image/modem_fw.b05", "/system/etc/firmware/modem_fw.b05");
symlink("/firmware/image/modem_fw.b08", "/system/etc/firmware/modem_fw.b08");
symlink("/firmware/image/modem_fw.b15", "/system/etc/firmware/modem_fw.b15");
symlink("/firmware/image/modem_fw.b16", "/system/etc/firmware/modem_fw.b16");
symlink("/firmware/image/modem_fw.b17", "/system/etc/firmware/modem_fw.b17");
symlink("/firmware/image/modem_fw.b18", "/system/etc/firmware/modem_fw.b18");
symlink("/firmware/image/modem_fw.b19", "/system/etc/firmware/modem_fw.b19");
symlink("/firmware/image/modem_fw.b20", "/system/etc/firmware/modem_fw.b20");
symlink("/firmware/image/modem_fw.b21", "/system/etc/firmware/modem_fw.b21");
symlink("/firmware/image/modem_fw.b22", "/system/etc/firmware/modem_fw.b22");
symlink("/firmware/image/modem_fw.b25", "/system/etc/firmware/modem_fw.b25");
symlink("/firmware/image/modem_fw.b26", "/system/etc/firmware/modem_fw.b26");
symlink("/firmware/image/modem_fw.b27", "/system/etc/firmware/modem_fw.b27");
symlink("/firmware/image/modem_fw.mdt", "/system/etc/firmware/modem_fw.mdt");
symlink("/firmware/image/wcnss.b00", "/system/etc/firmware/wcnss.b00");
symlink("/firmware/image/wcnss.b01", "/system/etc/firmware/wcnss.b01");
symlink("/firmware/image/wcnss.b02", "/system/etc/firmware/wcnss.b02");
symlink("/firmware/image/wcnss.b04", "/system/etc/firmware/wcnss.b04");
symlink("/firmware/image/wcnss.b06", "/system/etc/firmware/wcnss.b06");
symlink("/firmware/image/wcnss.b07", "/system/etc/firmware/wcnss.b07");
symlink("/firmware/image/wcnss.b08", "/system/etc/firmware/wcnss.b08");
symlink("/firmware/image/wcnss.b09", "/system/etc/firmware/wcnss.b09");
symlink("/firmware/image/wcnss.mdt", "/system/etc/firmware/wcnss.mdt");
symlink("libGLESv2.so", "/system/lib/libGLESv3.so");
symlink("libuicc.so", "/system/lib/libusim_aka.so");
symlink("mksh", "/system/bin/sh");
# symlink("/persist-lg/firmware/widevine.b00", "/system/vendor/firmware/widevine.b00");
# symlink("/persist-lg/firmware/widevine.b01", "/system/vendor/firmware/widevine.b01");
# symlink("/persist-lg/firmware/widevine.b02", "/system/vendor/firmware/widevine.b02");
# symlink("/persist-lg/firmware/widevine.b03", "/system/vendor/firmware/widevine.b03");
# symlink("/persist-lg/firmware/widevine.mdt", "/system/vendor/firmware/widevine.mdt");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("/system/etc/install-recovery.sh", "/system/bin/install-recovery.sh");
symlink("/system/lib/modules/pronto/pronto_wlan.ko", "/system/lib/modules/wlan.ko");
symlink("/system/xbin/busybox", "/system/bin/busybox");
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chcon");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/clear");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/cp");
symlink("toolbox", "/system/bin/date");
symlink("toolbox", "/system/bin/dd");
symlink("toolbox", "/system/bin/df");
symlink("toolbox", "/system/bin/dmesg");
symlink("toolbox", "/system/bin/du");
symlink("toolbox", "/system/bin/getenforce");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/getsebool");
symlink("toolbox", "/system/bin/grep");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/id");
symlink("toolbox", "/system/bin/ifconfig");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/insmod");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/kill");
symlink("toolbox", "/system/bin/ln");
symlink("toolbox", "/system/bin/load_policy");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/ls");
symlink("toolbox", "/system/bin/lsmod");
symlink("toolbox", "/system/bin/lsof");
symlink("toolbox", "/system/bin/md5");
symlink("toolbox", "/system/bin/mkdir");
symlink("toolbox", "/system/bin/mkswap");
symlink("toolbox", "/system/bin/mount");
symlink("toolbox", "/system/bin/mv");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/netstat");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/printenv");
symlink("toolbox", "/system/bin/ps");
symlink("toolbox", "/system/bin/readlink");
symlink("toolbox", "/system/bin/renice");
symlink("toolbox", "/system/bin/restorecon");
symlink("toolbox", "/system/bin/rm");
symlink("toolbox", "/system/bin/rmdir");
symlink("toolbox", "/system/bin/rmmod");
symlink("toolbox", "/system/bin/route");
symlink("toolbox", "/system/bin/runcon");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/setenforce");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/setsebool");
symlink("toolbox", "/system/bin/sleep");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/swapoff");
symlink("toolbox", "/system/bin/swapon");
symlink("toolbox", "/system/bin/sync");
symlink("toolbox", "/system/bin/top");
symlink("toolbox", "/system/bin/touch");
symlink("toolbox", "/system/bin/umount");
symlink("toolbox", "/system/bin/uptime");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/wipe");
symlink("/system/xbin/su", "/system/bin/su");
# updater-script-20_PERMISSIONS
ui_print("Permission");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
ui_print("Line 142");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
ui_print("Line 147");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.audio.sh");
ui_print("Line 149");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.bt.sh");
ui_print("Line 151");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.coex.sh");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.efs.sync.sh");
#set_perm(0, 0, 0644, "/system/etc/init.zetaw.fm.sh");
#set_perm(0, 0, 0644, "/system/etc/init.zetaw.modem_links.sh");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.post_boot.sh");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.sdio.sh");
ui_print("Line 158");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.ssr.wifi.sh");
set_perm(0, 0, 0644, "/system/etc/init.zetaw.wifi.sh");
ui_print("Line 158");
set_perm(0, 0, 0644, "/system/etc/init.lge.zramswap.sh");
set_perm(0, 0, 0644, "/system/etc/last_kmsg_backup.sh");
set_perm(0, 0, 0644, "/system/etc/init.qcom.ftm_module.sh");
set_perm(0, 0, 0644, "/system/etc/init.qcom.ftm_module_out.sh");
ui_print("Line 162");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
ui_print("Line 167");
symlink("/system/xbin/su", "/system/bin/su");
set_perm(0, 0, 06755, "/system/xbin/busybox");
set_perm(0, 0, 06755, "/system/xbin/su");
set_perm_recursive(0, 0, 0755, 0644, "/system/app");
# updater-script-80_EXEC
run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
# updater-script-85_USER
# This updater-script segment isn't touched by ArchiKitchen
# You can add your own entries here
# updater-script-90_KERNEL
package_extract_file("boot.img", "/dev/block/platform/msm_sdcc.1/by-name/boot");
# updater-script-91_MODEM
# updater-script-99_TAIL
unmount("/system");

May 11, 2015

How to extract System.img and Boot.img from LG F60


Make sure to enable ADB option from your phone setting.


Start ADB Shell

SU

If phone asks permission from your computer check yes.



root@e2nam:/ # dd if=/dev/block/platform/msm_sdcc.1/by-name/boot of=/storage/external_SD/boot.img

root@e2nam:/storage/external_SD # dd if=/dev/block/platform/msm_sdcc.1/by-name/system of=/storage/external_SD/system.img bs=4096

Apr 28, 2015

Compiling LG F60 Metro PCS Kernel from the source (WIP)


Assuming you have Ubuntu64 installed and prepared Android ROM / Kernel build environment setup.

Created a folder named android under your Ubuntu Home (/home/kyle/android)




Go to LG Open Source homepage. Search for MS395.

http://opensource.lge.com/osSch/list?types=ALL&search=ms395


Download LGMs395_Android_L_V20a

Copy the Kernel source under /android.







Extract here.

You will have all sources extracted under /android/kernel

I will refer /home/android/kernel as KERNEL ROOT folder from now.






*** Preparing build env ***


export ARCH=arm

or

ARCH=arm CROSS_COMPILE=~/arm-linux-androideabi-4.7/bin/arm-linux-androideabi- make e2nam_mpcs_us


*** Tool Chains (various versions) ***

export CROSS_COMPILE=~/android/kernel/toolchains/arm-eabi-linaro-4.6.2/bin/arm-eabi-

export CROSS_COMPILE=~/android/kernel/toolchains/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-

export CROSS_COMPILE=~/android/kernel/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-

***


make e2nam_mpcs_us_defconfig

make menuconfig




make ARCH=arm CROSS_COMPILE=~/arm-linux-androideabi-4.7/bin/arm-linux-androideabi- menuconfig



make -j4 CONFIG_NO_ERROR_ON_MISMATCH=y




Mar 9, 2015

LG F60 Root Method Available Now

Thanks to the developers who worked hard to get this device rooted.

Detailed guide can be found from XDA and Android Forum

http://forum.xda-developers.com/android/development/guide-root-method-lg-devices-t3049772

http://androidforums.com/threads/root-guide.907565/

Feb 25, 2015

LG F60 Root - getting close

Developers are working hard to get LG F60 rooted.

It's not confirmed yet but they are getting very close.

Here's the link to the Android Forum thread.

http://androidforums.com/threads/lg-f60-metro-pcs.882857/page-5#post-6892096

Jan 2, 2015

How to turn on CPU1 (=2nd Core) on LG F6 Permanently

This method will permanently turn on CPU1 during the phone boot. (Don't worry you can restore easily)

By enabling CPU1, you may get slight performance increase on general phone usage (switching screen, accessing app drawer, open & close apps) and gaming (little better performance) by sacrificing the battery.

Whether it's really worth to do it is... highly doubtful and debatable. Some people say they notice the difference but others say they don't notice the performance increase and it's not worth to do it to sacrifice battery.

But anyway if you have rooted F6, you may try it and see if you like it or not.


-- DIY method --
Your phone must be rooted.

1. Use your root text editor (I use Rom Tool Box's RB Editor), find init.qcom.post_boot.sh file @ /system/etc folder.

2. Make backup / copy of the file such as init.qcom.post_boot.bk

3. Scroll down until you see below lines @ case "$target" in "msm8960" coding block.


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


3. Insert echo 1 command and change chmod to 444


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
echo 1 > /sys/devices/system/cpu/cpu1/online
chmod 444 /sys/devices/system/cpu/cpu1/online
chmod 664 /sys/devices/system/cpu/cpu2/online
chmod 664 /sys/devices/system/cpu/cpu3/online


4. Save the file. Reboot the phone.

5. Using CPU / Kernel app (like Kernel Tuner), check if your CPU1 is online.

6. If CPU1 is on all the time, you are good. Check various phone functions and battery consumption.

7. If you don't like this mod, simply delete the modified init.qcom.post_boot.sh then restore the premade back up init.qcom.post_boot.bk to .sh file.



-- Easy Method --

1. Download this file

https://drive.google.com/file/d/0B69dMfqyU4n9RVNhVGdjSXo1cGc/view?usp=sharing

2. Use your Root Explorer app, go to /system/etc

3. Back up your current init_qcom.post_boot.sh to something else (ex. init_qcom_post_boot.bk)

4. Copy & past the modified .sh file you just downloaded.

5. Restart phone.

6. Using CPU / Kernel app (like Kernel Tuner), check if your CPU1 is online.

7. If CPU1 is on all the time, you are good. Check various phone functions and battery consumption.

8. If you don't like this mod, simply delete the modified init.qcom.post_boot.sh then restore the premade back up init.qcom.post_boot.bk to .sh file.


-- Screenshot --

Before mod
You can see CPU1 goes off during idle status.




After mod
CPU1 is still on even idle status. 



Sep 3, 2014

LG F6 Build Prop Tweaks

ime_onehand_keyboard=true

Enables one-handed operation option on Setting.








ro.lge.lcd_default_brightness=100

Sets the default brightness when reboots. This is not %. 100 is about 30% brightness.


lge.nfc.defaultonoff=off

Turns off NFC option by default.


wifi.supplicant_scan_interval=120

Wi-Fi scan interval increased to 120 to save little bit of battery.