I have no idea why Cisco hasn’t provided a simple WAV to RAW converter tool yet, even though it should be a no brainer. There’s barely any info on the required file format either. After quite some struggling, here’s how it works, but before we begin, install Audacity.
So what kind of sounds do Cisco VoIP phones accept?
- uncompressed, RAW format (header-less)
- no metadata
- 8000 Hz sample rate
- 1 channel (mono)
- U-law encoding
- they say it shouldn’t be longer than 16080 samples, but for me it worked even with 80k+ samples
First off, test if you can actually play back such a file. Download the Yello – Oh Yeah ringtone, then start Audacity. Click File / Import / Raw Data…, select the file, then import it as per the list above. Visually:
After you click Import you should be able to listen to Dieter Meier’s hilarious moaning. So that means this file should be good as a ringtone. Now it’s time to do this process the other way around.
Close the current file (Ctrl+W) then simply drag-n-drop your sound cue to Audacity. Make sure it’s not longer than a few seconds – test if it works with the shorter ones first, then you can check out the longer ones.
Once the sound file’s open, click Tracks / Resample… and set the New sample rate (Hz) to 8000. Also change the Project Rate (Hz) to 8000 on the bottom left of the screen. If the file’s stereo, convert it to mono via Tracks / Stereo Track to Mono. Then File / Export Audio, under Save as type select Other uncompressed files, then go to Options…. Choose the RAW (header-less) type and the U-law encoding. Then click OK, then click Save. Now Audacity asks you about metadata. Make sure there’s no metadata at all, so click Clear, then click OK.
Now you have a cool ringtone, but how do you put this on your phone? Well, I can’t say it’s simple. First upload the ringtone to the Cisco voice router via TFTP, in this example I’ll use the flash:/ringtones path. Then enter configure mode on the router and set up an alias for the file, e.g.
tftp-server flash:/ringtones/ohyeah.raw alias ohyeah.raw
Then save the config. Now create a new file called
RingList.xml with the following contents:
<CiscoIPPhoneRingList> <Ring> <DisplayName>ohyeah</DisplayName> <FileName>ohyeah.raw</FileName> </Ring> </CiscoIPPhoneRingList>
Put this in the root, i.e.
flash:/RingList.xml. Now reboot your phone and you should be able to select this new ringtone. Enjoy 🙂