The ringtones in the internal memory reside in /system/media/audio/ringtones directory (and this is part of the system partition).
You need to have root privileges and you can move the ringtone(s) into the above said directory in debug mode (adb) and booting into recovery. I have a Galaxy S4 (TMobile-US) also codenamed jfltetmo, with cm11-m9 and twrp recovery.
All you need are:
- Your phone rooted.
- Custom recovery is preferred (e.g. TWRP, PhilzTouch, etc.)
- Data cable
- a PC with the drivers installed for the relevant phone.
I followed the steps in this Moving Ringtones To Internal Memory. All credit goes to villo-2 who posted the steps in the link.
However, in the event of that page is deleted or not found in the future, here below are the steps:
Note: Please be informed that the following steps are to be executed at your own risk. On the other hand, the adb commands are executed from the PC.
- Put your phone into “Debug Mode” and connect it to the computer via the data cable.
- Open the command prompt and change to the directory in which adb is installed and issue this command “
adb reboot recovery”. This steps lets you reboot into the recovery. In my case, it is TWRP v22.214.171.124
- The phone should reboot in a few seconds and enter recovery mode. Go to “mounts and storage” then mount ‘system’ and ‘sdcard’. In case ClockworkMod recovery, volume keys normally move between options and the Power button selects your choice.
- Now the system partition is read only by default so we will have to remount it as read/write. This can be done with this command “adb remount”.
- Login to the shell of the device with this command “adb shell”
- Then finally the joy….. “cp /sdcard/Music/ringtone.mp3 /system/media/audio/ringtones/.”
- Unmount the partitions you mounted in step 3 then use the last option to exit this menu (Go Back). Then reboot the device with the first option on the resulting list.
Hope this helps.