Inhaltsverzeichnis
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 |