Document ID: 5281
Contents
Introduction
Prerequisites
Requirements
Components Used
Conventions
Background Theory
Problem
Solution
Enabling the Optional Registry Setting
Related Information
Introduction
This document describes a specific problem experienced by a limited number of sites using both G.711 and G.729a codecs with Cisco Unity. Most sites running Cisco Unity in a dual-codec environment do not experience this problem. However, when it occurs, Cisco Unity is inoperable.
The problem is recorded for Cisco Unity version 3.15. in DDTS CSCae08069 (registered customers only) . For the most recent status of this problem, refer to additional information about Bug ID CSCdz15442 (registered customers only) .
Note: Cisco Unity 3.14 is not affected because this workaround is enabled by default. However, Cisco Unity 3.15 is still affected.
Prerequisites
Requirements
There are no specific requirements for this document.
Components Used
The information in this document is based on these software versions.
-
Cisco Unity 2.46.135 and later
-
Cisco Unity 3.0x
-
Cisco Unity 3.1x
Conventions
For more information on document conventions, see the Cisco Technical Tips Conventions.
Background Theory
When Cisco Unity transcodes wave formats, it uses Microsoft Windows Audio Compression Manager (ACM) to call into the third party G.729a codec. When multiple threads call into the Windows ACM function AcmStreamConvert() at the same time, they can conflict with each other and generate errors, causing callers to hear dead air or reorder tone.
Restarting the Cisco Unity server clears the corruption in Windows ACM temporarily, but does not prevent the problem from reoccurring. An application-level workaround has been implemented in Cisco Unity version 2.4.6.135 and later, and in all shipping versions of Cisco Unity 3.0. The procedure to enable this registry setting is provided in the Solution section of this document.
Problem
Callers hear the reorder tone or dead air shortly after Cisco Unity is started. Calls received immediately after startup are answered, but the problem occurs within a few minutes thereafter. This problem occurs only under these conditions:
-
A Cisco Unity system where transcoding occurs between G.729a and G711 codecs is required. This includes any instances of G.729a prompts, messages, or greetings, even if Cisco Unity is in a G.711 region. The possibility that this problem can exist on a G.711 system has not been completely ruled out.
-
You may see that there is an identical sequence of Miu wave errors in the Event Log from more than one port at the same time, beginning with:
Component Miu: Thread 0x<num> had a Failure on Port X in AvWav
There are usually be four to six of these errors from one port, intermingled with an identical sequence of four to six errors from another port. Errors from other ports may also be present.
Note: The above error messages are the most common ones, but there could also be other related error messages.
-
The problem occurs within a few minutes of system startup, and can be consistently reproduced. Restarting the Cisco Unity server eliminates the problem temporarily, but it reoccurs. If a problem with similar symptoms occurs days after startup, or is sporadic, it is likely a different problem.
Solution
The workaround solution, an optional registry setting, makes Windows ACM globally thread-safe.
Enabling the Optional Registry Setting
This procedure is not required on all systems that use transcoding. It can have a performance impact, and should only be done if all of the conditions listed in the Problem section are present.
Note: This procedure applies to Cisco Unity versions 2.4.6.135 or later, Cisco Unity 3.0x, and Cisco Unity 3.1x. including Cisco Unity 3.15. This procedure does not apply to Cisco Unity 3.14.
To enable the ForceGlobalAcmThreadSafety registry setting, follow these steps:
-
Start Regedit.
Caution: Changing the wrong registry key or entering an incorrect value can cause the server to malfunction. Before you edit the registry, confirm that you know how to restore it if a problem occurs. Note that a typical backup of the Cisco Unity server does not back up the registry. Refer to the Restoring the Registry Help topic in Regedit.exe or the Restoring a Registry Key Help topic in Regedt32.exe for additional information. If you have any questions about changing this registry key setting, contact Cisco TAC. -
If you do not have a current backup of the registry, select Registry > Export Registry File, and save the registry settings to a file.
-
Go to HKEY_LOCAL_MACHINE\Software\ActiveVoice.
-
On the Edit menu, select New Key.
-
Name the new key UnityAvWav.
-
Click the new UnityAvWav key, then on the Edit menu, select New Key.
-
Name the new key 1.0.
-
Click the new 1.0 key, then on the Edit menu, select New Dword.
-
Name the new Dword ForceGlobalAcmThreadSafety and set the value to 1.
-
Close the Registry Editor.
-
For the settings to take effect, restart the Cisco Unity server.
-
Confirm that the problem does not reoccur within the first few minutes after Cisco Unity restarts. If the problem does reoccur, to avoid a system performance impact, set the ForceGlobalAcmThreadSafety DWORD value to 0.
Related Information
- Voice Technology Support
- Voice and IP Communications Product Support
- *Recommended Reading: Troubleshooting Cisco IP Telephony

- Technical Support - Cisco Systems
| Updated: Feb 02, 2006 | Document ID: 5281 |
