The newest release of Android (4.1.2) introduced a fix for the slow flash/eMMC write speed (also known as “lag problem”). But installing the update alone isn’t enough, the eMMC controller needs to know the truly empty addresses on the flash. Although this will resolve over time by itself, you can speed up the process to have your devices running at the speed just as it was freshly unboxed.
Here’s how to do it!
- root access
- Android 4.0.4 (older untested)
Get your ADB or terminal shell ready for this:
user@computer:# mount -o remount,rw,discard /data
user@computer:# dd if=/dev/zero of=/data/deleteme bs=64k ; rm /data/deleteme
You can also do this for the different partitons (cache, system, …) just replace the “/data” strings above.
By the way it’s most likely that your device will not respond to your input – just let it sit around, do not reset or force anything. It will just take take some time to get the flash filled. As soon it’s done your device will be responsive and a real roadrunner again.
[Q] What if I do not have root?
Well, then you can only make use of the procedure with Android 4.1.2 and the /data or /cache partitions. Just omit the mount-command and you will be fine.
[Q] I can’t write to the /data partition without root!
Just use /sdcard – it’s the same.
[Q] This takes forever – low long shall I wait?
Depends on your device. My Google Nexus Q handles about 1GB/hour, Nexus 7 can do about 1GB/min in best case – but don’t count on it.
[Q] Help! My device does not respond to input!
I’ve just said so! The fill up of the storage will really take some time and slows down the device to a crawl. However, you might want to try IO-renicing the dd-command with “ionice” to prevent this behaviour.
Update 2013: By now you can also use LagFix Free. It is faster than using the described method.