-
Notifications
You must be signed in to change notification settings - Fork 13
FreeSwitch
FreeSWITCH is a voice service that can be used with [http://opensimulator.org/wiki/Main_Page Opensimulator]. Until recently it has been a little-used option; however, with the announcement that Vivox support for opensimulator is coming to an end, it is one of the alternative options. This page is not complete, the compilation works, and the plugin states it's active in the console. Additionally in the viewer in the voice preferences voice can be tested successfully. However, neither local nor IM voice chat buttons are enabled.
This page is aimed at adding to the information available for both getting a working version of FreeSwitch and configuring it for opensimulator. At the time of writing the latest release is 10.6.
- Opensimulator Wiki - FreeSwitch page
- Setup Free Switch on Ubuntu 20.04 - Computing for Geeks
- Freeswitch installation and Zabbix monitoring
- FreeSwitch Releases
The packages listed are a combination of those found so far after starting from three different images of ubuntu 20.04 server including a direct download
- build-essential
- git
- unzip
- autoconf
- cmake
- Libtool
- pkg-config
- libcurl4-opensssl-dev
- python-pycurl
- python3-pycurl
- python3-pycurl-dbug
- libtiff-dev
- libaudiofile-dev
- fftw-dev
- sqlite3
- libsqlite3-dev
- libcurl4-openssl-dev
- libpcre3-dev
- speex
- libspeex-dev
- libspeexdsp-dev
- libldns-dev
- nasm
- libavformat-dev
- libswscale-dev
- liblua5.3-dev
- libpq-dev - required to compile Spandsp
- libx11-dev - required to compile Fltk
- libfreetype-dev - required to compile Fltk
- libssl-dev - required to compile Sofia
- uuid - required to compile Libks
- uuid-dev - required to compile Libks
- libedit-dev
- libopus-dev
- libsndfile-dev
sudo apt install build-essential autoconf cmake libtool pkg-config libcurl4-openssl-dev python-pycurl python3-pycurl libtiff-dev
libaudiofile-dev fftw-dev sqlite3 libsqlite3-dev libpcre3-dev speex libspeex-dev libspeexdsp-dev libldns-dev nasm libavformat-dev
libswscale-dev liblua5.3-dev libpq-dev libx11-dev libfreetype-dev libssl-dev uuid uuid-dev git unzip libedit-dev libopus-dev libsndfile-dev
Required by Spandsp
git clone https://github.com/fltk/fltk.git
cd fltk
cmake .
make
sudo make install
git clone https://github.com/freeswitch/spandsp
cd spandsp
./bootstrap.sh
./configure
make -j
sudo make install
### [sofia-sip](https://github.com/freeswitch/sofia-sip)
```bash
git clone https://github.com/freeswitch/sofia-sip
cd sofia-sip
sh autogen.sh (if building from darcs)
./configure
make
sudo make install
git clone https://github.com/signalwire/libks.git
cd libks
cmake .
make
sudo make install
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c
cmake .
make
sudo make install
First download, extract and enter the folder.
sudo wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.6.-release.zip
unzip freeswitch-1.10.6.-release.zip
cd freeswitch-1.10.6.-release
Copy lua5 files to where they should be, but are missing from the release files.
mkdir src/mod/languages/mod_lua
cp /usr/include/lua5.3/*.h src/mod/languages/mod_lua/
add a symbolic link so its found
sudo ln -s /usr/lib/x86_64-linux-gnu/liblua5.3.so /usr/lib/x86_64-linux-gnu/liblua.so
compile
./configure
make
sudo make install
Compile the sounds
sudo make all cd-sounds-install cd-moh-install
Create Symbolic links for ease of use
sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/
sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin
Once you've compiled and installed Freeswitch, you will need to activate mod_siren and mod_xml_curl in /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml, since it's disabled by default on a fresh install. This bit needs doing as root
su root
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
uncomment the lines...
<load module="mod_xml_curl"/>
and
<load module="mod_siren"/>
save and exit then su back to your normal user
cd /usr/local
sudo groupadd freeswitch
sudo adduser --disabled-password --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --ingroup freeswitch freeswitch
sudo chown -R freeswitch:freeswitch /usr/local/freeswitch/
sudo chmod -R ug=rwX,o= /usr/local/freeswitch/
sudo chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/
sudo nano /etc/systemd/system/freeswitch.service
added the following contents and save
[Unit]
Description=freeswitch
Wants=network-online.target
Requires=syslog.socket network.target local-fs.target
After=syslog.socket network.target network-online.target local-fs.target
[Service]
Type=forking
Environment="DAEMON_OPTS=-nonat"
EnvironmentFile=-/etc/default/freeswitch
ExecStartPre=/bin/chown -R freeswitch:freeswitch /usr/local/freeswitch
ExecStart=/usr/bin/freeswitch -u freeswitch -g freeswitch -ncwait $DAEMON_OPTS
TimeoutSec=45s
Restart=always
RestartSec=90
StartLimitInterval=0
StartLimitBurst=6
User=root
Group=daemon
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=60000
LimitSTACK=250000
LimitRTPRIO=infinity
LimitRTTIME=infinity
IOSchedulingClass=realtime
IOSchedulingPriority=2
CPUSchedulingPolicy=rr
CPUSchedulingPriority=89
UMask=0007
NoNewPrivileges=false
[Install]
WantedBy=multi-user.target
start the service
sudo systemctl start freeswitch.service
check its working with
sudo systemctl status freeswitch.service
enable the service so it starts each time at boot
sudo systemctl enable freeswitch.service
Grid Mode In grid mode, [FreeSwitchVoice] in OpenSim.ini and [FreeswitchService] in Robust.ini or Robust.HG.ini need to be configured. Configurations details are shown in both OpenSim.ini.example, Robust.ini.example and Robust.HG.ini.example. Here is an example configuration for OpenSim.ini.
opensim.ini
[FreeSwitchVoice] Enabled = true LocalServiceModule = OpenSim.Services.Connectors.dll:RemoteFreeswitchConnector FreeswitchServiceURL = "${Const|BaseUrl}:${Const|FreeSwitchPort}/fsapi"
Add for Robust.ini/Robust.HG.ini
[FreeswitchService] LocalServiceModule = OpenSim.Services.FreeswitchService.dll:FreeswitchService ServerAddress = "${Const|FreeswitchURL}"