The FreeSWITCH project was first announced in January 2006 at O'Reilly Media's ETEL Conference.[10] In June 2007, FreeSWITCH was selected by Truphone for use,[11] and in August 2007, Gaboogie announced that it selected FreeSWITCH as its conferencing platform.[12]
FreeSWITCH's first official 1.0.0 release (Phoenix) was on May 26, 2008.[13] A minor 1.0.1 patch release came out on July 24, 2008.[14] At ClueCon 2012 Anthony Minessale announced[15] the release of FreeSWITCH version 1.2.0[16] and that the FreeSWITCH development team had adopted separate stable (version 1.2) and development (version 1.3) branches.
FreeSWITCH 1.4, released at early 2014, is the first version support SIP over Websocket and WebRTC.
FreeSWITCH 1.6 added support for video transcoding and video conferencing, Verto protocol for WebRTC, and all WebRTC codecs and standards.
FreeSWITCH 1.8 was released at ClueCon in 2018 with further updates and stability improvements to the project.
SignalWire Inc was founded in 2018 to provide commercial cloud telecommunication services utilizing an elastic FreeSWITCH core, and provide a permanent commercial sponsor for the open source project that was controlled by the founders of FreeSWITCH. It then acquired FreeSWITCH Solutions.[17]
Not all of these software dependencies are required to build the core freeswitch application, but are dependencies of various external modules, such as codecs. FreeSWITCH is a modular application, in which modules can extend the functionality, but the abstraction layer prevents inter-module dependency. The goal is to ensure that one module is not required to load another.[21]
FreeSWITCH provides an application programming interface that exposes primitives for call control and IVR functionality. Applications may be written in the C language, C++, Python, Perl, Lua, JavaScript, Java and Microsoft .NET via Microsoft's CLR or via Mono.[23]
Call control applications can use the Event Socket, which is an Internet socket-based communications facility within FreeSWITCH providing a language independent interface. The Event Socket Library (ESL) and "ESL-wrappers" are available for Erlang, JavaScript, Lua, Perl, PHP, Python, and Ruby.
As of FreeSWITCH version 1.4, support exists for WebRTC.[24]
In FreeSWITCH 1.6 support was added for Video muxing and complete WebRTC, wss, dtls, SIP.js, Verto.js, Opus 48 kHz to 8 kHz, resilient up to 40% packet loss.
Main FreeSWITCH 1.6 features:
WebRTC support
Centralized User/Domain Directory (directory.xml)
Nanosecond CDR granularity
Call recording (In Stereo caller/callee left/right)
High Performance Multi-Threaded Core engine
Configuration via cURL to your HTTP server (mod_xml_curl).
XML Config files for easy parsing.
Protocol Agnostic
ZRTP support for transparent RTP based key exchange and encryption
Configurable RFC 2833 Payload type
Inband DTMF generation and detection.
Software based Conference (no hardware requirement)
Wideband Conferencing
Media / No Media modes
Proper ENUM/ISN dialing built in
Detailed CDR in XML
Radius CDR
Subscription server
Shared Line Appearances
Bridged Line Appearances
Enterprise/Carrier grade Eventing Engine. (XML Events, Name Value Events, Multicast Events)
FreeSWITCH is a WebRTC Gateway, able to accept encrypted media from browsers, convert it, and exchange it with other communication networks, that use different codecs and encryptions, e.g.: PSTN, mobile carriers, legacy systems, etc. FreeSWITCH can be the gateway between SIP network and applications and browsers on desktops, tablets and smartphones.
FreeSWITCH is a WebRTC Application Server, able to directly provide native services to browsers, like videoconferences, IVRs, Call Centers, without the use of any gateway or third party. FreeSWITCH can directly provide services through Secure WebSocket (WSS), SRTP, and DTLS, the native WebRTC protocols.
FreeSWITCH makes available an additional Signaling Plane because with Verto the browsers can initiate or receive a voice call or a video call in the easiest way, and they can chat, share screen, receive and send data in real time to back end applications. Verto is an alternative to XMPP or SIP in Javascript. FreeSWITCH can serve in parallel and concurrently the same application to clients that use signaling in SIP and Verto.
[26]
FreeSWITCH has always been a powerful platform for conferencing, starting many
years ago as a hugely scalable audio conferencing bridge.
In a breakthrough at ClueCon 2015 in Chicago Illinois, FreeSWITCH's creator
Anthony Minessale II announced support for video transcoding, mixing,
manipulation, and Multipoint Control Unit (MCU) functionality.
FreeSWITCH now has the most advanced and mature video conferencing features:
G.723.1, H263 and H264 are supported in pass-through mode. Since the raw compressed data is passed through between callers without any processing, this allows support for some codecs that cannot be provided free of charge due to patent or other licensing issues.
The software supports hardware transcoding cards, such as produced by Sangoma.[29] These implement codecs in hardware, reducing the CPU usage of the server. Some of these codecs are fully licensed, providing an alternative to the pass-through options above.
Debian Linux is the preferred operating system as it provides the broadest support in its libraries necessary to run FreeSWITCH unencumbered by licensing restrictions
FreeSWITCH occupies a space between pure switches that simply route calls, such as Kamailio and OpenSIPS, and those that provide primarily PBX or IVR functionality, such as Asterisk and its derivatives. FreeSWITCH provides building blocks from which applications – such as a PBX, a voicemail system, a conferencing system or a calling card – can be built using any of the supported languages.[32]
FreeSWITCH is a core component in many PBX in a box commercial products and open-source projects. Some of the commercial products are hardware and software bundles, for which the manufacturer supports and releases the software as open source.