Create sdcard0 symlink on 6.0.1 for WhatsApp compatibility - Android Q&A, Help & Troubleshooting

Hello.
I recently switched from a Galaxy S2 running CM 10.2 (Android 4.3.1) to a Nexus 5 running 6.0.1 (stock rooted).
My goal was to migrate all my WhatsApp data (history, media, etc.) over to the new device. Restoring the history was no problem using WhatsApp's builtin backup/restore functionality.
I then proceeded to copy all the .../WhatsApp/Media/ folders over to the new phone, however, I still got an error message stating that the file could not be found when trying to open any (old) received images or videos from within WhatsApp.
Upon further investigation, it seems like WhatsApp is (or was?) storing the absolute path to every individual media file in its database, e.g. on my S2: /storage/sdcard0/WhatsApp/Media/WhatsApp Images/IMG-20140813-WA0020.jpg
It just so happens that the /storage/sdcard0 symlink doesn't exist on my Nexus 5 and hence WhatsApp can't access older files since the links are broken.
So I figured all I needed to do was create the /storage/sdcard0 symlink, like this:
Code:
ln -s /sdcard /storage/sdcard0
Code:
[email protected]:/ # ls -l /storage
drwx--x--x root sdcard_rw 1970-07-07 17:59 emulated
lrwxrwxrwx root root 2015-12-30 16:26 sdcard0 -> /sdcard
drwxr-xr-x root root 1970-07-09 08:57 self
Unfortunately, WhatsApp still couldn't access my old media files (not to mention that the symlink was gone after a reboot).
What am I doing wrong?
Thanks!

Bump.

Bump.

Bump.

Bump.

Bump.

Bump.

Bump.

kveikur said:
Bump.
Click to expand...
Click to collapse
Make sure whatsapp has storage permissions?
Also try to symlink directly where /sdcard goes, not symlink to another symlink

Related

[Q] Emulated internal storage as sdcard

Hello everyone.
Yesterday I received my Huawei Honor 3C and I've installed MIUI ASAP instead of Emotion UI.
Everything's great but I have a problem with double SD Card, I mean: I have my own external card and the phone got his own by emulating it's internal storage as SD Card (it's a symlink to /storage/emulated/0 and it's the same as /storage/emulated/legacy, so this fake sd is eating up my storage, there are also other symlinks in /storage/, /mnt/ and even in root folder there is a symlink sdcard->/storage/emulated/legacy). Phone and apps are correctly seeing external card as SD Card but in reality the internal storage is being used for everything.
Because of this I have only about 5GB available instead of 64GB
Is there any way to terminate the emulation or changing it's target to sdcard2 so that I could use my card correctly? I've tried few things but nothing works. Symlinks are being recreated during boot so editing or deleting them does not work. Editing vold.fstab does nothing because ext is being mounted after boot while the emulation stars while in it - I guess that a proped ini script could do the work.
huaweiproblem said:
Hello everyone.
Yesterday I received my Huawei Honor 3C and I've installed MIUI ASAP instead of Emotion UI.
Everything's great but I have a problem with double SD Card, I mean: I have my own external card and the phone got his own by emulating it's internal storage as SD Card (it's a symlink to /storage/emulated/0 and it's the same as /storage/emulated/legacy, so this fake sd is eating up my storage, there are also other symlinks in /storage/, /mnt/ and even in root folder there is a symlink sdcard->/storage/emulated/legacy). Phone and apps are correctly seeing external card as SD Card but in reality the internal storage is being used for everything.
Because of this I have only about 5GB available instead of 64GB
Is there any way to terminate the emulation or changing it's target to sdcard2 so that I could use my card correctly? I've tried few things but nothing works. Symlinks are being recreated during boot so editing or deleting them does not work. Editing vold.fstab does nothing because ext is being mounted after boot while the emulation stars while in it - I guess that a proped ini script could do the work.
Click to expand...
Click to collapse
First thing I do to troubleshoot that stuff is to copy everything off the internal storage, then format it in recovery, then copy everything back when booted up.
Why do you think that wiping and installing the exact same stuff could help? If you're copying back the same files that were there before - then you're back at starting point.
I've tried also a few different things, mostly trying to modify inid.rc scripts.
I found an interesting script in init.ssd.rc, that is:
Code:
on init
# See storage config details at source.android.com/tech/storage/
# fix non-shell uid process can not access shared-sd
mkdir /mnt/shell 0700 shell shell
chmod 0750 /mnt/shell
chown shell sdcard_rw /mnt/shell
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /mnt/shell/emulated/0 0700 shell shell
mkdir /storage/emulated 0555 root root
mkdir /storage/sdcard1 0000 system system
export EXTERNAL_STORAGE /storage/emulated/legacy
export SECONDARY_STORAGE /storage/sdcard1
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
mount tmpfs tmpfs /storage/emulated mode=0705,uid=1023,gid=1023
# Support legacy paths
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
symlink /mnt/shell/emulated/0 /storage/emulated/0
symlink /storage/sdcard1 /mnt/sdcard2
and so I deleted those symlinks, packed up the ramdisk and flashed boot.img with those changes... still nothing, the symlinks are still being recreated every boot.
Damn, what a stupid thing. I've found a solution on 4pda forums. I was trying to do it the complicated way while I had everything in the system settings, in a hidden MIUI menu with some untranslated chinese marks.
Under battery settings there are options in chinese, I just had to choose the fifth chinese one and change the storage options :victory:
huaweiproblem said:
Damn, what a stupid thing. I've found a solution on 4pda forums. I was trying to do it the complicated way while I had everything in the system settings, in a hidden MIUI menu with some untranslated chinese marks.
Under battery settings there are options in chinese, I just had to choose the fifth chinese one and change the storage options :victory:
Click to expand...
Click to collapse
Glad you solved it. The reason I mentioned the wipe and all because it's not an uncommon issue when switching from some stock system to custom ones (like CM, etc) where they change the mount point of external from /sdcard to /sdcard0 and it will just copy everything from /sdcard/ to /sdcard0 and you'll have copies of everything which cuts the storage in half. Case in point: http://forum.xda-developers.com/showthread.php?p=51709918#post51709918

[Q] Unable to delete files in /storage as root?

After reformatting (keeping the sdcard partition) and reinstalling android on my rooted Moto X, Titanium Backup stopped working saying "insufficient free space". When I check space on the device it's got plenty.
As a test, when I tried to delete /storage/emulated/0/TitaniumBackup/org.mozilla.firefox-20140326-060005.tar.gz I get the error
rm failed for TitaniumBackup/org.mozilla.firefox-20140326-060005.tar.gz, Permission denied
Click to expand...
Click to collapse
Checking the file permissions, it looks like it's writable
Code:
1|[email protected]:/storage/emulated/0 # ls -l TitaniumBackup/org.mozilla.firefox-20140326-060005.tar.gz
-rw-rw---- root sdcard_r 5048353 2014-04-10 07:58 org.mozilla.firefox-20140326-060005.tar.gz
But just to be sure, I ran
Code:
chmod 777 TitaniumBackup/org.mozilla.firefox-20140326-060005.tar.gz
Which didn't seem to make any difference
When I run mount, it appears to be writable.
Code:
/dev/fuse /storage/emulated/0 fuse rw,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
Other apps are able to write to the sdcard partition, as best as I've noticed the /TitaniumBackup/ directory is the only one not working.
Is there anything else I can try other than completely reformatting my phone?
I rebooted into recovery and opened an adb shell while my phone was in recovery.
From within recovery I was able to delete the TitaniumBackup directory with no problems.
After I booted back into normal mode, I cleared all app data for Titanium Backup from Settings > Apps > Titanium Backup and then started up the app again and everything worked!

Lilipop (CM12) mounting a filesystem as root (not accessable to any other user)

I have liliopop CM12 installed on my Note3, I have a encrypted partition, which I mount using luks, I have the mount working now with out issues so the encrypted part can be ignored, if any one is interested I can explain how I did what I did and post the actual scripts used.
The problem is that if I su - from juicessh and then mount the partition the partition is mounted, but only the juice su'ed user can see it. I can log this user out and back in and still see it, but only this users sees it.
For instance
$whoami
10211
#su -
0
#exit
$whoami
10211
now if I run:
$su -l --shell /system/bin/sh -c 'mkdir /storage/sdcard2 ; chmod 777 /storage/sdcard2 ; mount -t ext4 /dev/sda1 /storage/sdcard2 ; df ; exit' ; df
Now this will show that /storage/sdcard2 is mounted when I'm root
when I'm non-root (AKA not ID 0) then I do not see the mount.
Now I login as root using sshdroid:
#whoami
root
#df
does not show sdcard2
Lastly via "Root explorer":
does not see anything mount in /storage/sdcard2 either.
So the issue I'm facing is that I can mount a partition as root and access it, but only as the user I mounted it as, in fact what even makes less sense is that root via sshdroid and root via juicessh can not see what the other user did (mount wise), though if I create a root accessible file that is fine. I used to do this is CM11 using the same commands (different mount points do to the OS change) without any issue. It is as if each root user is unique which is fine on the surface, but since I need access to this encrypted partition, only when accessing documents for work, which normally it is not mounted, but once mounted I need it to be accessible as any other sdcard. Any suggestions?
Thanks,
ERIC
Partly working
I got it partly working if I disable "Mount namespace separation", however I still have an issue that /storage/emulated/0 does not exist, until I use a program like Root Explorer, I mean it exists, but the shell script can not change to it (mount point not found exception), I'm assuming this is also something to do with Lilipop, but I'm not sure what or how to resolve it.
ERIC
Hi,
I state that they are not very knowledgeable about linux commands.
I have installed on my SM-G900F ROM cm12 and it works!
I created a second user, but it does not have root privileges.
I would like, however, to know how you can create a secono user with root privileges?
Thanks for the reply

SD Card permissions trouble

This thing has been a thorn in modding my phone ever since I rooted it - root has no read access to sdcard0 at all.
Whenever the external sdcard is mounted, root can only access sdcard1 after adding media_rw group to android.permission.WRITE_EXTERNAL_STORAGE, which works OK most of the times but there are some apps that rely on working with an external sdcard and root together unfortunately. Whenever the external sdcard is unmounted, same things happen with it - no access as root whatsoever. (user has full access)
Something of particular interest is the output of ls -l:
Code:
[email protected]_M3:/storage $ ls -l
drwxrwx--x root sdcard_r 1970-01-01 01:00 sdcard0
drwxrwx--x root sdcard_r 2015-08-10 02:48 sdcard1
[email protected]_M3:/storage $ su
[email protected]_M3:/storage # ls -l
drwx------ root root 2015-08-10 02:47 sdcard0
drwxrwx--x root sdcard_r 2015-08-10 02:48 sdcard1
[email protected]_M3:/storage #
and I don't really know where to begin to fix it. The stock ROM is doomed from the start with this it seems...
For the record; I'm using SuperSU and I have tried formatting my (2GB) sdcard to FAT32 and it didn't work.
Just restore the file tonoriginal data and use an app to do this.
Foldermount will work best.
Try this with thd help of this app ypu can read both sd cards at same time and keep game heavy data on sdcard as well
Sent from my SM-G355H using XDA Free mobile app
lolwhat file are you even talking about? Nothing has been touched there and that output of ls -l shows the permissions aren't as they're supposed to be for root.
FolderMount isn't exactly the thing I'm looking for. I need to fix permissions for root's access to the sdcard0 folder, plain and simple. For instance - I can't install Viper4Android because of this (though oddly I did manage to do it earlier, some black magic I did and don't remember lol). It wouldn't bother me if the sdcard folder in the ramdisk wasn't linked to the sdcard0 folder or if the permissions weren't tampered with and they were it seems.
I feel like as if I would have an easier time porting Cyanogenmod to my device than figuring this out...

/sdcard and /storage/sdcard0 symlinks being broken at boot.

Hi I am a newbie here and I hope I posted on the correct forum.
I am having a problem with my Spreadtrum SC7731 phone. It's internal storage symlink which is /sdcard /storage/sdcard0 is being broken at boot(I think). This started when I flashed supersu through twrp to root the phone. This happens after booting and then a notification will pop up and say "SD card removed, please insert a new one". After that prompt, Apps will then lose access to the Internal Storage and when you check the /storage directory, there is a sdcard0 folder inside it but it is not linked to /storage/emulated/0 which makes this directory virtually useless. I have figured out a work around myself by deleting the directories created at boot and recreating the symlinks with a small script I created:
Code:
su
rm -R /sdcard
rm -R /storage/sdcard0
ln -s /storage/emulated/0 /sdcard
ln -s /storage/emulated/0 /storage/sdcard0
after running this script, apps will have access to the internal storage and the /sdcard in the root directory is again accessible. But sometimes, it will lose its symlinks again so I have to run the script if it happens.
Again this happens after booting, then a notification will appear that the sdcard has been removed. after that happens, I checked the symlinks and its broken.
I don't really know what is the root cause but the work around is quite a hassle for me. I am looking for like a permanent solution to fix this. I don't have an External SD Card and I am not planning on buying one since the Internal Storage is Enough for me as I do not game on this phone.
bump
Bump
help pls

Categories

Resources