Below are examples of external storage configurations for various device types. Only the relevant portions of the configuration files are included.
Due to configuration changes in Android 6.0 (like the removal of the
storage_list.xml resource overlay), the configuration examples are
split into two categories.
This is a typical configuration for a device with single external storage device which is a physical SD card, like Nexus One.
The raw physical device must first be mounted under
/mnt/media_rw where only the system and FUSE daemon can access
it. vold will then manage the fuse_sdcard0 service
when media is inserted/removed.
[physical device node] auto vfat defaults voldmanaged=sdcard0:auto,noemulatedsd
on init
mkdir /mnt/media_rw/sdcard0 0700 media_rw media_rw
mkdir /storage/sdcard0 0700 root root
export EXTERNAL_STORAGE /storage/sdcard0
service fuse_sdcard0 /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/sdcard0 /storage/sdcard0
class late_start
disabled
<storage
android:mountPoint="/storage/sdcard0"
android:storageDescription="@string/storage_sd_card"
android:removable="true"
android:primary="true"
android:maxFileSize="4096" />
This is a typical configuration for a device with single external storage device which is backed by internal storage on the device, like Nexus 4.
on init
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage/emulated 0555 root root
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
on fs
setprop ro.crypto.fuse_sdcard true
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
class late_start
<storage
android:storageDescription="@string/storage_internal"
android:emulated="true"
android:mtpReserve="100" />
This is a typical configuration for a device with multiple external storage devices, where the primary device is backed by internal storage on the device, and where the secondary device is a physical SD card, like Xoom.
The raw physical device must first be mounted under
/mnt/media_rw where only the system and FUSE daemon can
access it. vold will then manage the fuse_sdcard1
service when media is inserted/removed.
[physical device node] auto vfat defaults voldmanaged=sdcard1:auto
on init
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage/emulated 0555 root root
mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
mkdir /storage/sdcard1 0700 root root
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
export SECONDARY_STORAGE /storage/sdcard1
on fs
setprop ro.crypto.fuse_sdcard true
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
class late_start
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled
<storage
android:storageDescription="@string/storage_internal"
android:emulated="true"
android:mtpReserve="100" />
<storage
android:mountPoint="/storage/sdcard1"
android:storageDescription="@string/storage_sd_card"
android:removable="true"
android:maxFileSize="4096" />
This is a typical configuration for a device with single external storage device which is a physical SD card, like the original Android One. There is no secondary shared storage and the device cannot support multi-user.
/devices/platform/mtk-msdc.1/mmc_host* auto auto defaults voldmanaged=sdcard0:auto,encryptable=userdata,noemulatedsd
on init
# By default, primary storage is physical
setprop ro.vold.primary_physical 1
This is a typical configuration for a device with single external storage device which is backed by internal storage on the device, like Nexus 6.
/sdcard) is emulated on top of internal storage.
/devices/*/xhci-hcd.0.auto/usb* auto auto defaults
voldmanaged=usb:auto
This is a typical configuration for a device with multiple external storage devices, where the primary device is backed by internal storage on the device, and where the secondary device is a physical SD card, like Xoom.
/sdcard) is emulated on top of internal storage.
/devices/platform/mtk-msdc.1/mmc_host* auto auto defaults voldmanaged=sdcard1:auto,encryptable=userdata