[Captivate Android Development] cgugino:
Note: This guide is geared toward the Samsung Captivate. If you have a different device, try your device's forum, or search this thread.

Are you using ICS and pulled your phone out of your pocket only to find that it had this screen, saying "Encryption unsuccessful" and your only option a button that said "Reset Phone"? Don't press it! Try rebooting a few times with your external sdcard out first. Sometimes that will fix the issue. If not, take a deep breath and follow the guide below to get your phone usable again:

​

Too late? Already hit the button? Then you know this screen:

​

Here's the bad news:

Your partitions for /data and /sdcard are no longer accessible. Latest news points to a bug in the firmware for the memory card in your phone. ICS uses a new function that doesn't work correctly with the affected phones.

Good news:

I found a *workaround* to get my phone to at least work again. Note: You will need to perform steps 9-11 every time you flash a ROM or ROM update, because flashing overwrites the vold.fstab file.

Here were my steps to get your phone working again:

Realize that you may have just lost whatever was on your sdcard and it's your own fault. For me, this was acceptance that *I* installed ICS on my phone and now CWM backups, photos, and more were gone. Once your realization has set in, move forward.

Acquire an micro SD card that you will put into your phone. This will contain your new /data partition as well as your new /sdcard partition. I recommend at least 8GB. If you already have a card, backup whatever is currently on your micro SD card - you *WILL LOSE* everything on this card in the next few steps.

Boot into clockwork mod, using either 'adb reboot recovery', or some other combination of buttons.

Partition your mircosd card through CWM. This will be 'advanced' then 'Partition SD Card'. The first size you choose will be the size of your /data partition. I have a 16GB card and chose 2GB for /data. This will leave me with (16GB-2GB) 14GB for /sdcard. You can choose a different size if you like, depending on how big you want your internal data partition to be. Choose 0M for swap. This process will take a few minutes, so keep waiting, you impatient jerk.

Download the latest build of ICS for your phone and put it on your micro SD card. (You can mount it to your computer at this point in CWM with 'mounts and storage' 'Mount USB storage')

Create a full backup. Just in case. Put it on a computer, dropbox, whatever. Your phone isn't a safe place for backups.

Wipe user data, cache, & system. Now install the ICS package you just put on your card and reboot.

The first boot will take a while, as all first boots do, but after a while you should be back in ICS. Exhale (If you're not exhaling at this point, post something in this thread and I or someone else will help get you running)

Check Settings > Storage and see if your new /sdcard partition (For me it was about 14GB) shows up as 'USB Storage' or 'SD Card' If it's USB storage, then your micro sd mounted to /sdcard successfully and you're done. You should be able to take a picture and have it save. If not...

Edit etc/vold.fstab with whatever you use personally (root explorer for me) and swap paths for /emmc and /sdcard (the part that starts with /devices/platform...). Someone more intelligent than me can probably make this a CWM zip. This step is telling ICS to swap your /sdcard (broken internal sdcard) and your /emmc (working external sdcard). It will probably look like this when you're done:

# internal sdcard that is no longer working
dev_mount emmc /mnt/emmc 1 /devices/platform/s3c-sdhci.0/mmc_host/mmc0

# external sdcard
dev_mount sdcard /mnt/sdcard auto /devices/platform/s3c-sdhci.2/mmc_host/mmc2

Reboot with your new vold.fstab and check your storage amount in ICS and test your camera (easy test to see if Android can write to the sdcard). Hopefully now this is working for you.

Let me know if you have any questions or (hopefully not) problems!

Notes for myself and devs:

ICS is a lot pickier about mounting filesystems, and if it can't mount /data correctly, it assumes it is encrypted. It really isn't, firing off https://source.android.com/tech/encryption/android_crypto_implementation.html an misleading encryption message.

In ICS and in CWM, when I look at /dev/block/platform/ I only see s3c-sdhci.2 and s5pc110-onenand. The s3c-sdhci.0 block is missing completely. I'm not sure how to even touch the /data or /sdcard filesystem at *ALL*

Oh well.