#author("2025-04-04T12:34:47+00:00","default:iseki","iseki")
#author("2025-04-04T12:34:54+00:00","default:iseki","iseki")
* FreeSwitch

- https://github.com/signalwire/freeswitch

** Install

*** dnf
**** CRB
- crb リポジトリの有効にしておかないと,devel の一部が dnf でインストールできない.

 dnf config-manager --set-enabled crb


**** install
 dnf install MariaDB-devel
 dnf install speex
 dnf install speex-devel
 dnf install ldns
 dnf install ldns-devel
 dnf install libedit-devel
 dnf install yasm
 dnf install libavformat-free
 dnf install libavformat-free-devel
 dnf install libswscale-free
 dnf install libswscale-free-devel
 dnf install lua-devel
 dnf install opus-devel
 dnf install libpq-devel
 dnf install libsndfile
 dnf install libsndfile-devel



*** Library

**** spandsp
- https://github.com/freeswitch/spandsp

<pre>
git clone https://github.com/freeswitch/spandsp.git
cd spandsp
./bootstrap.sh
./configure
make
make install
ldconfig
</pre>
**** sofia-sip
- https://github.com/freeswitch/sofia-sip

<pre>
git clone https://github.com/freeswitch/sofia-sip.git
cd sofia-sip/
./bootstrap.sh
./configure
make
make install
ldconfig
</pre>

**** speexdsp
- https://github.com/xiph/speexdsp

<pre>
git clone https://github.com/xiph/speexdsp.git
cd speexdsp/
./autogen.sh
./configure
make
make install
ldconfig
</pre>
**** libks
- https://github.com/signalwire/libks
- 要: libuuid-devel

<pre>
yum install libuuid-devel
git clone https://github.com/signalwire/libks.git
cd libks/
mkdir build
cd build/
cmake --install-prefix /usr/local ..
make
make install
ldconfig
</pre>
**** signalwire-c
- https://github.com/signalwire/signalwire-c

<pre>
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c/
mkdir build
cd build/
cmake --install-prefix /usr/local ..
make
make install
ldconfig
</pre>

- make install でエラーが出るが,たぶん開発環境には関係ないので無視.
<pre>
CMake Error at cmake_install.cmake:117 (file):
  file INSTALL cannot find "/usr/local/src/signalwire-c/build/copyright": No
  such file or directory.
</pre>
*** freeswitch
<pre>
git clone https://github.com/signalwire/freeswitch.git
cd freeswitch
./bootstrap.sh
./configure --prefix=/usr/local
make
</pre>



* OLD
** FreeSwitch [#w37f7f89]
*** 起動,停止 [#yabbfca1]
- /usr/local/freeswitch/bin/freeswitch -nc
- /usr/local/freeswitch/bin/freeswitch -stop


*** Memo [#q7971b66]
- UDP: 3478, 3479, 5060, 5062, 12000-17000


*** Download [#ca52e7e7]
- http://files.freeswitch.org/releases/freeswitch/


*** 1.6.9 [#x57bdca1]

**** modules.conf [#ued4b66b]
 #applications/mod_fsv
 #codecs/mod_opus
 #formats/mod_sndfile
 codecs/mod_siren
 xml_int/mod_xml_curl


**** コンパイル&インストール [#vd5b9d6f]
 # export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
 # ./configure --disable-libvpx --disable-libyuv
 lua の処理  (後述参照)
 # vi modules.conf
 # make
 # make install


*** 1.10.6 [#g32648dd]
**** 必要なライブラリ [#p958a0c5]
- [[spandsp3]] devel
- [[sofia-sip]]
- yum install sqlite-devel
- yum install speex-devel
- yum install ldns-devel


**** 結局 コンパイラが avx2をサポートしていないとのことで,コンパイルできず. [#jf232aca]
 disabling avx512: not supported by compiler


*** 1.6.5 [#n4ab88cf]
- CentOS だと 「色々パッケージが無い(または古い)」 と怒られる
- 最低 sqlite3, libldns はコンパイルして追加.


**** modules.conf [#ued4b66b]
 #applications/mod_fsv
 #codecs/mod_opus
 #codecs/mod_vpx
 #formats/mod_sndfile
 codecs/mod_siren
 xml_int/mod_xml_curl

**** コンパイル&インストール [#t0a3d41f]
 # export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig
 # ./configure
 lua の処理
 # vi modules.conf
 # make
 # make install


*** lua の処理 [#pd87fd78]

**** liblua.a, %%liblua.so%% [#ieeb67e0]
- 別途コンパイルする

 # cd src/mod/languages/mod_lua/lua
 # make linux
 # cp liblua.a /usr/local/lib
 # chmod o+r /usr/local/lib/liblua.a
 # cd ..
 # ln -s lus/*.h .

- %%vi Makefile (これは必要ないかも)%% 必要なし

 CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS) -fPIC
 ....
 liblua.so: $(BASE_O)
    $(CC) -shared -o $@ $(BASE_O)

**** libg7221 [#h9ec1f53]
- G.722.1用モジュール
- mod_siren で必要

 # git clone https://freeswitch.org/stash/scm/sd/libg7221.git
 # cd libg7221
 # ./autogen.sh 
 # ./configure 
 # make
 # make install

*** Config [#if8dcdec]
**** conf/vars.xml [#ad7d45a1]
 diff vars.xml.orig  vars.xml
 258c258,259
 <   <X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8"/>
 ---
 >   <!--<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8"/>-->
 >   <X-PRE-PROCESS cmd="set" data="global_codec_prefs=G7221@32000h,G7221@16000h,G722,PCMU,PCMA,GSM"/>

**** conf/autoload_configs/xml_curl.conf.xml. [#see0c37b]
 # diff xml_curl.conf.xml.orig xml_curl.conf.xml
 3c3,14
 <     <binding name="example">
 ---
 >     <binding name="EDU_directory">
 >       <param name="gateway-url" value="http://opensim.tuis.ac.jp:8004/fsapi/freeswitch-config" bindings="directory"/>
 >       <param name="gateway-credentials" value="freeswitch:password"/>
 >       <param name="disable-100-continue" value="true"/>
 >     </binding>
 >     <binding name="EDU_dialplan">
 >       <param name="gateway-url" value="http://opensim.tuis.ac.jp:8004/fsapi/freeswitch-config" bindings="dialplan"/>
 >       <param name="gateway-credentials" value="freeswitch:password"/>
 >       <param name="disable-100-continue" value="true"/>
 >     </binding>
 > 
 >     <!--<binding name="example">-->
 47c58
 <     </binding>
 ---
 >     <!--</binding>-->

**** conf/autoload_configs/modules.conf.xml [#ofab9f0e]
 diff modules.conf.xml.orig modules.conf.xml
 18c18
 <     <!-- <load module="mod_xml_curl"/> -->
 ---
 >     <load module="mod_xml_curl"/> 
 66c66
 <     <load module="mod_fsv"/>
 ---
 >     <!-- <load module="mod_fsv"/> -->
 95c95
 <     <load module="mod_vpx"/>
 ---
 >     <!--<load module="mod_vpx"/>-->      1.6.9 の場合は無し
 97c97
 <     <!--<load module="mod_siren"/>-->
 ---
 >     <load module="mod_siren"/>
 99c99
 <     <load module="mod_opus"/>
 ---
 >     <!--<load module="mod_opus"/>-->
 102c102
 <     <load module="mod_sndfile"/>
 ---
 >     <!--<load module="mod_sndfile"/>-->


**** conf/autoload_configs/conference.conf.xml.orig [#a6eae4da]
 diff conference.conf.xml.orig conference.conf.xml
 72c72
 <       <param name="muted-sound" value="conference/conf-muted.wav"/>
 ---
 >       <!--<param name="muted-sound" value="conference/conf-muted.wav"/>-->
 74c74
 <       <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
 ---
 >       <!--<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>-->
 76c76
 <       <param name="alone-sound" value="conference/conf-alone.wav"/>
 ---
 >       <!--<param name="alone-sound" value="conference/conf-alone.wav"/>-->
 80c80
 <       <param name="moh-sound" value="$${hold_music}"/>
 ---
 >       <!--<param name="moh-sound" value="$${hold_music}"/>-->
 82c82
 <       <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
 ---
 >       <!--<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>-->
 84c84
 <       <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
 ---
 >       <!--<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>-->
 86c86
 <       <param name="kicked-sound" value="conference/conf-kicked.wav"/>
 ---
 >       <!--<param name="kicked-sound" value="conference/conf-kicked.wav"/>-->
 88c88
 <       <param name="locked-sound" value="conference/conf-locked.wav"/>
 ---
 >       <!--<param name="locked-sound" value="conference/conf-locked.wav"/>-->
 90c90
 <       <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
 ---
 >       <!--<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>-->
 92c92
 <       <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
 ---
 >       <!--<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>-->
 94c94
 <       <param name="pin-sound" value="conference/conf-pin.wav"/>
 ---
 >       <!--<param name="pin-sound" value="conference/conf-pin.wav"/>-->
 96c96
 <       <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
 ---
 >       <!--<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>-->


****  conf/autoload_configs/switch.conf.xml [#r7593da9]
- RTP Port Range

 diff switch.conf.xml.orig switch.conf.xml
 146a147,148
 >     <param name="rtp-start-port" value="6000"/>
 >     <param name="rtp-end-port" value="6999"/>

**** IPv6 を無効化 [#x3968412]
  # cd conf/sip_profiles/
  # mkdir Invalid
  # mv *ipv6* Invalid/

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS