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 Week in Review (Master Branch) March 26th – April 2nd

This week we had a number of awesome new features, but the most work went into adding translations to the verto communicator application! And we definitely couldn’t have done it without help from our wonderful community members! So far, we have translations for English, Spanish, Portuguese, Italian, French, Danish, German, Polish, Russian, Swedish, Indonesian, and Chinese. If you speak another language and would like to see that language available please submit a pull request with a translation!

Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! This week we have Chad Phillips talking about his FreeSWITCH Kickstart project! And, head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-8983 [mod_avmd] Enable on outbound channel to make debugging easier
  • FS-8875 [mod_avmd] Enable faster beep detection
  • FS-8688 [mod_vpx] Implement vp9 processing to avoid chrome hang
  • FS-8972 [verto_communicator] Add i18n using angular-translate and static file loader
  • FS-7125 [mod_sofia] Added an event “wrong_calls_state”. This is for fail2ban logging.
  • FS-8990 [mod_verto] Adding verto_login header to verto::client_disconnect event
  • FS-8991 [verto_communicator] Adding translations for French. Thanks Tristan Mahé
  • FS-8989 [verto_communicator] Adding Portuguese i18n translations
  • FS-8991 [verto_communicator] Adding French Canadian
  • FS-8998 [verto_communicator] Adding German, Spanish, Catalan, Chinese, Polish, Russian, Swedish and Indonesian translations.
  • FS-8992 [core] Indicate end of candidates in SDP to aid in the resolution of an interop issue with Mozilla
  • FS-9000 [mod_conference] Set conference flags or conference member flags with individual variables per flag

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

  • FS-8988 [mod_avmd] Rename files to include avmd in their name.
  • FS-8971 [mod_amqp] There are two different status variables with two different meanings. This splits them back apart.
  • FS-8933 [scripts] WIP Fix some breakage on raspbian as we don’t want the FS repos there yet because we don’t have armhf packages at this time

The following bugs were squashed:

  • FS-8982 [core] Fixed an issue with play_fsv and play_yuv writing blank_img in parallel
  • FS-8918 [core] Fixed an issue with a 10 Second timeout after Notify during Proxy refer
  • FS-9002 [core] Fixed an issue with rtp timeout code parsing on video but its designed for audio
  • FS-8749 [mod_conference] Fixed an issue when loading a video (mp4) for a conference using the “conference play” command “conference pause_play”
  • FS-8993 [mod_av][mod_conference] Fixed a sync issue on conference playback for a video that is faster frame rate than the conference
  • FS-8995 [verto_communicator] Added missing toastr in settings controller
  • FS-8990 [verto communicator] Added verto_client_address to verto and presence events
  • FS-8996 [verto_communicator] Fixed a typo in CAMERA_SETTINGS id and added some Italian translation
  • FS-8997 [verto_communicator] Fixed fallbackLanguage
  • FS-9012 [verto_communicator] Fixing sidebar in narrow resolutions clipping the video
  • FS-8999 [mod_erlang_event] Fixed broken outbound connection
  • FS-8913 [mod_sofia] Fixed a transfer issue when using bypass_media + SRTP + Inbound late negotiation
  • FS-9004 [mod_http_cache] Set http get timeout on thread that is actively downloading with the value from the download-timeout configuration and added download-timeout param to prevent http_get from waiting unbound time for downloading to finish. Prevented prefetch threads from blocking if another thread is already downloading the same URL.

The FreeSWITCH 1.6.7 release is here!

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

Release files are located here:

New features that were added:

  • FS-8908 [verto communicator] Link to preview camera and microphone under settings
  • FS-7800 [verto communicator] Added support for calling extra screens with same extension as the original and place the parameter conferenceCanvasID with the desired canvas id into the call parameters in the same place bandwidth preferences are added
  • FS-8972 [verto_communicator] Fixed mute video translation and added i18n using angular-translate and static file loader
  • FS-8989 [verto_communicator] Adding Portuguese i18n translations
  • FS-8991 [verto_communicator]Adding translations for French and added French Canadian. Thanks Tristan Mahé
  • FS-8998 [verto_communicator] Adding German, Catalan, Polish, Russian, Swedish, Chinese, and Indonesian translations.
  • FS-8990 [mod_verto] Adding verto_login header to verto::client_disconnect event
  • FS-8735 [mod_sofia] Display update support for Panasonic devices
  • FS-6833 [mod_sofia] Allow FreeSWITCH to initiate late offer calls
  • FS-8879 [mod_sofia] Work on SIP UPDATE and attended transfer for IPv6
  • FS-8964 [mod_sofia] Make it possible to disable picture_fast_update INFO requests to de-clutter trace and logs
  • FS-7125 [mod_sofia] Added an event “wrong_calls_state”. This is for fail2ban logging
  • FS-8864 [core][mod_av] Improve video file playback
  • FS-8977 [mod_av][core] Add functionality to support the NVENC hardware encoded h264 in codec and files and  set default to enable hardware encoder on conference too
  • FS-8862 [core] Auto adjust on passthru
  • FS-8876 [core] Add CPU affinity to each video thread in a round robin fashion.
  • FS-8909 [core] Add feature to play background video while recording inbound video. This feature is suitable to provide some kind of feedback like an animation of a glowing record light etc.
  • FS-8870 [core] Add human-readable call quality statistics logs on call hangup
  • FS-7776 [mod_kazoo] Integrate the module into build system
  • FS-8737 [mod_kazoo] Add required variables to default filter
  • FS-8595 [mod_conference] Improve auto bitrate in personal canvas mode and do not let auto bitrate exceed native picture size
  • FS-8921 [mod_conference] Re-designed the banner code
  • FS-8685 [mod_conference] Multiple member arguments for conference related API command. The new format is: ‘conference foo relate 1 2,3,4 nohear’ or ‘conference foo relate 1,2 3 nospeak
  • FS-9000 [mod_conference] Set conference flags or conference member flags with individual variables per flag
  • FS-8822 [mod_callcenter] Added a real-time counter for calls in a queue.
  • FS-8903 [mod_local_stream] Add a logo image and some parameters to control its behavior
  • FS-8932 [mod_managed] Add in process load in-process plugins
  • FS-8688 [mod_vpx] Add more detailed logs and tweak some parameters for the coming libvpx 1.5.0 and implement vp9 processing to avoid chrome hang
  • FS-8728 [mod_amqp] Adding logging profile and functionality and added default configurations
  • FS-8971 [mod_amqp] There are two different status variables with two different meanings. This splits them back apart.
  • FS-8983 [mod_avmd] Enable avmd on outbound channel to make debugging easier
  • FS-8875 [mod_avmd] Enable faster beep detection

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

  • FS-8111 [mod_sofia] ‘sofia’ API command auto-complete cleanup
  • FS-8763 [mod_sofia] Changed to set is_auth only after the results for switch_ivr_set_user
  • FS-8782 [mod_verto] Fixed build error for missing __bswap_64 on Solaris
  • FS-8778 [mod_verto] Define __bswap_64 for FreeBSD as well
  • FS-8195 [src] Allow Solaris privileges to work on both Solaris and derivatives
  • FS-8776 [build] Support GNU make parallel builds
  • FS-8942 [build] Pass compiler to libvpx configure to account for environments without gcc
  • FS-8871 [configuration] Fixed encoding “&” and “<” symbols in vanilla configuration
  • FS-8808 [core] Fixed ^D in fs_cli with editline to delete char under cursor, not just backspace
  • FS-8818 [core] Refactor X-PRE include to not toss error if there are no files that match the include.
  • FS-8992 [core] Indicate end of candidates in SDP to aid in the resolution of an interop issue with Mozilla
  • FS-8788 [Debian] Enabling stacksize limits for Debian packaging
  • FS-8933 [Debian] Basic FreeSWITCH from source installer that works on Raspian and Debian. Also installs VertoCommunicator and LetsEncrypt SSL Certs. LetsEncrypt requires the machine to have a public IP and DNS for the FDQN functioning properly in public DNS
  • FS-8948 [Debian] Handle non-existent configuration in Debian postinst causing failure to copy vanilla configuration on installation
  • FS-8841 [Debian] Prevent hanging by pushing events to another queue to be processed in a different sofia thread.
  • FS-7389 [CentOS] Correct the location of the freeswitch users homedir in the specfile
  • FS-8186 [Windows] Fixed build with –disable-libyuv to ensure projects don’t incorrectly depend on libapr directly
  • FS-8952 [Windows] Fixed an issue with unreachable code preventing build and simplify conditions
  • FS-8779 [mod_shout] Properly detect lame/lame.h for FreeBSD
  • FS-8808 [mod_avmd] Code refactor to fix indentation and conditional loops
  • FS-8961 [mod_avmd] Add optional requirement of consecutive streak of estimations in SMA buffer to avoid false positives, fix definitions, and add options to control debugging/printing
  • FS-8988 [mod_avmd] Rename files to include avmd in their name.
  • FS-8878 [mod_amr] Fixed compiling without the library installed
  • FS-8756[mod_say_nl] Improve dutch localisation
  • FS-8933 [scripts] WIP Fixed some breakage on Raspbian as we don’t want the FS repos there yet as we don’t have armhf packages at this time

The following bugs were squashed:

  • FS-8719 [mod_conference] Fixed a segfault caused by building without video support, but specifying video_mute_png variable for a conference member
  • FS-8752 [mod_conference] Fixed a pixelation issue in initial seconds of recording a conference
  • FS-8354 [mod_conference] Fix for G722 audio issues
  • FS-8938 [mod_conference] Clear res_id when setting the same res_id to another member
  • FS-8951 [mod_conference] Video lockup in conference due to race condition
  • FS-8957 [mod_conference] Fix for video image blipping on personal canvas mode when 1 participant is watching video on hold
  • FS-8750 [mod_conference] Fixed a set but not used variable warning
  • FS-8749 [mod_conference] Fixed an issue when loading a video (mp4) for a conference using the “conference play” command “conference pause_play”
  • FS-7915 [mod_sofia] Parse and store multiple path fields
  • FS-8663 [mod_sofia] Added saftey checks for ;fs_path= command
  • FS-8759 [mod_sofia] Fixed a segfault caused by device or provider timing interactions
  • FS-8879 [mod_sofia] Fixed SIP UPDATE and attended transfer for ipv6
  • FS-8898 [mod_sofia] Log setVariable at debug to easier tell what variables are being set from scripts
  • FS-8913 [mod_sofia] Fixed a transfer issue when using bypass_media + SRTP + Inbound late negotiation
  • FS-8796 [mod_verto] Fixed and cleaned up the mcast code
  • FS-7132 [mod_verto] Fixed an issue with multiple websockets overwriting the jsock hash entry for a given sessionid causing a disconnection with the verto javascript application.
  • FS-8842 [verto] Fixed an issue where calls created using the originate command lose audio when left on hold for 45 seconds
  • FS-8877 [verto] Fixed an issue caused by Chrome Canary removing some audio mandatory constraints that break Verto
  • FS-8805 [verto] Added a sanity check on array
  • FS-8945 [verto_communicator] Don’t show preview_settings window during a video conference call or you will lose conference video stream until you refresh the page
  • FS-8842 [verto] Fixed an issue where calls created using the originate command lose audio when left on hold for 45 seconds
  • FS-8877 [verto] Fixed an issue caused by Chrome Canary removing some audio mandatory constraints that break Verto
  • FS-8839 [verto_communicator] Fixed screenshare not displaying in the proper conference when caller is transferred to another conference.
  • FS-8963 [verto_communicator] Fixed the status call label
  • FS-8966 [verto_communicator] Fixed the ability to cancel dialing while doing speed test
  • FS-8970 [verto_communicator] Set useSpeak/useMic/useCamera to ‘none’ when calling a secondary canvas
  • FS-8765 [verto_communicator] Make the preview button work properly
  • FS-7800 [verto_communicator] Disable video floor changes on multi-canvas
  • FS-8995 [verto_communicator] Added missing toastr in settings controller
  • FS-8990 [verto communicator] Added verto_client_address to verto and presence events
  • FS-8996 [verto_communicator] Fixed a typo in CAMERA_SETTINGS id and added some Italian translation
  • FS-8997 [verto_communicator] Fixed fallbackLanguage
  • FS-9012 [verto_communicator] Fixing sidebar in narrow resolutions clipping the video
  • FS-8720 [core] Fixed a segmentation fault when switch_channel_str2cause is called
  • FS-8960 [core] Reset the buffer position to zero to ensure correct calculation of average
  • FS-8975 [core] Fixed the dtmf_type and sofia profile parameter dtmf-type variables
  • FS-8731 [core] Fixed a crash when leg-b invite video in voice call
  • FS-8734 [core] Cleaned up video jitter buffer by adding some formatting to the debugging logs so the text jumps around less and fixing sequence number rollover code to handle rollover better.
  • FS-8713 [core] Fixed a crash on bad video rtp stream by pushing a patch to make the sizes match. This was the original intention since we want to preserve the packet as-is while in the jitter buffer
  • FS-8721 [core] Fixed an eavesdrop memory leak caused by moving bug_remove_all after destroy where it’s more than safe to kill bugs indiscriminately
  • FS-8673 [core] Fixed a core dump on playback after “Decode Codec is not initialized!” log message
  • FS-8571 [core] Add missing ENABLE_SRTP ifdef to allow building without SRTP
  • FS-8770 [core] Fixed media_bug_answer_req=true creating a file for unanswered calls
  • FS-8786 [core] Fixed a fax hangup problem when testing long faxes over T.38 and rtp-timeout-sec is set to 300
  • FS-8802 [core] Fixed an issue caused by the sent timestamp of RTP rolling over to 0 and hitting an error condition causing it to stop sending audio
  • FS-8726 [core] Fixed a spurious case of a thread stuck and saturating CPU
  • FS-8812 [core] Respect in_thread_only parameter in switch_channel_check_signal()
  • FS-8809 [core] Fixed an undeclared MAP_POPULATE causing compliation failure
  • FS-8816 [core] Fixed switch_core_hash_insert_destructor not checking switch_hashtable_insert_destructor() returns
  • FS-8830 [core] Added SDP line separator fix for SDP generated by the core. Sofia when giving an SDP through SOA was parsing the SDP and rewriting it. For endpoints that use the core SDP as is will have more accurate SDP now.
  • FS-8806 [core] Change group_confirm_cancel_timeout to apply only to the legs that answer the call to prevent the remaining legs ringing indefinitely if the answered leg hangs up while executing the group confirm script.
  • FS-8821 [core] Fixed switch_core_hash_insert_locked and switch_core_hash_insert_wrlock to make sure they check the status of the operation before returning a switch_status.
  • FS-8862 [core] Auto adjust on passthru
  • FS-8811 [core] Fixed an intermittent crash
  • FS-8851 [core] Fix for codec for recording negotiated before call answered
  • FS-8904 [core] Fix memory leak in img_write_text
  • FS-8905 [core] Fixed for a heap buffer overflow detected by ASAN in the img patch/img overlay and it may show up as a rare segfault when using video with banners
  • FS-8864 [core] Set video ready on first push to avoid catch 22 on some video files and improve video file playback
  • FS-8910 [core] Properly negotiate SDES when receiving an SDP with a=crypto:0 with the wanted crypto suite, we should maintain that crypto tag in the local SDP in order for SDES setup to succeed.
  • FS-8914 [core] Fixed mp4 recording cutting off the end in some cases by adding code to mitigate the sync of the end of the file encoding to add some padding to the end
  • FS-8761 [core] Fixed a memory leak
  • FS-8855 [core] Fixed the calculation of variance of tone’s frequency estimator to prevent flawed audio
  • FS-8928 [core] Flag a binding error when using EventConsumer::bind with invalid event name instead of blindly using custom
  • FS-8168 [core] Use copy image functions from libyuv instead of our home rolled versions as the libyuv versions have optimizations
  • FS-8982 [core] Fixed an issue with play_fsv and play_yuv writing blank_img in parallel
  • FS-8918 [core] Fixed an issue with a 10 Second timeout after Notify during Proxy refer
  • FS-9002 [core] Fixed an issue with rtp timeout code parsing on video but its designed for audio
  • FS-8847 [core] When a call ends sometimes the RTP stack complains of a bad poll. This is normal caused by shutting down the rtp on hangup. Add some code to catch the condition that is ok and still print the error otherwise
  • FS-8789 [mod_conference][mod_av] Fix warning thats printed when it shouldn’t be and remove ability to swap to personal canvas while recording and prevent recording while personal canvas is on.
  • FS-8864 [mod_av] Fixed regression to recording to improve file playback
  • FS-8868 [mod_av] Set recording app to respect bandwidth set in SDP
  • FS-8916 [mod_av] Fixed an issue with newer x264 library returning Encoding Error -1 for newer x264 libraries
  • FS-8836 [mod_av] Fixed a deprecated warning on newer ffmpeg to support ffmpeg 2.8 and 3.0 in addition to 2.6
  • FS-8914 [mod_av] Adding code to mitigate the sync of the end of the file encoding to add some padding to the end
  • FS-8973 [mod_av] Enable libavcodec experimental native implementation features (such as AAC) by default
  • FS-8959 [mod_av] Refactor to improve memory processing and prevent leaks in encoding h264
  • FS-8993 [mod_av][mod_conference] Fixed a sync issue on conference playback for a video that is faster frame rate than the conference
  • FS-8656 [src] Fix switch_event_channel_broadcast identifier redeclared
  • FS-8777 [mod_redis] Add the missing netinet/in.h include required to build mod_redis/credis.c for FreeBSD
  • FS-8768 [mod_callcenter] Releasing database handle after reserving agent
  • FS-8856 [mod_callcenter] Updating a member fails because the agent_dispatch_thread removed the member just before it tried to update it.
  • FS-8838 [mod_rayo] Improve logging and error handling when executing API on output component. Attempt to make output component stop a little more robust and do a better job of detecting when output component completed because of hangup and preventing operations on output component when call has ended.
  • FS-8811 [mod_local_stream] Fixed an intermittent segfault and a crash caused by dividing by 0
  • FS-8866 [mod_erlang_event] Fixed memory leaks caused by not destroying session event_hash and events in queue
  • FS-8999 [mod_erlang_event] Fixed broken outbound connection
  • FS-8871 [configuration] Fixed encoding “&” and “<” symbols in vanilla configuration
  • FS-8943 [configuration] Fixed misspellings in two comments
  • FS-8884 [build] Add –disable-libyuv and –disable-libvpx configure arguments to disable building these libraries on FreeBSD and smartos
  • FS-8915 [mod_smpp] Shortened event header name
  • FS-8950 [mod_skinny] Fixed a few memory leaks
  • FS-8946 [mod_xml_cdr] Fixed a segfault on call after loading with no config file or event bind failure causing the module load to fail
  • FS-8937 [mod_easyroute] Handle a segfault when using bad customer query or on query error
  • FS-8775 [mod_say_de] Add function SST_SHORT_DATE_TIME to mod_say_de.c and some language tweaks
  • FS-8406 [mod_rtmp] Add options to scale down cavas size, fps, and bandwidth
  • FS-8736 [spandsp] Fixed missing MEMMOVE macro in spandsp autoconf
  • FS-8891 [RTP] Fix for T38 fax failing between 2 freeswitch boxes with high cpu usage
  • FS-8312 [mod_sangoma_codec] Some maintenance clean-up and reset the whole trans-coding session memory on destroy to make debugging easier
  • FS-8971 [mod_amqp] Resolve global structure handling issue causing a core dump. Thanks to Ben Hood for reporting the issue.

FreeSWITCH Week in Review (Master Branch) March 19th – March 26th

This week we have added functionality to support the NVENC hardware encoded h264 codec, files, and default on conference.

Join us 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-8964 [mod_sofia] Make it possible to disable picture_fast_update INFO requests to de-clutter trace and logs
  • FS-8977 [mod_av][core] Add functionality to support the NVENC hardware encoded h264 in codec and files and  set default to enable hardware encoder on conference too

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

  • FS-8186 [Windows] Fixed build with –disable-libyuv to ensure projects don’t incorrectly depend on libapr directly
  • FS-8961 [mod_avmd] Add optional requirement of consecutive streak of estimations in SMA buffer to avoid false positives, fix definitions, and add options to control debugging/printing

The following bugs were squashed:

  • FS-8960 [core] Reset the buffer position to zero to ensure correct calculation of average
  • FS-8975 [core] Fixed the dtmf_type and sofia profile parameter dtmf-type variables
  • FS-8312 [mod_sangoma_codec] Some maintenance clean-up and reset the whole trans-coding session memory on destroy to make debugging easier
  • FS-8963 [verto_communicator] Fixed the status call label
  • FS-8966 [verto_communicator] Fixed the ability to cancel dialing while doing speed test
  • FS-8970 [verto_communicator] Set useSpeak/useMic/useCamera to ‘none’ when calling a secondary canvas
  • FS-8765 [verto_communicator] Make the preview button work properly
  • FS-7800 [verto_communicator] Disable video floor changes on multi-canvas
  • FS-8914 [mod_av] Adding code to mitigate the sync of the end of the file encoding to add some padding to the end
  • FS-8973 [mod_av] Enable libavcodec experimental native implementation features (such as AAC) by default
  • FS-8959 [mod_av] Refactor to improve memory processing and prevent leaks in encoding h264
  • FS-8836 [mod_av] Fixed a deprecated warning on newer ffmpeg to support ffmpeg 2.8 and 3.0 in addition to 2.6
  • FS-8750 [mod_conference] Fixed a set but not used variable warning
  • FS-8971 [mod_amqp] Resolve global structure handling issue causing a core dump. Thanks to Ben Hood for reporting the issue.

FreeSWITCH Week in Review (Master Branch) March 12th – March 19th

The biggest news this week is the edition of a Raspberry Pi installation script adding by Ken Rice. Grab yourself a Raspberry Pi and go try it out!

Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! This week we are talking about Raspberry Pi and the Internet of Things! And, head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-8932 [mod_managed] Add in process load in-process plugins
  • FS-8933 [Debian] Basic FreeSWITCH from source installer that works on Raspbian and Debian. Also installs VertoCommunicator and LetsEncrypt SSL Certs. LetsEncrypt requires the machine to have a public IP and DNS for the FDQN functioning properly in public DNS
  • FS-8870 [core] Add human-readable call quality statistics logs on call hangup
  • FS-7800 [verto communicator] Added support for calling extra screens with same extension as the original and place the parameter conferenceCanvasID with the desired canvas id into the call parameters in the same place bandwidth preferences are added

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

  • FS-8948 [Debian] Handle non-existent configuration in Debian postinst causing failure to copy vanilla configuration on installation
  • FS-8841 [Debian] Prevent hanging by pushing events to another queue to be processed in a different sofia thread.
  • FS-8942 [build] Pass compiler to libvpx configure to account for environments without gcc
  • FS-8952 [Windows] Fixed an issue with unreachable code preventing build and simplify conditions

The following bugs were squashed:

  • FS-8938 [mod_conference] Clear res_id when setting the same res_id to another member
  • FS-8951 [mod_conference] Video lockup in conference due to race condition
  • FS-8957 [mod_conference] Fix for video image blipping on personal canvas mode when 1 participant is watching video on hold
  • FS-8943 [configure] Fixed misspellings in two comments
  • FS-8950 [mod_skinny] Fixed a few memory leaks
  • FS-8946 [mod_xml_cdr] Fixed a segfault on call after loading with no config file or event bind failure causing the module load to fail
  • FS-8937 [mod_easyroute] Handle a segfault when using bad customer query or on query error
  • FS-8855 [core] Fixed the calculation of variance of tone’s frequency estimator to prevent flawed audio
  • FS-8928 [core] Flag a binding error when using EventConsumer::bind with invalid event name instead of blindly using custom
  • FS-8168 [core] Use copy image functions from libyuv instead of our home rolled versions as the libyuv versions have optimizations
  • FS-8406 [mod_rtmp] Add options to scale down cavas size, fps, and bandwidth
  • FS-7915 [mod_sofia] Parse and store multiple path fields
  • FS-8663 [mod_sofia] Added saftey checks for ;fs_path= command
  • FS-8945 [verto_communicator] Don’t show preview_settings window during a video conference call or you will lose conference video stream until you refresh the page

FreeSWITCH Install Script for RaspberryPi

An install script for Raspbian and Debian 8 is now available.

This script makes it easy to deploy FreeSWITCH from source on your Raspberry Pi running Raspbian or on a standard machine running Debian Jessie.

Along with installing FreeSWITCH, Verto Communicator and LetsEncrypt are installed and configured. (Note: For LetsEncrypt to be configured you must have a valid public IP and hostname in DNS pointed at the machine.)

To use this script:

wget -O FreeSWITCH-debian-raspbian-installer.sh "https://freeswitch.org/stash/projects/FS/repos/freeswitch/browse/scripts/FreeSWITCH-debian-raspbian-installer.sh?raw"
chmod +x ./FreeSWITCH-debian-raspbian-installer.sh
./FreeSWITCH-debian-raspbian-installer.sh

Once the script completes, you will have FreeSWITCH installed to /usr/local/freeswitch, Verto Communicator in /var/www/html/vc, and if you set up the public IP and DNS name, LetsEncrypt SSL certificates installed.

fs-raspbian-debian-installer


FreeSWITCH Week in Review (Master Branch) March 5th – March 12th

This week the verto communicator link to previewing the camera and microphone in the settings, the ability to play background video while recording inbound video, and a re-design of the banner code in mod_conference.

Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! This week we have Doug Waller from Flowroute! And, head over to freeswitch.com to learn more about FreeSWITCH support.

New features that were added:

  • FS-8908 [verto_communicator] Link to preview camera and microphone under settings
  • FS-8909 [core] Add feature to play background video while recording inbound video. This feature is suitable to provide some kind of feedback like an animation of a glowing record light etc.
  • FS-8921 [mod_conference] Re-designed the banner code

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

  • FS-8878 [mod_amr] Fixed compiling without the library installed
  • FS-7389 [CentOS] Correct the location of the freeswitch users homedir in the specfile

The following bugs were squashed:

  • FS-8811 [mod_local_stream] Fixed a crash caused by dividing by 0
  • FS-8905 [core] Fixed a heap buffer overflow issue
  • FS-8910 [core] Properly negotiate SDES when receiving an SDP with a=crypto:0 with the wanted crypto suite, we should maintain that crypto tag in the local SDP in order for SDES setup to succeed.
  • FS-8914 [core] Fixed mp4 recording cutting off the end in some cases by adding code to mitigate the sync of the end of the file encoding to add some padding to the end
  • FS-8761 [core] Fixed a memory leak
  • FS-8866 [mod_erlang_event] Fixed memory leaks caused by not destroying session event_hash and events in queue
  • FS-8864 [mod_av] Fixed regression to recording to improve file playback
  • FS-8868 [mod_av] Set recording app to respect bandwidth set in SDP
  • FS-8916 [mod_av] Fixed an issue with newer x264 library returning Encoding Error -1 for newer x264 libraries
  • FS-8836 [mod_av] Fixed to support ffmpeg 2.8 and 3.0 in addition to 2.6
  • FS-8911 [mod_conference] Fixed a typo in conference_member
  • FS-8752 [mod_conference] Fixed a pixelation issue in initial seconds of recording a conference
  • FS-8898 [mod_sofia] Log setVariable at debug to easier tell what variables are being set from scripts
  • FS-8915 [mod_smpp] Shortened event header name

FreeSWITCH 1.7 Installed on Raspberry Pi 2

Freeswitch 1.7 + Raspberry Pi 2 = VoIP Sip Server

written by 

Original post can be found here: http://www.algissalys.com/how-to/freeswitch-1-7-raspberry-pi-2-voip-sip-server

Installing, Compiling and running FreeSWITCH on the Pi 2

The long and awaited for… FreeSWITCH 1.7 running on a Raspberry Pi 2 guide.

We’ll be using the latest (at the time of this writing) Raspbian image 2015-11-21-raspbian-jessie.img on a Raspberry Pi 2.  Thanks to the awesome FreeSWITCH team at https://freeswitch.org/ especially Brian West, Ken Rice, and William King for all of their efforts with the FreeSWITCH project and helping me to get this working.

 

Raspbian running on your Pi

You’ll first need to have the Raspbian image running on your Raspberry Pi.
 

Installing Dependencies

In order to compile FreeSWITCH and it’s modules, you need to install some dependencies.

Update your Pi packages

sudo apt-get update && sudo apt-get upgrade

The following packages were installed and I was able to successfully compile FreeSWITCH with the default modules in the modules.conf file, that were selected when I cloned the git master branch.  My default modules.conf of enabled modules is located at the bottom of this page for reference.  Note, If you enable/uncomment other modules in the modules.conf that gets created after running ./bootstrap.sh -j command below, you may require some additional dependencies.

sudo apt-get install autoconf automake devscripts gawk libjpeg-dev libncurses5-dev libtool-bin python-dev libtiff5-dev \ 
libperl-dev libgdbm-dev libdb-dev gettext libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev \
libsqlite3-dev libedit-dev libldns-dev libpq-dev libsndfile-dev libopus-dev liblua5.1-0-dev

pi 2 freeswitch install 01

These packages are required, but were already installed on my Raspbian (here for reference)

sudo apt-get install g++ git-core make pkg-config

These packages are required, but Installed by other packages. (here for reference)

sudo apt-get install libjpeg62-turbo-dev libtool

 

Clone git FreeSWITCH Repo

You can clone to any directory, but we’ll use the directory /usr/local/src and need to make it r/w to our user ($USER is a system variable, which will = the current user, pi in our case)

sudo chown $USER /usr/local/src

change to that directory

cd /usr/local/src

Clone the git repo (master branch)

git clone https://freeswitch.org/stash/scm/fs/freeswitch.git

 

Compile FreeSWITCH on the Raspberry Pi 2

Goto the FreeSWITCH source directory

cd /usr/local/src/freeswitch/

Confirm master branch

git checkout master

Returned: Already on ‘master’ Your branch is up-to-date with ‘origin/master’.

Build config files

./bootstrap.sh -j

Now we’re at the point where you can enable/disable custom modules to compile along with the FreeSWITCH framework.  In this build, I left all the modules in modules.conf default. You can always compile additional modules at a later point when they are needed.  I recommend leaving the modules.conf file alone if this is your first time compiling.

Run configure

./configure -C

Make (use jobs flag -j set to 3) in attempt to speed things up (this took ~30 minutes)

make -j3

Success!

pi 2 freeswitch install 02

Install FreeSWITCH

sudo make install

The FreeSWITCH binary is now located in the /usr/local/freeswitch/bin directory.

 

Compile sounds for FreeSWITCH

make cd-sounds-install cd-moh-install -j3

Goto FreeSWITCH bin directory

cd /usr/local/freeswitch/bin

Start FreeSWITCH

*It is advisable to skip this step if you are configuring FreeSWITCH to start up automatically at boot, as it creates files that are needed during run-time and it will fail when you use the init script/systemd to run it automatically. 

./freeswitch

check to see if it is running (just to make sure it compiled ok to this point)

ps aux | grep "freeswitch"

pi 2 freeswitch install 04

Auto Run FreeSWITCH at boot

We’ll add FreeSWITCH as a user, change a few permission, copy the startup script and test the auto start of Freeswitch.

Create FreeSWITCH user, add password and set permissions

cd /usr/local/
sudo adduser --quiet --gecos "FreeSWITCH Voice Platform" --ingroup daemon freeswitch
sudo chmod -R ug=rwx,o= /usr/local/freeswitch/
sudo chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*
sudo chown -R freeswitch:daemon /usr/local/freeswitch

 

Create link from source build to expected locations

sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch
sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
sudo mkdir /etc/freeswitch
sudo ln -s /usr/local/freeswitch/conf/freeswitch.xml /etc/freeswitch/freeswitch.xml
sudo chmod ug=rwx,o= /etc/freeswitch
sudo chown freeswitch:daemon /etc/freeswitch
sudo mkdir /var/lib/freeswitch
sudo chmod -R ug=rwx,o= /var/lib/freeswitch
sudo chown freeswitch:daemon /var/lib/freeswitch
sudo cp /usr/local/src/freeswitch/debian/freeswitch-sysvinit.freeswitch.default /etc/default/freeswitch
sudo chmod ug=rw,o= /etc/default/freeswitch
sudo chown freeswitch:daemon /etc/default/freeswitch

Create working log directory

sudo mkdir /var/log/freeswitch
sudo chmod -R ug=rwx,o= /var/log/freeswitch
sudo chown freeswitch:daemon /var/log/freeswitch

Copy the start-up script to /etc/init.d/ directory and change permissions

sudo cp /usr/local/src/freeswitch/debian/freeswitch-sysvinit.freeswitch.init  /etc/init.d/freeswitch
sudo chmod u=rwx,g=rx,o= /etc/init.d/freeswitch
sudo chown freeswitch:daemon /etc/init.d/freeswitch
sudo update-rc.d freeswitch defaults

FreeSWITCH will now auto start when the Raspberry Pi boots up

 

Reboot to confirm everything is working

sudo reboot

Check the status of FreeSWITCH

sudo /etc/init.d/freeswitch status

pi 2 freeswitch install 05

Manually start FreeSWITCH (for reference)

sudo /etc/init.d/freeswitch start

You may also want to confirm FreeSWITCH is listening on port 5060 (for troubleshooting)

netstat -ln

pi 2 freeswitch install 08

 

Register to Extension 1000

FreeSWITCH has a few default extensions.  As a simple test to see if FreeSWITCH is working, we’ll register a sip client to extension 1000, with the default password is 1234.

Change to user FreeSWITCH for editing of files or logging into fs_cli, since we have changed permissions of the directories in the above steps.

su freeswitch

Log into FreeSWITCH command line to assist in troubleshooting (type /exit to exit the FreeSWITCH command line)

fs_cli

Using your favorite SIP client on the same network as the FreeSWITCH server, register with extension 1000

  • SIP Proxy/Server = <raspberry-pi-ip-address>
  • SIP Port = 5060
  • User ID/Name = 1000
  • Password/Authentication = 1234

While you are logged into the fs_cli, turn on sip trace debug


sofia global siptrace on

Then from your SIP client, attempt to register, viewing the SIP trace can greatly assist in troubleshooting.

pi 2 freeswitch install 06

Once you are registered, try to call some test extensions

  • 9198 = tetris music
  • 9197 = mw tone
  • 9196 = echo test
  • 5000 = Default IVR

 

9198 was called from a sip client

pi 2 freeswitch install 07

 

References:

Raspberry Pi Model:

Raspberry Pi 2 Model B

Raspberry Pi Image:

2015-11-21-raspbian-jessie.img

cat /etc/*-release:

Raspbian GNU/Linux 8 (jessie)

Kernel (uname -ro):

4.1.19-v7+ GNU/Linux

FreeSWITCH Version:

FreeSWITCH Version 1.7.0+git~20160308T015910Z~b7227465b6~32bit (git b722746 2016-03-08 01:59:10Z 32bit)

 

Clean Git Folder (bring back to last commit state, deletes all untracked files, directories)

git clean -d -x -f

Get commit hash (only here for reference, on the specific commit that I used for compiling)

git log -1 --format="%H"

   Returned: b7227465b6943588bf7d1a1e61e0fcc829d6f43e

 

https://freeswitch.org/confluence/display/FREESWITCH/Debian+7