Related
Well, some of you may have heard my ramblings around here that I've been working with some of the devs here(JF and MartinFick deserve major praise, probably more than me) on getting a better way to do the whole apps to sd thing.
After 3 days of talking/discussing/working on it, I've finally reached the fruits of that investigation and thought I'd share. This new method uses the filesystem unionfs to essentially meld the /data directory with the /system/sd directory, so that they appear to be one. This has the potential to allow users to move specific apps to or from the sd card, is far more stable than the normal symlink method(will still boot, etc even if there's no SD card) and should be easier to set up. Now, onto the tutorial of setting this up.
BIG DISCLAIMER NOTE: This is a major hack of the phone and it is fully possible that it will break your phone(I've seen no permanently bricked phones but that doesn't make it impossible). Use this method, and my app along with it at your own risk.
REQUIREMENTS:
1: This only works on JF(possibly only on 1.5, not sure about the others) and The Dude's v.1.0 or greater. The Dude's 1.0 or greater actually does the steps in this tutorial for you so you can just run appstosd2 and set it all up from there if you're using his ROM.
2: This still requires you to have 2 partitions set up, first FAT32 and second ext2. Although you can use the appstosd2 app attached to this post and available in the market for $0.99 which will partition the card for you.
3: If you want your apps to go to the sd card, you must have a directory "/system/sd/app" If you didn't have apps to sd before on the ext2 partition do the following in terminal emulator or run my appstosd2 app after finishing the tutorial:
Code:
su
mkdir /system/sd/app
If you want the private-apps, or dalvik-cache moved you can replace "app" in that code with ""app-private", or "dalvik-cache" respectively. Do not copy "data" to the sd card. My script will delete it on the next reboot.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Alright, first there's some files you need.
1: init.rc in .zip attached to this thread
2: a2sd.sh in .zip attached to this thread
All the above listed files should be put on your sd card(my tutorial will assume they are in the root directory of the sdcard(the topmost folder)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
If you need to undo the normal apps to SD first do the following in the recovery terminal(it's not strictly necessary but I'd recommend it):
Code:
mount data
rm /data/app
mkdir /data/app
if you moved the dalvik cache, repeat steps 2-3 with "dalvik-cache" instead of app. Ditto with "data" for the data cache.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Then go to terminal emulator and type the following:
Code:
su
cp /sdcard/init.rc /data/
cp /sdcard/a2sd.sh /data/
Then reboot and you're set. By default all future apps are installed to the sd card. In order to move an app to the internal memory do the following in terminal emulator:
Code:
su
cp /system/sd/app/[the app you want to move] /system/intmem/app/
rm /system/sd/app/[the app you want to move]
I will be incorporating this into my appstosd app soon(probably as a JF and TheDude-only version until the rest of the devs get on board).
I have included a copy of appstosd 2, which will copy all apps from internal memory to the sd card with an option to remove them from the internal memory. This will only work if you have followed this tutorial.
If you don't have partitions set up, appstosd2 will now do that for you with user-set partition sizes.
NOTE: If you're using The Dude's ROM and find yourself with an outdated version of this since he doesn't always update his ROMs at the same time I update this, do the following in terminal emulator to update(after putting a2sd.sh from the attached a2sd.zip on your sdcard):
Code:
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
rm /system/bin/a2sd.sh
cp /sdcard/a2sd.sh /system/bin/
reboot
For JF1.5, do the following to update:
Code:
su
rm /system/intmem/a2sd.sh
rm /system/intmem/init.rc
cp /sdcard/a2sd.sh /system/intmem/
cp /sdcard/init.rc /system/intmem/
reboot
NOTE FOR UPDATERS: If you had your data on the sdcard(/system/sd/data), it WILL GET DELETED with the new version. This is a necessity in order to get both wallpaper and protected apps working. I recommend moving it back to the phone.
EDIT: And here's another tutorial from ThatsBS(might be easier for the less tech savvy to follow?):
I am still learning a lot everyday from this forum. So for people new to this process let me noobify it, if I can, as I am one too.
Start by reading the first page!! Get all the stuff you need from page 1. (apps2sd2.zip and a2sd.zip )
I started from a fresh wipe and flash of jf1.51 adp.
A newly formatted fat32, non partitioned sd.
Put the init.rc and app2sd.sh on the sd (the files NOT the zip)
Then go to the terminal emulator and typed:
su
cp /sdcard/init.rc /data/
cp /sdcard/a2sd.sh /data/
Then reboot
Next I ran the apps2sd 2 app. It will ask you how much to you want to partition. I did 3000mb the first successful time and the dreaded low mem notice would not leave the status bar. I have read not to make it more then 1500mb. Have a good connection, dont force close it. It will reboot.
Next, after the reboot, I ran the apps2sd 2 app again and pressed "copy apps to sd" (let it do its thing)
Reboot.
Next I went back to the emulator and typed:
su
mkdir /system/sd/app-private
mkdir /system/sd/dalvik-cache
Reboot.
Go back to the apps2sd 2 app and hit move dalvik-cache.
Reboot for good measure and your done.
I did this in about 10 mins. Worked flawlessly.
I have a ?, if i have been using your app what dod i do diferent or what should i change?
Thanks
Good job, thanks!
[email protected] said:
will still boot, etc even if there's no sim card
Click to expand...
Click to collapse
You mean SD card?
[email protected] said:
Alright, first there's some files you need.
1: unionfs.ko from here:
Click to expand...
Click to collapse
JF1.5 build has already unionfs.ko in it, doesn't it? Is there any difference between this unionfs.ko and the one included?
1. I hear unionfs is not really stable at this point, is it true?
2. Why do you want to move the whole /data folder to sd, instead of just /data/app, /data/app-private?
3. You might want to add a command to remove previous app2sd changes (i.e. delete symlinks, create folders.)
4. How do you put selected apps to internal memory after this? Copying to /data will copy to sd card again.
The whole idea is really interesting! Thank you for your work!
ArmandHammer said:
I have a ?, if i have been using your app what dod i do diferent or what should i change?
Thanks
Click to expand...
Click to collapse
You don't have to do anything different. It will find all the apps you put on the sd card. If you want to set the phone back to normal(so the phone memory apps can still be there), you can do the following in the recovery terminal:
Code:
mount data
rm /data/app
rm /data/dalvik-cache (only if you moved the dalvik-cache)
mkdir /data/app
mkdir /data/dalvik-cache
@Dimath: yes, I did mean SD card, good catch
1:JF didn't mention it and from a little bit of using it, it seems stable to me. Plus, no matter how much I've screwed up, I haven't managed to boot loop my phone yet.
2: You could just mount those independently. I might end up doing that eventually but for now the way it is works for reasons I'll get to.
3: True, although it's not strictly necessary. If apps2sd already works, this won't break it. I'll put in a guide on undoing the symlink method
4: Actually, no. My script sets the internal memory as the main file system in the union, so apps automatically go there. Moving apps to the sd card just involves copying them to /system/sd.
Ok, just a little confusing.
I didn't use the apps2sd to move apps over to my SD card. What I did was set it with the busybox ls command. I guess that's the symlink.
My question is, if I didn't use apps2sd, can I still use your method? I also moved the dalvik cache also, everything works fine for me now, my apps go directly to the SD card when installing since my memory stays at around 65 MB no matter what I do.
Just need some laymen terms to help me understand that if I'm NOT using apps2sd, and I just linked them with the recovery method, what's my pitfalls / advantages?
Thanks.
larrygates said:
Ok, just a little confusing.
I didn't use the apps2sd to move apps over to my SD card. What I did was set it with the busybox ls command. I guess that's the symlink.
My question is, if I didn't use apps2sd, can I still use your method? I also moved the dalvik cache also, everything works fine for me now, my apps go directly to the SD card when installing since my memory stays at around 65 MB no matter what I do.
Just need some laymen terms to help me understand that if I'm NOT using apps2sd, and I just linked them with the recovery method, what's my pitfalls / advantages?
Thanks.
Click to expand...
Click to collapse
Yes, any other method of apps to sd currently uses the same symlink method, so following the directions as if you installed my app will work. A note though is that all future apps will install to the internal memory by default. I did that because it's MUCH easier to move apps from the memory to the sd card than vice versa. You can use the code I posted if you want it the other way around.
would this also work for /data/data and app-private?
or is this particular setup only for dalvik-cache and app?
oh and before I do this, just wondering, so in theory, since I have a 1.5GB ext2 partition, my free memory will be 1.573GB (1.5GB + 73Mb internal)? The internal memory will just run down and switch over to the sdcard when needed (but be seen as one filesystem)?
andonnguyen said:
would this also work for /data/data and app-private?
or is this particular setup only for dalvik-cache and app?
Click to expand...
Click to collapse
This works for the whole /data folder and everything under it. Everything is automatically installed to the phone memory right now so you can just move over anything you don't want on it(will be making an app to do this automatically)
EDIT: oh and anything you already moved over to the sd card will still show up.
Code:
su
mount -o remount,rw /dev/block/mtdblock3 /system
cp /sdcard/unionfs.ko /system/
cp /sdcard/init.rc /data/
cp /runme.sh /data/
cp /sdcard/a2sd.sh /data/
I see, when I run these lines of code (I can do this from adb also right using adb remount) this IS the new symlink method. It's just all at one time without me having to manually link anything.
Right?
larrygates said:
Code:
su
mount -o remount,rw /dev/block/mtdblock3 /system
cp /sdcard/unionfs.ko /system/
cp /sdcard/init.rc /data/
cp /runme.sh /data/
cp /sdcard/a2sd.sh /data/
I see, when I run these lines of code (I can do this from adb also right using adb remount) this IS the new symlink method. It's just all at one time without me having to manually link anything.
Right?
Click to expand...
Click to collapse
Wrong, no symlinks here. Pure unionfs goodness. Basically it convinces the operating system that /data and /system/sd are the same thing. So anything that's on /system/sd shows up under /data but everything that's normally under /data is still there. Think of it like what happens in windows when you merge folders with the same name, but in this case in actuality everything stays exactly where it was.
New news: If you haven't seen it, I updated this tutorial(and the scripts with it) quite a bit and would now consider it to be completely fully functional.
Also The Dude will be sending me an advance copy of his next ROM tomorrow to verify it works. In his build the apps to sd will be automatic, with no user setup(although if you want apps on the sd card you'll have to make an app directory under /system/sd(mkdir /system/sd/app), ditto for dalvik-cache and data).
Finally, I will attempt to add this into my apps to sd app tonight, thus rounding out everything I can do.
After all this, the only thing left is for Haykuro to build it into his ROM and me to make an app to move specific apps to/from the sd card automatically.
This will no doubt be the method of choice in no time. Great work. Sticky?
If anyone dl'd the latest version(that fixed the race condition, etc), please download the one I just put up. I made that one in windows and I believe the funky carraige return(that indicates a new line) that windows uses screwed it up
So I got some kind of error, and I don't know what is going on.
I put in all the lines in the terminal emulator app..
but after line cp /runme.sh /data/ it gives me an error
it says "cp: cannot stat '/runme.sh': No such file or directory
Any help? I rooted my phone just so I could run my apps off of my SD card.. and now I can't figure out how to get it to work. Somebody help me please.
GTASouthPark said:
So I got some kind of error, and I don't know what is going on.
I put in all the lines in the terminal emulator app..
but after line cp /runme.sh /data/ it gives me an error
it says "cp: cannot stat '/runme.sh': No such file or directory
Any help? I rooted my phone just so I could run my apps off of my SD card.. and now I can't figure out how to get it to work. Somebody help me please.
Click to expand...
Click to collapse
Which ROM is this? JF1.5 should have runme.sh there...
[email protected] said:
Which ROM is this? JF1.5 should have runme.sh there...
Click to expand...
Click to collapse
Ok, I am going to re-partition my memory card.. and then re flash to JF1.5 and try it again.
Just tried it, one issue I'm seeing is android seems to install [email protected]@[email protected] into /system/intmem/dalvik-cache at boot. Is there anyway to have that only in my dalvik-cache on the sdcard?
Its a fairly large file at 3megs so I want it to reside solely on the sdcard and even if I delete it from intmem, whenever I reboot it gets added again.
Now when I display the internal phone storage from the settings menu, it shows up at 835 megs.
I wonder if this is possible to use unionfs and make an ext2 fs object as a file on the FAT fs. That way no 2nd partition is necessary. Plus, if you remove the sdcard, everything will still work.
Maybe we could combine unionfs and this method that uses an ext2 image on the fat32 for apps to sd.
http://forum.xda-developers.com/showpost.php?p=3402947&postcount=687
mkefs can be downloaded here:
http://sites.google.com/site/juanjosec/android
dwang said:
I wonder if this is possible to use unionfs and make an ext2 fs object as a file on the FAT fs. That way no 2nd partition is necessary. Plus, if you remove the sdcard, everything will still work.
Maybe we could combine unionfs and this method that uses an ext2 image on the fat32 for apps to sd.
http://forum.xda-developers.com/showpost.php?p=3402947&postcount=687
mkefs can be downloaded here:
http://sites.google.com/site/juanjosec/android
Click to expand...
Click to collapse
I've been looking at that possibility with JF and MartinFick as well, seems like it could be a good plan but I wanted to get this bit done first. It's a good point about the dalvik-cache, but in order to fix it JF(in this case) would have to change /init.rc to make sure to do this bit before building the dalvik-cache.
Can't download apps from market
hmm so I didn't hit any errors when doing this, but afterwards I am unable to download any apps from the market. It just continually says "Starting Download..." Everything else seems to work well.
I had this same issue when I tried to manually setup apps to sd using the symbolic links. I narrowed the issue down and figured out this only occurred after I moved the dalvik-cache over to the sd card. I'm assuming I'm doing something wrong, but can't seem to figure it out. Any pointers in a general direction would be most helpful
I'm using JFv1.50 ADP1.5, not the modded version by LucidREM. For some reason the bootloader couldn't pickup his version on my phone and --edit-- I'm pretty sure I have the SD card partitioned correctly... everything else seemed to work ok. The ext2 partition shows up as the correct size
*EDIT* So apparently my issue was the SD card as well. Just did a format of the sd card and it fixed it. I also formatted data and cache (alt+w in recovery mode). Thanks MarcusMaximus!
[email protected] said:
New news: If you haven't seen it, I updated this tutorial(and the scripts with it) quite a bit and would now consider it to be completely fully functional.
Also The Dude will be sending me an advance copy of his next ROM tomorrow to verify it works. In his build the apps to sd will be automatic, with no user setup(although if you want apps on the sd card you'll have to make an app directory under /system/sd(mkdir /system/sd/app), ditto for dalvik-cache and data).
Finally, I will attempt to add this into my apps to sd app tonight, thus rounding out everything I can do.
After all this, the only thing left is for Haykuro to build it into his ROM and me to make an app to move specific apps to/from the sd card automatically.
Click to expand...
Click to collapse
If I have apps2SD and the dalvik-cache both moved on the dudes builds already, do I still have to create those directories or will my existing setup still work fine? I would like to know what kind of issues I may run into when the dude releases .95 with this (hopefully, not getting my hopes up just in case).
I want to move my ringtones and notfication sounds from internal storage to /sd-ext. To do this I need to create a symbolic link from /system/media/audio -> /sd-ext/media/audio/
It seems that root explorer is unable to create symbolic links so are there any other android apps available that can do this? I really don't want to have to install the android SDK just to do this so is there an easy way to do this from the phone?
Cheers,
Richard.
If your rooted and have terminal installed you should be able to enter the following:
ln -sf /sd-ext/media/audio /system/media/audio
I haven't tried it myself in android but its what would work in a regular linux environment.
technoplunk said:
If your rooted and have terminal installed you should be able to enter the following:
ln -sf /sd-ext/media/audio /system/media/audio
I haven't tried it myself in android but its what would work in a regular linux environment.
Click to expand...
Click to collapse
Thanks that did the trick. I installed Terminal Emulator from the market and su'd then created the link. After a reboot all my ringtones and notifications are now working from my sd-ext partition
Cheers,
Richard.
Glad to hear it worked, at the time I replied I didn't even own an Android phone yet.
This weekend I finally picked up a Desire HD.
I am trying to do the same thing on an elocity a7 ... rooted, running froyo, Dexter's mod 1.42. Terminal has su. I enter the following:
Ln -sf /sdcard/sdcard-disk/olivetree /sdcard/olivetree
I get the message: Link failed. No such file or directory.
Both directories exist and contain files. I have tried with various combinations of directories existing with or without files ... same thing.
Any ideas? Thanks
aimeehammond said:
I am trying to do the same thing on an elocity a7 ... rooted, running froyo, Dexter's mod 1.42. Terminal has su. I enter the following:
Ln -sf /sdcard/sdcard-disk/olivetree /sdcard/olivetree
Both directories exist and contain files. I have tried with various combinations of directories existing with or without files ... same thing.
Any ideas? Thanks
Click to expand...
Click to collapse
Assuming /sdcard/sdcard-disk/olivetree and /sdcard/olivetree are both directories without any functioning links and contain some files that differ from each other, I would do enter the following in the terminal:
cp -a /sdcard/olivetree /sdcard/sdcard-disk/olivetree
rm -rf /sdcard/olivetree
ln -sf /sdcard/sdcard-disk/olivetree /sdcard/olivetree
These steps copy all data from one directory to the other.
Delete one of the directories.
Link the existing directory to the removed directories location.
Thanks, Technoplunk. Now I get the message:
Link failed. Operation not permitted. :|
Does your lines in the terminal begin with a hash "#" character? If it does not then your not running the commands as root.
Try typing 'su' without the quotes then running the commands I suggested above.
Yes, I was already running in root ... did the su ... got the #
Thinking a little harder about your problem I realize your trying to do a soft link from one portion of a fat32 partition to another. I suspect the issue might be that you can't create soft links on a fat32 partition as it probably isn't supported. Microsoft created fat32 and never supported soft links on it.
It worked for laxity because he was linking from an ext3 or ext4 partition to the fat32. The actual link resided on the ext partition.
The file structure of this tablet seems a bit weird to me. /sdcard is the tablet's internal storage. The sub-directory /sdcard/sdcard-disk is the micro sd card. I would have expected it to be in the root directory of the tablet, but it's not. However, I didn't think the internal storage was FAT32. Is it??
I'm baffled.
The "mount" command will list all partitions and their types. Its a bit verbose on my phone. Any fat32 partitions will probably say vfat rather than ext(#).
Aha. Several partitions (/system /data /misc /cache) are ext3.
/sdcard and /sdcard/sdcard-disk are FAT32.
Is there a way to format the internal /sdcard as ext3?
Thanks so much for your help!
I recommend poking the people in the Elocity A7 section of the forums, they have more experience with your particular device and can likely tell you if it is safe to try or not.
I should also add that changing those partitions to ext3 would mean you could no longer drag and drop files from a Windows pc as Windows can't read that partition type.
Same question:
laxity said:
...
It seems that root explorer is unable to create symbolic links so are there any other android apps available that can do this?
...
Click to expand...
Click to collapse
I don't mind if it's free or paid application!
Problem solved!!!
Root Explorer v2.17 (estimated releasing date tomorrow, 10/28/2011) has "Link to this folder" / "Link to this file" and "Create link" options!
No more painful usage of terminal emulators on small screens!
Thank you Speed Software !
I have a similar problem. The music bib stored by google music should reside on my second sd card. In the moment the app stores the music automatically on the first internal sd card. But I have the same problem that the internal sd card is fat32. So is there any solution to move my bib to the second sd card?
Thanks
Hi there!
I have a similar situation as I got deleted my "lib" file, that is a symbolic link, from my "com.android.mms" folder.
From RootExplorer I remember the file pointing to "... -> com.android.mms", so what am I supposed to type in Terminal Emulator?
Tnx in advance.
Sent from my Samsung Galaxy S5 SM-G906K using TapaTalk
Hello,
Sorry to unhearth this post but I have a similar problem and these command lines do not seems to work.
technoplunk said:
Assuming /sdcard/sdcard-disk/olivetree and /sdcard/olivetree are both directories without any functioning links and contain some files that differ from each other, I would do enter the following in the terminal:cp -a /sdcard/olivetree /sdcard/sdcard-disk/olivetree
rm -rf /sdcard/olivetree
ln -sf /sdcard/sdcard-disk/olivetree /sdcard/olivetreeThese steps copy all data from one directory to the other.
Delete one of the directories.
Link the existing directory to the removed directories location.
Click to expand...
Click to collapse
On my daughter's SGJ5 running 6.0.1, I have an issue with Musical.ly taking too much space because it is storing video files on the phone memory and wont be moved to SD card.
So I got inspiration from your post and thought of creating a symbolic link between the folder where Musical.ly stores its videos to another one on the SD card: respectively '/storage/emulated/0/Android/data/com.zhiliaoapp.musically/files/localvideos' on the phone memory and '/storage/6561-3337/Videos/musically' which I created on the SD card.
I ran the following command using adbputty:
cp -a /storage/emulated/0/Android/data/com.zhiliaoapp.musically/files/localvideos /storage/6561-3337/Videos/musically
rm -rf /storage/emulated/0/Android/data/com.zhiliaoapp.musically/files/localvideos
ln -sf /storage/6561-3337/Videos/musically/localvideos /storage/emulated/0/Android/data/com.zhiliaoapp.musically/files/localvideos
cp and rm worked fine but when I try to run the ln command I get the following error:
ln: cannot create symbolic link from '/storage/6561-3337/Videos/musically/localvideos' to '/storage/emulated/0/Android/data/com.zhiliaoapp.musically/files /localvideos': Operation not permitted
Edit: I tried the following command instead (inspired from "https://forum.xda-developers.com/showpost.php?p=62273638&postcount=18")
ln -sf /storage/6561-3337/Videos/musically/localvideos /data/media/0/Android/data/com.zhiliaoapp.musically/files
and that works for creating the symlink but Musical.ly does show anymore Private videos, nor is it possible to create new ones.
Could you please help me with this?
Cheers
Can anyone tell me where the music is stored on my device whenever I select a file to be available offline in Google Music?
Sent from my SAMSUNG-SGH-I997 using XDA App
Good question. I searched my internal and external SD, but didn't see it...
In for answer
/sdcard/external_sd/Android/data/com.google.android.music/cache/music/
So I'm assuming that sd_card/external_sd/ is my 2gb external card. Is that correct? If so I wonder why it saves to the external sd. I haven't bought a bigger card yet. I can't find a way to change where the files are saved.
Sent from my SAMSUNG-SGH-I997 using XDA App
Kmo78 said:
So I'm assuming that sd_card/external_sd/ is my 2gb external card. Is that correct? If so I wonder why it saves to the external sd. I haven't bought a bigger card yet. I can't find a way to change where the files are saved.
Sent from my SAMSUNG-SGH-I997 using XDA App
Click to expand...
Click to collapse
Doesn't look like there is a way to change the cache location. Time to get a bigger SD card!
I decided to do a little experimenting with this. I removed my sd card and when I turned my phone on google music began downloading the 15 songs I had selected to be available offline. I went to the /sdcard/external_sd/ directory and the files were there without an external card installed. So is this path just a shortcut to the external card? It's kinda weird. I'd prefer to have the songs saved to the phone. Hopefully google will give us an option in an updated version of the application.
Sent from my SAMSUNG-SGH-I997 using XDA App
I was kind of surprised by this thread as I have the opposite problem, my music is synced to sdcard/data, instead of external_SD where I want it.
Guessing since you posted this you don't know how you got it synced to external?
Mixy said:
I was kind of surprised by this thread as I have the opposite problem, my music is synced to sdcard/data, instead of external_SD where I want it.
Guessing since you posted this you don't know how you got it synced to external?
Click to expand...
Click to collapse
Same thing here!
I'm having the same problem here on my transformer. Maybe someone wants to look at what I've been trying so far and join in solving this: http://forum.xda-developers.com/showthread.php?t=1476972
Fix (no sdcard formatting needed)
This is a fix i figured out piecing together other peoples attempts.
Use this as a script
mount -o bind sdcard2/android/data/com.google.android.music sdcard/android/data/com.google.android.music
Alternately you can change the first location to the location of your choosing as long as it resides on the external as card.
Ex.
Mount - o bind sdcard2/music sdcard/Android/data/com.google.Android.music
will bind:
sdcard/Android/data/com.google.Android.music (google's forced save location)
to
sdcard2/music
Go to google music (play music now) settings and clear any music that is currently saved to your device.
this only applies to music made available offline. If you do not clear it before running the script the music will exist on your internal sdcard but not be accessible.
open script manager and find the script you made
Select it and make sure to click set on boot and superuser
Run Your script.
That is it now your default save location for google music is bound to the location on the external sdcard. the device will see the location as its default but really be saving to the external sdcard.
You can check this by going to google music. Selecting "make available offline" and look at the free space. It should shoe the space available on your external sdcard.
TLR Version (noob version)
I was getting a lot of questions about the preliminary steps here (i.e. rooting, writing script, etc) so i decided to attach the noob version in case anyone needs verification on how to accomplish these steps.
HOW DO I ROOT?
So, Rooting gives you full access and control over your phone. instructions for how to root are device specific. so i would start by searching XDA for "YOUR DEVICE one click root"
ex. samsung galaxy s2 one one click root
some devices are easier to root than others. i cannot provide steps for your particular device, but through XDA, and google you CAN find everything you need.
some devices have one click root tools, some do not, so the rooting process is more in depth for those devices.
rooting instructions are so device specific i could not find a generic set of instructions, and don't want to mislead anyone by linking them to a set of instructions not compatible with their device.
There is a risk of bricking your device (making it inoperable) while rooting, although the risk is minimal... almost non existent if you carefully follow instructions. I have rooted 5 seperate devices without bricking any, and, in most cases even if bricked the device can still be restored.
there are additional benefits to rooting, such as overclocking
for example my Galaxy S2 normally runs at 1.5 GHZ, i have increased the speed to 1.8GHZ
(NOTE** Without XDA DEVELOPERS i would have rooted 0 devices, and probably bricked at least one, so thank you to all of you out there who have helped me, I hope this method will help some of you in return.)
NOW THAT YOU ARE ROOTED...
INSTALL SCRIPT MANAGER..
First, to install script manager just go to google market (Play Store) and search for script manager
INSTALL ES FILE EXPLORER..
To make a script go to google market (Play Store) and find ES File Explorer
WRITE SCRIPT..
Open es file explorer when install completes.
in es file explorer click the menu button, and select "new"
when prompted select "File"
name your file something you'll remember
Ex.MusicScript
Click your new file
when prompted select "Text"
type this EXACTLY how you see it
Mount - o bind sdcard2/music sdcard/Android/data/com.google.Android.music
press back and when prompted to save click yes
MAKE DESTINATION FOLDER..
now on es file explorer click "Favorites" (the star)
a new menu will pop up, at the top you willsee a picture of a phone with "/" underneath it click the phone
this will take you to the root directory
click the folder Sdcard2
click the menu button, and select "new"
when prompted select "Folder"
Name the folder music
Your script and destination music location are created
EXECUTE SCRIPT..
now open script manager
find your script which should be located in the directory /mnt/sdcard and the file name you chose earlier
select the script
open as script/executable
make sure script is selected not executable
click the buttons for "Su" and "Boot"
click save
Go to google music (play music now) settings and clear any music that is currently saved to your device.
this only applies to music made available offline. If you do not clear it before running the script the music will exist on your internal Sdcard but not be accessible.
now reboot the script will run at boot a prompt will appear asking for superuser rights, click yes and remember this selection (it may say something different than remember this selection whichever option resembles remember needs to be selected.)
YOU'RE DONE!!!
your music should now save to sdcard2/music but the device will still think it is saving to the default sdcard/Android/data/com.google.Android.music
You can check this by going to google music. Selecting "make available offline" and look at the free space. It should shoe the space available on your external sdcard.
So try your hardest to figure out how to root using google, and if your not confident enough to attempt it this fix may not be for you.
if you have tried everything you can and are still stuck message me back, including what device you have, and i will see if i can find a link to the rooting instructions for your particular device.
I assume no responsibility if you damage your device... These steps do work, and if followed will fix your music issues as well as introducing you to a world of additional benefits of being a rooted user.
FuzzyMeep Two said:
This is a fix i figured out piecing together other peoples attempts.
Use this as a script
mount -o bind sdcard2/android/data/com.google.android.music sdcard/android/data/com.google.android.music
Alternately you can change the first location to the location of your choosing as long as it resides on the external as card.
Ex.
Mount - o bind sdcard2/music sdcard/Android/data/com.google.Android.music
will bind:
sdcard/Android/data/com.google.Android.music (google's forced save location)
to
sdcard2/music
Go to google music (play music now) settings and clear any music that is currently saved to your device.
this only applies to music made available offline. If you do not clear it before running the script the music will exist on your internal sdcard but not be accessible.
open script manager and find the script you made
Select it and make sure to click set on boot and superuser
Run Your script.
That is it now your default save location for google music is bound to the location on the external sdcard. the device will see the location as its default but really be saving to the external sdcard.
You can check this by going to google music. Selecting "make available offline" and look at the free space. It should shoe the space available on your external sdcard.
YOU'RE DONE!!!
your music should now save to sdcard2/music but the device will still think it is saving to the default sdcard/Android/data/com.google.Android.music
You can check this by going to google music. Selecting "make available offline" and look at the free space. It should shoe the space available on your external sdcard.
So try your hardest to figure out how to root using google, and if your not confident enough to attempt it this fix may not be for you.
if you have tried everything you can and are still stuck message me back, including what device you have, and i will see if i can find a link to the rooting instructions for your particular device.
I assume no responsibility if you damage your device... These steps do work, and if followed will fix your music issues as well as introducing you to a world of additional benefits of being a rooted user.
Click to expand...
Click to collapse
This method doesn't work on my Evo 4G LTE. Still shows the internal SD available space on "Make available offline" Does it matter if I'm using a 64GB card?
@GMtom1 are you sure that you got whatever your sd card is labed as right? I haven't tried this method yet, but that seems to be the biggest point of failure for us evo lte users that are bringing our cards from other devices
******
gmtom1 said:
This method doesn't work on my Evo 4G LTE. Still shows the internal SD available space on "Make available offline" Does it matter if I'm using a 64GB card?
Click to expand...
Click to collapse
I have been having problems too... After i re-flashed my device, it has not been just working the way it did before, the script wouldn't work, so i believe that me installing Busybox or BASH, or something like that well before i made the script, was allowing the script to work properly. But, in the mean time, find "Directory Bind" it works perfectly...
p.s make sure you clear any music of of your internal sdcard, or it will still exist, but be inaccessible.
gmtom1 said:
This method doesn't work on my Evo 4G LTE. Still shows the internal SD available space on "Make available offline" Does it matter if I'm using a 64GB card?
Click to expand...
Click to collapse
Same..I tried it, made sure busybox was installed and still didn't work on my Evo 4G LTE
Anyone gotten to work on (Verizon) Galaxy S3?
I just tried to do this via your method and using the DirectoryBind utility, and both versions don't seem to like the path of my external SD Card (extSdCard).
Screenshots attached.
My script was:
Code:
mount -o bind extSdCard/music sdcard/Android/data/com.data.google.android.music
also tried with
Code:
mount -o bind /mnt/extSdCard/music sdcard/Android/data/com.data.google.android.music
FWIW the directory extSdCard exists
sti3 said:
I just tried to do this via your method and using the DirectoryBind utility, and both versions don't seem to like the path of my external SD Card (extSdCard).
Screenshots attached.
My script was:
Code:
mount -o bind extSdCard/music sdcard/Android/data/com.data.google.android.music
also tried with
Code:
mount -o bind /mnt/extSdCard/music sdcard/Android/data/com.data.google.android.music
FWIW the directory extSdCard exists
Click to expand...
Click to collapse
was getting the same errors as you are until I added the mnt/ in both paths.
mount -o bind mnt/sdcard/external_sd/gmusic mnt/sdcard/Android/data/com.google.Android.muisic
and I am good to go, 30GB of storage just waiting to be filled with music.
esox23 said:
was getting the same errors as you are until I added the mnt/ in both paths.
mount -o bind mnt/sdcard/external_sd/gmusic mnt/sdcard/Android/data/com.google.Android.muisic
and I am good to go, 30GB of storage just waiting to be filled with music.
Click to expand...
Click to collapse
I apologize for the gravedig, but I've been struggling significantly getting this to work on my Galaxy S3.
As a previous poster above said, because my external SD card is mounted at /mnt/extSdCard there are problems.
My command is:
Code:
mount -o bind /mnt/extSdCard/MusicCache /mnt/sdcard/Android/data/com.google.android.music
and it doesn't work at all...
Any idea why?
I have seen this mentioned but no solution. (It's been causing mild headaches for lots of things from storing camera pics to flashing ROMs)
Is there a way to get the Transformer to use the SDCARD as the actual default storage point?
It's a severe pain that everything defaults to the internal storage that it thinks is external then I have to move everything to the external SDCARD after that.
It would be a moot point but I have a 32GB SDCARD that sits empty while my internal storage fills up. I store a lot of music and movie files for editorial, etc and the Transformer is great for that. . .except for the dumb mount points of the sdcard.
You could make a soft link in /sdcard/ that points to /Removable/MicroSD/ but your sdcard has to be formatted NTFS to support it. I would assume the mount points for removable media are located in /etc/fstab
This drives me a tad crazy as well. That and the naming convention. Should be under /media/ or /mnt/ but "/Removable/MicroSD/" is a ginormous pain when you're using to unix/linux media mounting conventions or navigating under the shells
Oh well.
Sent from my Transformer TF101 using XDA Premium App
This was done for other devices such as the Notion Ink Adam so I know it's possible.
sent from a device using an app
uncorq said:
This drives me a tad crazy as well. That and the naming convention. Should be under /media/ or /mnt/ but "/Removable/MicroSD/" is a ginormous pain when you're using to unix/linux media mounting conventions or navigating under the shells
Oh well.
Sent from my Transformer TF101 using XDA Premium App
Click to expand...
Click to collapse
I'll agree with that, but its something I can over look. I'm assuming you would has to change this line in /etc/vold.fstab
Code:
dev_mount microsd /Removable/MicroSD auto /devices/platform/sdhci-tegra.2/mmc_host/mmc1
just have to get the docks sdcard to mount into the devices internal memory "sdcard" in the same manner the microsd does, should be fairly easy to do, just have to poke around a bit to see how microsd is being mounted
I try link 2 sd and data root 2 sd on the market, but the apps would not recognize the microsd. So there no way of linking to the sd by apps.
Sent from my Transformer TF101 using Tapatalk
I try link 2 sd and data root 2 sd on the market, but the apps would not recognize the microsd. So there no way of linking to the sd by apps.
Click to expand...
Click to collapse
Exactly. I would consider this a fairly obvious flaw to Asus that they change the accepted behavior being used everywhere else. Overall happy with the device but this is causing a headache since it's the only android device I have that operates this way it's not something I can just "get used to" as the odd man out. Why include external storage (a major reason for this over the Galaxy Tab 10.1 for me) and then make it a pain to use?
I'm assuming you would has to change this line in /etc/vold.fstab
Click to expand...
Click to collapse
Will see if that helps but wondering if this would cause a conflict elsewhere.
I'm making this too complicated in my head.
Simply: The internal and external mount points should be swapped.
Anything I want on the internal storage I can move, but that's fewer and further between than the sdcard. Maybe some music or whatnot.
This would solve other problems like ROM managements, etc.
one more thing... if it's just photos you are wanting to move, you could
"ln -s /sdcard/DCIM /Removable/SD/DCIM"
all new photos taken will end up on SD I might have that backwards? type ln in terminal with no arguments, and it will tell you what you need
do this for any folders you want on SD, then androids core stuff that apps need, and you don't need elsewhere still stays internal
I get "operation not permitted" for some reason. I have root permissions. Sudo, etc.
bitter1 said:
I get "operation not permitted" for some reason. I have root permissions. Sudo, etc.
Click to expand...
Click to collapse
FAT32 doesn't support symlinks.
Try this instead.
Regards,
Dave
Oh yeah, duh. Will give the other a shot.
I have to stick to FAT32 because I occasionally have to use OSX to shuffle things around.
dan-htc-touch said:
one more thing... if it's just photos you are wanting to move, you could "ln -s /sdcard/DCIM /Removable/SD/DCIM"
Click to expand...
Click to collapse
You also need to be root or prefix that with sudo
foxmeister said:
FAT32 doesn't support symlinks.
Try this instead.
Regards,
Dave
Click to expand...
Click to collapse
cd /mnt/sdcard
mkdir fssd
mount -o bind /Removable/SD /mnt/sdcard/fssd
yeap that works.. Thanks..
If your running Prime (Or something that supports init.d scripts), you could add that command to one of the files in /system/etc/init.d/ to make it automatically run at boot
Tortel1210 said:
If your running Prime (Or something that supports init.d scripts), you could add that command to one of the files in /system/etc/init.d/ to make it automatically run at boot
Click to expand...
Click to collapse
I just did that to 07 and no joy
After reboot no effect. I'll play some more later.
which command did you add? you only need to add the last one.
brando56894 said:
which command did you add? you only need to add the last one.
Click to expand...
Click to collapse
sure. only that one.
maybe the MicroSD (yeah changed it) is not mounted yet when the script runs?! or does the script run at all?!
off to bed now. tomorrow is another hot day.
I think you need to prefix it with /system/xbin. Heres the command I used in my init scripts:
Code:
/system/xbin/mount -o bind /Removable/MicroSD/DCIM/ /sdcard/DCIM/
That code will make pictures save on the micro sd card instead of internal memory.
Also, make sure the folder in the internal memory where you want it to bind to the external storage is empty.
I just installed a new ROM and the SDCARD and SDCard-ext are in the wrong location. They are listed under the root director ( / ) and /storage instead of under /mnt/sdcard
Does it work? You could create a symlink. If that fixed it, put it in a script on bootup.
post-mortem said:
Does it work? You could create a symlink. If that fixed it, put it in a script on bootup.
Click to expand...
Click to collapse
Does it work is a relative question. (wasn't meant to sound wise-a$$). I can access them, but apps do not see them at all. They are looking for the cards in /mnt therefor not finding them.
I changed them in /system/etc/vold.fstab but now it won't boot. The not booting is not an issue, I can fix that, but I don't know how to fix these incorrect paths/
No one else who's using this ROM is having these problems? I say either reflash, create symlinks, or choose another ROM.
post-mortem said:
No one else who's using this ROM is having these problems? I say either reflash, create symlinks, or choose another ROM.
Click to expand...
Click to collapse
Not sure if anyone else is running it. Haven't been able to find a thread on here for it. How do you do symlinks?
mikemikemikexxx said:
Not sure if anyone else is running it. Haven't been able to find a thread on here for it. How do you do symlinks?
Click to expand...
Click to collapse
ln -s target shortcut
See a bit more here.
Make a script in your /system/etc/init.d directory, so these links will be created on every boot.
post-mortem said:
ln -s target shortcut
See a bit more here.
Make a script in your /system/etc/init.d directory, so these links will be created on every boot.
Click to expand...
Click to collapse
From what I have read you cannot use them on FAT.
Why does editing this file not work? I fail to see how Android could do anything other than read the file, provided permissions are the same.
mikemikemikexxx said:
From what I have read you cannot use them on FAT.
Why does editing this file not work? I fail to see how Android could do anything other than read the file, provided permissions are the same.
Click to expand...
Click to collapse
The internal memory is not FAT; typically, only the 1st partition on the SD card is FAT, everything else should be EXT. So, executing ln -s /storage /sd-ext should work (or wherever it's currently being mounted).
post-mortem said:
The internal memory is not FAT; typically, only the 1st partition on the SD card is FAT, everything else should be EXT. So, executing ln -s /storage /sd-ext should work (or wherever it's currently being mounted).
Click to expand...
Click to collapse
I meant the card but ln is not working.
One more thing I am going to try is an ADB pull and push. If that doesn't work I really need some community support.
bump to the front.
Are my questions that complex or that dumb that I get so few replays? /bump
Sent from my XT875 using xda app-developers app
Is there a good reason that you don't want to use another ROM?
Mainly speed and compatibility. I need the offline commands only available in JB. Stock ROM is dead slow and is only ICS. Other custom ROMs were also on the slow side and/or battery hogs.
Sent from my XT875 using xda app-developers app
So, is this right?
FAT partition is currently being mounted as /storage
EXT partition is currently being mounted as /mnt/sdcard
post-mortem said:
So, is this right?
FAT partition is currently being mounted as /storage
EXT partition is currently being mounted as /mnt/sdcard
Click to expand...
Click to collapse
Well the way my phone is laid out is
System (I assume too large so they split it in two which resulted in the below SD-Card)
SD-Card
SD-Card EXT (The actual SD Card) - FAT32
I assume the System and SD-Card are standard Android partition format.
Do you use a file manager on the phone, such as ES File Explorer? Are you familiar with using adb?
Edit: Basically, I'm trying to figure out the exact path of the mounted partitions, and where they're supposed to be mounted.
post-mortem said:
Do you use a file manager on the phone, such as ES File Explorer? Are you familiar with using adb?
Edit: Basically, I'm trying to figure out the exact path of the mounted partitions, and where they're supposed to be mounted.
Click to expand...
Click to collapse
They are 100% supposed to be mounted under: /mnt/sdcard and /mnt/sdcard-ext
Right now they are mounting to: /storage/sdcard and /storage/sdcard-ext
There is also an entry in under root ( /sdcard and /sdcard-ext --- For these two I am booting into stock ROM to see if they are suppose to be directly in root as well, will post up when I know)
Check the scripts in your init.d to see if one of them is mounting the sd partitions under /storage.
I suppose you could also try booting without the sd card in place, and see if those /storage directories still exist. Not sure how much that will tell you, though.
post-mortem said:
Check the scripts in your init.d to see if one of them is mounting the sd partitions under /storage.
I suppose you could also try booting without the sd card in place, and see if those /storage directories still exist. Not sure how much that will tell you, though.
Click to expand...
Click to collapse
The init.d for sure says to load sdcards to /storage . (on this particular ROM only)
I will try without the sdcard as you suggested and let you know. Battery died on me, phone won't boot even when plugged in until at least 10%.
Which script is mounting the sd card to /storage? Is it part of the ROM, or is it something which the dev included in this ROM? I ask in case the ROM expects the sd card to be mounted there.
Regardless, try changing the script to link to /sdcard.