Tuesday, October 16, 2007

Free Custom Ringtones on iPhone 1.1.1

Free Custom Ringtones on iPhone 1.1.1

0. Introduction
This method works on Windows and Macs with any version of iTunes. [by “… works …” I mean it should work.] Phone does not need any special treatment like Jailbreak or anything. Instructions below were written using a PC, so all Mac users out there will need to tweak it a little bit to suit their OS. I based my research on a method posted by Cleverboy and mentioned on MacRumors [his method no longer works with new version of iTunes Link].

Things you need:
iPhone 1.1.1
any version of iTunes
iPhone access program like iPhuc. [I use iPhoneBrowser for Windows]

Step 1 - Prepare your ringtone.

Make a ringtone by using your preferred method. Very likely you will be using an MP3 file which is exactly what I did for this tutorial.

Step 2 – Convert your ringtone to AAC.
I use iTunes for that. Add your ringtone to iTunes by either dragging it into your "Library" or using "File->Add File to Library" function.

Notice how it shows up in the "Music" and not in the "Ringtone" section.

Let’s make sure iTunes is configured to convert to AAC. Click on "Edit->Preferences". Click on "Advanced" tab and then on "Importing" tab.

Make sure "AAC encoder" is selected. You can now close this window.

Right click on the ringtone in your library and select “Convert Selection to AAC”

After this you will have two ringtones in your library. The newly created one is the one we will work with. Right click on it and select “Get Info”

Make sure it is an AAC audio file. If it says something else you clicked on wrong file.

Then select "Options" tab and write down the length of the file.

In this case it is 29.333. Make sure you have 3 digits in the last section. Sometimes iTunes will display something like 11.1 or 11.11. You just need to add zeros at the end. So 11.1 is 11.100 and 11.11 is 11.110.

Hit Ok and close that window. Right click on your ringtone again and select “Show in Windows Explorer”. [it will probably say “Show in Finder” for you Mac users].

You might want to copy this file somewhere else since it will be your ringtone but it is not necessary.

Step 3 – Load it on the iPhone.

Start up your iPhone access program and connect to the iPhone. Transer your ringtone [the one with m4a extension to your "iTunes_Control/Ringtones" folder [on jailbroken phones it will be somewhere else, you go find it].

Step 4 – Create a spoof

Now we need to make iPhone think that this ringtone is legit and in order to do that we need a spoof file. You can do that by right clicking anywhere on your desktop or any explorer windows and choosing "New->Text Document".

Rename it to "spoof.m4r" [if you cant see the extension you have to enable the functionality by clicking on "Tools->Folder Options->View" and unchecking “Hide extensions for known file types”.

Then transfer the spoof file into the same place you transferred your ringtone to on the iPhone.

You just need one spoof files for all the ringtones. I will explain more in the conclusion.

Step 5 – Modifying Ringtones.plist

Using your iPhone access program navigate to "iTunes_Control/iTunes" and save "Ringtones.plist" file on your computer.

Open "Ringtones.plist" using Wordpad or any other text editor of your choice [that means you Mac users]. And make it look like the one below.

You have to understand what is going on here in order to make your own ringtones. See the two sections one for "ringtone.m4a" and the other for "spoof.m4r"? Every ringtone you create will need a double entry like that. Let’s look at the "spoof.m4r" first. You will use this entry for every single custom ringtone you make. Do you see where it says "GUID"? This code is a unique number for the ringtone. It does not matter what it is as long as it is unique [I used 1]. It has to be a hexadecimal number, if you don’t know what that means just use digits. "Name" is what will show up on your iPhone in ringtone selection dialog. "Total Time" is the time you want your ringtone to play. Remember the number you have written down. It goes here. Now look at the "ringtone.m4a". Notice that "GUID", "Name", and "Total Time" are the same. It has to be that way. Next ringtone you will create will use similar entry system for example it will be something like this

Step 6 – Transfer "Ringtones.plist" to the iPhone.

You did it twice already. Just load the "Ringtones.plist" to "iTunes_Control/iTunes" and overwrite the old one.

Step 7 – Restart your phone

Ahhh. Duh. I don’t know why you need to do that but you do. Go to Sounds, select your new ringtone and enjoy.

Conclusion - Why does this work?

... and by "why" i mean "i think". In order to play a ringtone, iPhone has to have an AAC file. There are two kind of those. M4R are purchased ones and M4A are not. If you create a AAC file it naturally is M4A. The reason why you cant just load it on the iPhone is because it wont show M4A files in the ringtone selection dialog. You cant just rename it to M4R because then iPhone will check its DRM information and it will fail because its not there. The reason why this works is that iPhone lists our spoof file in the rington selection dialog but plays our M4A that has the same GUID.



CourtNsession said...

Dude, First of all i think its FREAKIN' AWESOME that you released that to the public; allowing us to take back our rights on OUR PROPERTY. Umm, I followed your instructions to a "T", but when i restarted (and by restart i mean turn it off, then on, again) my iphone still showed no new ringtones... Please help me out here, Im desparate :)

GordonShumway said...

I also followed everything to a T and restarted and NOTHING... I went back through everything three times. Double checked EVERY LETTER and SYMBOL on the new Pllist file and everything is EXACTLY how you have it. I need help with this. Does it really work? And why are there numerous third party programs to do this very thing that run ONLY ON A MAC!!!

Kym said...

It took a few tries, but I got it to work! The least troublesome hack I've found. One download - the iPhone browser, drag and drop and it worked.


ockham said...

This only kinda seems to work. I tried a couple different variations on what was posted in the instructions. I had originally used 1 single spoof.m4a file that I reused in each key tag in the plist. I first tried uploading 2 custom ringtones then 3. In my attempts on uploading any number of files only the last file in the list was shown in the Sounds selection screen on my iPhone. I thought I was doing something wrong so I erased everything and tried again and again no go each time only the last file was displayed and 1/2 the time it didn't even play when selected. I then created seperate spoof files for each of the custom ringtones I tried to get working on the phone I had 3 total with 3 spoof files all having the same filename as the ringtone. ie. Ringtone1.m4a, Ringtone1.m4r and used those values in the plist. After another hour messing around I found that doing this all the names for all the files will show up in the Sounds selection screen though still only the last file defined in the plist will actually play.

trizzle said...

tsch, I'm not a fan of taking credit for someone elses post and hack. Glad you cant even source your info!!!!


trizzle said...


here is the source that has lots of iphone info!!!!

trizzle said...

ok, you cant see the whole link,..

Kwen said...

Works parfectly for me, i just needed to creat 1 proof file per ringtone, the same way as ockman. It works with mp3 and the iphone plays the whole song (2min30). I've just put ~key>Total Time/~key>~integer>1/~integer>(i had to take of the "<" part to be able to post the comment, I've put "~"). Don't know why it works though but it does so... :)

AzAlex said...
This comment has been removed by the author.
AzAlex said...

I followed the directions also and the rintone shows up as Custom Rintone named Ringtone. The darn thing just won't play.
Any other suggestions?

I cut the song to be 25 secs
Firmware is 1.1.1

mallik said...

i followed the instructions to the "T" as well. It didnt work. No offense but you instructions as perfect except for the spoof file. What i did was instead of creating a spoof file with m4r ext, i copied the m4a ringtone that we created through itunes, then renamed it to m4r. Copied this m4r file instead of the spoof file. It worked like a charm

Vikki said...

i followed the instructions, it didnt work. The selected song is displayed in the iPhone Settings>Sound>Ringtone, but there is no sound after selecting the added song. Please help, do I need to make changes in some others files too.

Thanks & Regards

i-phone die-phone!!! said...

what a faf
apple needs to throw out he dirty granny smiths me thinks
don't give up folks
try installing windows service pack1, followed by re-installing itunes and ensure bonjur is loaded (if not down load it as a stand alone programme)
this seemed to be my problem as my friend sorted out the changes......now following the long-winded system of changing the music format has allowed me to have my fav song as myring tone BISS

Anonymous said...

Many institutions limit access to their online information. Making this information available will be an asset to all.
Custom Paper Writing

Price for all said...

Your step by step Guidence was great! it worked for me..million thanks dude

Price for World