Wednesday, July 15, 2009

UC Appliance on VMWare

In theory, any software runs on x86 platform should be able to run on VMWare, unless the software vendor explicitly block it.

Cisco has many software running on x86 platform. We'll discuss Unified Communication products here - CUCM, CER, UCCX, etc.


CUCM is the flagship of Cisco UC products. You may install CUCM on VMWare just fine. No hacking is required, but you'll receive a warning that VMWare is not "officially" supported. ie. you shouldn't use it in production. Cisco planned to support VMWare in production in the future ( probably with UC 8).

Though you may install CUCM on VMWare, there are some limitations.

Limitation #1 Licensing

Cisco limits the number of nodes and DLUs on a VMWare MAC address. (3 nodes, 125 DLUs at the time I'm writing this blog). If you should need more than 3 nodes and 125 DLUs, you may change the MAC address of the CUCM (change in VM guest, not in VM host). Just Google keywords "change MAC address on Linux" and you'll find the answer.

Limitation #2 SNMP Agent

You'll notice that "SNMP Master Agent" service fails to start if CUCM was installed on VMWare. This will cause problem if you're testing CER (Emergency Responder). CER needs SNMP connection to CUCM to retrieve phone info. The workaround would be issue the command on CUCM root shell "/sbin/chkconfig snmpd off". Then reboot the server.

Limitation #3 VMWare Acknowledgement

Since from version 7, CUCM requires you acknowledge the "VMWare agreement" during startup. If you reboot the CUCM remotely (either via OS Admin web or via CLI), the server will not boot up until you press the "Agree" button on the console. The workaround is to edit /usr/local/bin/base_scripts/,

change the line

if [ "$hwmodel" = "vmware" ];


if [ "$hwmodel" = "foobar" ];

On newer versions,

Change the line

    if isHardwareUnsupported || isOriginalHardwareUnsupported ; then


   #if isHardwareUnsupported || isOriginalHardwareUnsupported ; then
    if 0 ; then


Besides the limitations mentioned about, CER has another limitation with VMWare.

CER retrieve information from CUCM via SNMP. This includes the machine type of CUCM. If CUCM is running on VMWare, the machine type will be "unsupported" from CER point of view. The workaround is to edit /usr/local/CER/etc/devices.xml file on the CER box. Add the following tag under "CcmHost" family tag:

member OID="" OIDNAME="vm-ware" CAPTION="VMWare"
Reboot CER or restart Phone Tracking Engine.


So far, UCCX has been running on "Cisco OS" 2000/2003, which in fact is Windows 2000/2003. However, UCCX will refuse to install if Cisco specific registry key is missing. Follow instructions on to add the registry key.

Good news is: VMWare is supported since Cisco OS 2003.1.4. If you're using OS 2003.1.4 or newer, you don't need the registry hack.

Another tips is: if you want to bypass the hard drive/memory requirement check, you may create an empty file named "crstest.ini" on C:\. Then CRS won't require 72G HDD/2G memory to install. Of course, this is for testing purpose.

Root shell on UC appliance

Many of the hacking above requiress the root access to the appliance (CUCM, CER, etc.). Just use Google to find the answer. For example:


  1. Great tips, Michael. I hate the VMware disclaimer everytime I start the CUCM/CUCN VMs and forgot to open the console and manually ackownledging them.

  2. Mike, great tips on your blog. I have followed for some time but its my first post.

    Btw, just to point out that the licenses of 3 nodes and 125 DLUs is for CUCM 7 only.
    At bad time, I realized on CUCM 6 it gives you only the plain demo licenses so couldnt add anymore nodes :-/

  3. Mike, I used your tip to install UCCX on vmware. The UCCX installed on vwmare , but with one error. The jtapi client want sync. Can you help me with this ?

  4. JTAPI has nothing to do with VM. You may post questions on NetPro forum ( or open a TAC case.

  5. I understand JTAPI has nothing to do with VM. I was wondering if the UCCX tip cause the jtapi client to not sync. Great job with your Deploying CUP book. It is a great help to me. Have you taught about making a CER book ?

  6. Hi

    I already have an existing CUCM cluster running in my home lab with the VMWare Acknowledgement in place. Is there a step-by-step way of removing this VMWare acknowledgement from the CUCM pub and sub servers? I am not too familiar with Linux but I am a fast learner!

    Your help will be much appreciated.

    Thank you.

  7. Hello,

    I followed the instructions for CER but it still can't pull the member OID from SNMP. i am running CUCM 6.1.3 how would i find the OID for it?

  8. "cannot pull OID" could be caused by different reasons:
    1) SNMP agent was not running
    2) Network device was blocking SNMP port
    3) Wrong community string
    4) Wrong OID

    I think my article only takes care of #1 above.

  9. Hi Michael,

    Cool blog.

    About bypassing VMWare acknowledgement, the script doesn't have the if statements as per this blog. I'm using CUCM 7.1.5b. Any suggestion?

  10. You may try to change the line

    if isHardwareUnsupported || isOriginalHardwareUnsupported ; then


    #if isHardwareUnsupported || isOriginalHardwareUnsupported ; then
    if 0 ; then