Installation FreeSwitch

Mit FreeSwitch können Sie die Voice-Funktion in OpenSIM nutzen um sich nicht nur über die Tastatur im Chat mit anderen Avataren zu unterhalten, sondern auch über ein Mikrofon mit Ihrer Stimme.

Erste Informationen zu FreeSwitch erhalten Sie auf der offiziellen Webseite: http://www.freeswitch.org

Linux Installation: Suse 32/64-bit

Installation und Konfiguration von Freeswitch für OpenSim unter Linux

Wichtige Links:

FreeSwitch ist eine Kommunikationsplattform die unter MLP 1.1 lizensiert ist. Der Vorteil ist der modulare Aufbau und die SIP-Funktionalität die wir hier nutzen um Voice (Sprachkommunikation) in OpenSim zu integrieren. Die native Unterstützung der gängigen Viewer ist dabei das Schmankerl. Auf die Kompilierung von FreeSwitch werde ich hier nicht näher eingehen da sie ausreichend auf der FreeSwitch Website erläutert wird. Es gibt auch je nach Distribution fertig kompilierte Pakete die sich einfacher installieren lassen. Bitte vorher alle Abhängigkeiten überprüfen damit ein reibungsloses kompilieren möglich ist. Beim installieren von FreeSwitch ist dringend auf folgende Einstellungen zu achten damit es erfolgreich funktioniert:

Herunterladen von Freeswitch

Ich empfehle die svn in folgendes Verzeichnis zu laden:

/opt/scr/

der Ordner scr muss noch angelegt werden da er meistens nicht vorhanden ist.

md scr

dann FreeSwitch herunterladen:

svn checkout http://svn.freeswitch.org/svn/freeswitch/trunk freeswitch

Der Quellcode befindet sich dann in:

/opt/scr/freeswitch

nach der Installation (make install) in:

/opt/freeswitch

Wichtige Schritte

Da FreeSwitch modular aufgebaut ist sind in der Grundkonfiguration nicht alle Module aktiviert. Manche werden auch erst nach der Aktivierung kompiliert. Für den reibungslosen Ablauf brauchen wir zwei dieser Module die nicht automatisch kompiliert werden:

codecs/mod_siren ←– siren 14 Codec (sozusagen die Sprachkomprimierung) xml_int/mod_xml_curl ←– Ein Modul um automatische Konfiguration von FreeSwitch über XML zu ermöglichen.

Nach dem Herunterladen von FreeSwitch und der Vorbereitung der Kompilierung:

./bootstrap.sh ./configure –prefix=/usr/local/freeswitch ←– entspricht dem Pfad der späteren Installierung

muss man diese Module in:

../freeswitch/conf/autoload_configs/modules.conf.xml

aktivieren indem man die „#“ vor den entsprechenden Modulen entfernt.

Danach kann man den Quellcode mit

make make install make sounds-install make moh-install make samples

kompilieren und installieren. Hat das alles soweit erfolgreich funktioniert müssen noch 3 Konfigurationsdateien angepasst werden:

../freeswitch/conf/autoload_configs/modules.conf.xml

Hier müssen die beiden Module die wir gerade kompiliert haben aktiviert werden. Dazu entfernt man einfach die Auskommentierung.

Vorher: <!– „<load module=„mod_xml_curl“/>–> <!– <load module=„mod_siren“/>/>–>

Nachher: <load module=„mod_xml_curl“/> <load module=„mod_siren“/>

Dann müssen wir noch den Codec aktivieren. Dazu müssen wir folgende XML editieren:

../ freeswitch/conf/vars.xml

In dieser XML gibt es eine Zeile

Vorher: <X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs= G722,PCMU,PCMA,GSM“/> dieser fügt bitte folgendes hinzu G7221@32000h,G722

Nachher: <X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs=G7221@32000h,G722,PCMU,PCMA,GSM“/>

Dann nur noch die Anbindung an OpenSim. Dazu editieren wir die XML:

../ freeswitch/conf/autoload_configs/xml_curl.conf.xml

Bitte ersetzt folgendes mit dem kompletten Inhalt und achtet darauf das Ihr die IP Eures OpenSim-Servers an den dafür vorgesehenen Platz einfügt.

<configuration name=„xml_curl.conf“ description=„cURL XML Gateway“> <bindings> <binding name=„example“> <param name=„gateway-url“ value=„http://EureOpenSimIP:9000/api/freeswitch-config“ bindings=„directory“/> <param name=„disable-100-continue“ value=„true“/> </binding> <binding name=„local“> <param name=„gateway-url“ value=„http://EureOpenSimIP:9000/api/freeswitch-config“ bindings=„dialplan“/> <param name=„disable-100-continue“ value=„true“/> </binding> </bindings> </configuration>

Der Port 9000 ist natürlich auch an Eure Sim anzupassen falls dieser vom Standard abweicht. Danach könnt Ihr FreeSwitch starten.

../freeswitch/bin/./freeswitch

Der Freeswitch-Service sollte immer vor dem OpenSim-Service gestartet sein.

OpenSim Konfiguration

Hier müssen wir nur in der OpenSim.ini folgendes ergänzen:

[FreeSwitchVoice] enabled = true ;FreeSwitch server is going to contact us and ask us all ;sorts of things. freeswitch_server_user = freeswitch freeswitch_server_pass = password freeswitch_api_prefix = /api ;The IP address of your opensim voice region freeswitch_service_server = IP_Adresse_des_OpenSimServers ;the port your region is running on freeswitch_service_port = 9000 ;your freewitch IP address freeswitch_realm = IP_Adresse_des_FreeSwitch_Services freeswitch_sip_proxy = IP_Adresse_des_FreeSwitch_Services:5060 freeswitch_attempt_stun = false freeswitch_stun_server = IP_Adresse_des_FreeSwitch_Services freeswitch_echo_server = IP_Adresse_des_FreeSwitch_Services freeswitch_echo_port = 50505 freeswitch_well_known_ip = IP_Adresse_des_FreeSwitch_Services freeswitch_default_timeout = 5000 freeswitch_subscribe_retry = 120

Achtet auch hier bitte auf den Port Eurer Sim ! Danach einfach den OpenSim-Server starten.

WICHTIG

Der Freeswitch-Service ist nur in den aktuellsten Versionen von OpenSim möglich. Achtet darauf das beim starten von OpenSim im CLI ein [FreeSwitchVoice] Eintrag zu sehen ist. Dann nur noch InWorld auf der Region bei den Landeinstellungen Voice aktivieren und dann solltet Ihr diesen putzigen Punkt über dem Kopf sehen und wenn Ihr alleine auf der Region seit eine Warteschleifenmusik hören. Zum testen empfand ich diese als sehr hilfreich. Diese kann man folgendermassen ausschalten:

../ freeswitch/conf/autoload_configs/conference.conf.xml

einfach die Sounds auskommentieren:

[…] <!– File to play if you are alone in the conference –> <!– <param name=„alone-sound“ value=„conference/conf-alone.wav“/> –> […] <!– File to play when you're alone (music on hold)–> <!– <param name=„moh-sound“ value=„$${hold_music}“/> –> <!– File to play when you join the conference –> <!– <param name=„enter-sound“ value=„tone_stream:%(200,0,500,600,700)“/> [^] –> <!– File to play when you leave the conference –> <!– <param name=„exit-sound“ value=„tone_stream:%(500,0,300,200,100,50,25)“/> [^] –> <!– File to play when you ae ejected from the conference –> <!– <param name=„kicked-sound“ value=„conference/conf-kicked.wav“/> –> […]

Natürlich auch an die Firewall denken um die von FreeSwitch benötigten Ports zu öffnen:

Port(s) Protokoll Bezeichnung
1719 UDP H.323 Gatekeeper RAS-Port
1720 TCP H.323 Call Signalling
3478 UDP STUN Service, für NAT traversal
3479 UDP STUN Service, für NAT traversal
5002 TCP MLP Protocol Server
5003 UDP Neighborhood Service
5060 UDP & TCP SIP UAS, für SIP Signalisierung (Standard SIP-Port, für default intern Profil)
5070 UDP & TCP SIP UAS, für SIP Signalisierung (für default „NAT“ Profil)
5080 UDP & TCP SIP UAS, für SIP Signalisierung (für default „External“ Profil)
16384-32768 UDP RTP/RTCP Multimedia Streaming, für Audio/Video Daten in SIP und anderen Protokollen

Linux Installation: Ubuntu 32-bit

1. Vorbereitung

apt-get update

apt-get install -y autoconf automake libtool build-essential subversion libxml2 apt-get install -y libxml2-dev libtiff4 libtiff4-dev php5 php5-cli apt-get install -y php5-common php5-mcrypt php5-mysql php5-gd php5-pgsql php-pear php-db apt-get install -y libmysqlclient15-dev curl sox libssl-dev libncurses5-dev bison apt-get install -y libaudiofile-dev libnewt-dev libcurl4-gnutls-dev apt-get install -y libnet-ssleay-perl openssl ssl-cert libauthen-pam-perl apt-get install -y libio-pty-perl libmd5-perl apt-get install -y libpg-perl libdbd-pg-perl sqlite3 apt-get install -y libsqlite3-dev openssl ssl-cert apt-get install -y libapache2-mod-php5 libmcrypt-dev

mkdir /home/opensim/freeswitch cd /home/opensim/freeswitch

2. FreeSwitch Installation

svn checkout http://svn.freeswitch.org/svn/freeswitch/trunk freeswitch

cd freeswitch cd build cp modules.conf.in modules.conf

vi modules.conf

Suchen Sie die Zeile:

#codecs/mod_siren

und entfernen Sie das # Zeichen.

Suchen Sie die Zeile:

#xml_int/mod_xml_curl

und entfernen Sie das # Zeichen.

Speichern Sie die Datei.

cd .. AUTOCONF=/usr/bin/autoconf ./bootstrap.sh

Warten Sie bis die Operationen abgeschlossen sind, dann weiter mit:

./configure –prefix=/usr/local/freeswitch

Warten Sie wieder bis alles abgeschlossen ist, dann weiter mit:

make

Warten Sie wiederrum bis alles abgeschlossen ist, dann weiter mit:

make install make mod_siren-install

make mod_xml_curl-install make sounds-install

make sounds-install

make moh-install make moh-install

Bitte beachten Sie das die obige Wiederholung des Kommandos kein Fehler ist ! Dann weiter mit:

make samples

3. FreeSwitch Konfiguration für OpenSIM

Wir nehmen bei der folgenden Konfiguration folgendes an. Bei Abweichungen auf Ihrem Computer und Netzwerk müssen Sie entsprechend anders konfigurieren. Dies ist quasi nur ein Beispiel von vielen möglichen Konfigurationen:

  • der Server ist direkt an das Internet angeschlossen und verfügt über die öffentliche IP-Adresse 192.111.222.33
  • es gibt keine Firewall die den ein- und ausgehenden Datenfluss irgendwie einschränkt
  • OpenSIM läuft auf dem TCP-Port 9000 und ist auf demselben Computer installiert wie FreeSwitch

Geben Sie nun folgendes ein:

cd /usr/local/freeswitch/conf/autoload_configs/

vi modules.conf.xml

Suchen Sie die Zeile:

<!– <load module=„mod_xml_curl“/> –>

und ändern Sie diese in:

<load module=„mod_xml_curl“/>

Suchen Sie die Zeile:

<!–<load module=„mod_siren“/>–>

und ändern Sie diese in:

<load module=„mod_siren“/>

Speichern Sie die Datei. Weiter mit:

cd /usr/local/freeswitch/conf/autoload_configs

vi xml_curl.conf.xml

Gehen Sie eine Zeile unter diese:

<binding name=„example“>

und tauschen die dort noch vorhandene Beispiel-Konfiguration mit Ihrer Konfiguration:

<configuration name=„xml_curl.conf“ description=„cURL XML Gateway“> <bindings> <binding name=„example“> <param name=„gateway-url“ value=„http://192.111.222.33:9000/api/freeswitch-config“ bindings=„directory“/> <param name=„disable-100-continue“ value=„true“/> </binding> <binding name=„local“> <param name=„gateway-url“ value=„http://192.111.222.33:9000/api/freeswitch-config“ bindings=„dialplan“/> <param name=„disable-100-continue“ value=„true“/> </binding> </bindings> </configuration>

Tauschen Sie die oben verwendete Beispiel IP-Adresse 192.111.222.33 mit Ihrer eigenen öffentlichen IP-Adresse aus. Falls Sie einen anderen Port als den Standard-Port 9000 verwenden, passen Sie auch diesen an den bei Ihnen verwendeten Port an.

Speichern Sie die Datei. Weiter geht es mit:

cd /usr/local/freeswitch/conf/

vi vars.xml

Suchen Sie die Zeile:

<X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs=G722,PCMU,PCMA,GSM“/>

und ändern Sie diese in:

<X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs=G7221@32000h,G722,PCMU,PCMA,GSM“/>

4. Starten von FreeSwitch

screen -S voice

cd /usr/local/freeswitch/bin/ ./freeswitch

Ignorieren Sie die rot markierten Fehlermeldungen und Warnungen. Weiter mit:

[CTRL][A][D]

5. OpenSIM-Konfiguration

Editieren Sie die OpenSIM-Konfigurationsdatei und fügen Sie am Ende der Datei folgende Zeilen ein:

[FreeSwitchVoice]
   enabled = true
   ;FreeSwitch server is going to contact us and ask us all
   ;sorts of things.
   freeswitch_server_user = freeswitch
   freeswitch_server_pass = password
   freeswitch_api_prefix = /api
   ;The  IP address of your opensim voice region
   freeswitch_service_server = IP_Adresse_des_OpenSimServers
   ;the port your region is running on
   freeswitch_service_port = 9000 
   ;your freewitch IP address
   freeswitch_realm = IP_Adresse_des_FreeSwitch_Services
   freeswitch_sip_proxy = IP_Adresse_des_FreeSwitch_Services:5060
   freeswitch_attempt_stun = false
   freeswitch_stun_server = IP_Adresse_des_FreeSwitch_Services
   freeswitch_echo_server = IP_Adresse_des_FreeSwitch_Services
   freeswitch_echo_port = 50505
   freeswitch_well_known_ip = IP_Adresse_des_FreeSwitch_Services
   freeswitch_default_timeout = 5000
   freeswitch_subscribe_retry = 120

Starten Sie jetzt den OpenSIM-Server. Ab diesem Moment ist Voice in OpenSIM grundsätzlich möglich. Um aber Voice nutzen zu können muß in den Estate-Einstellungen und den Region-Einstellungen auch Voice aktiviert werden. Ausserdem müssen die Avatare einen 3D-Viewer ab Version 1.22 oder später benutzen.

Sollte es dennoch nicht funktionieren haben Sie möglicherweise eine zu alte OpenSIM-Server Version. Voice wird derzeit nur in sehr aktuellen Trunk-Versionen unterstützt.

Natürlich auch an die Firewall denken um die von FreeSwitch benötigten Ports zu öffnen:

Port(s) Protokoll Bezeichnung
1719 UDP H.323 Gatekeeper RAS-Port
1720 TCP H.323 Call Signalling
3478 UDP STUN Service, für NAT traversal
3479 UDP STUN Service, für NAT traversal
5002 TCP MLP Protocol Server
5003 UDP Neighborhood Service
5060 UDP & TCP SIP UAS, für SIP Signalisierung (Standard SIP-Port, für default intern Profil)
5070 UDP & TCP SIP UAS, für SIP Signalisierung (für default „NAT“ Profil)
5080 UDP & TCP SIP UAS, für SIP Signalisierung (für default „External“ Profil)
16384-32768 UDP RTP/RTCP Multimedia Streaming, für Audio/Video Daten in SIP und anderen Protokollen
Navigation

Alternative Startseite
Helpdesk
Links
Maps
Radio
Suchmaschine


Drucken/exportieren