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

Help Internal Phone Storage becomes read-only

After some searching, I wasn't able to find anyone who described quite exactly my problem, and no one had a solution. So, after days of fighting this, I finally fixed it, and decided to post my solution.

HTC Droid Incredible running OEM 2.2 on Verizon

Problem:
My Internal Phone Storage was getting mounted as "read-only" and I couldn't write to it.

Symptoms:

  • Whenever I booted the phone it would say "There's a problem with your SD card" in the notification bar. However, going to settings > SD & phone storage -> it revealed that my SD card was fine, and my internal storage was "read-only"
  • Astro File Manager Clearly showed my emmc folder as unwritable (and nothing happened when I tried to write to the folder)
  • My photo gallery would only show photos taken since the problem began. This symptom was the same as in this post (with no solution): http://androidforums.com/incredible...phone-storage-read-only-after-2-2-update.html
Back story:
I had my phone connected via USB as a Mass Storage Device to a windows machine and was transferring a folder called "BensPictures" that contained approximately 400 megs of photos to the root of the Internal Storage. About 50% of the way through, windows made the device disconnect sound, and alerted me that the USB storage device was no longer available, and that data had been lost in the transfer. I've seen the error before, but never when actually transferring anything. I just popped in a USB thumb drive (wish I did this first...) and used that to complete my file transfer.

A few hours later I realized that my phone was doing some odd things, such as the gallery problem described above. And then I started getting these messages about something being wrong with my SD card in my notification bar.

After a few hours of poking around, I discovered that my Internal Memory was now "read-only" and there was what astro was calling a file called "BensPictures" in the emmc folder. This "file" had no permissions, and tapping and holding on it did nothing.


Solution:
I fired up my TerminalEmulator (my phone was NOT rooted at this point) and began to poke around. Trying to remove anything from the emmc folder gave me a "filesystem read-only" error, but trying to remove this "BensPictures" file gave me error: "Unable to remove file: I/O error"

I started playing around with the mount command, and quickly learned that I couldn't do anything without rooting my phone.

The only thing useful I was able to do at this point was list out the existing mounts by running "mount" in my terminal.

Doing this, I saw that one of the mounts was this:
Code:
/dev/block/vold/179:3 /mnt/emmc vfat ro,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
I knew that was the internal memory. The important part there is
Code:
/dev/block/vold/179:3
Since I couldn't do everything I needed to (like change the mounts), I rooted my phone.

Everything that took place from this point on was with my phone rooted.

The next thing I did was install SSHDroid so I could run commands from my computer over SSH.

Once I had SSH working, the first thing I tried was to remount the internal memory with read/write enabled using this command:

Code:
mount -o remount,rw,errors=continue -t vfat /dev/block/vold/179:3 /mnt/emmc
The command appeared to work, but the mount was still read-only. I tried unmounting using:
Code:
umount /mnt/emmc
And then re-mounting using a similar command like above (minus the "remount" option). The device did remount, and was accessible, but it was still read-only.

I tried mounting the device to a different location, and it was still read-only.

I tried a lot more things here. Honestly, I don't remember a lot of them. But I tried everything I could think of.

Finally, I started thinking about fsck. I discovered that Android has a fsck_msdos command, and since the internal memory on the Droid Incredible is vfat, this was perfect.

I mounted the internal storage (still in read-only mode) and copied everything to my SD card as a backup, and then ran:
Code:
fsck_msdos /dev/block/vold/179:3
I got this output:

Code:
** /dev/block/vold/179:3
** Phase 1 - Read and Compare FATs
Attempting to allocate 845 KB for FAT
Attempting to allocate 845 KB for FAT
** Phase 2 - Check Cluster Chains
** Phase 3 - Checking Directories
/BensPhotos starts with free cluster
Remove? [yn]
It found my broken directory! I said 'y'es and it continued to tell me about several Lost Cluster Chains, and finally finished with a
Code:
***** FILE SYSTEM WAS MODIFIED *****
I thought to myself, "This bad directory couldn't cause all those problems...could it?" and I then rebooted my phone, and the Internal Phone Storage was back to it's good-ol' self. Readable and Writable

I'm a couple reboots later (although only a couple hours) and it appears to be working still!

I sincerely hope that if someone else is having an issue like this, this helps them at least get on the right track!
 
I love you!

Thank you for posting these detailed instructions. My Droid Incredible's internal storage recently became read-only too. After trying several things I found these instructions. They worked perfectly.

I had never rooted a phone before and was a little intimidated, but the 'unrevoked' tool made it simple.

The only things I did differently from your instructions (after rooting the phone) were:
  • Instead of downloading SSHDroid I ran the fsck_msdos command from Terminal Emulator.
  • After rooting the phone and running Terminal Emulator, I typed "su" to run in SuperUser mode before running fsck_msdos.
  • fsck_msdos was asking me to verify a TON of changes so I hit ^C (hold down the scroll button and hit C) to stop it, then I ran fsck_msdos with the -y option to automatically answer "yes" to every question:

Code:
fsck_msdos -y /dev/block/vold/179:3
 
Another borked Incredible w/ "read-only" emmc, "SD Card problem" and thousands of missing photos fixed with fsck & terminal emulator... thanks, OP!
 
I recently experienced the same problem with my Samsung Galaxy S2 GT-I9100 where the internal phone memory suddenly became read-only while the SD card was still OK.

Before stumbling over this thread (after scouring the web to no avail for possible causes and solutions) I tried many things (short of a factory reset) including trying to format the internal storage (which silently failed because it was still read-only)!

After reading the posts above I found the culprit responsible for the read-only mount. The "Android" folder had some garbage file names in it. My phone wasn't rooted and I can't believe there wasn't any built-in function for checking the integrity of the file system. I guess they thought it could never become corrupted... Truth is I still don't know what corrupted those garbage files, it must have been some messed app update from the Google Play market...

So the only solution was to root my phone and since I'm no expert at that I searched for the easiest way to do it. Luckily I found the Framaroot app which does just that, root your phone in one click by using an exploit tailored for your particular phone:

http://forum.xda-developers.com/showthread.php?t=2130276

The "Aragorn" exploit worked nicely for my S2 GT-I9100 (Android version 4.1.2). The next steps were a walk in the park:

I installed SuperSU and Terminal Emulator from the Google Play market, fired up Terminal Emulator, executed "mount" to find the name of my internal storage, then executed "su" to make myself root and finally used fsck_msdos as described above to fix my corrupted folder (truncated it and deleted the garbage entries).

After rebooting the phone, my internal storage was once again mounted as read-write and everything was back to normal. Thank you for posting this thread and I hope this solution will help someone else too with their corrupted read-only file system.

-- My YouTube Channel
 
Htc incredible su binary v3.0.3.2
I have bt5 arm boot folder in my internal storage because i do not have a sd large enough to store it. well when ever i try to access it with terminal i get denied. it seems like you guys are going in the direction that i need to get permissions to access the os. I really want this to work any help would be appreciated.
 
What a terrible OS
So this is the equivalent of un-ticking the read only check box in Windows.
I am going to take my read-only LG phone to the store and throw it through the most expensive LG television they have. Maybe then they will take some notice.:mad:
 
it is supposed to install the SSH if memory is read-only?


I can not do anything, not install or uninstall. how else can modify the internal memory to make it as read-write?
 
Hello, sorry for the bumpage on this, but I've had 2 days of my tablet playing up and I'm sure it's coz the internal memory is read only. The problem is, I'm getting the 'Unfortunately, the process...has stopped working' pretty much every second! And it's everything, from gapps, to Ebay, to Calendar, to Play Store. Making it impossible to type anything in the emulator, which I can get up, but not type anything into, since as soon as I press OK, another pop up comes up (thank you to whoever designed that piece of brilliance!!! >:o( )

I've tried a full format, cache/dalvik wipe and tried to install a new ROM, but it won't write, so no go.

Any suggestions?
 
Hi,
I have rooted my Micrimax A120 and I couldn't remember what I did. but problems started to arise in my phone gallery was not working properly,the gmail account sync was experiencing problems and I thought of formatting so I downloaded a recovery.IMG and flashed it using mobile uncle tools and it flashed and I started to factory reset my phone but it failed. I couldn't factory reset my phone the recovery said that: unable to mount on folder emmc (or) unable to Mount in cache. I installed terminal emulator and tried everything you said but none could change the read only mode of my internal SD card.
I couldn't flash a new rom without wiping data....
Any suggestions?
 
Hello, I had the same problem (not the same device).

I've tried countless solutions proposed on xda, and similar sites: setting permissions, ownership group change, remounting the storage in rw mode, etc, every solution failed, but not this one:

0.Your phone needs to be rooted.
1.Connect your phone to the PC (usb debugging enabled, etc)
2.Open up a terminal(Mac/Linux) or cmd.exe (Windows).
Mac/Linux - you'll need the adb executable (I don't really know how to set up on Mac), and on Linux it depends on your distribution (on Arch it can be found in the AUR)

Windows - download android platform-tools (which contains adb.exe, fastboot.exe, etc)

3. Once in the terminal type

#Make sure that your device is accessible through adb
Code:
adb devices
#SSH-like service for your Android phone
Code:
adb shell
#Use it as root (at this point your phone will probably ask you to give
super-user permissions to adb shell, confirm it)
Code:
su
Finally, this is where the magic happens
#I highly recommend the man page of restorecon
Code:
restorecon -v -R /data/media
Code:
exit
 
Last edited:
The problem with giving advice for devices that you're not sure about comes down to their background.

While I appreciate your advice in general, please consider adding next time a disclaimer that restorecon only applies to Android with SELinux - which I believe was Android 4.3 but you can check me on that, thanks.

That was all permissive mode back then fwiw I didn't see restorecon use come along until later.


Btw - our Mini-SDK advice is better than a full platform-tools download for rooters and covers the 3 major operating systems -

http://androidforums.com/threads/adb-guide-updated-2014-11-11.443072/#post-5389081
 
Hi,
My device in not rooted . What can I do?
(This kind of problem its a very hard challenge !!)

I will thanks a lot any suggestions.

Luciano.
 
Yep, fsck_msdos did the trick. I am using rooted galaxy note 1. I can't using camera or load picture from LINE. I installing Terminal Emulator then on terminal emulator i type su. Then type mount and i can see which path that broken. In my case, i have several path which broken. /dev/block/dm-1, /dev/block/dm-13 etc .. It's easy to find it. Then i am using fsck_msdos /dev/block/dm-1 and the emulator asked me 2 question and i type. Do it for all broken path and reboot my phone. Now it's work again :) thanks
 
Having trouble. I followed the OP and completed a root and ran the mounting and fsck_msdos commands. (still read-only)
after the restart its as if nothing ever happened and has returned back to read-only.
Can you help me if I need to run extra commands or am I a special case?
- galaxy s2
****output from mount command run through SSH ****
root@android:/ # mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mmcblk0p9 /system ext4 ro,noatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p7 /cache ext4 rw,nosuid,nodev,noatime,barrier=1,journal_async_commit,data=ordered 0 0
/dev/block/mmcblk0p1 /efs ext4 rw,nosuid,nodev,noatime,barrier=1,journal_async_commit,data=ordered 0 0
/dev/block/mmcblk0p12 /preload ext4 ro,nosuid,nodev,noatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p10 /data ext4 rw,nosuid,nodev,noatime,barrier=1,journal_async_commit,data=ordered,noauto_da_alloc,discard 0 0
/dev/block/mmcblk0p4 /mnt/.lfs j4fs rw,relatime 0 0
/sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0
/dev/block/vold/259:3 /storage/sdcard0 vfat ro,dirsync,nosuid,nodev,noexec,noatime,nodiratime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro,discard 0 0
 
Last edited:
I have the same problem. Sometime the internal storage become read-only after i rebooted my device and randomly wipe internal storage itself. I don't copy files. I just play games. is there a way to prevent this in the future?
 
Back
Top Bottom