Frequently Asked Questions
FAQ for NotEnoughSpace ("NES")

Beyond this FAQ, we recommend that you:
1. Read our FEULA ("Fair End-User License Agreement")
2. Visit our support page if you have more questions

Why is NES not working on my phone?

NES is a root application. This means that you need to have rooted your phone. "Rooting" a phone means accessing that phone's highest level of privileges, which will allow you to modify any aspect of it. A good toolkit for rooting a phone is Unrevoked.
Being rooted is not enough; NES relies very little on the phone's built-in shell, but still needs some of it to work properly. A more or less complete version of BusyBox may be installed, for instance.
Then, there is the case of phones running a non-stock ROM, such as CyanogenMod or MIUI. These phones' filesystem may be structured in a completely different way that NES will not be able to understand.
Note that we have tried to make NES as compatible with as many devices as possible; it even works well with rooted Nook Colors.

I want a refund!

Google conveniently provides a 15 minutes window during which you can open the Market application and uninstall the application; this will cancel the sale. After 15 minutes, though, it's all yours! Of course, if it is not working at all for you, please contact us and we will work on it with you.

What does NES do?

NES has two goals:
1. Help you understand what is causing your phone to run out of memory when there is plenty of space left on its SD Card and internal storage.
2. Whenever possible, allow you to move data to a different partition so that your phone can reclaim some of its precious wasted space.

What does my phone mean by "not enough space?"

Android allows your applications to store their data in a dedicated partition whose size happens to be much smaller than the phone's internal storage itself. Installing more applications fills up more space even if you do not run these applications. For instance some phone come with about 100MB of space for storing applications data. Simply installing Google Earth on these phones uses up about 35MB, one-third of the storage available!
When Android observes that less than 20% of that partition is free, it starts complaining to you about this fact and that is when you see this curiously unhelpful messages.
This is exactly the behaviour that NES is trying to help you deal with.

What does NES do about that?

First, NES les you browse your data partition, sorting applications from "most greedy" to "innocent bystander." This should help you decide which applications to get rid of.
Second, you can select some of these big folders and more them to the SD Card or another internal partition while letting Android believe that nothing has changed. The idea is, of course, that you should not lose any data in the process.
You can, of course, bring this data back to its original destination whenever you wish to.
You can also prune some directories whose content can be dynamically re-created by their applications, such as cache/ and files/

What is happening? After a reboot, it's like NES never relocated anything!

Also, your phone boots slowly. See how I guessed that?
It's Google's new gift to Gingerbread users. Somehow they felt that they should always re-extract all application's library during the boot process. As a result, your phone boots slowly and it undoes NES' good work. We are currently working on a workaround for this new behavior, but make no promises. Note that if you are using Froyo or any previous release, you will not have this problem. Note, too, that only libraries are impacted. Your cache data, for instance, stays where NES put it.

NES reports less data used than (total available - total free)

First, I would like to say: you nerd!
So, what's happening here? Simply put: the system sees data where it isn't any more. Compounded with that fact that the formula used by NES to compute free space is somewhat anal, this leaves us with this situation:
The value returned by the system after moving a file is conservative because it still sees this file as taking up space if it belongs to an application currently using it; this is why we introduced our own formula.
free space = total space - ((all apps files size / blocksize + 1) * blocksize / 1024) - (total space / 100)
The first part basically checks every single file's size and rounds it up to the nearest multiple of the block size for this partition;
The second part is arbitrary: I am assuming that /data/data reserves an i-node table that is about 1% of its size; I cannot retrieve this value myself as the partition information table is protected.
To compound the issue, the system is seeing files that may simply not exist anymore. Or do they?
They are, in fact, files that were at one point opened by a process and moved or deleted by another. For instance, if a process logs to a file called 'myprocess.log' and another process deletes this file while in use, the system considers that this logfile's disk space is still unavailable. It is right about that, of course.

Where is my data relocated?

You have full control over where you want it to go. You can move it to the SD Card, or an internal partition such as /cache or /emmc.
You may specify a path to your own favourite partition if it is not available in the application by default.
And finally, you can create your own partition and move your files to it.

Why can some data not be relocated to my SD Card?

If a directory contains executable code, if can only be moved to partitions that support executable code.
In practice, lib/ directories are the most likely to contain such code. Were you to move these directories to a non-fully-compatible location, such as /sdcard, your application would definitely stop working.

Why can some data not be relocated to the Emmc partition?

This is almost the same scenario as moving data to the SD Card. Not quite, but close. In a nutshell: the Emmc partition strips the file's owner of execution rights. Therefore, if you move a library to the Emmc partition, this library will become unusable until you moved it back.

Why is my game failing to start properly?

Games tends to come with libraries that contain native code, faster than Java. For instance, there is quite a performance gap between handling objects on screen in Java and in native code.
So, when you move a game's libraries (which contain the native code) to the SD Card or Emmc, they stop working. You should move their libraries to a more "executable-friendly" partition.

Why clean the Dalvik cache? (and what is it?)

Dalvik is Android's Virtual Machine. It runs Java code. To increase performance, it caches this code, optimized, in its cache.
Unfortunately, after a while, this cache tends to contain old optimized classes that you are not using anymore.
It is a good idea to clean your Dalvik cache now and then, and reboot your phone so that Dalvik can start anew.

The same apps always show at the top of my list, regardless of sorting preferences

NES will always show you the applications that it thinks were already partially relocated at the top of its applications list. They will also be a different color.
NES determines that an application's directories were relocated based on whether or not it finds symbolic links in that application's data hierarchy. This may occasionally lead to false positives.

Does NES work on rooted Nook Color?

Yes. It works very well, even.

NES does not "see" my /ext partition

We made an assumption, due to the fact that /ext partitions can be located anywhere the ROM developers wished to put them.
Our assumption is that this partition is located in /ext. If it is not, you can tell NES where it is by specifying your own path in the Settings screen.

What is the NES partition?

If you want to store things on your SD Card, there is a well-know issue: it's a VFAT device which will just not run your games or anything else using native code correctly (see here and here)
The workaround used by some, is to re-partition your SD Card so that it has both a VFAT and an EXT2 partition.
NES will offer to create a new partition on the SD Card. However this partition will be a loopback file, which means that your SD Card will remain intact: not, in fact, re-partitioned, not reformatted; and yet it will be possible to store any application on that new partition-on-a-partition (think of it as a container)
Note that creating that new partition is going to be quite slow: 16s for a 100MB partition, 183s for a 1GB partition; a 10GB partition would take close to 2000s (1/2 hour) to create.
On the other hand, this will be a one-time operation and, of course, you will get to pick the size of your partition.

Where is the NES partition located/mounted?

The NES partition is mounted in /data/nespart; this is a mount of a filesystem container file (/sdcard/data/noensp/system_*) through a loop device (/dev/loop1111) It is EXT2-formatted and not encrypted. This partition can be deleted anytime you wish to get rid of it. This is done by umounting it, deleting the mountpoint, the container and the loop device. You need to *first* move back any files you have previously relocated to it. All this does not affect the SD Card in any other way than using up the container file's space. A backup of the SD Card will save the partition. However, for this partition to be mounted when you turn on your phone, NES needs to be installed (it will automatically detect it if you re-install after a restore)

What are the downsides of the NES partition?

Android will only give NES a chance to mount the container towards the end of the whole boot process. For this reason, we do not recommend relocating applications that will likely be invoked during the boot process.
Google Earth is a typical example of an application that can be moved without problem because it is an application that you, the user, will launch. Games are the same.
If you use a third-party home launcher, on the other hand, it seems more reasonable to not relocate it to the loop container.

Is NES running at all time, then, even when I don't want it?

First, NES does not run in the background. However, it registers an activity, basically telling the OS "Hey, let me know when you're booting up." Thus, after powering it up and various other stuff coming up, your phone will call NES' special activity and that activity will mount the its NES partition container, if any.
Please check the previous answer as it contains more relevant information.

Will a Nandroid backup/restore preserve the NES partition?

Yes. This is the main reason why we suggest only either moving to /cache partition or your ext mount. If you choose the latter, make sure you do a Nandroid+ext backup/restore.

My SD Card will not mount on my PC anymore!

When your phone is connected to your PC, if you ask it to make its SD Card partition available to your computer, it will be mounted on your PC as an external storage device.
However, if you create a NES partition, your SD Card cannot be "unmounted" from your device because it is kept busy by its links to the NES partition.
To work around this limitation, whenever NES detects that Android is trying to eject your SD Card, it quickly unmounts the NES partition; it then remounts it when it detects that Android has remounted the SD Card.
Due to some timing issues, NES may fail to uunmount its partition; in which case you can go to the Settings screen and select "Force Unmount" and, of course, "Force Mount" to remount the partition.

I updated NES to a new version and now it stopped working?

This will happen if NES' native code portion has changed between both versions.
Your safest best is to uninstall NES, then install the new version. Because NES discovers your phone configuration every time you run it, no information will be lost.

Does NES rely on BusyBox?

Yes. No. It depends:
NES has evolved to rely less and less on your device's shell, instead recoding most features in native code.
If Busybox is detected as your phone's shell, NES will use BusyBox. Otherwise it will use what's there.

I want to do crazy technical stuff with my data. Thats how I roll!

How about moving the NES partition from the SD Card to the /Emmc partition? (XDA link)

Recent projects

01.15.11 NotEnoughSpace
Android, open beta: never run into the dreaded "Not enough memory" message again.

12.20.11 Sobriety Counter
Android, market, free: Counts days of sobriety, calls your sponsor when needed.


09.22.12 From the Nexus It’s Journler…Again!: It’s Journler…Again! Many Mac users are aware of the now abandoned/open-sou...

07.12.12 Get it free: Breeze for Mac Freebie via @StackSocial

07.10.12 I know...I am the product. Facebook sniffed my use of those web sites. They are not even in my apps list!



If you have a new idea to tell us, or just need to hear a friendly voice feel free to contact us anytime.

 twitter icon