Update 1-14-2009: I just wrote a how-to to add ringtones to iPhone without the need to perform jailbreaking, and as easy as 1-2-3. Enjoy!
I know there are many how-to exists already about this topic. However, I still feel it is necessary to write one, because I have to combine many posts on the google search pages to have it done.
First, it is for iPhone with 2.2 firmware and the phone has been jailbroke to enable OpenSSH service. How to jailbreak the iPhone? I used the windows version QuickPwn and followed the exact instruction coming with the software. The newest QuickPwn can be download from http://www.quickpwn.com/.

Let’s say the jailbreaking is the requirement to start. Here is the procedure:
- Use cydia to install OpenSSH. OpenSSH is on the featured page of cydia, which is the SSH server we are going to use to transfer the ringtones. What is cydia? It is a very good package managing system in debian. Jay moved it to iPhone. After the jailbreaking with QuickPwn, cydia is installed by default.
- This is optional. I highly recommend. Use the cydia to install MobileTerminal, which is also on the featured page. Start the terminal and change the password for the default accounts. At this moment, all the passwords are alpine. Use
passwdto change the password for the current user mobile. Then switch to the administrator by this comment
su root, and change his password as well,
passwd.
- On your mac or PC, download either Fugu for mac, or winscp for PC, to have the software ability to transfer files to iPhone. Both softwares are free and very powerful.

If you are an Ubuntu/Linux fan as I, nautilus‘s built-in “Connect to Server …” is good enough to do the following things. - Make sure your computer, either mac or PC, and your iPhone are located in the same wireless sub-network. What I mean is that the IP for the computer and the iPhone has the same first three numbers. For example, the computer IP is 192.168.16.1 , and the iPhone is 192.168.16.4 . How to know the IP address of the iPhone? If you are the wireless rounter’s administrator, it is easy. Or, you can use cydia to install the SBSettings package, which is also located on the featured page. After the refreshing of the SpringBoard, you can flick or two-finger click the status bar – the space between the AT&T sign and the batter sign. This triggers the SBSettings menu, and you should be able to see the IP address of the iPhone in the bottom information section. Use either winscp or Fugu to access this address with account root and the password alpine or whatever you changed.
- Have a look at the /Library/Ringtones folder. Many .m4r files, which are the existing ringtones on the iPhone. Now we are going to create our own .m4r file and put it here! Just a note here, the folder /Library/Ringtones is a link actually, and pointed to some place in /var. When you see the folder name changing after you entering the folder, do not panic. As long as you see many .m4r files in the folder, you are in the right place.
- To find the music file you want to use as your ringtone. I use a mp3 file, merlinC.mp3. Import it into iTunes.
- Convert the mp3 file to m4a file in the iTunes, by right click the item and Create AAC version.
- Locate your newly generated m4a file, which is in some folder in your iTunes library folder ~/Music/iTunes/iTunes Music. Or, you can spotlight it merlinC.m4a . Find it, and copy it to some convenient place, rename it to merlinC.m4r .
To convert mp3 files to aac format m4r files, in linux/Ubuntu, please install mplayer, faac and id3v2 first, then the following shell script, which I modified a bit based on the code here, will do the rest.#!/bin/bash # mp3tom4b.sh http://ubuntuforums.org/showthread.php?p=3960752#post3960752 # bulk mp3 to m4b converter to generate bookmarkable aac files for ipod mp3files="*.mp3" wavend=wav aacend=m4r GENRE=Ringtone #tmpdir=./ <a href="http://twitter.com/#search?q=%23change" target="_blank" class="litwitter">#change</a> this depending on what you want to do with the old files for file in $mp3files do basenam=${file%.*3} # Get the first part of the filename, without the mp3 part # Then run mplayer on the file, generating a wav file, using the mp3 file mplayer -vo null -vc null -ao pcm:fast:file=$basenam.$wavend $file id3v2 -C $file TITLE="`id3v2 -l $file | grep TIT2 | awk '{ORS=" "} {for (i = 4; i <= NF; i++) print $i}'`" ARTIST="`id3v2 -l $file | grep TPE1 | awk '{ORS=" "} {for (i = 4; i <= NF; i++) print $i}'`" ALBUM="`id3v2 -l $file | grep TALB | awk '{ORS=" "} {for (i = 4; i <= NF; i++) print $i}'`" TRACK="`id3v2 -l $file | grep TRCK | awk '{ORS=" "} {for (i = 6; i <= NF; i++) print $i}'`" YEAR="`id3v2 -l $file | grep TYER | awk '{ORS=" "} {for (i = 3; i <= NF; i++) print $i}'`" faac -b 32 -c 44100 --title "$TITLE" --artist "$ARTIST" --year "$YEAR" --album "$ALBUM" --track "$TRACK" --genre "$GENRE" -w -o $basenam.$aacend $basenam.$wavend rm $basenam.$wavend # mv $file $tmpdir done - Transfer this merlinC.m4r file into the folder we found above, by using winscp or Fugu software.
- Check your ringtones available in the iPhone. Wow! It is there now. One quick note, the name of the m4r file is the name of the ringtone show in the iPhone. For the example here, it is shown as merlinC in iPhone. Space in the name is allowed. Do no put period (.) in the name, since iPhone ignore any letter after the first period.
I got prompt in iTunes asking Ringtones searching etc and saw Ringtones tab in the iPhone page, but not sure how it works. As you can see, the procedure above costs you some time, and I really like hacking. Do you? Enjoy!
One Response to “How to add new ringtones to iPhone”
Leave a Reply
blog by cail
- » Buy Chinese Painting
- » a page for 99life, fdu
- » 2shRNA - design oligos for RNAi
- » Feed collection of leading biology journals
- » How to use ImageJ to analyze images?
- » Play background music
- » About CaiLog
New in 'How-To'
- http://pubmeder.appspot.com/ open to public
- PubMed-er : ease your paper reading in browser
- Use vUSBbus to backup and emulate Sentinel and HASP dongles (HASP3/HASP4/Hasp HL USB keys) #getkey
- Install Snow Leopard on EeePC 1000HA (for Google Contact Sync with photo)
- How to setup Exchange ActiveSync account on #htc #evo 4G (should work for other #android phone with HTC Sense)
- Sprint HTC #evo running on Verizon network … and speed comparison
- HTC #evo: #root from @toastcfh, RUU stocks, OTA update and @unrevoked
Hot in 'How-To'
- analog – analog/digital – digital, VGA – DVI – HDMI - 26,386 views
- Ez-12 windsurfer antenna - 14,547 views
- How to add new ringtones to iPhone - 12,327 views
- Air Video, video stream and live convert your favorites to iPod Touch, iPhone and iPad (How to setup the server for Ubuntu and OpenSolaris) - 9,504 views
- mac osx 10.5.1 kalway on Lenovo Thinkpad T43 2668AJU - 8,400 views


to replace ringtones, the folder is /var/stash/Ringtones. create an aac file via itunes and then rename as .m4r and then copy to this folder.