Understanding Adoptive Storage in Android 6+

Adoptive Storage, new to Android 6.0 (Marshmallow) is a new way to use external storage in the Android ecosystem.  At the time of writing, only the Shield Tablet K1 has been upgraded to Marshmallow – and I had time to vet out how it works.  This article will help you come up to speed and hopefully set your expectations accordingly for when your Shield device gets the update.

For those that don’t like to read?  Or just want proof?  Here is a video version of this article.  Scroll down to keep reading.

[youtube id=”BcO_ostknOo” align=”center” maxwidth=”600″]

What is Adoptive Storage?

In the simplest terms, Adoptive Storage allows you to “merge” external storage sources (microSD, flash drive, external hard drive, etc) with your “internal storage”.  This is (mostly) transparent to the end user and removes a lot of the restrictions from the standard “internal” + “microSD card” memory configuration.

How Does it Work?

When you insert an external storage device for the first time, Android 6 will ask you if you want to continue using the device as a “portable storage” device or if you want to adopt it as “internal storage”.

If left as portable storage, it works just like it did in Lollipop.   Same restrictions to writing to it, etc.

If you elect to use it as internal storage, Android will require the device be wiped (formatted) and “encrypted” to match the Android device you are on.  All contents will be lost.

During the preparation stage, Android will profile the device for speed and reliability.  If it thinks your device is “slow” or may cause you a poor experience, it will alert you to this.  We’ll talk more about what that might mean later.

Once formatted and encrypted, that external storage device shows up on the Android device as “internal storage”.  Android will then ask you if you would like to move files OFF your original internal storage space to the new storage (these files are what we’ll call “Data” from now on).  While it will tell you the TYPE and SIZE of the files to be moved, you will not be able to pick and choose.  This is called “Migrate Data”.

From that point forward, Android will “intelligently” try to decide where to install applications for you from the Play Store.  You may also use the built in Storage tool to move items back and forth between “internal” storage and “adopted” storage.

Are apps “fully” installed on the Adopted Storage?

Yes.  If an app installs on Adopted Storage, the app and all its data are stored there.  This allows you to literally unplug the storage – taking all the apps with it – and not impact your Android.  Of course, the flip side is that if that app is providing some sort of service (homescreen widget, etc.) then unplugging it while those services are running could cause some undesirable results.

This is kinda neat; you could have several small storage mediums for your device.  One with games, one with emulators, one with apps, etc. and just change them out on the fly.

What’s the Catch?

As great as this is?  There are a lot of catches – at least on the Shield Tablet K1.  You need to be fully aware of how this works so you don’t get burned later on.

Catch 1:  Once that device is formatted and encrypted for use with that Android device – it doesn’t work anywhere else.

You cannot access it from another Android device.  You cannot access it from a PC.

In fact, you can’t access it from most file managers on Android (they simply don’t recognize the adopted storage) unless you have done a “Migrate Data” to it – and that might not be a smart thing to do (see Catch 6).  You might as well duct tape the storage medium to your Android device.

This becomes a real problem for people using very large external hard drives that constantly take their big storage drives from their Android device and plug it into the PC to transfer movies, music, emulator roms, etc.  A “portable” 2TB drive on your Shield TV sounds like a great idea – until you realize that drive doesn’t work on your PC anymore.  Your only options are to copy files via FTP or other “across the network” methods – and those methods have to support Adoptive Storage.

Catch 2: Only ONE storage medium can hold “Data”.

Only one storage “internal” or “adopted” can contain “Data” – that is, give you access to the file system to write files to.  You can change this back and forth any time you want – but it isn’t a fast process.

Catch 3: OTG = Portable Storage

The Nexus Player Android TV device appears to allow you to use Adoptive Storage with OTG drives.  The Shield Tablet K1 does not. Anything plugged into OTG is automatically used as Portable Storage.  There is no option to “Format as Internal”; just Format.

Time will tell if it works with Shield TV or Portable.  If the USB ports on the Shield TV don’t allow a drive plugged into be “Adoptive Storage”, there are going to be a lot of 16GB Shield TV owners that are going to be upset.

Catch 4: One Adoption

Since the Shield Tablet K1 only has a microSD card and expansion via OTG, I could only achieve a SINGLE Adoptive Storage.  Even removing the microSD didn’t make the OTG drives available as Adoptable.  This may change with Shield TV which has legitimate USB ports.

Catch 5: Moving Apps CAN Be Slow

It seems to take an unusual amount of time to move apps to the Adopted Storage.  Even something like a 58MB app took awhile.  Moving apps has also caused some apps to crash after they have been moved (Zen Pinball was one of them) – until they are run a second time.

There is obviously some clever caching going on here.  Need to explore this more.

Catch 6: Remove the “Data” Storage and Stuff Breaks

Let’s say you want to harness the full storage potential of your 128GB microSD card – so you “Migrate Data” to it.  Now you can access it like a file system and copy files (movies, music, roms, whatever).

If you eject that device, anything that “depends” on the “Data” storage system will FAIL.  That includes taking screenshots, recording videos – any app that writes to the “sdcard” memory as part of its regular operation.  Yeah, it essentially cripples your device.

Catch 7: USB only sees “Data” Storage

If you plug the device into a PC, only the “Data” storage medium is available.  So, if you have 128GB microSD card acting as Adopted Storage and your “Data” is stored on your internal memory?  You can’t plug it into your PC and write to the 128GB card.  This is a big thing.

Catch 8: Some games require “Data” folders are on the adopted storage device.

So if you adopt your microSD card, but do NOT migrate your data to the microSD card – many games will fail to install their needed extra data.  Asphalt 8 is one of the many examples.

There could be other issues that will reveal themselves over time.

What Sorts of Issues?

Well, first potential issue is one that I call the “storage point of no return”; that is, your device is storing more on Adoptive Storage than you can return to internal memory if you need to.  If you have a 16GB Shield Tablet – and you put in a 16GB microSD card – you effectively have enough space on the internal memory to back your microSD card up, remove and/or replace it.  Remember, the ONLY device on the planet that can read that microSD card is the Android device it was formatted on.  You can’t pop it into a PC and get your data off.

Imagine if you had a 16GB phone with a full 128GB microSD!

Another potential issue is latency and durability.  It is a well known fact that not every microSD card is the same.  Even cards made by the same manufacturer and are of the same size can deviate in quality and speed.  MicroSD memory is also known to degrade over time and they have a fixed lifespan (number of reads and writes).  At this point, we don’t know how effectively Android uses that MicroSD card, but if it writes and reads data randomly, the lifetime of the card will go down.

I have experimented with many types and sizes of microSD cards from various manufacturers.  I’ve seen Android complain about some – and not about others.  I’ve also seen slow down when streaming graphics from a large card.  One of the reasons many apps don’t support “Move to SD Card” is because they cannot be assured the SD card is fast and reliable.  It is a wild card in the system.

Final Thoughts

Adoptive Storage can be a blessing – but if you’re not expecting to leave the Adopted storage in there full time (or if it doesn’t work with Shield TV’s USB ports) – it may be a curse.

I haven’t had a chance to profile performance properly – when the 128GB card is “Data” or just Adopted Storage.  The few limitations may cause some to pause before using it.  The “One-Two Punch” for your Shield TV device may be a 128GB microSD card as non-“Data” Adopted Storage, paired with a fat external USB drive as Portable Storage to hold your movies, music, roms and other files you need.

This article will be updated when Shield TV’s Android 6.0 update drops and I get a chance to check it out.


9 Responses to Understanding Adoptive Storage in Android 6+

  1. My question is how to access (copy & paste) to the adaptive storage files?

  2. https://youtu.be/8h94v8G9nxA
    in this video, he can access to the adaptive storage on his pc.
    What’s going on!!!!!!!!

  3. Jm Pz says:

    My son’s nVidia Shield keeps rebooting. Once I remove the sd card it functions. My Linux box is saying the GPT partitions are fine. There is no filing system. Shouldn’t there be journaling system in place to add or free up inodes and ddisk blocks????
    If you can, please let me know how to fix the constant rebooting other than the cheap noob cop out of formatting disk method. Does it need a fs? Will fsck work? is it vFAT,XFS, or ext4? Thanks in Advance!


    parted /dev/sdb print
    Model: Generic STORAGE DEVICE (scsi)
    Disk /dev/sdb: 129GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt

    Number Start End Size File system Name Flags
    1 1049kB 17.8MB 16.8MB android_meta
    2 17.8MB 129GB 129GB android_expand

    gdisk -l /dev/sdb
    GPT fdisk (gdisk) version 0.8.8

    Partition table scan:
    MBR: protective
    BSD: not present
    APM: not present
    GPT: present

    Found valid GPT with protective MBR; using GPT.
    Disk /dev/sdb: 251131904 sectors, 119.7 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): B6968810-697C-44AA-B561-ED60F1934D8A
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 251131870
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)

    Number Start (sector) End (sector) Size Code Name
    1 2048 34815 16.0 MiB FFFF android_meta
    2 34816 251131870 119.7 GiB FFFF android_expand

    o gdisk /dev/sdb
    GPT fdisk (gdisk) version 0.8.8

    Partition table scan:
    MBR: protective
    BSD: not present
    APM: not present
    GPT: present

    Found valid GPT with protective MBR; using GPT.

    Command (? for help): v

    No problems found. 2014 free sectors (1007.0 KiB) available in 1
    segments, the largest of which is 2014 (1007.0 KiB) in size.

    • administrator says:

      You don’t mention how you’re using the SD card. Are you using it as PORTABLE STORAGE or ADOPTIVE STORAGE? You have a deeper understanding of Linux volume management than I do. What I do know is that Adoptive Storage can often cause these sorts of issues – and when the user goes back to portable storage, the problem goes away. 128GB card, based on the numbers I see, right? Offbrand? Sandisk? Adoptive storage also seems less reliable with higher capacity cards, too. If you DO use adoptive storage, do NOT migrate data to it. That will keep the OS more stable in the event that the SD card isn’t playing nice.

  4. Had a 2 TB OTG HD set up as adaptive,. Reset system. Hard drive now mounts but as USBOTG and no data

Leave a Reply