Creating ringtones for Cisco IP Phones using Audacity

I started a new job recently that involves answering and talking on the phone a lot. Like many companies, the place I work uses various models of Cisco IP phones. And like a lot of companies (I’m sure), our phones are loaded up with the standard batch of simple, boring rings.

If I’m going to be hearing my phone ring all day, I’d rather have something fun to listen to. Last week I wandered over to talk to the network/phone guys and asked if it would be possible for them to load up some custom ringtones for us. They told me it would be fine, we just had to send over some files and they would investigate what was required. Apparently this was the first request of this type they’d ever received.

While looking around for some suitably fun audio to use as a ringtone, I decided to also look into what the Cisco system supports. This meant I could potentially format the files before sending them over and save the phone guys some work and that I wouldn’t be wasting my time finding audio that wouldn’t work.

We use Cisco Unified Communications Manager (CUCM) 9.1 at work and a bit of searching later turned up this documentation for custom ringtones. This gave me the following info:

  • Raw PCM (no header)
  • 8000 samples per second
  • 8 bits per sample
  • mu-law compression
  • Maximum ring size – 16080
  • Minimum ring size – 240
  • 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.

I wasn’t familiar with some of these terms, so a quick bit of research helped me come to grips with most of it. The important thing is that there is some free, open source, cross platform software available that seems to be able to produce the needed file types.

There are a couple of things you will need to do straight away after loading up a file in Audacity that you want to use as a Cisco ringtone.

check here

First we need to set the Project Rate (Hz) down to 8000:


Then we need to change the units of measurement from seconds to samples – this can be done from any of these three dropdowns:



Note: The ringtone files need to be a mono track. If your source file is stereo you will need to delete one of the channels.

Stereo Track

To delete a channel, choose split stereo to mono from the dropdown list on the left.

Split to mono

This will separate the tracks and allow you to delete one of them by either selecting it and pressing delete or by clicking the x on the left of the track.

Remove track

Now that we’ve got our basic settings we can trim the audio file according to the following specs:

  • Maximum ring size – 16080 (exactly 2 seconds of audio at 8000Hz)
  • Minimum ring size – 240
  • Number of samples in the ring evenly divisible by 240

Click and drag in the audio timeline window to select the audio that you want to use. Tip: Pressing space will play your current selection.

Click and drag
Make sure that the radio button for length is selected at the bottom of the screen and check how many samples you have selected. Remember that the length has to be a multiple of 240, so when you have a rough approximation, break out the calculator and find the nearest multiple of 240.

Tip: You can click on the numbers in the length value and type the value you want. This will adjust the end of your selection forward or back to the value entered. This is MUCH easier than dragging the start or end of the selection around trying to get an exact value.

Click and type

When you have finalised your selection, it’s time to export the file with the following settings

  • Raw PCM (no header)
  • mu-law compression

From the File menu, choose Export Selected Audio.

From the format dropdown, choose Other Uncompressed Files

Press the Options button and choose RAW (header-less) for the header type and U-Law for the compression.

Note: The CUCM system requires that filenames be 25 characters or less. So name your file something short.

Choose your location and save the file.

After you finish converting the ringtones that you want, you will need to create a ringlist.xml file that lists them all.

The format of the file looks like this:

<DisplayName>Bender - Bite my shiny</DisplayName>
<DisplayName>Dash - Dun Dun Duuun</DisplayName>

Both the displayname and the filename have a 25 character limit and the ringlist file supports a maximum of 50 rings.

Once you’ve got all your ringtones and the xml file ready to go, either follow the instructions on the cisco site to upload them, or pass them to your phone guys.

Enabling Korean Input in KDE

I needed to be able to type in Korean under linux, but it wasn’t obvious at all where or how to enable it. I found the solution through a combination of googling and asking the oracle.

Apparently KDE gives you a choice of input method selectors, but the default is “none”. So the first step is choose which selector to use. Csmart told me to do this by opening the aptly named Input Method Selector through the KDE search/application launcher thing (spotlight equivalent).

In the selector, choose iBus and click close.

Next run ibus-setup (either from the same search box or the command line).

Set up a switching key if you want then jump to the input method tab and add the languages you want.

Finally, log out and back in and your new input method should work.


Installing Skype on Korora 21(b)

The download page for linux presents options for various distros. The option most relevant to me is Fedora 16 32bit. Considering that Korora 21 is based on Fedora 21, the file on offer seems a little outdated.

Once again comes to the rescue – he maintains his own skype repo that seems more up to date and simply adding his repo:

yum-config-manager --add-repo=

then installing with yum:

yum -y install skype

gives me a working version of skype!

Korean Subtitles Under Linux

My wife is Korean and while her English is great, having Korean subtitles really helps her understand what’s going on in movies or tv shows that we are watching together. Unfortunately, the sub files that I find on the internet have a tendency to be a bit garbled. They work fine on windows machines that are running a Korean version of windows, but I’ve NEVER had them work first time in any other environment. They usually look like this:

<SYNC Start=2370><P Class=KRCC>Œöõ ³â Àü¿¡ ÃÖÃÊÀÎÀÌ<br>ÀÌ ÀÚž®¿¡ Œ­ ÀÖŸúŸî
<SYNC Start=4639><P Class=KRCC>¹«Ÿð°¥ ÇÇÇØŒ­<br>¿©±â·Î ¿Â °ÅŸß

They should look like this:

<SYNC Start=601><P Class=KRCC>최초인의 주먹이야
<SYNC Start=2370><P Class=KRCC>수천 년 전에 최초인이<br>이 자리에 서 있었어
<SYNC Start=4639><P Class=KRCC>무언갈 피해서<br>여기로 온 거야

So what’s the problem? Well, as far as I can tell it’s something to do with the text encoding getting garbled. But even when you select the text and change the format to UTF-8 it doesn’t always work. Here are the steps that I’ve found to give me reliable Korean (and Chinese) subtitles on a Mac, that now also work on Linux.

Continue reading Korean Subtitles Under Linux

Video Card Drivers

A little bit of tweaking has been required to get Korora 21 beta to recognise and use my Macbook Pro’s dual nvidia graphics chips. Korora uses a driver manager called Pharlap which is developed in house. Pharlap uses a precompiled database of drivers from rpmfusion and apparently the driver my laptop requires (Nvidia 340.xx) didn’t make it into the Pharlap database. My understanding is that rpmfusion maintains “latest” and “legacy” drivers and that when nvidia decided to drop support for a bunch of cards in their latest driver, mine was one of the ones that lost support. Until rpmfusion updates their “legacy” package to include my card, I’m in no-mans-land.

After some discussion with csmart in his study and firnsy in the #korora channel on freenode irc, I was linked to where a guy has set up his own repo for some of the nvidia drivers, including 340.xx!

So following the instructions on his site involves adding the repo:

yum-config-manager --add-repo=

Then installing the package:

yum -y install nvidia-driver

A reboot later and I have graphics drivers!

Edit (5 Jan 2pm):

There are still some tearing artefacts along the bottom of the screen on the lock/login screen and when some apps are in fullscreen. Not sure what causes those yet.

Edit (7 Jan 2pm):

Trying KDE now and was reminded by csmart that I should also install the 32bit drivers. That’s done using:

sudo yum install nvidia-driver-libs.i686

Apple Trackpad/Touchpad Sensitivity under Linux

Apple’s trackpad/touchpad on my macbook pro seems to be having some emotional issues under Linux (Korora 21 beta – GNOME). It’s SUPER sensitive. I’m typing in the same way that I’ve always typed under OSX (and never had a problem with) but suddenly now my cursor is jumping all over the place. The tail ends of my sentences end up in the middle of other sentences and I just lost a paragraph that I was in the middle of because the trackpad registered the brush of my palm as a triple click which selected the whole thing and the next character I typed overwrote it all. Thank goodness undo still works.

Continue reading Apple Trackpad/Touchpad Sensitivity under Linux

Moving to Linux

My friend Chris has been a vocal Linux advocate for a long time and I’ve been loitering around the periphery of the GNU/Linux community for many years on his coattails. He’s so into Linux that he maintains his own distro.

After years of resisting his persuasions I’ve finally succumbed and he’s helped me install Korora 21 on my 2009 macbook pro.

So far things are running smoothly and I’m liking what I see – he recommended the gnome desktop as more a more maccish/osxish way of doing things.

We’ve hit a couple of snags so far and I’m working through them one by one. I plan to detail the problems and solutions here as I overcome them to help anyone else who makes a similar move and hits the same problems as me.