[asterisk-users] choppy sound with playback, background, etc... but not with musiconhold

Matthew J. Roth mroth at imminc.com
Tue Jun 12 12:18:18 CDT 2007


Paco Brufal wrote:
> I have an asterisk 1.2.18 working fine, the only problem is that all
> applications that play audio, sound like "tremolo" or "vibrato", but
> musiconhold plays fine.
>
> The same audio file (wav, mp3, ...) works fine with Musiconhold()
> but not with Playback() or Background()...
>
> Do you know what is happening and how can I fix it? It's an only SIP
> system, no fxo/fxs cards.
>   
Paco,

You are in luck, because we just solved this problem.  It turned out to 
be a timing issue, which surprised me because I thought timing was only 
important for IAX trunks, meetme rooms, and music-on-hold.  Now I know 
that anything playing back audio files, except native music-on-hold, 
needs a reliable timing source.  This includes the Playback() and 
Background() applications, as well as queue announcements.

You have two options.  One of them is free and might work and the other 
will cost about $75 per server but should work reliably.  The first 
option is to use ztdummy, but there are a few points that you have to be 
aware of:

  1. The kernel version must be at least 2.6.13
  2. The kernel must be configured with a timer frequency of 1000 HZ
  3. The kernel must be configured to provide RTC interrupts
  4. The kernel must be configured with enhanced real time clock support

With a properly configured 2.6.13 or greater kernel, ztdummy will use 
the RTC instead of kernel jiffies.  This method is more accurate and 
should help alleviate your problems.  Just remember that if you install 
a new kernel you'll have to rebuild Zaptel against it.

We tried this and it helped, but it introduced another problem.  The 
Playback() application would intermittently lock up.  We are running on 
Dell PowerEdge 6850s, so I'm assuming the following issue documented at 
<http://www.voip-info.org/wiki/view/Asterisk+Zaptel+Installation> was 
the cause:
> Mar 2006: Specifically, with many Dell servers, RTC will fail to give 
> out interrupts, causing ztdummy to give no timing information. If you 
> are using ztdummy, and having issues with the Playback() command 
> causing the application to hang, then try the above step of disabling 
> acpi. In addition, a recompiled kernel, with HPET_EMULATE_RTC option 
> enabled, may solve the problem. (This option was removed in 2.6.13 kernel)
The second option is to install a TDM400P without any FXS/FXO modules as 
a timing source.  We've been running like this since Saturday and 
everything seems good so far.  In this case, there are two points to 
keep in mind:

  1.  The server must have an available PCI slot that is compatible with 
the TDM400P
  2.  The wctdm module must be passed the 'timingonly=1' parameter at load

Bare TDM400Ps are available from Atacomm at 
<http://voipstore.atacomm.com/Shops/ViewItem.aspx/27934028032-45624523776.htm> 
for under $75, which is pretty cheap for a "just works" solution.

Remember that you can use zttest to verify the accuracy of your timing 
source.  I ran it on each of the servers I installed a TDM400P in, and 
they all reported an average accuracy of better than 99.99%.  Digium 
recommends an accuracy of at least 99.98%, which ztdummy using the RTC 
wasn't able to provide.

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer



More information about the asterisk-users mailing list