The FreeSWITCH team is proud to announce the official release of version 1.0.6, the latest release of the popular open source soft-switch library. FreeSWITCH 1.0.6 builds upon previous FreeSWITCH releases and brings dozens of new features and scores of enhancements in codecs, SIP processing, CPU utilization, TDM hardware support, and more. In the eight months since the release of FreeSWITCH 1.0.4, the core developers and key contributors have made improvements in almost all areas of the project.
New Audio Codecs
Two key additions to FreeSWITCH are the SILK and BroadVoice audio codecs, both of which have recently been released in open source fashion. The BroadVoice family of codecs, supplied by Broadcom Corporation (Nasdaq: BRCM), were recently released under the GNU Lesser General Public License (LGPL) on a royalty-free basis. The SILK codec, created and used by Skype, has been released for developers to use in non-commercial applications, such as interop testing. These new codecs augment the impressive list of free codecs now supported by FreeSWITCH. By supporting such a wide array of free codecs, FreeSWITCH enables truly “free” speech in the VoIP world.
These codecs were added with relative ease, highlighting the value of FreeSWITCH’s modular architecture. “It only took about 90 minutes to add the SILK codec to FreeSWITCH,” reports Brian K. West, one of the core FreeSWITCH developers. “It was very gratifying to be making SILK calls with FreeSWITCH on the very same day that Skype released the SILK source code.” Easily adding new codecs is also valuable for testing. The FreeSWITCH developers found an issue with one of the BroadVoice codecs and immediately reported it to the Broadcom engineers, who were able to resolve it quickly.
Another important codec addition is G.729. Although G.729 is not “free” like many of the other codecs, it is both widely used and reasonably priced. FreeSWITCH previously supported G.729 is “passthrough” mode only. Our users will now be able to transcode to and from G.729 with new commercial G.729 licenses.
A major new feature in 1.0.6 is support for the Broadsoft method of performing Shared Call Appearance (SCA) in a VoIP environment. The Broadsoft SCA method is known to work with Polycom, Snom, Cisco SPA (Small Business Pro 500 Series), and Aastra phones among others. The FreeSWITCH team spent many hours testing this feature on numerous telephones and in various calling scenarios. Anyone who has dealt with SCA knows what a challenge it is just to get phones from a single vendor working, so you can appreciate the effort needed to make this feature work across phones from multiple vendors. Using this method of SCA you can have one shared line appear on Polycom, Cisco, Aastra, and Snom phones at the same time. SCA is enabled by setting the manage-shared-appearance parameter on the SIP profile and turning on SCA in the telephone configuration.
The latest version of FreeSWITCH includes many new features that allow for advanced call processing. The new valet_park dialplan application allows for greater control and flexibility in how calls are parked and retrieved. The valet allows the operator to specify a location where the call is parked for later retrieval from any phone. The new valet_park supports both manual and automatic assigning of park locations for calls. Another feature for call handling is campon. The campon feature is similar to call waiting where a phone in use can receive a second call. If the called party does not answer then the call can forward to voicemail or another extension. There is also a new fifo_position channel variable to allow an administrator to see the position in queue for each caller waiting to be answered. The playback dialplan application has been enhanced to allow playback to start at a random point in the target sound file by appending “@@<# of samples>” to the end of the filename.
The FreeSWITCH developers have added many new commands that will benefit VoIP system administrators. New diagnostic commands have been added. The “uuid_audio” command allows one or both directions of an audio stream to be amplified or muted. Audio issues between endpoints can be investigated by using the “uuid_debug_audio” command. A particularly powerful new command is “uuid_simplify,” which allows FreeSWITCH to remove itself from a call path in certain cases, such as call transfers where audio flows from a local VoIP server to a remote server and back again. The command “simplifies” the call by removing the unnecessary route to the remote server, thereby improving call quality and reducing network usage.
Other improvements include the addition of the TCL language for ESL (Event Socket Library) and tab-completion in fs_cli, the FreeSWITCH command line client. In Linux/Unix based systems there is now support for using the fail2ban application to protect against attacks such as brute-force SIP registrations.
Many new modules have been added to FreeSWITCH to expand functionality. The mod_say module’s interface has been improved to allow for the passing of gender information, and new languages have been added: French, Italian, Hungarian, and Thai. Sound files have been created for French, German, and Spanish.
Other new modules include:
mod_skinny: A provisional new module to implement Cisco’s SCCP (skinny) protocol.
mod_directory: A new dial-by-name directory module to improve the options available when processing calls with automated attendants.
mod_tts_commandline: A module that allows interfacing with text-to-speech (TTS) engines from the system command line. As an example, using mod_tts_commandline you can interface with pico2wave, a respectable (and free) TTS engine from the Android project.
mod_shell_stream: A module that allows you to stream audio from an arbitrary shell command. It is possible to read audio from a soundcard, database, etc.
mod_h323: A provisional new module to implement the H.323 protocol.
The FreeSWITCH project has had some important changes occur. It was recently announced that Sangoma Corporation has expanded its support for the FreeSWITCH project by sponsoring the migration of OpenZAP to FreeTDM. FreeTDM is a signaling and board abstraction layer for making TDM calls with FreeSWITCH. With FreeTDM, the Sangoma Boost PRI stack can be used with FreeSWITCH.
A very important change in the project is with the version control system used by the developers. FreeSWITCH has migrated from SVN to Git for all source code commits. (A read-only SVN mirror will be maintained.) The transition to Git will facilitate faster release cycles and easier branch management.
A Very Bright Future
The FreeSWITCH project has grown a lot since the 1.0.0 release back in May 2008. There have been more than 10,000 source commits since then, and in just the release from 1.0.4 there have been more than 700 changelog entries. FreeSWITCH functionality continues to expand while its stability and performance are improved. Be sure to attend the ClueCon Open Source Telephony Developer Conference this August. The development team has big things in store for the FreeSWITCH community!