I received a request today to add a custom ringtone to our call manager. After doing some research and testing, I was finally able to get the custom ring uploaded. The process is fairly straight forward, with the part taking the longest was figuring out the conversion process.
The basic steps are:
- get mp3
- get audacity with lame plugin
- change 8khz
- speed up until timing seems right
- export > other > ulaw > raw (headerless)
- upload tftp
- modify Ringline.xml (first letter must be capital)
- restart tftp service
- choose new ringtone
I’m not 100% sure on the actual ringtone lengths, but here’s a snippet from Cisco’s site on the PCM file:
- Raw PCM (no header)
- 8000 samples per second
- 8 bits per sample
- mu-law compression
- Maximum ring size—16080 samples
- Minimum ring size—240 samples
- Number of samples in the ring evenly divisible by 240
- Ring starts and ends at the zero crossing.
- To create PCM files for custom phone rings, you can use any standard audio editing packages that support these file format requirements.
Nonetheless, I just used Audacity with the Lame plugin to import the MP3 file. You need to change the sample rate to 8KHz (8000Hz) of the track. To do this, look to the left side of the track in question. You’ll see a small downward facing arrow to the right of the truncated filename. Right-click here > Set Rate > 8000Hz.
Now you’ll notice that the ringtone length may have increased. If so, you’ll want to speed up the track until it’s where you’d like it (I found that if going from 44100Hz to 8KHz, I had to speed up about 500%). Effect > Change Speed…
Once you get it where you want it, you’ll need to export the file as RAW (no headers) and u-law. File > Export. In the filetype drop down, choose “Other uncompressed files”. Next, click on “Options…”. Header needs to be “RAW (header-less)” and Encoding needs to be “U-Law”. Save as the file name you want. Next, you need to upload to the TFTP server in the root directory.
Next, you need to modify the current Ringline.xml file on the TFTP server. The format of this XML file can be found here, and it is:
<DisplayName>Analog Synth 1</DisplayName>
<DisplayName>Analog Synth 2</DisplayName>
The order you place the ringtones in this list, is the order it is displayed on the phones when a user wants to choose their ringtone. Once modified with your settings, you’ll need to upload this to the TFTP server. If you are using the CUCM as your TFTP server, you’ll need to restart the service (Goto Serviceability > Tools > Service Features > Restart TFTP).
*NOTE: At least with CUCM TFTP server, the server filename architecture is case sensitive. Make sure your XML file syntax matches the case in the example and you name the file “Ringline.xml” (notice capital “R”; this got me).
Finally, when you go to choose the ringtone on a phone, it should see the list populated with the naming scheme you chose.