Posts Tagged g.711

More Fax, More Features

Aloha,

In Digium’s continuing quest to deliver you, our users of Free Fax For Asterisk, and our customers of Fax For Asterisk, with the best possible solution, we are pleased to announce the availability of version 1.2 of…(drum roll without suspense) Fax For Asterisk.

How has this version improved? Why, with new features, of course, hence the title of this blog post.

New features include:

  • DAHDI Buffer Policy Implementation -Currently requiring the trunk version of Asterisk, in addition to the 1.2 release of Fax For Asterisk, new dialplan functions to allow the setting of buffer policies to prevent fax failures on higher latency systems, e.g.:exten => 1234,Set(CHANNEL(buffers)=”12,half”)where “12″ represents a number of buffers (each buffer is 20ms), configurable between 4 and 32, and where “half” represents the policy implementation, configurable as “immediate,” “full,” or “half.”

    To use, simply set your buffer policy in your dialplan before any send/receive fax operation across a DAHDI channel.

  • SIP Fax Detection Options -At present, also requiring the trunk version of Asterisk in addition to the 1.2 release of Fax For Asterisk, new options are available related to T.38 session initiation. Older releases of Fax For Asterisk only detect T.38 fax upon the receipt of CNG. In practice, we’ve discovered that a number of T.38 providers send T.38 invites immediately, and never send CNG to initiate a T.38 session. Thus, the faxdetect option in sip.conf can now be set to:no – To disable all fax detectioncng – To trigger fax detection based on the receipt of a CNG tone

    t38 – To trigger fax detection based on the receipt of a SIP T.38 invite, without CNG tone

    yes – To trigger fax detection based on the receipt of either a CNG tone or a SIP T.38 invite.

    These changes should improve our compatibility with the wild, wild west of T.38 implementations.

  • New CLI Commands -New Asterisk command line interface commands are available to display the settings configured in res_fax and res_fax_digium, simply run:fax show settingsto see your current settings.
  • Asterisk CLI Type Column -A “Type” column is now displayed when “fax show sessions” is run on the Asterisk CLI, informing the user whether the fax is of type “G.711″ or of type “T.38.”
  • ECM Configuration per Provider / Peer & Configuration Moved -Error correction mode may now be configured on a per provider / peer basis. This proves useful in the case that a provider does not implemented T.38 ECM properly. Digium has observed that ECM must be disabled for T.38 faxing to work properly with Gafachi.Configuration of error correction mode has moved from res_fax_digium.com into the res_fax.conf configuration file. Note that the default setting is still to enable ECM.
  • SendFax initiate T.38 re-invite -Digium observed that a number of providers or far-end systems did not send a T.38 re-invite and instead waited for the local system (Asterisk) to send it instead. The SendFax application now supports the “z” option to enable this feature. If the “z” option is set during a SendFax, then res_fax will initiate the T.38 re-invite if it is not received in 10 (ten) seconds from the far end. Digium observed that the “z” option must be used for T.38 faxing to work properly with Gafachi.
  • Send / ReceiveFax G.711 Fallback mode -A new fallback option “f” has been added to the SendFax and ReceiveFax applications. In the event that T.38 negotiation fails, enabling this option will cause Asterisk to revert to audio fax mode. Digium has observed this is required for some providers, like BroadVox, who provide T.38 for inbound faxing, but accept only audio faxing for outbound.Please note that audio faxing over the Internet is very unreliable, and Digium cannot provide support for fax failures due to poor Internet connections.
  • New Debugging utilities -In order to make debugging easier, we’ve added two new command line capture options, one for audio faxes and one for T.38 faxes.For audio capture, do “fax set g711cap on” in the Asterisk CLI and a stereo wav file will be created for each fax session. The resulting files will be saved in /var/log/asterisk/g711cap. To stop capture, do “fax set g711cap off.”For T.38 capture, do “fax set t38cap on” in the Asterisk CLI and a Wireshark compatible pcap file will be created for each fax session. The resulting files will be saved in /var/log/asterisk/t38cap. To stop capture, do “fax set t38cap off.”

Ready to upgrade? Run right over to the Fax For Asterisk Download Selector and grab the new release.

As always, we thank you for your support.

Cheers.

, , , , ,

No Comments

Fax For Asterisk 1.1.6 Release Announcement

T.38 fax for Asterisk

T.38 fax for Asterisk

Digium is pleased to announce the release of version 1.1.6 of its Fax For Asterisk product, a commercial grade FAX add-on module for open source Asterisk.

This release contains a number of significant improvements, including:

  • Support for 64-bit Linux installations.
  • Reduction in resource consumption, and increase in performance, of T.38 session handling.
  • Simplification of session handling during transition from G.711 to T.38 mode.
  • Adoption of the latest Asterisk T.38 negotiation API, ensuring interoperability with a wide range of T.38 endpoints.

Version 1.1.6 of Fax For Asterisk is available for immediate download at http://www.digium.com/en/docs/FAX/faa-download.php. Note that because this release uses the very latest T.38 negotiation mechanism in Asterisk, it is not compatible with all released versions of Asterisk. The Fax For Asterisk download selector lists the Asterisk versions supported by this release.

For more information about Fax For Asterisk, please visit the product page.

Thank you for your support!
Read the rest of this entry »

, , , , , ,

No Comments

State of FAX (primarily T.38) in Asterisk trunk (planning for 1.8 release)

Over the past year, some of us at Digium have spent many (MANY) hours working on FAX support in Asterisk (even though we’d all prefer to see FAX go away as the obsolete technology that it should be <G>). Some of this work was part of our release of our commercial FAX for Asterisk product, some of it was driven by our desires to have solid FAX support in our commercial PBX products, but most of it was driven by the need to get open source Asterisk (and its community of users) able to use FAX reliably with as many non-Asterisk endpoints as possible.

In Asterisk 1.4 and prior releases, there was limited support for FAX of any kind; Asterisk 1.4 can pass through T.38 sessions on SIP channels, but that’s all. With an open source addon (based on Steve Underwood’s excellent spandsp library), it can have dialplan applications to send and receive FAX over audio (G.711 TDM) links.
During the development of Asterisk 1.6.0, Steve’s FAX dialplan applications were merged into asterisk-addons, and then directly into the Asterisk source tree, where they became the ‘app_fax’ module. In addition, the T.38 negotiation process was redesigned to allow Asterisk applications to actually be T.38 endpoints; this resulted in the ability to send and receive FAX over audio *and* T.38 links.

Once this got into the community’s hands, we started seeing large numbers of bug reports because users could not successfully FAX over T.38 with various ATAs and service providers.  I won’t go into the gory details of why this was the case, except to repeat a recent quote from Steve himself on IRC: “The T.38 spec was written after a night of heavy drinking as a joke.”. While that’s not technically true, it is true that compliance with the T.38 recommendation, primarily in the SIP/SDP negotiations area, is very poor across the industry. Producing a T.38 endpoint that interoperates widely is a complex and difficult process, that can only be achieved through hours and hours (and hours) of testing.

As these problem reports got more severe, we took a significant step: we rewrote the T.38 negotiation mechanisms in Asterisk *again*. These changes first appeared in the 1.6.0.14 and 1.6.1.5 releases. The in-tree app_fax application was updated to support these changes along with them, so open source FAX users got the benefits of these changes immediately… and the result has been wonderful. We get very few T.38 negotiation-related bug reports now, and in nearly every case we can point to a misconfiguration or severely broken far endpoint that is the cause of the problem. For many, many people, FAX over T.38 in Asterisk 1.6.0 and 1.6.1 ‘just works’ now.

While all of this was going on, Digium was also working on our commercial Fax for Asterisk product, which provides comparable functionality to app_fax, but uses a commercial FAX stack. When we began the development of this product, we knew that we wanted as many portions of it as possible to end up open source, so rather than build it as a monolithic module, we built two modules: res_fax and res_fax_digium. res_fax is similar to app_fax, in that it provides dialplan applications, dialplan functions, and other associated components to send and receive FAX. However, it does not actually include any FAX stack; for that, it provides a plugin interface that allows one (or more) additional modules to be loaded to actually provide the FAX technology implementation. It *does* handle all T.38 negotiations, however, using the 3rd generation T.38 implementation in Asterisk.

Of course, res_fax_digium is Digium’s commercial plugin module for res_fax, and we have been delivering the combination of those two modules to our Fax For Asterisk customers for quite a few months now. (Unfortunately it has taken longer to get these modules updated to match Asterisk’s T.38 API than we would have liked, but that’s not important for open source users). Recently, with a final set of changes to the UDPTL stack in Asterisk, we’ve reached the point where we think we’ve implemented all the parts of the T.38 recommendation that we can implement, in as compatible and interoperable a way as we can, with a few configuration options that provide the ability to override broken behavior by far endpoints when necessary. In fact, the combination of the very most recent Asterisk open source releases and either app_fax or res_fax+res_fax_digium now successfully interoperates with quite a few T.38 ATAs we have in our lab and a couple of service providers, and we’re testing more of both as I write this. In nearly every case, this works *without* requiring any configuration changes in Asterisk or the FAX applications, which is good news for end users indeed. We’ve even extended (and fixed) the ‘faxdetect’ functionality in chan_sip so that it works as users expect it to, in a similar way to the faxdetect feature in chan_dahdi.

Now that this point has been reached, it’s time for us to act on our plan to open source res_fax; to that end, I’ve created a new branch in Subversion (/svn/asterisk/team/group/res_fax) based on Asterisk trunk, and merged the most recent version of res_fax into it, updating it to compile against trunk’s recent API changes. By the time Asterisk 1.8 is released, res_fax will *replace* app_fax, as it provides the identical dialplan applications (same names, options and operations), but has additional features and compatibility functionality. To achieve this, though, we’re going to need a res_fax_spandsp plugin module, so that the combination of res_fax + res_fax_spandsp provides the same functionality as app_fax did, and it will be a seamless transition for Asterisk 1.6.x FAX users to move to Asterisk 1.8 when they are ready. We’ve tasked one of our developers to start working on this over the next few weeks, and I’m sure you’ll see some initial steps toward that end shortly. For those of you who have contributed improvements to app_fax and use it heavily (or even those who just use it and can provide testing), I’d encourage you to post a comment in the thread on the asterisk-dev mailing list if you are interested and willing to assist in this effort.

Now, on to even more interesting stuff: as I’ve worked on this over the past 6-8 months, I’ve also spent time finally trying to understand how best to fit TDM-T.38 FAX relay into Asterisk. I know that there are number of community developers who have been working on this, and there are multiple patches in the issue tracker that provide this functionality in various forms. There was also an attempt by Daniel Ferenci to start a discussion on the asterisk-dev list about the best long-term approach for relay support, but he didn’t really get any responses.

Once res_fax and res_fax_spandsp are ready for users to use, it’ll be time for them to be extended to support FAX relay as well. I would like to propose that this be implemented by res_fax providing a new API, a ‘FAX relay session’, that a channel driver (one which services TDM channels) can use to offer T.38 support to the rest of Asterisk, as if it supported T.38 natively. We can start a separate discussion on the list to talk about particulars, but I believe this is the cleanest approach with the least impact on existing code in Asterisk, and I’d like to get opinions from other interested parties and discussion going.

In summary, it appears that Asterisk 1.6.x has achieved pretty solid FAX support (especially over T.38), and that with Asterisk 1.8 we’ll be able to improve it further and begin moving towards FAX relay support as well. For all of you who still insist on using this obsolete technology <G>, I hope this has provided what you need to be able to keep using Asterisk
in every place that it makes sense in your networks!

, , , ,

No Comments

Fax For Asterisk

T.38 fax for Asterisk

T.38 fax for Asterisk

Digium‘s Fax For Asterisk is a commercial facsimile (Fax) termination and origination solution designed to enhance the capabilities of Open Source and commercial Asterisk as well as Switchvox. Fax For Asterisk bundles a suite of user-friendly Asterisk applications and a licensed version of the industry’s leading fax modem software from Commetrex. Fax For Asterisk provides low speed (14400bps) PSTN faxing via DAHDI-compatible telephony boards as well as VoIP faxing to T.38-compatible SIP endpoints and service providers. Licensed on a per-channel basis, Digium‘s Fax For Asterisk provides a complete, cost-effective, commercial fax solution for Asterisk users.

Fax For Asterisk provides two components: res_fax and res_fax_digium. Res_fax is an Asterisk resource module that adds fax termination and origination functionality in Asterisk. It provides Asterisk dialplan functions and dialplan applications to enable the user to build highly-customizable fax solutions. Res_fax_digium provides core fax processing functionality in the form of several supported fax modems — V.21, V.27ter, V.29, and V.17 — to achieve speeds up to 14400bps.

Read the rest of this entry »

, , , , , , , , , , , , , ,

No Comments

Digium Releases TCE400B PCI-Express Transcoder Card

Digium TCE400B

Digium TCE400B

Digium releases the TCE400B PCI Express card for use with voice applications based on the open source Asterisk telephony platform. The new card provides hardware-based voice compression and decompression (codec) capabilities to shift transcoding from software to hardware. Using the TCE400B in place of a software-only solution places fewer demands on servers and frees up Asterisk to more efficiently process calls and to provide functionality for phone systems such as call recording, conference calling and interactive voice response.

The TCE400B is a half-length, low-profile PCI-Express x1 card for transforming complex VoIP codecs into simple codecs. This product is, essentially, a PCI-Express version of Digium’s existing TC400B product.

Read the rest of this entry »

, , , , , ,

No Comments

Digium TC400B

Digium TC400B

Digium TC400B

The TC400B is a half-length, low-profile PCI 2.2-compliant card for transforming complex VoIP codecs into simple codecs.

Overview:

The TC400B is a bundle of the half-length, low-profile PCI-2.2 compliant TC400P base card and the TC400M voice processing module. The TC400B is designed to handle, in dedicated DSP resources, the complex codec translations for highly compressed audio as would otherwise be processed by Asterisk in software.

Asterisk, in software and with Digium G.729a licensing, is capable of transforming the G.729a codec into other codecs for the purposes of call origination or termination, bridging disparate calls, or VoIP to TDM connectivity. These transformations in software are very expensive, in terms of MIPS, and require a substantial amount of CPU time to accomplish. The TC400B not only relieves the CPU of this duty, freeing it up to handle other tasks or to complete additional call processing; but also provides Asterisk with the capability of bridging G.723.1 compressed audio into other formats, a capability not previously possible.

The TC400B decompresses G.729a (8.0kbit) or G.723.1 (5.3kbit) into u-law or a-law; or, compresses u-law or a-law into G.729a (8.0kbit) or G.723.1 (5.3kbit). The TC400B is rated to handle up to 120 bi-directional G.729a transformations or 92 bi-directional G.723.1 transformations. The TC400B does not require additional licensing fees for the use of these codecs nor does it require the registration process associated with Digium’s software-based G.729a codec licensing.

TC400B Documentation:

Manuals
01.26.2007 – TC400B User’s Manual (PDF)

Datasheets & Brochures
07.01.2008 - TC400B Datasheet (PDF)

Agreements & Policies
08.02.2007 – Digium End-User Purchase and License Agreement (HTML)

See articles for this product in our Knowledge Base  >>

, , , , ,

No Comments