Skip to main content

Why do I get "Phone storage low" warnings on my Android device?

On an Android device, there is internal storage and external storage.

Internal storage is non-volatile NAND memory built into the device itself. It is also referred to as "ROM" on some spec sheets. Think of it as the "C:" drive on the PC where the Windows OS is located, and all other applications are installed. As such, not all internal storage is freely available to the user. After accounting for the system files (i.e. Windows OS), only the remainder can be used by applications. This free space is known as "Application storage" or "Phone storage". For example, the Google Nexus One has 512MB internal storage, but only 190MB phone storage.

External storage is the microSD card that you plug into the device. This can be as large as 32GB on most devices.

The "Phone storage low" warning occurs because earlier Android devices typically come with very low internal memory (192MB~512MB). Every application (and the data it creates) goes into phone storage and very soon it gets filled up, even though the external storage is practically untouched.

From Android 2.2 (Froyo), an application can write to a new API (A2SD) to let the OS move parts of it to external storage. However only parts of the application is moved, leaving substantial portions of it (libraries, data, cache) in phone storage. So over time, phone storage still gets clogged up.

The Apple iPhone decidedly does not have this problem because it comes with large internal storage (and does not support external memory cards anyway). With the latest Android devices (eg. Nexus S), Google seems to be moving in this direction as well. With 8 or 16GB of internal storage, phone storage low warnings should be a thing of the past.

For older devices, there are a few workarounds which I will explore in later posts. They range from the simplest (running a simple command) to the most difficult (flashing a custom ROM). Alas, from a user's point of view, these workarounds do not help achieve the holy grail, which is fully automatic and transparent storage management. But they will have to do for those of us struggling with low phone storage.

Comments

Popular posts from this blog

Update: Line adapter for Ozito Blade Trimmer

Update (Dec 2021): If you access to a 3D printer, I would now recommend this solution , which makes it super easy to replace the trimmer line. I have been using it for a few months now with zero issue.

Cooling mod for the X96 Air

I realized after my Ugoos box died that overheating is a big problem with cheap Android TV boxes. A teardown of the Ugoos box shows that it does not have any heatsink or fan at all!  The X96 Air does have a heatsink, but the heatsink is located at the bottom of the casing with no ventilation. In this default configuration, with the ambient room temperature at 25c and playing a 1080p video, I was seeing the CPU temperature at 67c. I drilled a couple of holes at the bottom of the casing. The CPU temperature fell to 59c with the box raised about 2cm with plastic blocks. I retrieved an old 5V laptop fan: Then cut and strip away a spare USB cable: Solder the red and black wires on the fan and the cable: Secure the fan to the bottom of the casing with double-sided tape, then plug the fan into the box's USB connector. Here's a view of the box with some 3D-printed risers installed at the bottom to give the mounted fan sufficient clearance: The CPU now runs at 43c, a huge drop from the ...

Installing and customizing CoreELEC in X96 Air

I previously installed CoreELEC on another TV Box ( Ugoos X3 Pro ), which unfortunately died after only 9 months during the summer (due to the unit overheating, which I learned is a common problem for cheap Android TV boxes). So this time I purchased a X96 Air  (4GB/32Gb) and had to do the whole thing again. So this is a note-to-self in case I ever have to install CoreELEC again on some other device. Installation of CoreELEC is simple enough by following this guide . Basically, it involves downloading and writing the firmware to a microSD card using usbimager . Then insert the microSD card, reset the unit and hold the reset until the logo appears. The unit will then proceed to boot into CoreELEC. First thing is to connect to WiFi, then enable SSH. This allows me to login via ssh and execute: ceemmc -x from the terminal. This writes CoreELEC to the built-in eMMC storage, after which I am able to remove the microSD card and reboot the unit into CoreELEC via the built-in sto...