The World's First Cross-Platform Scalable FREE Multi-Protocol Soft Switch

FreeSWITCH is a scalable open source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text or any other form of media.  It was created in 2006 to fill the void left by proprietary commercial solutions.  FreeSWITCH also provides a stable telephony platform on which many applications can be developed using a wide range of free tools.

FreeSWITCH was originally designed and implemented by Anthony Minessale II with the help of Brian West and Michael Jerris.  All 3 are former developers of the popular Asterisk open source PBX.  The project was initiated to focus on several design goals including modularity, cross-platform support, scalability and stability.  Today, many more developers and users contribute to the project on a daily basis.

We support various communication technologies such as Skype, SIP, H.323 and WebRTC making it easy to interface with other open source PBX systems such as sipXecs, Call Weaver, Bayonne, YATE or Asterisk.

FreeSWITCH can perform full video transcoding and MCU functionality using its conferencing module.

FreeSWITCH supports many advanced SIP features such as presence/BLF/SLA as well as TCP TLS and sRTP.  It also can be used as a transparent proxy with and without media in the path to act as a SBC (session border controller) and proxy T.38 and other end to end protocols.

FreeSWITCH supports both wide and narrow band codecs making it an ideal solution to bridge legacy devices to the future.  The voice channels and the conference bridge module all can operate at 8, 12, 16, 24, 32 or 48 kilohertz in mono or stereo and can bridge channels of different rates.  The G.729 codec is also available under a commercial license.

FreeSWITCH builds natively and runs standalone on several operating systems including Windows, Max OS X, Linux, BSD and Solaris on both 32 and 64 bit platforms.

FreeSWITCH supports FAX, both over audio and T.38, and can gateway between the two.

Our developers are heavily involved in open source and have donated code and other resources to other telephony projects including openSER, sipXecs, The Asterisk Open Source PBX and Call Weaver.

a Spec Sheet is available on our Wiki.

Latest Posts

FreeSWITCH and the VUC

Go check out all the new, awesome features going into FreeSWITCH! The core developers made an appearance on the VUC call this past Friday to talk about and demonstrate some of the fantastic, new features in FreeSWITCH.


FreeSWITCH Launches New Platform on 10th Anniversary

The first line of code in FreeSWITCH was drafted Spring of 2005, nearly a decade ago. 2015 marks the 10-year anniversary of the core code and the 9-year anniversary of the FreeSWITCH Public Community. Over the years, the core developers of the project have worked hard to provide top notch community support. FreeSWITCH Solutions, the consulting firm owned and operated by the core FreeSWITCH team, have been offering commercial support for many years for companies who take things to the next level and use FreeSWITCH to power their products.

Today we are proud to announce the unveiling of FreeSWITCH.com and the FreeSWITCH Advantage™ platform and support. Built on top of Debian Linux, FreeSWITCH Advantage takes our proven support services and couples it with a reliable operating system distribution and the result is a uniform packaged system tuned specifically for running FreeSWITCH. New releases will be simple to apply and any changes to the other packages on the system that have an impact on FreeSWITCH will be applied and managed automatically. Customers will have the best environment possible in place to run their systems as well as the support they need to ensure they stay up and running. The FreeSWITCH Advantage provides critical early-access to releases to make sure any problems encountered are addressed ASAP. All of the code used with FreeSWITCH Advantage is taken straight from the project’s public git repository and packaged with testing and stability in mind so the community continues to benefit as a result.

FreeSWITCH Solutions also continues to offer the most comprehensive consulting services available with the experience and knowledge to create almost anything imaginable that pertains to interfacing with FreeSWITCH.


FreeSWITCH Week in Review (Master Branch) August 15th-August 21st

Hello, again. This past week in the FreeSWITCH master branch we had 56 commits. This week the features are: a wonderful perl script, filebug.pl, to help file bugs from the command line, and more work on improving verto communicator including integration of Gravatars, some filter options, and grunt.

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-7988 Add a perl script to help file bugs from the command line and add fixbug.pl to tree
  • FS-8009 [verto communicator] Create a grunt project with livereload support. Documentation can be found here.
  • FS-8010 [verto communicator] Add options for googAutoGainControl, googNoiseSuppression, and googHighpassFilter
  • FS-7855 [verto communicator] Pass userVariables back to the live array to allow for displaying the Gravatar associated with a member’s email address

Improvements in build system, cross platform support, and packaging:

  • FS-7965 [mod_conference] Fixed an error thrown when compiling with GCC
  • FS-7985 [mod_voicemail] Fixed a compilation error on 32-bit PCC platform
  • FS-8015 [mod_conference] Add project dir to include for mod_conference so it picks up mod_conference.h for Windows

The following bugs were squashed:

  • FS-7970 Fixed crash in video_bug_thread caused by double free
  • FS-7971 [mod_opus] Fixed a rate mismatch and correctly advertise telephone-event and CN rates based on the advertised rates of offered codecs
  • FS-7960 Fixed check_ice routine in switch_core_media.c to not use dropped candidates
  • FS-7975 [mod_voicemail] Fix record-greeting event missing VM-Greeting-Path
  • FS-7969 Fixed a segfault due to pthread_setschedparam() on a thread that has exited
  • FS-7962 Fixed sporadic invite/replaces failure
  • FS-8004 Send keyframe on receiving nack with multiple consecutive packets
  • FS-8005 [mod_opus] Fix for rare decoder error when doing PLC, OPUS_GET_LAST_PACKET_DURATION might return 0
  • FS-8006 Changed the typedef of switch_core_video_thread_callback_func_t for consistency
  • FS-7932 [mod_verto] Removed the param from the getMute function in verto class, not needed on underlying method
  • FS-8008 [mod_verto] Separate verto default config to have sep v4 and v6 listeners
  • FS-8016 [mod_conference] Reduce buffering of video in conference mux
  • FS-7977 [verto communicator] Fixing default resolution and cleaning code
  • FS-7992 [verto communicator] Fixed device list at settings
  • FS-8017 [verto communicator] Fixed uses of serialized verto in local storage
  • FS-7986 [verto communicator] Fix for devices not refreshing if system config changes
  • FS-7998 [verto communicator] Don’t prompt when recovering call, just do it.
  • FS-8003 [verto communicator] Use audioInDevices instead of audioDevices to match verto plugin

FreeSWITCH Week in Review (Master Branch) August 8th-August 14th

Hello, again. This past week in the FreeSWITCH master branch we had 7 commits. There were no new features this week, but you should go check out the Verto Communicator that was added last week!

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

The following bugs were squashed:

  • FS-7930 [mod_conference] Correct termination of conference when the last member with endconf left.
  • FS-7953 [verto communicator] Fixed dialing when typing extension using the keyboard.
  • FS-7958 [mod_conference] Fixed a race condition causing crash in conference video MCU
  • FS-7951 [mod_rayo] Completely clean up mod_rayo if it fails to load
  • FS-7955 [mod_sofia] Fixed a crash caused by invalid contact when using event to send a notify message

FreeSWITCH Week in Review (Master Branch) August 1st-August 7th

Hello, again. This past week in the FreeSWITCH master branch we had 17 commits. The new features this week are: new properties added to the amqp configuration, fixed the usage for enable_fallback_format_fields, a fix for a routing key issue in amqp, and the awesome new Verto Communicator!

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-7806 FS-7803 [mod_amqp] Added new properties to amqp configuration, fixed the usage for enable_fallback_format_fields, and added amqp_util_encode to fix a routing key issue
  • FS-7972 [verto communicator] Creating Verto Communicator

Improvements in build system, cross platform support, and packaging:

  • FS-7728 Fixed Windows build issues minus video features

The following bugs were squashed:

  • FS-7940 [mod_conference] Fixed an issue where the video image does not appear on the new canvas when switching

FreeSWITCH Week in Review (Master Branch) July 25th-July 31st

Hello, again. This past week in the FreeSWITCH master branch we had 41 commits. The new features this week are: improved mod_png to allow snapshot of single legged calls, added session UUID to lua error logs and added session UUID to embedded language (lua, javascript, etc) logs when session sanity check fails, improved the xml fetch lookup for channels on nightmare transfer, and added uuid_redirect API command to mod_commands.

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-7900 [mod_png] Allow snapshot of single legged calls
  • FS-7912 [mod_lua] Added session UUID to lua error logs, if known and added session UUID to embedded language (lua, javascript, etc) logs when session sanity check fails
  • FS-7760 [mod_sofia] Improved the xml fetch lookup for channels on nightmare transfer
  • FS-7922 [mod_commands] Added uuid_redirect API command. This provides the equivalent functionality of the dptools “redirect” application as an api command.

The following bugs were squashed:

  • FS-7769 [mod_conference] Fixed vmute on personal canvas and fixed changing layouts on personal canvas
  • FS-7893 [mod_conference] Fixed a bug causing muxing write thread to occasionally not close on shutdown
  • FS-7904 Fixed alpha image patching
  • FS-7906 [mod_av] Correct crash from multi-threaded opening or closing of multiple files at the same time
  • FS-7913 [mod_conference] Fixed miscast variable
  • FS-7918 [mod_kazoo] Small fixes in mod_kazoo
  • FS-7917 [mod_sofia] Fixed default config, we really shouldn’t be setting ext-*-ip settings for ipv6 profiles
  • FS-7908 FS-7092 Fixed the generated sdp including telephone-event for the rates of video codecs (90000) when it should only be audio codec rates
  • FS-7927 Fixed a typo in variable name: eavesdrop_annnounce_macro

FreeSWITCH Week in Review (Master Branch) July 18th-July 24th

Hello, again. This past week in the FreeSWITCH master branch we had 46 commits. The new features this week are: the addition of getcputime to retrieve FreeSWITCH process CPU usage, added support for 80 ms, 100 ms, 120 ms packetization to mod_opus,  and added H.263 codec support to mod_av.

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

Improvements in build system, cross platform support, and packaging:

  • FS-7860 Prevent a switch_rtp header conflict
  • FS-7130 Make /run/freeswitch persistent, so it will start under systemd

The following bugs were squashed:


Announcing the ClueCon Coder Games!

So You Think You Can Code?

You’ve seen the presentations, you’ve asked your questions, you have the resources, now it is your time to shine by using the sponsor APIs to create something exciting! We want to see what you can do! Bonus points for each API you can incorporate! Go check out the APIs now to get a head start on the competition and get those creative juices flowing! You have less than two weeks to prepare!

Sponsor APIs: FreeSWITCH, Tropo, Kandy, Twilio, Plivo, and more…

IPv6 Round Table

IPv6 and why you should deploy it ASAP: John Brzozowski, Fellow and Chief Architect, IPv6 at Comcast, Bill Sandiford President of CNOC, Member of the board at ARIN.

Flowroute – Jeopardy

Think you know about SIP? Do you know enough to beat the competition? Flowroute is hosting a SIP themed game of Jeopardy! Put your brain to the test and come see how much you really know!

DTMF-u

Do you like all things games? Well, then this is the game for you! But there is a twist! Before you can win the game you must build it! Using your choice of language or API you must build a game! There will be three categories of DTMF-u; Tic-tac-toe, DTMF pattern recognition, or Freestyle. You could build something that plays a random DTMF sequence, receives player input, and then either continues or fails the player. Or maybe a WebRTC based game of tic-tac-toe? Or surprise us! Have fun with it! Creative ways to fail a player may give you bonus points. The top three games will be played by everyone and the winner of each will take home a prize! All gaming bots will be screened via a Turing test to ensure no unintended apocalyptic consequences.

Show and Tell

Alright, now is your chance! You have been playing with the code all day and this is your chance to show off! We want to know what you’ve done and how you did it. Use your creativity and skills as a programmer to impress the judges and win a prize! This is a no holds barred all out free for all! Any language doing anything! Knock our socks off and take home a fabulous prize and a year’s supply of bragging rights!

Raffle Grand Prize!

The grand prize is a laser engraved commemorative FreeSWITCH 1.6 Edition dual-core 13″ Retina MacBook Pro!

 


FreeSWITCH Week in Review (Master Branch) July 11th-July 17th

Hello, again. This past week in the FreeSWITCH master branch we had 43 commits. We had a number of cool new features this week including: added functionality for capturing screenshots from both legs to uuid_write_png, the addition of new multi-canvas and telepresence features in mod_conference, the addition of vmute member flag to mod_conference, and an API for removing an active ladspa effect on a channel.

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-7769 [mod_conference] Add new multi-canvas and telepresence features
  • FS-7847 [mod_conference] Add layers that do not match the aspect ration of conference by using the new hscale layer param for horizontal scale, and add zoom=true param to crop layer instead of letterbox, add grid-zoom layout group that demonstrates these layouts, and fix logo ratios and add borders too.
  • FS-7813 [mod_conference] Add vmute member flag.
  • FS-7846 [mod_dptools] Add eavesdrop_whisper_aleg=true and eavesdrop_whisper_bleg=true channel variables to allow you to start eavesdrop in whisper mode of specific call leg
  • FS-7760 [mod_sofia] Revise channel fetch on nightmare transfer and add dial-prefix and absolute-dial-string to the nightmare xml
  • FS-7829 [mod_opus] Add sprop-stereo fmtp param to specify if a sender is likely to send stereo or not so the receiver can safely downmix to mono to avoid wasting receiver resources
  • FS-7830 [mod_opus] Added use-dtx param in config file (enables DTX on the encoder, announces in fmtp)
  • FS-7824 [mod_png] Add functionality for capturing screenshots from both legs to uuid_write_png
  • FS-7549 [mod_ladspa] Added an API for removing an active ladspa effect on a channel. For conformance reasons, the uuid_ladspa command now accepts ‘stop’ and ‘start’, while the previous functionality (without any verb) which will simply add ladspa remains intact.

Improvements in build system, cross platform support, and packaging:

  • FS-7845 [mod_conference] Break up mod_conference into multiple source files to improve build performance
  • FS-7769 [mod_conference] Fixed a build issue
  • FS-7820 Fix build system typo. Don’t assign the same variable twice.
  • FS-7043 Fixed apr1 unresolved symbols in libfreeswitch.so.1.0.0
  • FS-7130 Make /run/freeswitch persistent in the Debian packages, so it will start under systemd

The following bugs were squashed:

  • FS-7849 [verto] Remove extra div breaking full screen in html
  • FS-7832 [mod_opus] Fixes when comparing local and remote fmtp params
  • FS-7731 [mod_xml_cdr] Fixed a curl default connection timeout
  • FS-7844 Fix packet loss fraction when calculating loss average

FreeSWITCH Week in Review (Master Branch) July 4th-July 11th

Hello, again. This passed week in the FreeSWITCH master branch we had 54 commits. We had a bunch of new commits for features this week! Those pull requests are really helping to get things reviewed and accepted. Keep it up community!

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-7780 Add new channel variable max_session_transfers. If set, this variable is used to count the number of session transfers allowed instead of the max_forwards variable. If not set, the existing behavior is preserved.
  • FS-7783 Add channel variable for capturing DTMF input when using play_and_get_digits when the response does not match
  • FS-7772 [mod_opus] Add functionality to keep FEC enabled on the encoder by modifying the bitrate if packet loss changes (Opus codec specific behaviour).
  • FS-7799 [mod_png] Add API command uuid_write_png
  • FS-7801 [mod_opus] Added support to set CBR mode
  • FS-7685 [mod_say_nl] Fix Dutch numbers pronunciation
  • FS-7198 Add coma separated values and reverse ranges for time-of-day and day-of-week matches
  • FS-7809 [mod_opus] Added 60 ms ptime for Opus at 8 khz ( opus@8000h@60i )
  • FS-7405 [mod_dialplan_xml] Fix condition regex=”all” to work with time conditions
  • FS-7819 [mod_opus] Restore bitrate (if there’s no more packet loss) and added step for 60 ms
  • FS-7773 [mod_sofia] Adding additional transfer events when the fire-transfer-events=true profile parameter is set
  • FS-7820 FreeSWITCH automated unit test and micro benchmark framework

Improvements in build system, cross platform support, and packaging:

  • FS-7628 [mod_erlang_event] Removed unused variables causing a compilation error
  • FS-7776 Add mod_kazoo to packaging

The following bugs were squashed:

  • FS-7778 [mod_sofia] Fixed a bug causing a SQL statement to fail because of a double quote instead of a single quote
  • FS-7754 [freetdm] Fixed a bug relating to single digit dial-regex with analog devices
  • FS-7785 [mod_opus] Fix for invalid ptime 30 ms for opus@8000h . Replaced 30 ms with 40 ms.
  • FS-7762 [mod_av] Handle buffer allocation failures of large buffers

And, this passed week in the FreeSWITCH 1.4 branch we had no new commits merged in from master.


FreeSWITCH Week in Review (Master Branch) June 27th-July 3rd

Hello, again. This passed week in the FreeSWITCH master branch we had 49 commits. This week we had a bunch of new features with most of them being helpful little improvements, but we also had two new modules merged in! The 2600hz guys added mod_kazoo and William King merged in mod_smpp. You can find out more about mod_smpp by going here. And, the 2600hz patches are all slated to be merged in by the 1.6 release.

Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-7732 Continue recording with uuid_transfer
  • FS-7752 [mod_rayo] Increase maximum number of elements from 30 to 1024 to allow adhearsion to create large grammars to navigate IVR menus.
  • FS-7750 [mod_commands] Allow for uuid_setvar to handle arrays
  • FS-7758 [mod_loopback] Emit an event if a loopback bowout occurs
  • FS-7759 [mod_sofia] Added the channel variable ignore_completed_elsewhere to suppress setting the completed elsewhere cause
  • FS-7771 Set a channel variable if the recording is terminated due to silence hits
  • FS-7760 Added xml fetch for channels to externally support nightmare transfer depends on channel-xml-fetch-on-nightmare-transfer profile param (default is disabled)
  • FS-7730 [mod_smpp] Added mod_smpp as an event handler module
    and fixed the default configs to provided sample load option for mod_sms and mod_smpp
  • FS-7774 Add mod_kazoo

Improvements in build system, cross platform support, and packaging:

  • OPENZAP-238 [freetdm] Fix some GSM compilation errors and do a bit of code cleanup
  • OPENZAP-237 [freetdm] Use __func__ instead of __FUNCTION__ to comply with c99 in gcc 5.1

The following bugs were squashed:

  • FS-7734 [mod_nibblebill] Fixed a deadlock
  • FS-7726 Fixed a bug with recording a video session on DTMF command
  • FS-7721 Fixed a segfault caused when using session:recordFile() and session:unsetInputCallback in a lua script
  • FS-7429 [mod_curl] Fixed to output valid json
  • FS-7746 [mod_verto] Fixed a device permission error in verto client
  • FS-7753 [mod_local_stream] Fixed some glitching and freezing video when using hold/unhold
  • FS-7761 [core] Fix shutdown races running api commands during shutdown
  • FS-7767 [mod_sofia] Fixed a segfault caused by invalid arguments to sip_dig
  • FS-7744 [mod_conference] Fixed a bug causing the first user’s video stream to stop when another verto user calls the conference
  • FS-7486 [mod_sofia] Fixed the handling of queued requests
  • FS-7775 [mod_conference] Fix threading issue causing stuck worker threads
  • FS-7777 [mod_imagick] Fixed a regression causing a segfault when playing png & pdf in conference

And, this passed week in the FreeSWITCH 1.4 branch we had 2 commits merged in from master.

  • FS-7486 [mod_sofia] Fixed the handling of queued requests
  • FS-7750 [mod_commands] Set uuid_setvar to handle arrays

The FreeSWITCH 1.4.20 release is here!

The FreeSWITCH 1.4.20 release is here! This is a routine maintenance release and the resources are located here:

Security issues:

  • FS-7708 Fixed docs on enabling cert CN/SAN validation

New features that were added:

  • FS-7561 [mod_sofia] Add Perfect Forward Secrecy (DHE PFS)
  • FS-7564 [mod_rayo] Added new algorithms for offering calls to clients
  • FS-7623 [mod_amqp] Allow for custom exchange name and type for producers and fixed param name ordering bug caused by exposing these params
  • FS-7720 Improve play_and_detect_speech to set current_application_response channel variable as follows: “USAGE ERROR”: bad application arguments’, “GRAMMAR ERROR”: speech recognizer failed to load grammar, “ASR INIT ERROR”: speech recognizer failed to allocate a session, and “ERROR”: any other errors
  • FS-7743 [mod_skinny] Updated SKINNY on-hook action to hang up all calls on a device, except those in a short list of call states (or perform a blind transfer) and added a hook after completing the hangup operation to start ringing if there is an inbound call active on the device.

Improvements in build system, cross platform support, and packaging:

  • FS-7610 Fixed a gcc5 compilation issue
  • FS-7426 Only disable mod_amqp on Debian Squeeze and Wheezy
  • FS-7297 g729 installer

The following bugs were squashed:

  • FS-7582 FS-7432 Fixed missing a=setup parameter from answering SDP
  • FS-7650 [mod_verto] Fixed crash when making a call from a verto user with profile-variables in their user profile
  • FS-7678 Fixed for fail_on_single_reject not working with | bridge
  • FS-7612 Fixed invalid json format for callflow key
  • FS-7621 [mod_shout] Fixed a slow interrupt
  • FS-7432 Fixed missing a=setup parameter from answering SDP
  • FS-7573 Fixed 80bit tag support for zrtp
  • FS-7636 Fixed an issue with transfer_after_bridge and park_after_bridge pre-empting transfers
  • FS-7654 Fixed an issue with eavesdrop audio not working correctly with a mixture of mono and stereo
  • FS-7579 [mod_conference] Fixed a bug not allowing suppression of play-file-done
  • FS-7593 [mod_skinny] Fixed a bug where skinny phones would stomp on each other in database when thundering herd occurs
  • FS-7597 [mod_codec2] Fixed encoded_data_len for MODE 2400, it should be 6 bytes. Also replaced 2550 bps bitrate (obsoleted operation mode) by 2400
  • FS-7604 [fs_cli] Fixed fs_cli tab completion concurrency issues on newer libedit
  • FS-7258 FS-7571 [mod_xml_cdr] Properly encode xml cdr for post to web server
  • FS-7607 Update URLs to reflect https protocol on freeswitch.org websites and update additional URLs to avoid 301 redirects.
  • FS-7479 Fixed a crash caused by large RTP/PCMA packets and resampling
  • FS-7524 [mod_callcenter] Fixing tiers, level and position should default to 1 instead of 0
  • FS-7622 [mod_amqp] Make sure to close the connections on destroy. Currently the connection is malloc’d from the module pool, so there is nothing to destroy.
  • FS-7689 [mod_lua] Fixed a bug with lua not loading directory configurations
  • FS-7489 [mod_unimrcp] Fixed a TTS Audio Queue Overflow
  • FS-7467 [mod_callcenter] Fixing stuck channels using uuid-standby agents
  • FS-7429 [mod_curl] Fixed a json formatting error