I wonder if this work on defy.....
http://forum.xda-developers.com/showthread.php?t=1100777
If someone try this...plase let me know
I don't think so
would be great....
I didn't tried it but theoretically it should work. Maybe the scripts must be adapted.
How does it technically work? Maybe via chroot or does it use something like our 2ndinit-bootmenu vor booting these images?
Relly?
Relly?
Second boot in bootmenu could be used for that.. but requieres a vesrsion of android modded to work on sdcard...
main settings are in init.rc files and it should be possible to mount /system and /data from sdcard partitions.
The problems will be related to usb motoportal and mass storage which unmount sdcard
Epsylon3 said:
The problems will be related to usb motoportal and mass storage which unmount sdcard
Click to expand...
Click to collapse
I think this can be solved by partitioning the sdcard into two partitions, one ext3 for storing system and data images to boot from it and other fat for the user files, so that mass storage will unmount only the second one!
How do they do on the original project, though? There should had been the same problem also...
Running the system from sdcard I think can be a little slow, but it may still usable... Only testing for knowing...
I created 2 partitions o my sdcard.
1) EXT3 2GB
2) FAT32 6GB
Then I installed gentoo on ext3 partition.
I can chroot into ext3 partition and use all gentoo (linux) commands. I installed Apache, squid, etc and it worked fine. I can run a WEB server on my Defy
And I can access the FAT32 partition on my PC even with the ext3 partition mounted.
Hi Dedraks!
It's basically the same idea I gave, you have two separated partitions and so one can be mounted and unmounted independently of the other. But in the original project linked above the rom images are inside the sdcard's user partition, that's the same that's unmounted when the phone is connected to computer. I've asked how they did to get around this issue at the project thread, but I'm starting to think that if you want to access your sdcard from the computer using the phone you'd need to boot the rom inside nand and not sdcard, at least the way they did it...
As I don't have my Defy at the moment would you mind posting the content of the init.rc file (it's placed inside rootfs methinks) so that we can take a look at it to see what can be done?
Thanks!
/init.rc:
Code:
on early-init
start ueventd
on init
sysclktz 0
loglevel 3
# setup the global environment
export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
export LD_LIBRARY_PATH /vendor/lib:/system/lib
export ANDROID_BOOTLOGO 1
export ANDROID_ROOT /system
export ANDROID_ASSETS /system/app
export ANDROID_DATA /data
export EXTERNAL_STORAGE /mnt/sdcard
export EXTERNAL_ALT_STORAGE /mnt/sdcard-ext # Feature 34534
export ASEC_MOUNTPOINT /mnt/asec
export LOOP_MOUNTPOINT /mnt/obb
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar:/system/framework/com.motorola.android.frameworks.jar:/system/framework/com.motorola.android.widget.jar
# Backward compatibility
symlink /system/etc /etc
symlink /sys/kernel/debug /d
# Right now vendor lives on the same filesystem as system,
# but someday that may change.
symlink /system/vendor /vendor
# create mountpoints
mkdir /mnt 0775 root system
mkdir /mnt/sdcard 0000 system system
mkdir /mnt/sdcard-ext 0000 system system # Feature 34534
mkdir /osh 0755 root root
mkdir /preinstall 0755 system system
symlink /data/tmp /tmp
# Create cgroup mount point for cpu accounting
mkdir /acct
mount cgroup none /acct cpuacct
mkdir /acct/uid
# Backwards Compat - XXX: Going away in G*
symlink /mnt/sdcard /sdcard
symlink /mnt/sdcard-ext /sdcard-ext # Feature 34534
mkdir /system
mkdir /data 0771 system system
mkdir /cache 0770 system cache
mkdir /config 0500 root root
mkdir /pds 0755 root root
mkdir /misc 0770 system misc
# Directory for putting things only root should see.
mkdir /mnt/secure 0700 root root
# Directory for staging bindmounts
mkdir /mnt/secure/staging 0700 root root
# Directory-target for where the secure container
# imagefile directory will be bind-mounted
mkdir /mnt/secure/asec 0700 root root
# Secure container public mount points.
mkdir /mnt/asec 0700 root system
mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000
# Filesystem image public mount points.
mkdir /mnt/obb 0700 root system
mount tmpfs tmpfs /mnt/obb mode=0755,gid=1000
write /proc/sys/kernel/panic_on_oops 1
write /proc/sys/kernel/hung_task_timeout_secs 0
write /proc/cpu/alignment 4
write /proc/sys/kernel/sched_latency_ns 10000000
write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
write /proc/sys/kernel/sched_compat_yield 1
write /proc/sys/kernel/sched_child_runs_first 0
# Create cgroup mount points for process groups
mkdir /dev/cpuctl
mount cgroup none /dev/cpuctl cpu
chown system system /dev/cpuctl
chown system system /dev/cpuctl/tasks
chmod 0777 /dev/cpuctl/tasks
write /dev/cpuctl/cpu.shares 1024
mkdir /dev/cpuctl/fg_boost
chown system system /dev/cpuctl/fg_boost/tasks
chmod 0777 /dev/cpuctl/fg_boost/tasks
write /dev/cpuctl/fg_boost/cpu.shares 1024
mkdir /dev/cpuctl/bg_non_interactive
chown system system /dev/cpuctl/bg_non_interactive/tasks
chmod 0777 /dev/cpuctl/bg_non_interactive/tasks
# 5.0 %
write /dev/cpuctl/bg_non_interactive/cpu.shares 52
on fs
# mount mtd partitions
# Mount /system rw first to give the filesystem a chance to save a checkpoint
mount yaffs2 [email protected] /system
mount ext3 [email protected] /system noatime nodiratime barrier=1
mount yaffs2 [email protected] /data nosuid nodev
exec /system/bin/logwrapper /system/bin/mount_ext3.sh userdata /data
mount yaffs2 [email protected] /cache nosuid nodev
exec /system/bin/logwrapper /system/bin/mount_ext3.sh cache /cache
on post-fs
# once everything is setup, no need to modify /
mount rootfs rootfs / ro remount
# We chown/chmod /data again so because mount is run as root + defaults
chown system system /data
chmod 0771 /data
# Create dump dir and collect dumps.
# Do this before we mount cache so eventually we can use cache for
# storing dumps on platforms which do not have a dedicated dump partition.
mkdir /data/dontpanic
chown root log /data/dontpanic
chmod 0750 /data/dontpanic
# Collect apanic data, free resources and re-arm trigger
copy /proc/apanic_console /data/dontpanic/apanic_console
chown root log /data/dontpanic/apanic_console
chmod 0640 /data/dontpanic/apanic_console
copy /proc/apanic_threads /data/dontpanic/apanic_threads
chown root log /data/dontpanic/apanic_threads
chmod 0640 /data/dontpanic/apanic_threads
write /proc/apanic_console 1
# Same reason as /data above
chown system cache /cache
chmod 0770 /cache
chown system misc /misc
chmod 0770 /misc
# This may have been created by the recovery system with odd permissions
chown system cache /cache/recovery
chmod 0770 /cache/recovery
#change permissions on vmallocinfo so we can grab it from bugreports
chown root log /proc/vmallocinfo
chmod 0440 /proc/vmallocinfo
#change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks
chown root system /proc/kmsg
chmod 0440 /proc/kmsg
chown root system /proc/sysrq-trigger
chmod 0220 /proc/sysrq-trigger
# create basic filesystem structure
mkdir /data/misc 01771 system misc
mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
mkdir /data/misc/bluetooth 0770 system system
mkdir /data/misc/keystore 0700 keystore keystore
mkdir /data/misc/vpn 0770 system system
mkdir /data/misc/systemkeys 0700 system system
mkdir /data/misc/vpn/profiles 0770 system system
# give system access to wpa_supplicant.conf for backup and restore
mkdir /data/misc/wifi 0770 wifi wifi
chmod 0770 /data/misc/wifi
chmod 0660 /data/misc/wifi/wpa_supplicant.conf
mkdir /data/misc/wifi/hostapd.sockets 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
mkdir /data/local 0771 mot_tcmd shell
mkdir /data/local/tmp 0771 mot_tcmd shell
mkdir /data/local/12m 0771 mot_tcmd shell
mkdir /data/local/12m/batch 0771 mot_tcmd shell
chown mot_tcmd shell /data/local
chown mot_tcmd shell /data/local/12m
chown mot_tcmd shell /data/local/12m/batch
chown mot_tcmd shell /data/local/tmp
mkdir /data/data 0771 system system
mkdir /data/app-private 0771 system system
mkdir /data/app 0771 system system
mkdir /data/property 0700 root root
mkdir /data/tmp 0777 system system
chown system system /mnt/sdcard # Feature 34534
chmod 0777 /mnt/sdcard # Feature 34534
# create dalvik-cache and double-check the perms
mkdir /data/dalvik-cache 0771 system system
chown system system /data/dalvik-cache
chmod 0771 /data/dalvik-cache
# create the lost+found directories, so as to enforce our permissions
mkdir /data/lost+found 0770
mkdir /cache/lost+found 0770
# double check the perms, in case lost+found already exists, and set owner
chown root root /data/lost+found
chmod 0770 /data/lost+found
chown root root /cache/lost+found
chmod 0770 /cache/lost+found
on boot
# basic network init
ifup lo
hostname localhost
domainname localdomain
# set RLIMIT_NICE to allow priorities from 19 to -20
setrlimit 13 40 40
# set RLIMIT_NOFILE to allow maximum num of file open to be 2048
setrlimit 7 2048 2048
# Define the oom_adj values for the classes of processes that can be
# killed by the kernel. These are used in ActivityManagerService.
setprop ro.FOREGROUND_APP_ADJ 0
setprop ro.VISIBLE_APP_ADJ 1
setprop ro.PERCEPTIBLE_APP_ADJ 2
setprop ro.HEAVY_WEIGHT_APP_ADJ 3
setprop ro.SECONDARY_SERVER_ADJ 4
setprop ro.BACKUP_APP_ADJ 5
setprop ro.HOME_APP_ADJ 6
setprop ro.HIDDEN_APP_MIN_ADJ 7
setprop ro.EMPTY_APP_ADJ 15
# Define the memory thresholds at which the above process classes will
# be killed. These numbers are in pages (4k).
setprop ro.FOREGROUND_APP_MEM 2048
setprop ro.VISIBLE_APP_MEM 3072
setprop ro.PERCEPTIBLE_APP_MEM 4096
setprop ro.HEAVY_WEIGHT_APP_MEM 4096
setprop ro.SECONDARY_SERVER_MEM 6144
setprop ro.BACKUP_APP_MEM 6144
setprop ro.HOME_APP_MEM 6144
setprop ro.HIDDEN_APP_MEM 7168
setprop ro.EMPTY_APP_MEM 8192
# Write value must be consistent with the above properties.
# Note that the driver only supports 6 slots, so we have combined some of
# the classes into the same memory level; the associated processes of higher
# classes will still be killed first.
write /sys/module/lowmemorykiller/parameters/adj 0,1,2,4,7,15
write /proc/sys/vm/overcommit_memory 1
write /proc/sys/vm/min_free_order_shift 4
write /sys/module/lowmemorykiller/parameters/minfree 2048,3072,4096,6144,7168,8192
# Set init its forked children's oom_adj.
write /proc/1/oom_adj -16
# Tweak background writeout
write /proc/sys/vm/dirty_expire_centisecs 200
write /proc/sys/vm/dirty_background_ratio 5
# Permissions for System Server and daemons.
chown radio system /sys/android_power/state
chown radio system /sys/android_power/request_state
chown radio system /sys/android_power/acquire_full_wake_lock
chown radio system /sys/android_power/acquire_partial_wake_lock
chown radio system /sys/android_power/release_wake_lock
chown radio system /sys/power/state
chown radio system /sys/power/wake_lock
chown radio system /sys/power/wake_unlock
chmod 0660 /sys/power/state
chmod 0660 /sys/power/wake_lock
chmod 0660 /sys/power/wake_unlock
chown system system /sys/class/timed_output/vibrator/enable
chown system system /sys/class/leds/keyboard-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
chown system system /sys/class/leds/button-backlight/brightness
chown system system /sys/class/leds/jogball-backlight/brightness
chown system system /sys/class/leds/red/brightness
chown system system /sys/class/leds/green/brightness
chown system system /sys/class/leds/blue/brightness
chown system system /sys/class/leds/red/device/grpfreq
chown system system /sys/class/leds/red/device/grppwm
chown system system /sys/class/leds/red/device/blink
chown system system /sys/class/leds/red/brightness
chown system system /sys/class/leds/green/brightness
chown system system /sys/class/leds/blue/brightness
chown media media /sys/class/leds/af-led/brightness
chown system system /sys/class/leds/red/device/grpfreq
chown system system /sys/class/leds/red/device/grppwm
chown system system /sys/class/leds/red/device/blink
chown system system /sys/class/timed_output/vibrator/enable
chown system system /sys/module/sco/parameters/disable_esco
chown system system /sys/kernel/ipv4/tcp_wmem_min
chown system system /sys/kernel/ipv4/tcp_wmem_def
chown system system /sys/kernel/ipv4/tcp_wmem_max
chown system system /sys/kernel/ipv4/tcp_rmem_min
chown system system /sys/kernel/ipv4/tcp_rmem_def
chown system system /sys/kernel/ipv4/tcp_rmem_max
chown root radio /proc/cmdline
# Define TCP buffer sizes for various networks
# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
setprop net.tcp.buffersize.default 65536,131072,262144,65536,131072,262144
setprop net.tcp.buffersize.wifi 4095,87380,110208,4096,16384,110208
setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208
setprop net.tcp.buffersize.edge 4093,26280,35040,4096,16384,35040
setprop net.tcp.buffersize.gprs 4092,8760,11680,4096,8760,11680
# class_start default
## Daemon processes to be run by init.
##
service ueventd /sbin/ueventd
class pre-zygote_services
critical
service console /system/bin/sh
class pre-zygote_services
console
disabled
user shell
group log
on property:ro.secure=0
start console
# adbd is controlled by the persist.service.adb.enable system property
service adbd /sbin/adbd
class pre-zygote_services
disabled
# adbd on at boot in emulator
on property:ro.kernel.qemu=1
start adbd
on property:persist.service.adb.enable=1
start adbd
on property:persist.service.adb.enable=0
stop adbd
service servicemanager /system/bin/servicemanager
class pre-zygote_services
user system
critical
onrestart restart zygote
onrestart restart media
service vold /system/bin/vold
class pre-zygote_services
socket vold stream 0660 root mount
ioprio be 2
service tund /system/bin/tund
class pre-zygote_services
socket tund stream 0660 vpn system
ioprio be 2
service netd /system/bin/netd
class pre-zygote_services
socket netd stream 0660 root system
service nexus /system/bin/nexus
class pre-zygote_services
socket nexus stream 0660 root system
disabled
service debuggerd /system/bin/debuggerd
class pre-zygote_services
service ril-daemon /system/bin/rild
class pre-zygote_services
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio sdcard_rw system mot_secclkd mot_accy
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
class zygote_services
socket zygote stream 666
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media
onrestart restart netd
service media /system/bin/mediaserver
class zygote_services
user media
group system audio camera graphics inet net_bt net_bt_admin net_raw mot_drm input mot_tpapi mot_secclkd mot_pwric
ioprio rt 4
service bootanim /system/bin/bootanimation
class post-zygote_services
user graphics
group graphics
disabled
oneshot
service dbus /system/bin/dbus-daemon --system --nofork
class post-zygote_services
socket dbus stream 660 bluetooth bluetooth
user bluetooth
group bluetooth net_bt_admin
service bluetoothd /system/bin/bluetoothd -n
class post-zygote_services
socket bluetooth stream 660 bluetooth bluetooth
socket dbus_bluetooth stream 660 bluetooth bluetooth
# init.rc does not yet support applying capabilities, so run as root and
# let bluetoothd drop uid to bluetooth with the right linux capabilities
group bluetooth net_bt_admin misc
disabled
service hfag /system/bin/sdptool add --channel=10 HFAG
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot
service hsag /system/bin/sdptool add --channel=11 HSAG
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot
service opush /system/bin/sdptool add --channel=12 OPUSH
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot
service pbap /system/bin/sdptool add --channel=19 PBAP
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot
service installd /system/bin/installd
class post-zygote_services
socket installd stream 600 system system
service flash_recovery /system/etc/install-recovery.sh
class post-zygote_services
oneshot
# Copy 12M/batch files
service 12m_files_copy /system/etc/12m_files_copy.sh
class pre-zygote_services
oneshot
service racoon /system/bin/racoon
class post-zygote_services
socket racoon stream 600 system system
# racoon will setuid to vpn after getting necessary resources.
group net_admin
disabled
oneshot
service mtpd /system/bin/mtpd
class post-zygote_services
socket mtpd stream 600 system system
user vpn
group vpn net_admin net_raw
disabled
oneshot
service keystore /system/bin/keystore /data/misc/keystore
class post-zygote_services
user keystore
group keystore
socket keystore stream 666
service dumpstate /system/bin/dumpstate -s
class post-zygote_services
socket dumpstate stream 0660 shell log
disabled
oneshot
service ap_fmloader /system/bin/logwrapper /system/bin/wlan_loader -f /system/etc/wifi/fw_tiwlan_ap.bin -i /system/etc/wifi/tiwlan_ap.ini -e /pds/wifi/nvs_map.bin
class post-zygote_services
disabled
oneshot
service ap_fmloader_rfmd /system/bin/logwrapper /system/bin/wlan_loader -f /system/etc/wifi/fw_tiwlan_ap_rfmd.bin -i /system/etc/wifi/tiwlan_ap_rfmd.ini -e /pds/wifi/nvs_map.bin
class post-zygote_services
disabled
oneshot
service hostapd /system/bin/logwrapper /system/bin/Hostapd /data/misc/wifi/hostapd.conf
class post-zygote_services
socket hostapd_tiwlan0 dgram 660 wifi wifi
disabled
oneshot
service dnsmasq /system/bin/logwrapper /system/bin/dnsmasq -C/data/misc/wifi/dns.conf -k
class post-zygote_services
group wifi
disabled
oneshot
service mynet_start /system/bin/logwrapper /system/bin/sh /data/misc/wifi/forward_start.sh
class post-zygote_services
disabled
oneshot
service mynet_stop /system/bin/logwrapper /system/bin/sh /data/misc/wifi/forward_stop.sh
class post-zygote_services
disabled
oneshot
Code:
mount mtd partitions
# Mount /system rw first to give the filesystem a chance to save a checkpoint
mount yaffs2 [email protected] /system
mount ext3 [email protected] /system noatime nodiratime barrier=1
mount yaffs2 [email protected] /data nosuid nodev
exec /system/bin/logwrapper /system/bin/mount_ext3.sh userdata /data
mount yaffs2 [email protected] /cache nosuid nodev
exec /system/bin/logwrapper /system/bin/mount_ext3.sh cache /cache
I think some modifications in there for booting from sdcard will have to be done, but I'm confused now because as far as I know Defy uses ext3 fs and not yaffs2!
Hey guys, I'm no pro about ROM cooking and other advanced mods, but my though is: since Defy has a somewhat large internal memory, couldn't this mod be done using it instead of the SD? I think it would be faster than using a memory card.
K3n H1mur4 said:
Hey guys, I'm no pro about ROM cooking and other advanced mods, but my though is: since Defy has a somewhat large internal memory, couldn't this mod be done using it instead of the SD? I think it would be faster than using a memory card.
Click to expand...
Click to collapse
Maybe the choice to have multiple roms on the sdcard instead of having them on nand memory is because of the impossibility of partitioning the nand and not because of available space... But this is just a guess, let's wait for Epsylon3 to give his opinion!
Conap from the HTC forums answered my question and confirmed what I've imagined:
Conap said:
It won't unmount the sdcard while booted to it because the sdcard will be in use...that said it then won't mount it to your pc from there....if you want the new app coming to support the moto defy you can pm so I can get some info on the phone so it can be added
Click to expand...
Click to collapse
I'll keep in touch with him and show him this thread so that he can help us also!
danimagrin said:
Conap from the HTC forums answered my question and confirmed what I've imagined:
I'll keep in touch with him and show him this thread so that he can help us also!
Click to expand...
Click to collapse
I wrote code into the java app that was included that mount's the sdcard to pc while still being mounted to the phone. These scripts for the inc use an internal sd storage that the inc has (8GB) so it's not really compatible with other phones although the basics behind it works for an sdcard as well it just needs alot of changes. I am working on a new app with another dev that will handle all the instillation of the rom's and creation of images as well as booting between them. It will support multiple phones. As of now it's tested on my incredible and the other dev's D1 and we are close to getting beta testers for other devices. The info I need to add a device is fairly simple. I need the board name(i.e. Incredible is inc, D1 is sholes) It should be in your build.prop of your rom. I also need the location of the sdcard...it's probably either /dev/block/mmcblk1p1 or /dev/block/mmcblk0p1...you can find it by booting to recovery and from adb shell type mount sdcard then type mount. I also need the sizes of the system,data, and cache partitions...while in recovery do:
mount system
mount data
mount cache
df -h
and it should show your partition sizes in mb's. You can run the df -h command while booted but sometimes it doesn't show the right info...usually if you use busybox df -h it will work. So if anyone interested can pm that information we can get it added to the new app and get it tested.
Reserved...
I am having problems trying to mount /system rw on my rooted phone. This is making my app, which need to do this , fail.
When i try to debug i notice this:
# adb shell
[email protected]:/ $ su -
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
[email protected]:/ # busybox mount /system -o remount,rw
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
Now trying to re-run adb in root mode:
# adb root
restarting adbd as root
# adb shell
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
[email protected]:/ # busybox mount /system -o remount,rw
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
Still no go
Now i use adb to remount it by itself
# adb remount
remount succeeded
# adb shell
mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0
After remounting using adb, i can remount ro/rw at will using busybox.
[email protected]:/ # busybox mount /system -o remount,ro
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
[email protected]:/ # busybox mount /system -o remount,rw
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0
What am i doing wrong ? Why rw mounting appears to be available only after a 'adb remount' command ?
Thanks !
salatiel said:
I am having problems trying to mount /system rw on my rooted phone. This is making my app, which need to do this , fail.
When i try to debug i notice this:
# adb shell
[email protected]:/ $ su -
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
[email protected]:/ # busybox mount /system -o remount,rw
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
Now trying to re-run adb in root mode:
# adb root
restarting adbd as root
# adb shell
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
[email protected]:/ # busybox mount /system -o remount,rw
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
Still no go
Now i use adb to remount it by itself
# adb remount
remount succeeded
# adb shell
mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0
After remounting using adb, i can remount ro/rw at will using busybox.
[email protected]:/ # busybox mount /system -o remount,ro
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
[email protected]:/ # busybox mount /system -o remount,rw
[email protected]:/ # mount | grep system
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0
What am i doing wrong ? Why rw mounting appears to be available only after a 'adb remount' command ?
Thanks !
Click to expand...
Click to collapse
mount -o remount,rw /system
I think it was in the wrong order. One thing to remember is that busybox is a bit... finicky when compared to the full-featured, stand-alone Unix commands.
:laugh:
I've been there. Sometimes ya just gotta take a break.
My last guide was actually inside the beginner's guide and was good for that time, but now because of the new recovery versions (including kitkat), I need more space. So I decided to write a new guide for porting my recoveries to other phones.
The porting rutine won't work anymore for new mtk platforms with my actual porting builds. If you have such a phone you have to learn how to compile it from source or to find a recovery built for same platform to port it.
Also, for some phones, which require a specific PIXEL FORMAT, it won't work, and you again have to build it from source: the ported images are built for regular RGB 565 PIXEL FORMAT. If you have done right the port but the phone doesn't boot in recovery, just blackscreen and start, then it must be that case.
What you need:
- Geany or Notepad++ software
- CarlivImageKitchen for unpack/repack jobs.
- the dumchar_info content from your phone
- a stock boot.img for your phone
- a stock recovery.img for your phone - these two have to be with the kernel you want to use (for kitkat or for jellybean)
- a built carliv touch or cwm recovery for port. Get the right one for your phone. If it is cwm modded, check the screen width and search for that, and if it's Carliv Touch Recovery check your phone resolution in names.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
or
or
Credits:
- Clockworkmod team, and Cyanogenmod for the base recovery
- bgcngm for his mtk tools for linux
- michfood for his unpack/repack tools for windows
Let's start it.
Even if I wrote everything here as simple as I could and added some images too, some of you still can't understand how to do it, so for them, here is a detailed guide in images with every step. If you can't see it online, download the archive with all images from here.
How to get the dumchar_info file content from you phone.
First make sure that you have adb access to your phone from your computer. If you don't, then solve this problem. Most of the times is because of bad drivers or some security issues (UAC, antivirus, firewall, defender, etc.) in windows. In linux it's easier if you have the 51-android.rules file in place. Other possible issue might be with the path (for sdk tools - adb, fastboot). There are many guides here on xda about how to solve these.
Connect the phone to PC, open a command prompt or terminal window an type:
Code:
adb devices
The adb will start and you will see the phone serial number and the word "device". That means you've got connected to the phone with adb server. Again, type:
Code:
adb shell cat /proc/dumchar_info
and then you will see the content of that file from your phone. Select it and copy/paste in a text document, then save it as dumchar_info.txt, and you can deconnect the phone from PC.
The dumchar file will look like this:
Code:
Part_Name Size StartAddr Type MapTo
preloader 0x0000000000600000 0x0000000000000000 2 /dev/misc-sd
mbr 0x0000000000080000 0x0000000000000000 2 /dev/block/mmcblk0
ebr1 0x0000000000080000 0x0000000000080000 2 /dev/block/mmcblk0p1
pmt 0x0000000000400000 0x0000000000100000 2 /dev/block/mmcblk0
pro_info 0x0000000000300000 0x0000000000500000 2 /dev/block/mmcblk0
nvram 0x0000000000500000 0x0000000000800000 2 /dev/block/mmcblk0
protect_f 0x0000000000a00000 0x0000000000d00000 2 /dev/block/mmcblk0p2
protect_s 0x0000000000a00000 0x0000000001700000 2 /dev/block/mmcblk0p3
seccfg 0x0000000000020000 0x0000000002100000 2 /dev/block/mmcblk0
uboot 0x0000000000060000 0x0000000002120000 2 /dev/block/mmcblk0
bootimg 0x0000000000600000 0x0000000002180000 2 /dev/block/mmcblk0
recovery 0x0000000000600000 0x0000000002780000 2 /dev/block/mmcblk0
sec_ro 0x0000000000600000 0x0000000002d80000 2 /dev/block/mmcblk0p4
misc 0x0000000000080000 0x0000000003380000 2 /dev/block/mmcblk0
logo 0x0000000000300000 0x0000000003400000 2 /dev/block/mmcblk0
ebr2 0x0000000000080000 0x0000000003700000 2 /dev/block/mmcblk0
expdb 0x0000000000a00000 0x0000000003780000 2 /dev/block/mmcblk0
android 0x0000000038000000 0x0000000004180000 2 /dev/block/mmcblk0p5
cache 0x0000000007e00000 0x000000003c180000 2 /dev/block/mmcblk0p6
usrdata 0x0000000060000000 0x0000000043f80000 2 /dev/block/mmcblk0p7
fat 0x0000000041b80000 0x00000000a3f80000 2 /dev/block/mmcblk0p8
bmtpool 0x0000000001500000 0x00000000ff9f00a8 2 /dev/block/mmcblk0
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate
Next place all three images (boot, recovery - stock and carliv touch or cwm) in the folder of bgcngm's, carliv image kitchen or michfood's tools.
In linux I keep those in "mtktools" folder and in windows in "Boot_Recovery" folder. You can use what names you want, but be sure to not use spaces on that name. Also, in windows place it on primary partition, usualy C.
Unpack the resources.
In windows just drag them over unpack_MTK_img.bat or MTK_unpack.bat, one by one and that's it, you will see three new folders with every image name. You have to rename the porting recovery to a short name (ex. carliv-recovery, no spaces please) before dragging to unpack.
In linux, open a terminal in CarlivImageKitchen or mtk-tools folder where you have also the three images, and then type:
Code:
./unpack_MTK_img boot.img
or
Code:
./unpack-MTK.pl boot.img
to unpack the stock boot.img
When the boot image is unpacked, delete boot.img and boot.img-kernel.img if you are using bgcngm's tools.
After that type:
Code:
./unpack_MTK_img recovery.img
or
Code:
./unpack-MTK.pl recovery.img
to unpack the stock recovery.img
When the recovery image is unpacked, if you use bgcngm's tools, append "-stock" to recovery.img-kernel.img to name it recovery.img-kernel.img-stock and to recovery.img-ramdisk to name it recovery.img-ramdisk-stock, then delete recovery.img.
Next, rename "port_CarlivTouch-recovery-..." or the recovery you want to port, as recovery.img for bgcngm's tools or carliv-recovery for CarlivImageKitchen.
Then type again:
Code:
./unpack_MTK_img carliv-recovery.img
or
Code:
./unpack-MTK.pl recovery.img
to unpack the carliv recovery for port.
When it's finished, if you use bgcngm's tools, rename recovery.img-ramdisk as recovery.img-ramdisk-carliv or something to make the difference from stock ramdisk, and delete recovery.img and recovery.img-kernel.img from carliv recovery.
By doing this you already replaced the kernel with your stock one in bgcngm's tools.
Replace the kernel
If you use CarlivImageKitchen, both in linux or windows, just copy and replace all files except ramdisk folder from stock recovery folder to carliv recovery folder.
----------------------
In linux, when you use bgcngm's tools, that is already done as I said (only need to delete "-stock" from recovery.img-kernel.img-stock).
----------------------
In windows with michfood's tools open in two side by side windows the boot stock folder and carliv-recovery folder, then select kernel and kernel_header from boot and drag them over the carliv's kernel and kernel_header replacing both.
All the above are the same for jellybean or kitkat.
Modify required ramdisk files -Jellybean.
At this point there are some differences between jellybean and kitkat versions.
For jellybean the files are: recovery.fstab in etc folder, default.prop, fstab and init.rc.
For kitkat, they are named the same except the fstab is named fstab.mt65xx (according to your phone platform), but the content is different. So for kitkat first rename fstab.mt6582 to fstab.mt65nn, where mt65nn is your phone platform (ex. mt6592).
Jellybean:
Open editor, then open in one window dumchar_info.txt (the one you've got earlier), the fstab file, init.usb.rc from boot ramdisk and default.prop from recovery ramdisk, and in another window recovery.fstab from carliv's ramdisk/etc folder, fstab, default.prop and init.rc also from carliv's ramdisk.
Focus on dumchar_info at one side and recovery.fstab on the other side.
Code:
Part_Name Size StartAddr Type MapTo
preloader 0x0000000000600000 0x0000000000000000 2 /dev/misc-sd
mbr 0x0000000000080000 0x0000000000000000 2 /dev/block/mmcblk0
ebr1 0x0000000000080000 0x0000000000080000 2 /dev/block/mmcblk0p1
pmt 0x0000000000400000 0x0000000000100000 2 /dev/block/mmcblk0
pro_info 0x0000000000300000 0x0000000000500000 2 /dev/block/mmcblk0
nvram 0x0000000000500000 0x0000000000800000 2 /dev/block/mmcblk0
protect_f 0x0000000000a00000 0x0000000000d00000 2 /dev/block/mmcblk0p2
protect_s 0x0000000000a00000 0x0000000001700000 2 /dev/block/mmcblk0p3
seccfg 0x0000000000020000 0x0000000002100000 2 /dev/block/mmcblk0
uboot 0x0000000000060000 0x0000000002120000 2 /dev/block/mmcblk0
bootimg 0x0000000000600000 0x0000000002180000 2 /dev/block/mmcblk0
recovery 0x0000000000600000 0x0000000002780000 2 /dev/block/mmcblk0
sec_ro 0x0000000000600000 0x0000000002d80000 2 /dev/block/mmcblk0p4
misc 0x0000000000080000 0x0000000003380000 2 /dev/block/mmcblk0
logo 0x0000000000300000 0x0000000003400000 2 /dev/block/mmcblk0
ebr2 0x0000000000080000 0x0000000003700000 2 /dev/block/mmcblk0
expdb 0x0000000000a00000 0x0000000003780000 2 /dev/block/mmcblk0
android 0x0000000038000000 0x0000000004180000 2 /dev/block/mmcblk0p[COLOR="Red"]5[/COLOR]
cache 0x0000000007e00000 0x000000003c180000 2 /dev/block/mmcblk0p[COLOR="Red"]6[/COLOR]
usrdata 0x0000000060000000 0x0000000043f80000 2 /dev/block/mmcblk0p[COLOR="Red"]7[/COLOR]
fat 0x0000000041b80000 0x00000000a3f80000 2 /dev/block/mmcblk0p[COLOR="Red"]8[/COLOR]
bmtpool 0x0000000001500000 0x00000000ff9f00a8 2 /dev/block/mmcblk0
Code:
# mount point fstype device [device2]
[COLOR="Blue"]/boot emmc /dev/bootimg
/misc emmc /dev/misc
/nvram emmc /dev/nvram
/recovery emmc /dev/recovery
/uboot emmc /dev/uboot[/COLOR]
/system ext4 /dev/block/mmcblk0p[COLOR="Red"]5[/COLOR]
/cache ext4 /dev/block/mmcblk0p[COLOR="Red"]6[/COLOR]
/data ext4 /dev/block/mmcblk0p[COLOR="Red"]7[/COLOR]
/emmc vfat /dev/block/mmcblk0p[COLOR="Red"]8[/COLOR]
/sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1
Check the paths for partitions and correct them as in dumchar file. Note that in dumchar /system is "android" and /data is "usrdata". Also, in CWM from cm 10.1, the internal sdcard is "/emmc" or "/sdcard". Use "sdcard" if you have only internal sdcard on your phone, or if you want to use the internal sdcard as main sdcard (and in this case, name the external sdcard as "/external_sd"). If the phone is emmc type and has block type memory (dev/block/mmcblkxpx), you don't need to modify the paths for boot, recovery, nvram, misc or other emmc partition. If the phone is with an extra partition (custpack), you have to check few more entries on recovery.fstab.
Code:
Part_Name Size StartAddr T MapTo
preloader 0x0000000000040000 0x0000000000000000 2 /dev/misc-sd
dsp_bl 0x0000000000ec0000 0x0000000000040000 2 /dev/misc-sd
mbr 0x0000000000004000 0x0000000000000000 2 /dev/block/mmcblk0
ebr1 0x0000000000004000 0x0000000000004000 2 /dev/block/mmcblk0p1
ebr2 0x0000000000004000 0x0000000000008000 2 /dev/block/mmcblk0
pmt 0x0000000000400000 0x000000000000c000 2 /dev/block/mmcblk0
nvram 0x0000000000300000 0x000000000040c000 2 /dev/block/mmcblk0
seccfg 0x0000000000020000 0x000000000070c000 2 /dev/block/mmcblk0
uboot 0x0000000000060000 0x000000000072c000 2 /dev/block/mmcblk0
bootimg 0x0000000000600000 0x000000000078c000 2 /dev/block/mmcblk0
recovery 0x0000000000600000 0x0000000000d8c000 2 /dev/block/mmcblk0
sec_ro 0x0000000000600000 0x000000000138c000 2 /dev/block/mmcblk0p2
misc 0x0000000000060000 0x000000000198c000 2 /dev/block/mmcblk0
logo 0x0000000000300000 0x00000000019ec000 2 /dev/block/mmcblk0
expdb 0x00000000000f4000 0x0000000001cec000 2 /dev/block/mmcblk0
pro_info 0x0000000000080000 0x0000000001de0000 2 /dev/block/mmcblk0
[COLOR="Red"]custpack [/COLOR] 0x0000000019d00000 0x0000000001e60000 2 /dev/block/mmcblk0p[COLOR="Red"]3[/COLOR]
mobile_info 0x0000000000800000 0x000000001bb60000 2 /dev/block/mmcblk0p[COLOR="Red"]4[/COLOR]
android 0x0000000019d00000 0x000000001c360000 2 /dev/block/mmcblk0p[COLOR="Red"]5[/COLOR]
cache 0x0000000013900000 0x0000000036060000 2 /dev/block/mmcblk0p[COLOR="Red"]6[/COLOR]
usrdata 0x0000000059200000 0x0000000049960000 2 /dev/block/mmcblk0p[COLOR="Red"]7[/COLOR]
fat 0x000000005c590200 0x00000000a2b60000 2 /dev/block/mmcblk0p[COLOR="Red"]8[/COLOR]
otp 0xffffffffe87efe00 0x00000000ff0f0200 2 /dev/block/mmcblk0
bmtpool 0x0000000001500000 0x00000000ff0f00a8 2 /dev/block/mmcblk0
Code:
# mount point fstype device [device2]
[COLOR="Blue"]/boot emmc /dev/bootimg
/misc emmc /dev/misc
/recovery emmc /dev/recovery
/nvram emmc /dev/nvram
/uboot emmc /dev/uboot[/COLOR]
/system ext4 /dev/block/mmcblk0p[COLOR="Red"]5[/COLOR]
/data ext4 /dev/block/mmcblk0p[COLOR="Red"]7[/COLOR]
/cache ext4 /dev/block/mmcblk0p[COLOR="Red"]6[/COLOR]
/custpack ext4 /dev/block/mmcblk0p[COLOR="Red"]3[/COLOR]
/mobile_info ext4 /dev/block/mmcblk0p[COLOR="Red"]4[/COLOR]
/emmc vfat /dev/block/mmcblk0p[COLOR="Red"]8[/COLOR]
/sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1
For "custpack" phones the recovery.fstab from porting builds is wrong (sent by someone before), and you have to make it to look like this one above.
If the phone has Ubifs file system, the memory is flash type (dev/mtd/mtdx), and in dumchar_info you will find separate paths for every partition: you have to check every one's number and correct if is different (even for boot, recovery, etc).
Code:
preloader 0x0000000001000000 0x00000000 1 /dev/mtd/mtd0 USER
pro_info 0x0000000000400000 0x00000001 1 /dev/mtd/mtd1 USER
nvram 0x0000000000c00000 0x00000002 1 /dev/mtd/mtd2 USER
protect_f 0x0000000000c00000 0x00000003 1 /dev/mtd/mtd3 USER
seccfg 0x0000000000400000 0x00000004 1 /dev/mtd/mtd4 USER
uboot 0x0000000000400000 0x00000005 1 /dev/mtd/mtd5 USER
bootimg 0x0000000000800000 0x00000006 1 /dev/mtd/mtd6 USER
recovery 0x0000000000800000 0x00000007 1 /dev/mtd/mtd7 USER
sec_ro 0x0000000000400000 0x00000008 1 /dev/mtd/mtd8 USER
misc 0x0000000000c00000 0x00000009 1 /dev/mtd/mtd9 USER
logo 0x0000000000400000 0x0000000a 1 /dev/mtd/mtd10 USER
expdb 0x0000000000c00000 0x0000000b 1 /dev/mtd/mtd11 USER
tee1 0x0000000000800000 0x0000000c 1 /dev/mtd/mtd12 USER
tee2 0x0000000000800000 0x0000000d 1 /dev/mtd/mtd13 USER
kb 0x0000000000400000 0x0000000e 1 /dev/mtd/mtd14 USER
dkb 0x0000000000400000 0x0000000f 1 /dev/mtd/mtd15 USER
android 0x000000001f400000 0x00000010 1 /dev/mtd/mtd16 USER
cache 0x0000000008000000 0x00000011 1 /dev/mtd/mtd17 USER
usrdata 0x00000001bf000000 0x00000012 1 /dev/mtd/mtd18 USER
bmtpool 0x0000000000000000 0x00000000 1 USER
Code:
# mount point fstype device [device2]
/boot mtd /dev/mtd/mtd6
/misc mtd /dev/mtd/mtd9
/nvram mtd /dev/mtd/mtd2
/recovery mtd /dev/mtd/mtd7
/uboot mtd /dev/mtd/mtd5
/system ubifs /dev/mtd/mtd16
/cache ubifs /dev/mtd/mtd17
/data ubifs /dev/mtd/mtd18
/emmc vfat /dev/block/mmcblk0p1 /dev/block/mmcblk0
/sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1
Next focus on both fstab, from boot and carliv ramdisk. Replace the content of carliv fstab with the content of boot fstab. Usualy it looks like this:
Code:
# Android fstab file.
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
/[email protected] /system ext4 ro,noatime wait
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
Then focus on default.prop from recovery stock and carliv. Change in carliv default prop all relevant data regarding your phone, platform and producer or brand (this is for assert errors). See lines in blue - need to focus on those, and values in red - need to be replaced. First default.prop is from stock recovery, second is from porting carliv recovery. Replace from stock to carliv (for example instead of "new" will be "P780", instead of "mtk" will be "Lenovo" and so on.
Stock:
Code:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=1
persist.mtk.aee.aed=on
ro.debuggable=1
persist.service.acm.enable=0
persist.sys.usb.config=mass_storage,adb
ro.bootloader.mode=download
ro.mount.fs=EXT4
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=JOP40D
ro.build.display.id=P780_S129_130710
[COLOR="Blue"]ro.product.model[/COLOR]=[COLOR="Red"]Lenovo P780[/COLOR]
ro.product.sw.internal.version=Lenovo P780_S129_130710
ro.product.hw.version=9001
ro.product.particular.version=LENOVO_FUJIAN
ro.build.version.incremental=P780_S129_130710
ro.custom.build.version=1373441469
ro.build.version.sdk=17
ro.build.version.codename=REL
ro.build.version.release=4.2.1
ro.build.date=Fri Jul 4 13:51:39 EEST 2014
ro.build.date.utc=1373441534
ro.build.type=user
ro.build.user=carliv
ro.build.host=max
ro.build.tags=release-keys
[COLOR="Blue"]ro.product.brand[/COLOR]=[COLOR="Red"]Lenovo[/COLOR]
[COLOR="Blue"]ro.product.name[/COLOR]=[COLOR="Red"]P780[/COLOR]
[COLOR="Blue"]ro.product.device[/COLOR]=[COLOR="Red"]prada[/COLOR]
[COLOR="Blue"]ro.product.board[/COLOR]=[COLOR="Red"]prada[/COLOR]
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
[COLOR="Blue"]ro.product.manufacturer[/COLOR]=[COLOR="Red"]LENOVO[/COLOR]
ro.product.locale.language=en
ro.product.locale.region=US
ro.wifi.channels=
[COLOR="Blue"]ro.board.platform[/COLOR]=
# ro.build.product is obsolete; use ro.product.device
[COLOR="Blue"]ro.build.product[/COLOR]=[COLOR="Red"]P780[/COLOR]
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=[COLOR="Red"]P780[/COLOR]-user 4.2.1 JOP40D [COLOR="Red"]P780[/COLOR]_S129_130710 release-keys
ro.build.fingerprint=[COLOR="Red"]Lenovo[/COLOR]/[COLOR="Red"]P780[/COLOR]/[COLOR="Red"]P780[/COLOR]:4.2.1/JOP40D/P780_S129_130710:user/release-keys
ro.build.flavor=
ro.build.characteristics=default
# end build properties
# begin mediatek build properties
ro.mediatek.version.release=ALPS.JB2.MP.V1
ro.mediatek.platform=MT6589
ro.mediatek.chip_ver=S01
ro.mediatek.version.branch=ALPS.JB2.MP
ro.mediatek.version.sdk=1
# end mediatek build properties
#
# system.prop for generic sdk
#
and Carliv:
Code:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=1
persist.mtk.aee.aed=on
ro.debuggable=1
persist.service.acm.enable=0
persist.sys.usb.config=mass_storage,adb
ro.bootloader.mode=download
ro.mount.fs=EXT4
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=JDQ39E
ro.build.display.id=cm_[COLOR="Red"]new[/COLOR]-eng 4.2.2 JDQ39E 4c1705071f test-keys
ro.build.version.incremental=4c1705071f
ro.build.version.sdk=17
ro.build.version.codename=REL
ro.build.version.release=4.2.2
ro.build.date=Sat Dec 6 21:02:58 EET 2014
ro.build.date.utc=0
ro.build.type=eng
ro.build.user=carliv
ro.build.host=max
ro.build.tags=test-keys
[COLOR="Blue"]ro.product.model[/COLOR]=[COLOR="Red"]new[/COLOR]
[COLOR="Blue"]ro.product.brand[/COLOR]=[COLOR="Red"]mtk[/COLOR]
[COLOR="Blue"]ro.product.name[/COLOR]=cm_[COLOR="Red"]new[/COLOR]
[COLOR="Blue"]ro.product.device[/COLOR]=[COLOR="Red"]new[/COLOR]
[COLOR="Blue"]ro.product.board[/COLOR]=
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
[COLOR="Blue"]ro.product.manufacturer[/COLOR]=[COLOR="Red"]mtk[/COLOR]
ro.product.locale.language=en
ro.product.locale.region=US
ro.wifi.channels=
[COLOR="Blue"]ro.board.platform[/COLOR]=[COLOR="Red"]mt6582[/COLOR]
# ro.build.product is obsolete; use ro.product.device
[COLOR="Blue"]ro.build.product[/COLOR]=[COLOR="Red"]new[/COLOR]
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=cm_[COLOR="Red"]new[/COLOR]-eng 4.2.2 JDQ39E 4c1705071f test-keys
ro.build.fingerprint=[COLOR="Red"]mtk[/COLOR]/cm_[COLOR="Red"]new[/COLOR]/[COLOR="Red"]new[/COLOR]:4.2.2/JDQ39E/4c1705071f:eng/test-keys
ro.build.characteristics=default
[COLOR="Blue"]ro.cm.device[/COLOR]=[COLOR="Red"]new[/COLOR]
# end build properties
#
# system.prop for new
#
#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.rommanager.developerid=cyanogenmod
keyguard.no_require_sim=true
ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html
ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html
ro.com.google.clientidbase=android-google
ro.com.android.wifi-watchlist=GoogleGuest
ro.setupwizard.enterprise_mode=1
ro.com.android.dateformat=MM-dd-yyyy
ro.com.android.dataroaming=false
persist.sys.root_access=1
ro.cm.version=10.1-20141206-UNOFFICIAL-[COLOR="Red"]new[/COLOR]
ro.modversion=10.1-20141206-UNOFFICIAL-[COLOR="Red"]new[/COLOR]
ro.config.ringtone=Orion.ogg
ro.config.notification_sound=Argon.ogg
ro.config.alarm_alert=Hassium.ogg
ro.carrier=unknown
ro.ril.hsxpa=1
ro.ril.gprsclass=10
ro.adb.qemud=1
ro.kernel.android.checkjni=1
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
Last step, focus on init.rc from carliv and init.usb.rc from boot. Check idVendor and idProduct for mass_storage,adb function. Replace them with data from init.usb.rc.
Code:
on init
# Workarunod for USB unknow device issue
# USB would switch correct function when set properity sys.usb.config
setprop sys.usb.vid [COLOR="Red"]17EF[/COLOR]
write /sys/class/android_usb/android0/iSerial $ro.serialno
write /sys/class/android_usb/android0/[COLOR="Blue"]idVendor[/COLOR] $sys.usb.vid
.............
#2.[COLOR="Blue"]adb[/COLOR]
on property:sys.usb.config=adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor $sys.usb.vid
write /sys/class/android_usb/android0/[COLOR="Blue"]idProduct[/COLOR] [COLOR="Red"]7495[/COLOR]
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
........
#5.[COLOR="Blue"]mass_storage,adb[/COLOR]
on property:sys.usb.config=mass_storage,adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/[COLOR="Blue"]idVendor[/COLOR] $sys.usb.vid
write /sys/class/android_usb/android0/[COLOR="Blue"]idProduct[/COLOR] [COLOR="Red"]7435[/COLOR]
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
#6.mtp
Code:
on early-init
start ueventd
on init
export PATH /sbin
export ANDROID_ROOT /system
export ANDROID_DATA /data
export EXTERNAL_STORAGE /sdcard
symlink /system/etc /etc
mkdir /boot
mkdir /misc
mkdir /storage
mkdir /sdcard
mkdir /internal_sd
mkdir /external_sd
mkdir /sd-ext
mkdir /datadata
mkdir /emmc
mkdir /system
mkdir /data
mkdir /cache
mount /tmp /tmp tmpfs
chown root shell /tmp
chmod 0775 /tmp
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/iSerial "0123456789ABCDEF"
write /sys/class/android_usb/android0/[COLOR="Blue"]idVendor[/COLOR] [COLOR="Red"]0bb4[/COLOR] <- [COLOR="Red"]17EF[/COLOR]
write /sys/class/android_usb/android0/[COLOR="Blue"]idProduct[/COLOR] [COLOR="Red"]0c03[/COLOR] <- [COLOR="Red"]7435[/COLOR]
write /sys/class/android_usb/android0/functions mass_storage,adb
write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
write /sys/class/android_usb/android0/iProduct ${ro.product.model}
write /sys/class/android_usb/android0/enable 1
on boot
ifup lo
hostname localhost
domainname localdomain
class_start default
on property:sys.powerctl=*
powerctl ${sys.powerctl}
service ueventd /sbin/ueventd
critical
service recovery /sbin/recovery
service setup_adbd /sbin/setup_adbd
oneshot
service adbd /sbin/adbd recovery
disabled
# Recovery will start adb once it has checked the keys
on property:ro.debuggable=1
#write /sys/class/android_usb/android0/enable 1
#start adbd
setprop service.adb.root 1
# Restart adbd so it can run as root
on property:service.adb.root=1
write /sys/class/android_usb/android0/enable 0
restart adbd
write /sys/class/android_usb/android0/enable 1
Modify required ramdisk files - Kitkat.
Kitkat:
Open editor, then open in one window dumchar_info.txt (the one you've got earlier), the fstab file, init.usb.rc, meta.init.rc, any init file with ssd in name from boot ramdisk and default.prop from recovery ramdisk, and in another window recovery.fstab from carliv's ramdisk/etc folder, fstab.mt65nn, default.prop and init.rc also from carliv's ramdisk.
Check and compare both default.prop and make same modifications as for jellybean.
Stock:
Code:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
persist.mtk.aee.aed=on
ro.debuggable=0
ro.adb.secure=1
persist.sys.usb.config=mtp
persist.service.acm.enable=0
ro.mount.fs=EXT4
ro.persist.partition.support=no
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=KOT49H
ro.build.display.id=VIBEUI_V2.0_1437_7.14.1_ST_P780
ro.build.version.incremental=VIBEUI_V2.0_1437_7.14.1_ST_P780
ro.custom.build.version=VIBEUI_V2.0_1437_7.14.1_ST_P780
ro.build.version.sdk=19
ro.build.version.codename=REL
ro.build.version.release=4.4.2
ro.build.date=Wed Sep 3 05:55:18 CST 2014
ro.build.date.utc=1409694918
ro.build.type=user
ro.build.user=buildslave
ro.build.host=xmws54
ro.build.tags=release-keys
[COLOR="Blue"]ro.product.model[/COLOR]=[COLOR="Red"]Lenovo P780[/COLOR]
[COLOR="Blue"]ro.product.brand[/COLOR]=[COLOR="Red"]Lenovo[/COLOR]
[COLOR="Blue"]ro.product.name[/COLOR]=[COLOR="Red"]prada[/COLOR]
[COLOR="Blue"]ro.product.device[/COLOR]=[COLOR="Red"]P780[/COLOR]
[COLOR="Blue"]ro.product.board[/COLOR]=[COLOR="Red"]prada[/COLOR]
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
[COLOR="Blue"]ro.product.manufacturer[/COLOR]=[COLOR="Red"]LENOVO[/COLOR]
ro.product.locale.language=zh
ro.product.locale.region=CN
ro.wifi.channels=
[COLOR="Blue"]ro.board.platform[/COLOR]=
# ro.build.product is obsolete; use ro.product.device
[COLOR="Blue"]ro.build.product[/COLOR]=[COLOR="Red"]P780[/COLOR]
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=prada-user 4.4.2 KOT49H VIBEUI_V2.0_1437_7.14.1_ST_P780 dev-keys
ro.build.fingerprint=[COLOR="Red"]Lenovo[/COLOR]/[COLOR="Red"]prada[/COLOR]/[COLOR="Red"]P780[/COLOR]:4.4.2/KOT49H/VIBEUI_V2.0_1437_7.14.1_ST_P780.:user/release-keys
ro.build.flavor=
ro.build.characteristics=default
# end build properties
# begin mediatek build properties
ro.mediatek.version.release=ALPS.KK1.MP5.V1
ro.mediatek.platform=MT6589
ro.mediatek.chip_ver=S01
ro.mediatek.version.branch=KK1.MP5
ro.mediatek.version.sdk=2
# end mediatek build properties
#
# from out/target/product/prada/obj/CUSTGEN/config/system.prop
#
#
# system.prop for generic sdk
#
.........
[COLOR="Red"]ro.product.ota.model=LenovoP780_ROM_ST_KK[/COLOR]
......
dalvik.vm.stack-trace-file=/data/anr/traces.txt
and Carliv:
Code:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=1
persist.mtk.aee.aed=on
ro.debuggable=1
persist.service.acm.enable=0
persist.sys.usb.config=mass_storage,adb
ro.bootloader.mode=download
ro.mount.fs=EXT4
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=KTU84Q
ro.build.display.id=cm_[COLOR="Red"]new[/COLOR]-eng 4.4.4 KTU84Q 347d7427a4 test-keys
ro.build.version.incremental=347d7427a4
ro.build.version.sdk=19
ro.build.version.codename=REL
ro.build.version.release=4.4.4
ro.build.date=Tue Dec 9 16:23:16 EET 2014
ro.build.date.utc=0
ro.build.type=eng
ro.build.user=carliv
ro.build.host=max
ro.build.tags=test-keys
[COLOR="Blue"]ro.product.brand[/COLOR]=[COLOR="Red"]mtk[/COLOR]
[COLOR="Blue"]ro.product.name[/COLOR]=cm_[COLOR="Red"]new[/COLOR]
[COLOR="Blue"]ro.product.board[/COLOR]=
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
[COLOR="Blue"]ro.product.manufacturer[/COLOR]=[COLOR="Red"]mtk[/COLOR]
ro.product.locale.language=en
ro.product.locale.region=US
ro.wifi.channels=
[COLOR="Blue"]ro.board.platform[/COLOR]=[COLOR="Red"]mt6582[/COLOR]
# ro.build.product is obsolete; use ro.product.device
[COLOR="Blue"]ro.build.product[/COLOR]=[COLOR="Red"]new[/COLOR]
[COLOR="Blue"]ro.product.model[/COLOR]=[COLOR="Red"]new[/COLOR]
[COLOR="Blue"]ro.product.device[/COLOR]=[COLOR="Red"]new[/COLOR]
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=cm_[COLOR="Red"]new[/COLOR]-eng 4.4.4 KTU84Q 347d7427a4 test-keys
ro.build.fingerprint=[COLOR="Red"]mtk[/COLOR]/cm_[COLOR="Red"]new[/COLOR]/[COLOR="Red"]new[/COLOR]:4.4.4/KTU84Q/347d7427a4:eng/test-keys
ro.build.characteristics=default
[COLOR="Blue"]ro.cm.device[/COLOR]=[COLOR="Red"]new[/COLOR]
# end build properties
#
# from device/mtk/new/system.prop
#
#
# system.prop for new
#
#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.rommanager.developerid=cyanogenmod
ro.com.google.clientidbase=android-google
keyguard.no_require_sim=true
ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html
ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html
ro.com.android.wifi-watchlist=GoogleGuest
ro.setupwizard.enterprise_mode=1
ro.com.android.dateformat=MM-dd-yyyy
ro.com.android.dataroaming=false
ro.build.selinux=1
persist.sys.dalvik.multithread=false
persist.sys.dun.override=0
persist.sys.root_access=1
ro.cm.version=11-20141209-UNOFFICIAL-[COLOR="Red"]new[/COLOR]
ro.cm.releasetype=UNOFFICIAL
ro.modversion=11-20141209-UNOFFICIAL-[COLOR="Red"]new[/COLOR]
ro.cmlegal.url=http://www.cyanogenmod.org/docs/privacy
persist.sys.recovery_update=false
ro.cm.display.version=11-20141209-UNOFFICIAL-[COLOR="Red"]new[/COLOR]
ro.config.notification_sound=Argon.ogg
ro.config.alarm_alert=Hassium.ogg
ro.config.ringtone=Orion.ogg
ro.carrier=unknown
ro.ril.hsxpa=1
ro.ril.gprsclass=10
ro.adb.qemud=1
persist.sys.dalvik.vm.lib=libdvm.so
ro.kernel.android.checkjni=1
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
Compare recovery.fstab with fstab and dumchar file, and also with fstab.mt65nn. If there are any modifications make them, but usually if your device is emmc too only one thing you have to modify: the paths for voldmanaged sdcards. In boot fstab those paths are not correct, don't work for recovery, and you need to find correct path right in your phone with a root explorer.
Stock recovery.fstab, can't be used:
Code:
boot /boot emmc defaults defaults
/dev/block/mmcblk0p2 /cache ext4 defaults defaults
/dev/block/mmcblk0p3 /data ext4 defaults defaults
misc /misc emmc defaults defaults
recovery /recovery emmc defaults defaults
/dev/block/mmcblk0p4 /sdcard vfat defaults defaults
/dev/block/mmcblk0p6 /system ext4 defaults defaults
Stock fstab, wrong sdcards paths:
Code:
# Android fstab file.
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check,encryptable=footer
/[email protected]_f /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
/[email protected]_s /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
[COLOR="Red"]/devices/platform/mtk-msdc.0/mmc_host[/COLOR] auto vfat defaults voldmanaged=sdcard0:[email protected],[COLOR="Red"]noemulatedsd[/COLOR]
[COLOR="Red"]/devices/platform/mtk-msdc.1/mmc_host[/COLOR] auto vfat defaults voldmanaged=sdcard1:auto
#lenovo-sw yexh1 2014_03_19 add for usbotg sdcard2
/devices/platform/mt_usb/sda auto vfat defaults voldmanaged=usbotg:auto
/devices/platform/mt_usb/sdb auto vfat defaults voldmanaged=usbotg1:auto
#lenovo-sw yexh1 2014_03_19 add for usbotg sdcard2,end
Carliv fstab.mt65nn, this will work
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/[email protected] /system ext4 ro,noatime wait
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
/[email protected]_f /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
/[email protected]_s /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
# vold-managed volumes
[COLOR="Blue"]/devices/platform/mtk-msdc.0/mmc_host/mmc0[/COLOR] auto auto defaults voldmanaged=sdcard1:8
[COLOR="Blue"]/devices/platform/mtk-msdc.1/mmc_host/mmc1[/COLOR] auto auto defaults voldmanaged=sdcard0:auto
/dev/bootimg /boot emmc defaults defaults
/dev/nvram /nvram emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/dev/misc /misc emmc defaults defaults
and carliv recovery.fstab
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/[email protected] /system ext4 ro,noatime wait
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard1:8,
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard0:auto
/dev/bootimg /boot emmc defaults defaults
/dev/nvram /nvram emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/dev/misc /misc emmc defaults defaults
Also, if you use any label after sdcardn:auto, it won't work (ex. noemulatedsd, nonremovablesd). Copy same things from recovery.fstab to fstab.mt65nn, if there are some changes. In fstab.mt65nn there are two more partitions, protect_f and protect_s, or other for custapck phones.
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/[email protected] /system ext4 ro,noatime wait
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
[COLOR="Red"]/[email protected]_f /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
/[email protected]_s /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check[/COLOR]
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:8
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
/devices/platform/mt_usb/sda/sda1 auto auto defaults voldmanaged=usbotg:auto
/dev/bootimg /boot emmc defaults defaults
/dev/nvram /nvram emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/dev/misc /misc emmc defaults defaults
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/[email protected] /system ext4 ro,noatime wait
[COLOR="Red"]/[email protected] /custpack ext4 noatime,nosuid,nodev,noauto_da_alloc wait[/COLOR]
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
[COLOR="Red"]/[email protected]_info /mobile_info ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check[/COLOR]
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:8,
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
/dev/bootimg /boot emmc defaults defaults
/dev/nvram /nvram emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/dev/misc /misc emmc defaults defaults
If the phone has Ubifs file system, set the paths according to dumchar only for mtd partitions, not ubifs.
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/[email protected] /system ubifs ro,noatime wait
/[email protected] /cache ubifs noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ubifs noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:8,
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
/dev/mtd/mtd6 /boot mtd defaults defaults
/dev/mtd/mtd2 /nvram mtd defaults defaults
/dev/mtd/mtd7 /recovery mtd defaults defaults
/dev/mtd/mtd5 /uboot mtd defaults defaults
/dev/mtd/mtd9 /misc mtd defaults defaults
Last step, focus on init.rc on one side and the other rc files from boot on the other side. You have to check sdcards setup as bellow.
Code:
on early-init
# Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls.
write /sys/fs/selinux/checkreqprot 0
# Set the security context for the init process.
# This should occur before anything else (e.g. ueventd) is started.
setcon u:r:init:s0
start ueventd
start healthd
on init
export PATH /sbin:/system/bin
export ANDROID_ROOT /system
export ANDROID_DATA /data
[COLOR="Red"] export EXTERNAL_STORAGE /storage/sdcard0
export SECONDARY_STORAGE /storage/sdcard1[/COLOR]
symlink /system/etc /etc
mkdir /boot
mkdir /recovery
mkdir /sdcard
mkdir /internal_sd
mkdir /external_sd
mkdir /sd-ext
mkdir /datadata
mkdir /sdcard2
mkdir /system
mkdir /cache
mkdir /data
mount tmpfs tmpfs /tmp
chown root shell /tmp
chmod 0775 /tmp
# See storage config details at http://source.android.com/tech/storage/
mkdir /mnt 0775 root system
mkdir /storage 0050 root sdcard_r
mount tmpfs tmpfs /storage mode=0050,uid=0,gid=1028
[COLOR="Red"]mkdir /mnt/media_rw/sdcard0 0700 media_rw media_rw
mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
mkdir /storage/sdcard0 0700 root root
mkdir /storage/sdcard1 0700 root root[/COLOR]
[COLOR="Red"] symlink /storage/sdcard0 /sdcard
symlink /storage/sdcard0 /mnt/sdcard
symlink /storage/sdcard1 /sdcard2
symlink /storage/sdcard1 /mnt/sdcard2[/COLOR]
mkdir /mnt/shell 0700 shell shell
# Directory for putting things only root should see.
mkdir /mnt/secure 0700 root root
# Create private mountpoint so we can MS_MOVE from staging
mount tmpfs tmpfs /mnt/secure mode=0700,uid=0,gid=0
# Directory for staging bindmounts
mkdir /mnt/secure/staging 0700 root root
# Fuse public mount points.
mkdir /mnt/fuse 0700 root system
mount tmpfs tmpfs /mnt/fuse mode=0775,gid=1000
on fs
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor [COLOR="Red"]0BB4[/COLOR]
write /sys/class/android_usb/android0/idProduct [COLOR="Red"]0C03[/COLOR]
write /sys/class/android_usb/android0/f_ffs/aliases adb
write /sys/class/android_usb/android0/functions [COLOR="Red"]mass_storage,adb[/COLOR]
write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
write /sys/class/android_usb/android0/iProduct ${ro.product.model}
write /sys/class/android_usb/android0/iSerial ${ro.serialno}
on boot
ifup lo
hostname localhost
domainname localdomain
class_start default
on property:sys.powerctl=*
powerctl ${sys.powerctl}
service ueventd /sbin/ueventd
critical
seclabel u:r:ueventd:s0
service healthd /sbin/healthd -n
critical
seclabel u:r:healthd:s0
service recovery /sbin/recovery
seclabel u:r:recovery:s0
service setup_adbd /sbin/setup_adbd
oneshot
service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
disabled
socket adbd stream 660 system system
seclabel u:r:adbd:s0
service vold /sbin/minivold
socket vold stream 0660 root mount
ioprio be 2
seclabel u:r:recovery:s0
[COLOR="Red"]# virtual sdcard daemon running as media_rw (1023)
service fuse_sdcard0 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard0 /storage/sdcard0
class late_start
disabled
# virtual sdcard daemon running as media_rw (1023)
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled[/COLOR]
# setup_adbd will start adb once it has checked the keys
on property:service.adb.root=1
write /sys/class/android_usb/android0/enable 0
restart adbd
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=1
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct [COLOR="Red"]0C03[/COLOR]
write /sys/class/android_usb/android0/functions [COLOR="Red"]mass_storage,adb[/COLOR]
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=0
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct [COLOR="Red"]0C01[/COLOR]
write /sys/class/android_usb/android0/functions [COLOR="Red"]adb[/COLOR]
write /sys/class/android_usb/android0/enable ${service.adb.root}
In above example I highlighted all parts you need to focus on. Here there is something inportant: for sdcard services, give "other(world)" read/write permissions only for external sdcard. In my example that is sdcard0 because I use a modified fstab in my phone, with external sdcard as main sdcard. The CWM for kitkat takes as main sdcard the "sdcard0" by default. You can change that in fstab, by setting /storage/sdcard0 as sdcard1 and /storage/sdcard1 as sdcard0 - this is what I did.
Code:
service fuse_sdcard0 /system/bin/sdcard -u 1023 -g 1023[COLOR="Red"] -w 1023[/COLOR] -d /mnt/media_rw/sdcard0 /storage/sdcard0
class late_start
disabled
# virtual sdcard daemon running as media_rw (1023)
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled
Usualy all informations are in the init file with ssd in name, and you can double check them in meta.init.rc.
Also you can find what sdcards you have in your phone by typing this in a terminal or command prompt through adb:
Code:
adb shell
env | grep sdcard
For vendor and product id check init.usb.rc.
Possible sdcards setups:
1. noemulated:
Code:
on early-init
# Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls.
write /sys/fs/selinux/checkreqprot 0
# Set the security context for the init process.
# This should occur before anything else (e.g. ueventd) is started.
setcon u:r:init:s0
start ueventd
start healthd
on init
export PATH /sbin:/system/bin
export ANDROID_ROOT /system
export ANDROID_DATA /data
[COLOR="Red"] export EXTERNAL_STORAGE /storage/sdcard0
export SECONDARY_STORAGE /storage/sdcard1[/COLOR]
symlink /system/etc /etc
mkdir /boot
mkdir /recovery
mkdir /sdcard
mkdir /internal_sd
mkdir /external_sd
mkdir /sd-ext
mkdir /datadata
[COLOR="Red"]mkdir /sdcard2[/COLOR]
mkdir /system
mkdir /cache
mkdir /data
mount tmpfs tmpfs /tmp
chown root shell /tmp
chmod 0775 /tmp
# See storage config details at http://source.android.com/tech/storage/
mkdir /mnt 0775 root system
mkdir /storage 0050 root sdcard_r
mount tmpfs tmpfs /storage mode=0050,uid=0,gid=1028
[COLOR="Red"]mkdir /mnt/media_rw/sdcard0 0700 media_rw media_rw
mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
mkdir /storage/sdcard0 0700 root root
mkdir /storage/sdcard1 0700 root root[/COLOR]
[COLOR="Red"] symlink /storage/sdcard0 /sdcard
symlink /storage/sdcard0 /mnt/sdcard
symlink /storage/sdcard1 /sdcard2
symlink /storage/sdcard1 /mnt/sdcard2[/COLOR]
mkdir /mnt/shell 0700 shell shell
# Directory for putting things only root should see.
mkdir /mnt/secure 0700 root root
# Create private mountpoint so we can MS_MOVE from staging
mount tmpfs tmpfs /mnt/secure mode=0700,uid=0,gid=0
# Directory for staging bindmounts
mkdir /mnt/secure/staging 0700 root root
# Fuse public mount points.
mkdir /mnt/fuse 0700 root system
mount tmpfs tmpfs /mnt/fuse mode=0775,gid=1000
on fs
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor [COLOR="Red"]0BB4[/COLOR]
write /sys/class/android_usb/android0/idProduct [COLOR="Red"]0C03[/COLOR]
write /sys/class/android_usb/android0/f_ffs/aliases adb
write /sys/class/android_usb/android0/functions [COLOR="Red"]mass_storage,adb[/COLOR]
write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
write /sys/class/android_usb/android0/iProduct ${ro.product.model}
write /sys/class/android_usb/android0/iSerial ${ro.serialno}
on boot
ifup lo
hostname localhost
domainname localdomain
class_start default
on property:sys.powerctl=*
powerctl ${sys.powerctl}
service ueventd /sbin/ueventd
critical
seclabel u:r:ueventd:s0
service healthd /sbin/healthd -n
critical
seclabel u:r:healthd:s0
service recovery /sbin/recovery
seclabel u:r:recovery:s0
service setup_adbd /sbin/setup_adbd
oneshot
service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
disabled
socket adbd stream 660 system system
seclabel u:r:adbd:s0
service vold /sbin/minivold
socket vold stream 0660 root mount
ioprio be 2
seclabel u:r:recovery:s0
[COLOR="Red"]# virtual sdcard daemon running as media_rw (1023)
service fuse_sdcard0 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard0 /storage/sdcard0
class late_start
disabled
# virtual sdcard daemon running as media_rw (1023)
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled[/COLOR]
# setup_adbd will start adb once it has checked the keys
on property:service.adb.root=1
write /sys/class/android_usb/android0/enable 0
restart adbd
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=1
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct [COLOR="Red"]0C03[/COLOR]
write /sys/class/android_usb/android0/functions [COLOR="Red"]mass_storage,adb[/COLOR]
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=0
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct [COLOR="Red"]0C01[/COLOR]
write /sys/class/android_usb/android0/functions [COLOR="Red"]adb[/COLOR]
write /sys/class/android_usb/android0/enable ${service.adb.root}
Modify required ramdisk files - Kitkat - II.
2. one emulated:
Code:
on early-init
# Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls.
write /sys/fs/selinux/checkreqprot 0
# Set the security context for the init process.
# This should occur before anything else (e.g. ueventd) is started.
setcon u:r:init:s0
start ueventd
start healthd
on init
export PATH /sbin:/system/bin
export ANDROID_ROOT /system
export ANDROID_DATA /data
[COLOR="Red"]export EXTERNAL_STORAGE /storage/sdcard0[/COLOR]
symlink /system/etc /etc
[COLOR="Red"]symlink /data/media/0 /storage/sdcard0[/COLOR]
mkdir /boot
mkdir /recovery
mkdir /sdcard
mkdir /internal_sd
mkdir /external_sd
mkdir /sd-ext
mkdir /datadata
mkdir /system
mkdir /emmc
mkdir /cache
mkdir /data
mount tmpfs tmpfs /tmp
chown root shell /tmp
chmod 0775 /tmp
# See storage config details at http://source.android.com/tech/storage/
mkdir /mnt 0775 root system
mkdir /storage 0050 root sdcard_r
mount tmpfs tmpfs /storage mode=0050,uid=0,gid=1028
mkdir /mnt/shell 0700 shell shell
# Directory for putting things only root should see.
mkdir /mnt/secure 0700 root root
# Create private mountpoint so we can MS_MOVE from staging
mount tmpfs tmpfs /mnt/secure mode=0700,uid=0,gid=0
# Directory for staging bindmounts
mkdir /mnt/secure/staging 0700 root root
# Fuse public mount points.
mkdir /mnt/fuse 0700 root system
mount tmpfs tmpfs /mnt/fuse mode=0775,gid=1000
on fs
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
write /sys/class/android_usb/android0/enable 0
[COLOR="Red"]write /sys/class/android_usb/android0/idVendor 0BB4
write /sys/class/android_usb/android0/idProduct 0C03[/COLOR]
write /sys/class/android_usb/android0/f_ffs/aliases adb
[COLOR="Red"]write /sys/class/android_usb/android0/functions mass_storage,adb[/COLOR]
write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
write /sys/class/android_usb/android0/iProduct ${ro.product.model}
write /sys/class/android_usb/android0/iSerial ${ro.serialno}
on boot
ifup lo
hostname localhost
domainname localdomain
class_start default
on property:sys.powerctl=*
powerctl ${sys.powerctl}
service ueventd /sbin/ueventd
critical
seclabel u:r:ueventd:s0
service healthd /sbin/healthd -n
critical
seclabel u:r:healthd:s0
service recovery /sbin/recovery
seclabel u:r:recovery:s0
service setup_adbd /sbin/setup_adbd
oneshot
service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
disabled
socket adbd stream 660 system system
seclabel u:r:adbd:s0
service vold /sbin/minivold
socket vold stream 0660 root mount
ioprio be 2
seclabel u:r:recovery:s0
# setup_adbd will start adb once it has checked the keys
on property:service.adb.root=1
write /sys/class/android_usb/android0/enable 0
restart adbd
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=1
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct 0C03
write /sys/class/android_usb/android0/functions mass_storage,adb
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=0
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct 0C01
write /sys/class/android_usb/android0/functions adb
write /sys/class/android_usb/android0/enable ${service.adb.root}
3. one emulated and one noemulated:
Code:
on early-init
# Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls.
write /sys/fs/selinux/checkreqprot 0
# Set the security context for the init process.
# This should occur before anything else (e.g. ueventd) is started.
setcon u:r:init:s0
start ueventd
start healthd
on init
export PATH /sbin:/system/bin
export ANDROID_ROOT /system
export ANDROID_DATA /data
[COLOR="Red"]export EXTERNAL_STORAGE /storage/sdcard0
export SECONDARY_STORAGE /storage/sdcard1[/COLOR]
symlink /system/etc /etc
[COLOR="Red"]symlink /data/media/0 /storage/sdcard0[/COLOR]
mkdir /boot
mkdir /recovery
mkdir /sdcard
mkdir /internal_sd
mkdir /external_sd
mkdir /sd-ext
[COLOR="Red"]mkdir /sdcard2[/COLOR]
mkdir /datadata
mkdir /system
mkdir /emmc
mkdir /cache
mkdir /data
mount tmpfs tmpfs /tmp
chown root shell /tmp
chmod 0775 /tmp
# See storage config details at http://source.android.com/tech/storage/
mkdir /mnt 0775 root system
mkdir /storage 0050 root sdcard_r
mount tmpfs tmpfs /storage mode=0050,uid=0,gid=1028
[COLOR="Red"]mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
mkdir /mnt/shell 0700 shell shell
mkdir /storage/sdcard1 0700 root root
symlink /storage/sdcard1 /mnt/sdcard2[/COLOR]
# Directory for putting things only root should see.
mkdir /mnt/secure 0700 root root
# Create private mountpoint so we can MS_MOVE from staging
mount tmpfs tmpfs /mnt/secure mode=0700,uid=0,gid=0
# Directory for staging bindmounts
mkdir /mnt/secure/staging 0700 root root
# Fuse public mount points.
mkdir /mnt/fuse 0700 root system
mount tmpfs tmpfs /mnt/fuse mode=0775,gid=1000
on fs
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
write /sys/class/android_usb/android0/enable 0
[COLOR="Red"]write /sys/class/android_usb/android0/idVendor 0BB4
write /sys/class/android_usb/android0/idProduct 0C03[/COLOR]
write /sys/class/android_usb/android0/f_ffs/aliases adb
[COLOR="Red"]write /sys/class/android_usb/android0/functions mass_storage,adb[/COLOR]
write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
write /sys/class/android_usb/android0/iProduct ${ro.product.model}
write /sys/class/android_usb/android0/iSerial ${ro.serialno}
on boot
ifup lo
hostname localhost
domainname localdomain
class_start default
on property:sys.powerctl=*
powerctl ${sys.powerctl}
service ueventd /sbin/ueventd
critical
seclabel u:r:ueventd:s0
service healthd /sbin/healthd -n
critical
seclabel u:r:healthd:s0
service recovery /sbin/recovery
seclabel u:r:recovery:s0
service setup_adbd /sbin/setup_adbd
oneshot
service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
disabled
socket adbd stream 660 system system
seclabel u:r:adbd:s0
service vold /sbin/minivold
socket vold stream 0660 root mount
ioprio be 2
seclabel u:r:recovery:s0
[COLOR="Red"]
# virtual sdcard daemon running as media_rw (1023)
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled[/COLOR]
# setup_adbd will start adb once it has checked the keys
on property:service.adb.root=1
write /sys/class/android_usb/android0/enable 0
restart adbd
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=1
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct 0C03
write /sys/class/android_usb/android0/functions mass_storage,adb
write /sys/class/android_usb/android0/enable 1
on property:sys.storage.ums_enabled=0
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct 0C01
write /sys/class/android_usb/android0/functions adb
write /sys/class/android_usb/android0/enable ${service.adb.root}
Official info for new sdcard setup here.
If you pay attention to this, these files are the only files you need to have a working recovery, and you don't need extra init files includes.
Repack the ported recovery.
In windows just drag the carliv-recovery (or what name you gave it) folder over the repack_MTK_img.bat or MTK_pack.bat and that's it. If you use CarlivImageKitchen the script will prompt you to input a name for the new ported recovery; choose a name with the word recovery in it. For michfood's tool you will get a new-image.img. Rename it recovery.img and flash it in your phone.
In linux, for CarlivImageKitchen type
Code:
./repack_MTK_img carliv-recovery
, when carliv-recovery is the name of the folder with the new ported recovery files. Same rules for prompt to choose a new name as in windows.
For bgcngm's tools in linux delete boot.img-ramdisk, recovery.img-ramdisk-stock, and rename recovery.img-ramdisk-carliv to recovery.img-ramdisk and recovery.img-kernel.img-stock to recovery.img-kernel.img.
Then type:
Code:
./repack-MTK.pl -recovery recovery.img-kernel.img recovery.img-ramdisk new-recovery.img
When it's finished you will find new-recovery.img in mtk tools folder. Rename it recovery.img and flash it in your phone.
Another usefull guide sir,,,
Thanx [emoji4]
carliv said:
........
If you pay attention to this, these files are the only files you need to have a working recovery, and you don't need extra init files includes.
Click to expand...
Click to collapse
Great guide as always sir,
I am not getting this last line before repacking
Do we need to include in the port recovery (from stock boot folder).
Or just needed the data inside the files to get vendorid and product id.
Thank you.
avi3230 said:
Great guide as always sir,
I am not getting this last line before repacking
Do we need to include in the port recovery (from stock boot folder).
Or just needed the data inside the files to get vendorid and product id.
Thank you.
Click to expand...
Click to collapse
As I said, you only need the data from stock files - those marked by me in red in example.
carliv said:
As I said, you only need the data from stock files - those marked by me in red in example.
Click to expand...
Click to collapse
Here we go one more awesome guide! :good:
Thanks Master Carliv
EDIT : Figured out myself! Thanks works perfectly as a charm.
master carliv
Carliv Touch Recovery v3.0 for Kitkat has been successfully running on Evercross A66A_09_MT6582M_V 2.11
Thank you for providing Instructions
:good::good::good:
br,
ramex
ramex said:
master carliv
Carliv Touch Recovery v3.0 for Kitkat has been successfully running on Evercross A66A_09_MT6582M_V 2.11
br,
ramex
Click to expand...
Click to collapse
That's good, but looking at that image it seems that you used a wrong version to port. If I have to guess, I think you used 1280x720 instead of 720x1280, or something like that. The pictures from first post are made on a screen with 720x1280. There is a difference between yours and those, isn't it? If you use the right resolution it will look even better.
Cheers!
carliv said:
That's good, but looking at that image it seems that you used a wrong version to port. If I have to guess, I think you used 1280x720 instead of 720x1280, or something like that. The pictures from first post are made on a screen with 720x1280. There is a difference between yours and those, isn't it? If you use the right resolution it will look even better.
Cheers!
Click to expand...
Click to collapse
You right,
Better to use 720x1280 rather than resolution of 1280 x 720 and I already apply to latest ROM EVERCOSS A66A V12 MT6582M
Thank You.
:good::good::good:
br,
ramex
syntax of the command is incorrect
while unpacking disc images, i am getting error at the end of the command window saying syntax of the command is incorrect.
Also, while unpacking stock boot image and recovery image, i am getting error saying "end offset is lower than start offset"
can you please help me?
im using windows 7 home premium, boot/recovery unpack/repack tool was used on desktop...
my device is panasonic p81, mt6592, resolution 720*1280
i have attached screenshots and also a zip file that includes same screenshots in good resolution.
Thanks in advance...
Sagar_Patel said:
while unpacking disc images, i am getting error at the end of the command window saying syntax of the command is incorrect.
Also, while unpacking stock boot image and recovery image, i am getting error saying "end offset is lower than start offset"
can you please help me?
im using windows 7 home premium, boot/recovery unpack/repack tool was used on desktop...
my device is panasonic p81, mt6592, resolution 720*1280
i have attached screenshots and also a zip file that includes same screenshots in good resolution.
Thanks in advance...
Click to expand...
Click to collapse
Try this option STD_unpack.bat
Sagar_Patel said:
while unpacking disc images, i am getting error at the end of the command window saying syntax of the command is incorrect.
Also, while unpacking stock boot image and recovery image, i am getting error saying "end offset is lower than start offset"
can you please help me?
im using windows 7 home premium, boot/recovery unpack/repack tool was used on desktop...
my device is panasonic p81, mt6592, resolution 720*1280
i have attached screenshots and also a zip file that includes same screenshots in good resolution.
Thanks in advance...
Click to expand...
Click to collapse
That was already discussed on this page starting with post #22, and there is a repacked tool in one of my posts from that page which seems to work better.
@carliv: using your excellent tutorials, I successfully installed Carliv Touch Recovery v2.2 - Ubifs on my Samsung S5 Mini clone (MT6572-based). Except for the fact that the display is upside down, it works perfectly. Thanks!
Filipus said:
@carliv: using your excellent tutorials, I successfully installed Carliv Touch Recovery v2.2 - Ubifs on my Samsung S5 Mini clone (MT6572-based). Except for the fact that the display is upside down, it works perfectly. Thanks!
Click to expand...
Click to collapse
Thanks! But is it 2.2 or 2.7?
I know about the flipped screen issue, I'm still trying to find a solution for that.
It's 2.2. I only realized later that a more recent version exists and I was too lazy (or not brave enough!) to attempt flashing the device again.
Should I?
Oh, and by the way, the flipped screen issue really isn't much of one, especially since the touch feature works so well. Don't lose any sleep over it...
Hi Carliv,
i tried to make a v3.0 CTR for my phone (Elephone G6) but it does not work at all.
English is not natural language so some parts appeared confusing to me.
i think i did everything like shown in you tutorial but i got many errors while unpacking and packing. i got these errors managed but i´m not sure if something went wrong while packing, or maybe i made an error.
can you make a CTR3.0 for me please?
it would be nice when you help me out.
I just tried for my MT6572
Worked successfully..
but i am getting out of screen .. Options are looking bigger..
i have 480*800 and i have downloaded for same resolution..
any way to change resolution ?