• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Are phones now required to mount their internal memory as emulated primary SD?

Cyber Akuma

Newbie
Apr 5, 2013
25
1
I first saw this whole "sdcard/sdcard0" and "extsdcard" mess with the Motorola RAZR, the first Smartphone I used which had a large amount of internal memory.

Personally, I found this maddeningly annoying, many apps were confused and assumed they were installing or writing to the SD card when they were just writing to internal. The whole point of a SD card (to me at least) is to have REMOVABLE memory.

I then found out when considering the Galaxy S3 and later S4 that they also did the same, I wondered why Samsung would do such an annoying thing.

Now, I finally upgraded my three-year-old EVO 3D running Gingerbread/ICS for a M8 running KitKat.... and was even assured it didn't perform such ridiculous stupidity as mounting the internal memory as a SD card (especially when I was told the EVO 4G LTE originally did this, but got an update that actually re-partitioned the flash memory to undo that). So when I installed a filemanager to remove some junk files from the SD card, I was pretty angry to see a "sdcard0" and "extsdcard" folder, though since there wasn't much I could do about that I just ignored it for the time and tried to delete the junk files from the SD card and move some to external...... when I got my next nasty surprise.

So then, is this whole primary/sdcard0 and secondary/extsdcard thing actually something that Google is pushing/forcing rather than stupidity of manufacturers? Are they required now to emulate the internal as a sdcard on KitKat devices so Google can indulge in their anti-sd card mentality and force people to use their cloud storage while turning Android into iPhone provide security and make Android less complicated because clearly Android is insecure and confusing to use and this isn't a coverup on their part? Or is there something in Android's design that prevents just having the 32 GIGS of internal memory (minus whatever is partitioned off to the system, boot, cache, etc) as one large chunk of internal and not emulate a SD card? Especially since their silly restrictions in KitKat only effect "secondary" memory and technically would not effect the SD card if there was no emulated one taking it's place as primary? (funny how this whole clutter and security issue isn't applying to internal memory, there it would be an even bigger problem...)

Or are manufacturers doing this anyway (the whole making the actual physical sdcard a secondary storage and tricking apps into thinking the internal memory is a sd card so they install and write to there when you tell them to use external memory) based on their own mentality? If this is a requirement from Google, then how did HTC get away with actually UN-DOING this exact thing on the 4G LTE?

Again, the whole point of having apps save their data and exported settings/whatever to the sdcard is so I am not dependant on the data being locked onto the internal memory and only accessible if the phone wants me to access it and is working. Even the downloads folder is on the internal, which some of my apps by default export saved settings to, and I cannot move it or even any of the files in it to the external sdcard because of the changes in KitKat, which is kinda the entire $#^^$^#^&#$^^$ point of exporting your saved settings.
 
Once upon a time, Android devices didn't have external storage, and their internal storage was mounted as sdcard because that's literally what it was. The sdcard convention continues because otherwise older apps would be broken.

Thanks to the Linux-based kernel, Android actually supports multiple mount points per volume, so sdcard0 may also be seen as sdcard by apps that expect that, as well as /storage/emulated/0. Similarly sdcard1 may also have multiple mountpoints to ensure legacy support.
 
Upvote 0
*dusts of hands* well my work here is done.. thx slug lol well put..

I understand the frustration but like slug said it's basically to make sure your apps always work. And the expansion is nothing like ios. Ios doesn't allow for any expanded storage.. android and Linux kernel promotes mounting multiple points per volume as slug stated..

Yes it's called something different now but your actually just seeing more than you are used to..
 
Upvote 0
Once upon a time, Android devices didn't have external storage, and their internal storage was mounted as sdcard because that's literally what it was. The sdcard convention continues because otherwise older apps would be broken.

But then how did older devices which have a SD slot and not mount any of the internal as SD not have any problems? Even my previous EVO 3D, the (tiny) internal memory was all mounted as internal, and it still functioned fine without a SD card plugged in. I have seen apps that default to installing on the SD card, when I installed them on a device that had no SD they just installed to internal and still ran, not a portion of the internal memory mounted as if it's a SD card, but the actual internal memory.

As I recall, the option to install apps to SD cards wasn't even available as a built-in feature until Apps2SD or whatever that was called started being natively integrated by many manufacturers into their Android builds.

How is this any different for modern phones which have large amounts of internal memory but also still have SD slots? If the phone only has internal memory, then fine, but if it has a SD slot then why essentially make that SD slot useless (even moreso with KitKat) by partitioning off a section of the internal memory and mounting that as a emulated SD card that has priority over the real one? Sounds completely backwards to me, what's the point of the physical SD card then? Just to store photos and music? (And with KitKat now, you are even forced to only use the camera, music, video apps that came with the phone, since 3rd party apps can't interfere with the folders they didn't create on the sdcard).

I mean, if it has a SD slot, then I don't see how it would break anything to make the primary/only sd mountpoint the actual SD card. Even though I have never encountered an app that didn't work if only internal memory and no physical or virtual sd card existed. (I can't imagine what app might still be in use today on modern devices with modern builds of Android, and not only still run, but not have been updated for several years either.)

Thanks to the Linux-based kernel, Android actually supports multiple mount points per volume, so sdcard0 may also be seen as sdcard by apps that expect that, as well as /storage/emulated/0. Similarly sdcard1 may also have multiple mountpoints to ensure legacy support.

Yes, I know about mount points in Linux environments, but I don't see the point of mounting a fake SD card that is really internal memory. Browsing the filesystem on my phone (as limited as I can since I don't have root access) the sdcard/sdcard0 folders aren't just pointing to the root of the internal memory, but to what appears to be a separate partition. (Or possibly just a folder within /storage, can't see the symlinks on my file browser).

Yes it's called something different now but your actually just seeing more than you are used to..

The /storage folder that contained the sdcard mountpoints was empty when browsed on a device that had a sdcard slot but no internal memory partitioned and mounted as a sdcard. I don't think it was still emulated on those devices but just called something different.
 
Upvote 0
But then how did older devices which have a SD slot and not mount any of the internal as SD not have any problems? Even my previous EVO 3D, the (tiny) internal memory was all mounted as internal, and it still functioned fine without a SD card plugged in. I have seen apps that default to installing on the SD card, when I installed them on a device that had no SD they just installed to internal and still ran, not a portion of the internal memory mounted as if it's a SD card, but the actual internal memory.
Such apps would have to include, as part of the installation script, run a check for SD or other available memory space and install to the appropriate partition.

How is this any different for modern phones which have large amounts of internal memory but also still have SD slots? If the phone only has internal memory, then fine, but if it has a SD slot then why essentially make that SD slot useless (even moreso with KitKat) by partitioning off a section of the internal memory and mounting that as a emulated SD card that has priority over the real one? Sounds completely backwards to me, what's the point of the physical SD card then? Just to store photos and music?
Yes. Works OK for that. And with plenty of internal memory there is usually no need to use a removable SD for much else. Not backwards at all.

I mean, if it has a SD slot, then I don't see how it would break anything to make the primary/only sd mountpoint the actual SD card. Even though I have never encountered an app that didn't work if only internal memory and no physical or virtual sd card existed.
If you make the primary/only SD mount point the removable SD and install to that things break if the card fails or is removed after app installation.

I don't see the point of mounting a fake SD card that is really internal memory.
See the answer above. Internal memory is more reliable and cannot be accidentally removed. And don't forget, internal memory is ext4, not FAT32.
 
Upvote 0
Before I reply, let me just say that I am not trying to sound like I am arguing or anything like that if it comes off that way, I am just trying to understand why it's done like this, because it doesn't seem to make any sense to me:

Such apps would have to include, as part of the installation script, run a check for SD or other available memory space and install to the appropriate partition.

Exactly, that's my point. No app I have run into has required a SD card to be present to be installed, virtual or not. Not all of them even can be moved to the SD card, seems more like apps heavily favor and are designed for internal memory than to be on SD, so I don't see why an emulated SD is really required. (Again, especially on devices which have a SD slot so you can plug a real SD in there anyway).


Yes. Works OK for that. And with plenty of internal memory there is usually no need to use a removable SD for much else. Not backwards at all.

That's also the problem I have with this. It has plenty of internal memory, so why cut it off so you can partition some of it as a virtual SD card, thus taking space from the internal memory partition? Also, this tricks apps into thinking the internal memory partitioned as a sd card IS the sd card, so apps which would send a file to the download directory, export settings/data, or even download very large resource files to the SD if one is present.... are putting all that on the SD card (and thanks to KitKat, I can't move them to the physical SD card either). Several of the games I have download hundreds of megs to a few gigs of resource data for example, this data is supposed to go on the SDcard.... thanks to this sillyness they are installing on the internal memory along with everything else, instead of the far larger SD card, taking away space from everything else that would go on the internal memory, such as other apps.

If you make the primary/only SD mount point the removable SD and install to that things break if the card fails or is removed after app installation.

Well obviously, if you install an app to the SDcard then remove it, the app won't be avaliable, but there are several issues I have about this when it comes to creating the virtual sd card:

1. The apps typically install to internal memory anyway, the virtual SD card is completely unneeded to install any app I have ever seen. I have never run into a single app that couldn't be installed on internal memory, I have run into several which actually CANNOT run on a SD card though, virtual or real.

2. Every phone/tablet I have seen with a SD slot and ability to install apps to the SD card removes the apps when you unplug it, and re-scans it on insertion.

3. Typically any widgets that come with apps are disabled if they are installed to SDcard anyway, so there isn't much to break.

4. And finally, the M8 gives you the option to move apps to the physical SD card anyway, so all of this virtual sd business about apps breaking seems moot to me.

All apps can install and run on internal, some can't even run on the sdcard, and they can be moved to the physical SDcard anyway, so I really don't see what having a virtualsd card is possibly helping with, before the first Motorola RAZR Android phone I had never even seen an emulated SD directory before, whether the phone had a SD slot or not.

See the answer above. Internal memory is more reliable and cannot be accidentally removed. And don't forget, internal memory is ext4, not FAT32.

Well yes, that's what I want. I WANT all of my apps to install to internal, as in the actual "internal memory" partition, not a separate emulated SDcard partition that is also internal memory. Apps can write data to internal or external memory, in fact, an app has to request the permission to write to the SDcard in order to NOT only be limited to internal memory. Most of the apps I used even on my Evo3D wrote their data and settings to internal.

Of the ones that did not, its almost always because you would want the data to be removable. 3rd party camera apps, backup apps, apps that allow you to export settings and/or other data, download managers, even the downloads folder! The whole express purpose of the data being written to external for these apps is so it's easily removable and you can retain it in case anything happens to the phone or from a data wipe/reset. Now, all these apps which think and are designed to write to a removable memory..... are writing to internal THINKING they are writing to a removable external! Why would I want games downloading 400MB-3GB of resources to my 24gigs of internal when I have a near-blank 64gig external? Said games can write that resource data to internal if you don't have a SD card. I have never run into an app that can't just use the internal memory (if you have enough free space) and REQUIRES a sd card present to work. But now, apps have the "choice" of either writing to internal, or writing to internal(which they think is external). Instead of ACTUALLY writing to internal or external.

And in the case of all those apps that backup, download, save, etc data onto your SD card for the express purpose of being able to remove it, well, thanks to KitKat now not allowing 3rd party apps to write to the SD card, I can't even move this data to the actual SDcard without plugging the phone into a PC.

File Managers are now useless for SD cards in KitKat!
 
Upvote 0
Sorry I'm to lazy and tbh too stupid to understand what you're all saying but on a rooted device you can easily "fix" external sd access.
I saw a guide of how to do it.

For months I've wondered what all the moaning is about re kitkat and ext sd but I've now realised I'm using custom roms so it's been fixed already.

It's a case of just editing a few lines in (I can't remember what) in a root file manager.

Hopefully someone here can pull up a guide for anyone who's interested :beer:

I can do all the things I used to with my sd
 
Upvote 0
seems to me your upset, but i'm not sure why? Internal memory is simply nothing more than the area used to store USER information. This includes but is not limited to apps, text, call logs, etc. Google has supplied a basic operating system and nothing more. Apps being installed over to an EXTERNAL SDCARD is more of a developer issue than a Google Issue. Developers could place simple code in to the program and have the user decide where to store and install the files it needs.

As far as an external card goes its not needed by the phone. Manufacturers decide if the device is going to have external storage available and its up to them to see that it is working as expected. External Space is for nothing but user data, such as pics, documents, music, movies/videos. Google is not responsible for a Game developer who leaves a large footprint in your internal memory that is the developers fault.
 
Upvote 0
It's pretty easy to test whether "sdcard" (if there's only one) is real or emulated, and if there is more than one it's definitely bad coding to just assume which one to use. At the very least an app could choose the one with the most free space, but far better would be to ask the user and make the destination configurable that way.

If an app is badly behaved don't blame the OS that runs it, blame the app developer who coded it badly.
 
Upvote 0
That's also the problem I have with this. It has plenty of internal memory, so why cut it off so you can partition some of it as a virtual SD card, thus taking space from the internal memory partition?
But that's not what modern Android versions do. If I look at my device it has a 25.5 GB internal storage and a 25.5 GB sdcard partition. This in a 32GB device. The reason it's possible is that "internal" and "sdcard" are different ways of addressing the same storage. So nothing is removed from internal storage by having a /sdcard partition.

Now that's not how it used to be with older versions of Android. Originally Android devices had a small internal storage (the /data partition) and a sd card slot for media (or other data which an app, which would itself be stored in internal, might need), and that's what the OS expected. And when devices like the Samsung S2 arrived with large internal storage the manufacturers partitioned this into /data and /sdcard partitions. They could have left it all as /data, but they assumed that people would mainly want to use that much space for media, and the way the OS worked back then it was an either/or choice. So originally this partitioning did remove storage from the internal store, but that should not be the case any more.

As for the problem of apps installing stuff to the internal sd that you'd prefer to be external, as others have said that's lazy coding by the developer. I assume that their logic is that if they just code for /sdcard it will work on any device, and therefore can't be bothered to do more.
 
Upvote 0
Sorry I'm to lazy and tbh too stupid to understand what you're all saying but on a rooted device you can easily "fix" external sd access.
I saw a guide of how to do it.

That would "fix" the KitKat issue with accessing the SD card, not the issue with apps which think the are writing to SD actually writing to internal though. Problem though is that "fix" isn't really the right word for it, as far as Google is concerned, this is how it should be, the "fix" is really hacking back what Google changed on purpose.

seems to me your upset, but i'm not sure why?

Eh, a little, but I am more confused why the whole mess with the emulated SD storage and trying to figure out why do such a silly thing.

Apps being installed over to an EXTERNAL SDCARD is more of a developer issue than a Google Issue. Developers could place simple code in to the program and have the user decide where to store and install the files it needs.

This isn't about Apps installing to the external storage, but about modern Android phones faking having an external storage, whether they have a physical sdcard slot or not, and thus apps which are attempting to write to external storage for the purpose of having easily removable or a backup of data are still just writing to internal.

It's pretty easy to test whether "sdcard" (if there's only one) is real or emulated, and if there is more than one it's definitely bad coding to just assume which one to use.

Modern builds of Android are flat-out tricking apps into thinking they have an SD card when hey do not (or lying about where it is when there is one).

We and other posters here already established that if anything, it takes extra work (and permissions) to make an app even read/write to a SDcard, much less run off of it, so there is nothing stopping nearly every app out there from installing and running perfectly fine on a phone which only has an internal memory partition and no sd card, emulated or real.

Now however, Android purposely is telling apps "Hey, this here, this folder right here, that is the sd card" when it's just pointing to internal memory. Apps are literally being flat-out tricked on where the SD card is, how is that the developer's fault? There is an internal memory partition, and a mount-point for a SD card, apps are coded to write to internal or sd card as needed (and nearly all of them if there is no sd card write exclusively to internal). But now, they are writing to internal thinking they are writing to external. How on Earth is that the developer's fault when the OS is essentially lying to them about where the SD card is?

At the very least an app could choose the one with the most free space, but far better would be to ask the user and make the destination configurable that way.

I have an app that tried that. It needed to download 3.5GB of resource files. It asked if I wanted to install to Internal(27GB free) or External (27GB free).... as you can guess, since I have a near-empty 64GB card in here, even though it TRIED to ask, it still had no idea which one was actually external, because again, the OS is essentially lying to it for no reason. There is zero purpose to the emulated sdcard, it should point to the actual sdcard.

Originally Android devices had a small internal storage (the /data partition) and a sd card slot for media (or other data which an app, which would itself be stored in internal, might need), and that's what the OS expected. And when devices like the Samsung S2 arrived with large internal storage the manufacturers partitioned this into /data and /sdcard partitions. They could have left it all as /data, but they assumed that people would mainly want to use that much space for media, and the way the OS worked back then it was an either/or choice.

Why they are not just making it all /data is exactly what I am asking actually. I have never seen an app only able to use /sdcard, even media creating apps like cameras, voice recorders, etc record to internal if there is no external, so I don't see the issue with media being on the internal either.

Why DIDN'T they just leave it all as /data? That would fix this entire mess.

So whats the change that came with kitkat regarding external storage?
Thats what i was talking about in my last post

The permission for a 3rd party app to request write access to the SD card was changed so it only grants the app READ permission, and write permission to an exclusive private folder that only that app can access. This folder is also deleted if the app is uninstalled.

This means that file managers are inherently useless as they cannot rename, move, copy, or delete anything on the SD card. 3rd party media-creation apps to replace 1st party ones like an alternate camera app are useless, as not only would they not be able to write to the same folder as the first party app (like the folder your stock camera app puts pictures in) and if you ever uninstall them, the private folder they created is deleted so there goes anything you ever made with that app.

Also, coupled with what I was talking about with the virtual sd card, most apps who'se express purpose (or have a feature) to export settings, logs, or other such data to external for the purpose of having a removable backup (or one which would survive a data wipe of internal memory) are writing to the internal memory (the equivalent of basically making a backup of your computer's system partition on another partition on the same physical drive), and thanks to KitKat you can't move that data to the actual sdcard. Also, the downloads folder is on said fake sdcard, so anything you download from most apps is also stuck on there.
 
  • Like
Reactions: funkylogik
Upvote 0
Why they are not just making it all /data is exactly what I am asking actually. I have never seen an app only able to use /sdcard, even media creating apps like cameras, voice recorders, etc record to internal if there is no external, so I don't see the issue with media being on the internal either.

Why DIDN'T they just leave it all as /data? That would fix this entire mess.
Actually I have met apps that won't work without an sd card. Long time ago, but...

TBH I also wish they'd never introduced a virtual sd card, mainly for aesthetic reasons (the resulting filesystem is just ugly, and has if anything become uglier). But I can understand why they took no chance with compatibility, even though I wish they'd bitten the bullet for the long term good rather than kludging things.

But would it have fixed anything? A lazy dev could just write apps to stick everything into /data with no alternative, and the restrictions Google have introduced for physical sd cards could still have been introduced.

The biggest problem was probably that Google spent a couple of years trying to discourage microsd cards, which meant they weren't paying enough attention to how they were used or managed. And now they've introduced sandboxing in external sd cards in a way that resembles nothing less than the worst features of iOS, and for stated reasons which would surely apply at least equally to internal storage (worrying?).
 
  • Like
Reactions: Gmash
Upvote 0
Google made Android Open Source if you don't like the way the particular version you have or the manufactures additions to it then you can always write it the way you want it to be.

But again as I and many others have said this whole issue isn't a Google Android issues but it is a Developer issue. Since Android is open source that means the developers are free to look at the code and make their programs work on it. Apps are not "Tricked" by the OS. Most Developers want their apps in internal memory and not on an external source. This is so they can communicate with home for the latest information to present to you. And to also be able to quickly open and present any document you may wish to view.

As far as file managers being useless I don't see that Either I constantly use file managers on both my tablet and my phone both with kitkat. I have copied and moved several files/folders from my "SDCARD" with no issue what so ever. I will admit I never tried to rename them.
 
  • Like
Reactions: Crashdamage
Upvote 0
I tried to address this thread from a neutral point of view but I'm becoming mildly irritated by the tone of the OP and use of emotive language - "tricked" and "lying" are not descriptive of the emulated SD provided by the Android OS, any more than they would if applied any of the miscellaneous ways all operating systems use to maintain compatibility when the physical location of some common resource moves.

Windows does a lot of this using NTFS junctions to link multiple different names/locations to the same resource (to handle legacy "My Documents", et al) so as not to break older software; it's not dissimilar to the Linux method (hard links) and similar in effect to the method used in Android.

Whether or not you agree with this strategy it is unhelpful to become emotive about it, with accusations of OS "lying" to developers unlikely to help the credibility of the points being made.

I'm done here, I doubt this thread will produce anything other than more heated argument. Unfortunately.
 
Upvote 0
This isn't about Apps installing to the external storage, but about modern Android phones faking having an external storage, whether they have a physical sdcard slot or not, and thus apps which are attempting to write to external storage for the purpose of having easily removable or a backup of data are still just writing to internal.

Then the apps are poorly coded. Apps I use have no problem recognising that /sdcard0 is internal storage and /sdcard1 is an external 64GB card.

Modern builds of Android are flat-out tricking apps into thinking they have an SD card when hey do not (or lying about where it is when there is one)
No they're not. As explained in previous posts, this mountpoint convention has been well-known for years.

We and other posters here already established that if anything, it takes extra work (and permissions) to make an app even read/write to a SDcard
Only with v4.4 onwards, and the reasons are well-documented. Besides which, that's a totally different discussion.

there is nothing stopping nearly every app out there from installing and running perfectly fine on a phone which only has an internal memory partition and no sd card, emulated or real.
As evidenced by the fact that, if you remove the external SD card from a device that uses one, apps will still install happily until storage capacity is exceeded.

Now however, Android purposely is telling apps "Hey, this here, this folder right here, that is the sd card" when it's just pointing to internal memory.
No it's not. You insist on confusing a name with a physical volume. The reaon for this naming convention (that's all it is) has already been explained... backwards compatibility. It's necessary thanks to decisions made a long time ago that we're stuck with now.

Apps are literally being flat-out tricked on where the SD card is, how is that the developer's fault?
Again, there is no "trickery". I have several apps on my handset that are able to recognise that I have internal AND external storage available, and offer the choice of location. If some devs can do it, so can all of them.

I have an app that tried that. It needed to download 3.5GB of resource files. It asked if I wanted to install to Internal(27GB free) or External (27GB free).... as you can guess, since I have a near-empty 64GB card in here, even though it TRIED to ask, it still had no idea which one was actually external, because again, the OS is essentially lying to it for no reason.
No, the app is poorly coded. See above.

Why DIDN'T they just leave it all as /data? That would fix this entire mess.
Where would /data point to, internal or external? While it's perfectly fine to have multiple mountpoints referencing a single partition thanks to symlinks, afaik it's impossible to have a single mountpoint referencing multiple partitions.
 
Upvote 0
As an ignorant layman, it seems to me like the problem here is just how the internal storage is named?
Must admit it confused me at first but i got over that in ICS.
I know sdcard/sdcard0 is a partition on the internal memory but i just imagine it as an sd card thats non-removable or like drive C on a pc :)
 
Upvote 0
There is zero purpose to the emulated sdcard, it should point to the actual sdcard.

And what about devices like the Nexus line that don't have external storage? Some apps need an sdcard. The camera on my HTC Sensation demands one. The one on my Optimus F7 does not. Emulated storage is for compatibility.

This thread is just going around in circles now I guess.
 
Upvote 0
Ok, I think a large part of this is I am using the wrong terminology, since I agree with half the things said here.

For the record, when I said internal memory I meant the /data mountpoint, which was considered the phone's internal memory. I am aware the sdcard0 mountpoint is also on the internal flashrom.

Actually I have met apps that won't work without an sd card. Long time ago, but...

Well, like I was saying, I have no doubt such apps existed, but I would find it hard to believe such apps would even work on a modern version of Android if they have not been updated by now. I personally have never run into such an app. There is also the fact that there are many more and much more modern apps which are expecting to write to external but this mountpoint is making them write to internal, I don't see why we are arguing that it's for the sake of these much older apps when it causes this kind of behavior in a far larger number of newer apps, and only saying these newer apps should be updated.

But would it have fixed anything? A lazy dev could just write apps to stick everything into /data with no alternative, and the restrictions Google have introduced for physical sd cards could still have been introduced.

They can already dump anything to /data. Things are no different in accessing /data or /sdcard (the emulated one), apps essentially have full access to anything that hasn't already required root. Most apps DO still write most of their data to, well, /data.

Also, IIRC (correct me if I'm wrong) but the write restriction only applies to the "secondary" storage, the first sdcard to be mounted(which in this case is the virtual one) is considered primary, and has full access. So if there was no emulated sdcard, then the restriction would only exist if your device had two sd slots, and only for the second slot.

and for stated reasons which would surely apply at least equally to internal storage (worrying?).

That's what I find the most ridiculous thing about all of this, apps and even the user even more access to the internal memory (both /data and /sdcard) than the actual physical sdcard. I can move around, delete, rename, etc many many files on my /data and /sdcard mountpoints... but I can only read the files on /extsdcard. Personally, I think it would make far more sense for it to be the other way around, the internal memory locked down and your sd card having full access. (Or the emulated sd directory in devices which have no sd slot).

Google made Android Open Source if you don't like the way the particular version you have or the manufactures additions to it then you can always write it the way you want it to be.

The device is locked down though, just because the OS is open source doesn't mean you will receive it in a state where you can do anything about this. HTC is one of the few to allow you root access... if you tell them your IMEI and forfeit all warranty.... but you will still be S-ON. Yes, there unofficial ways to get rid of that.... but personally if an OS requires 3rd party hacks to do something like this, it shouldn't be considered a viable option and I don't feel the OS itself shouldn't be designed like this.

Most Developers want their apps in internal memory and not on an external source. This is so they can communicate with home for the latest information to present to you. And to also be able to quickly open and present any document you may wish to view.

Yes, that's what I want too. I have not run into a single app which needed to be installed onto the sdcard. In fact, the exact opposite, a quarter of the hundreds of apps I have used could only function on internal memory, some allowed you to move them to the sdcard as an option, but not a requirement.

I am talking about the data of the apps, Not cache and other junk data, but documents, photos, etc you would want to keep. As well as extracted settings to backup data. Makes infinitely more sense that this data be written to the physical sdcard than internal memory, if your device has a sdcard.

As far as file managers being useless I don't see that Either I constantly use file managers on both my tablet and my phone both with kitkat. I have copied and moved several files/folders from my "SDCARD" with no issue what so ever. I will admit I never tried to rename them.

Does your Motorola have root access by any chance? Or is running a custom rom? You can still access the sd card if you have root... and grant the application root access, or run a patcher (which needs root) that completely removes the limitation. Most custom roms have this patch already installed.

Also, there is a loophole in the MediaStorage API that allows possible access, but it's glitchy, and varies from device to device, and clearly a security hole that Google is going to patch soon. I tried Astro, ES File Explorer, and total Commander, none of them could do anything to my SD card, I couldn't write or delete any files.

I tried to address this thread from a neutral point of view but I'm becoming mildly irritated by the tone of the OP and use of emotive language - "tricked" and "lying" are not descriptive of the emulated SD provided by the Android OS, any more than they would if applied any of the miscellaneous ways all operating systems use to maintain compatibility when the physical location of some common resource moves.

I apologize, you're right about that, I'll try to be less emotive about this.

Windows does a lot of this using NTFS junctions to link multiple different names/locations to the same resource (to handle legacy "My Documents", et al) so as not to break older software; it's not dissimilar to the Linux method (hard links) and similar in effect to the method used in Android.

Yes, I'm well aware of those. There are quite a lot in Windows 7 and 8 by this point to maintain compatibility with older software.

My point is, linking the sdcard mountpoint to a folder in the internal flashrom is more akin to linking Drive D: in windows to a folder on your C: drive. I understand this is not quite the same thing as the way Windows is made nothing ever really required a second harddrive, nor were they hard-coded to access that drive though, but on Android they were. The sdcard folder, to my knowledge, was designed to be a mountpoint to the root of the SDcard, so most apps that want top write to it, are writing to internal. I understand an app can be updated not to (although with the restrictions added in KitKat this may or may not work depending on what the app needs to do on the sdcard) and look if there are any additional mountpoints, but then what is the purpose of this emulated mountpoint? If the argument is that apps should be updated to see the new external sdcard mountpoint, and that the emulated one is for some very old apps that need it to work, doesn't it make more sense to say the much older apps which need a sdcard should be the ones who need to be updated rather than the hundreds of newer apps that are effected by it? I can understand putting the folder there for devices with no sd slot, but not for ones with one as you can have an actual sd card in there (in fact, many phones I have seen even with large amount of internal memory still come with one anyway, despite most not needing it for any of their apps).

Then the apps are poorly coded. Apps I use have no problem recognising that /sdcard0 is internal storage and /sdcard1 is an external 64GB card.

Like I said though, why are we saying all these tons of newer apps are poorly coded while being in favor of the emulated sdcard folder for the sake of far far older apps which have not been updated to use /data if there is no sdcard present? Shouldn't we say these older apps (if they still run) should be updated to work instead of putting this emulated sdcard folder for their support which causes all these other apps to write to it, thinking they are writing to an external storage?

So far, the only apps I have used that can see all the sdcard mountpoints are file managers (or pretty much anything else with a file browsing ability, such as media players), and a SMS/call log backup app, everything else I have tried to use that can write to the SDcard was writing to sdcard instead of extsdcard.

Only with v4.4 onwards, and the reasons are well-documented. Besides which, that's a totally different discussion.

From my understanding (again, correct me if I'm wrong) these were in place since honeycomb, officially from Google at least, but manufacturers for the most part did not follow these until KitKat. I don't know if anything about Google's policies in regards to KitKat changed to facilitate them following the new SDcard access changes now. And personally, just because the reasons are documented does not mean they are good reasons, I have only seen negative posts about the permission change in 4.4.

As evidenced by the fact that, if you remove the external SD card from a device that uses one, apps will still install happily until storage capacity is exceeded.

I am confused, this is basically what I have been saying. I want apps to be able to write their data to the sdcard, not arguing that they should only be installable to the sdcard or that the sdcard mountpoint is preventing this.

Where would /data point to, internal or external? While it's perfectly fine to have multiple mountpoints referencing a single partition thanks to symlinks, afaik it's impossible to have a single mountpoint referencing multiple partitions.

Again, I am confused, because this is also what I meant. /data should point to internal of course, I never tried to argue against that, sorry if it came off that way. I am also not sure where you got I was implying a mountpoint should point to multiple paritions. I was saying I think that the /sdcard mountpoint should point to the root of the sdcard instead of a point on the internal flashrom.

As an ignorant layman, it seems to me like the problem here is just how the internal storage is named?
Must admit it confused me at first but i got over that in ICS.
I know sdcard/sdcard0 is a partition on the internal memory but i just imagine it as an sd card thats non-removable or like drive C on a pc :)

Now now, no need to put yourself down like that, none of us are born knowing this, I certainly have a LONG way to go with Android, and my first attempts using a computer would probably make a laughable YouTube video if it existed back then.

And that is sorta what I mean, rather, the issue I have is that the internal storage has a folder named after what used to be the location of the physical sdcard, so there are lots of all out there which still think this is the actual sdcard and are writing files meant to be removed to there.

Also, not sure about sdcard being a partition. I know on some devices (like my M8 as others in this thread pointed out, it's just a symlinked folder), not sure if other devices actually have partitioned off the flashrom into a separate sdcard partition or not, but yeah, whether its a symlinked folder or an actual partition, they are all physically on the same flashrom chip.

And what about devices like the Nexus line that don't have external storage? Some apps need an sdcard. The camera on my HTC Sensation demands one. The one on my Optimus F7 does not. Emulated storage is for compatibility.

I don't see a problem with having the emulated storage if the device has no physical SDcard slot. I already talked abut older apps that need a SDcard. As for the camera app in the Sensation, I think that is just a HTC thing. My EVO 3D demanded a sdcard for the camera too, but both the Sensation and EVO 3D have a sdcard slot, and come with one already plugged into the phone. (Plus, AFAIK, neither of those two had the emulated sdcard folder either).
 
Upvote 0
I don't see a problem with having the emulated storage if the device has no physical SDcard slot. I already talked abut older apps that need a SDcard. As for the camera app in the Sensation, I think that is just a HTC thing. My EVO 3D demanded a sdcard for the camera too, but both the Sensation and EVO 3D have a sdcard slot, and come with one already plugged into the phone. (Plus, AFAIK, neither of those two had the emulated sdcard folder either).

Yeah and you couldn't download anything either. Or use those gigs of internal memory for much of anything. But Google changed that and brought it into user space.

This happened after Google added MTP. Sdcard0 is internal space that I can use. Sdcard1 is my external storage.

If an app is writing to internal when it should be external, I'd assume that's an app error. Maybe because before MTP, there was UMS. Where the external card was sdcard0.
 
Upvote 0
My point is, linking the sdcard mountpoint to a folder in the internal flashrom is more akin to linking Drive D: in windows to a folder on your C:
Perhaps, but that's also a valid strategy if (for example) you want to handle multiple physical devices from a common root - easy on linux, less easy on Windows unless you mount the disks in mount points in addition to (or instead of) giving them a drive letter. My card reader appears this way so that its four separate "drives" appear as folders inside a "cardreaders" folder in c: rather than as four drive letters. It makes a lot of stuff much easier to deal with (especially in simple scripts) if the need to enumerate drive letters is eliminated.

I should point out that none of the software I use is "fooled" by this - anything that needs to know the difference can easily see that the folders are really mount points, just as any Android app could easily check whether /sdcard is physical or emulated so long as the developer bothers to do the check. The OS is not in control of the app developer's personal coding standards.

Now I'm really out of here, I'm probably just repeating myself and adding little new information.
 
Upvote 0
the internal storage has a folder named after what used to be the location of the physical sdcard

The external SD card was never referred to as /sdcard afaicr, but my experience of Android only goes back as far as the HTC Hero and Android 1.5.

I don't see a problem with having the emulated storage if the device has no physical SDcard slot.

Okay, but what then happens when you try to install something on a device that has a physical SDcard slot? It still has to know where the internal storage is, but as it can't alter its code on-the-fly a common location reference must be used. That's all this "emulated storage" is.
 
Upvote 0
By the way, I do not own nor have ever used a HTC EVO 4G LTE so I don't know how true this is, but I was wondering if anybody could comment on this:

I was told that the EVO 4G LTE originally had an emulated sdcard folder, but that a later firmware update removed that, is there any truth to that?

Yeah and you couldn't download anything either. Or use those gigs of internal memory for much of anything. But Google changed that and brought it into user space.

Wait, why not? Is there some limitations or something on apps just using the internal memory instead of an emulated or physical sdcard?

This happened after Google added MTP. Sdcard0 is internal space that I can use. Sdcard1 is my external storage.
I know that sdcard0 is also internal space, but I don't understand what you mean by "that I can use". So, why can't just the internal space be used without the sdcard0 symlink?

If an app is writing to internal when it should be external, I'd assume that's an app error.
I'm saying the reason the app is writing to internal is because it thinks the /sdcard or /sdcard0 folder is the mount point for the external sdcard, because that was the external sdcard mountpoint before, and I have seen countless apps exhibit this behavior.

I should point out that none of the software I use is "fooled" by this - anything that needs to know the difference can easily see that the folders are really mount points, just as any Android app could easily check whether /sdcard is physical or emulated so long as the developer bothers to do the check. The OS is not in control of the app developer's personal coding standards.

The only apps I have run into which can tell the difference, are the ones with a file picker dialog or file managers, and two small backup apps I have, all the rest see /sdcard or /sdcard0 and think that is external memory.

And yes, the OS does not control how a developer writes an app, but the os did say SD cards were in one place, and now actually put them in another place half-way. If there is a valid reason for this, fine, but so far everyone has said the reason is just so some really really old apps which have not been updated won't break, but this does break a lot of newer apps by making them write to internal when it should be external.

The external SD card was never referred to as /sdcard afaicr, but my experience of Android only goes back as far as the HTC Hero and Android 1.5.

I admit, this is the first time I have heard of this. My EVO 3D, which came with Gingerbread and got an update to ICS, just simply mounts the external SD card as /sdcard, both on the root of the internal memory and in the /mnt folder. This is actually the first I have heard of the external sdcard not being mounted to /sdcard (before the emulated folder) since every Android device I have used had this setup.


Okay, but what then happens when you try to install something on a device that has a physical SDcard slot? It still has to know where the internal storage is, but as it can't alter its code on-the-fly a common location reference must be used. That's all this "emulated storage" is.
It will just install to internal then? I thought that was what was supposed to happen, and most apps install to internal, and the ones which have an install script that defaults to sdcard still install to internal if there is one? At least, that has been my experience. Most apps I have used install to internal, many can't even be moved to sdcard, and of the ones that default to installing on the sd card, they installed to internal when my sdcard was not plugged in.

I just tried booting my EVO 3D without an sdcard, pretty much the only apps which had issues were the camera and apps specifically designed with the intention of managing/working with your sdcard. This is a phone which came with a sdcard installed and thus expected it to always be there mind you (in fact, the design prevents you from plugging in/removing it without removing the battery first).
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones