Skip to content
Snippets Groups Projects
README 8.09 KiB
Newer Older
Yun Liu's avatar
Yun Liu committed
This is SFLphone, release 0.9.x
Emmanuel Milou's avatar
Emmanuel Milou committed
Copyright (c) Savoir-faire Linux, Inc 2004-2008
yanmorin's avatar
yanmorin committed
  <sflphoneteam@savoirfairelinux.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

yanmorin's avatar
yanmorin committed
Introduction
------------

SFLPhone is a Voice-over-IP software phone. We want it to be:
- user friendly (fast, sleek, easy to learn interface)
- corporate grade (transfers, holds, perfect audio quality)
- fully compatible with Asterisk (SIP and IAX protocols)
Emmanuel Milou's avatar
Emmanuel Milou committed
- customizable 
yanmorin's avatar
yanmorin committed

As the SIP/audio daemon and the user interface are separate processes,
Emmanuel Milou's avatar
Emmanuel Milou committed
it is easy to provide different user interfaces. SFLPhone0.8 comes with
a GTK graphical user interface, an interactive command line interface,
yanmorin's avatar
yanmorin committed
and even scripts to control the daemon from the shell.

SFLPhone is actually used by the support team of Savoir-Faire Linux Inc.

More information is available on the project homepage:
  http://www.sflphone.org/


yanmorin's avatar
yanmorin committed
Getting the dependencies
------------------------

Required libraries and tools:
- ccRTP >= 1.3.4 (tested with ccrtp 1.4.1)
  and Common C++ 2 >= 1.3.20 (tested with commoncpp2 1.4.1)
    http://sourceforge.net/projects/gnutelephony/
- libeXosip2 >= 2.2.2 (tested with eXosip2 2.2.3)
  and libosip2 >= 2.2.1 (tested with libosip2-2.2.2)
    http://savannah.gnu.org/projects/exosip/
    http://savannah.gnu.org/projects/osip/
- libxml2, libxml2-devel, pkgconfig
    usually available in distribution repositories
yanmorin's avatar
yanmorin committed
- autoconf

yanmorin's avatar
yanmorin committed
Optional libraries:
- zeroconf: (tested with mDNSResponder87)
    http://developer.apple.com/darwin/projects/bonjour/
yanmorin's avatar
yanmorin committed

Some of the required libraries may be downloaded from
  http://www.sflphone.org/#downloads
  or
  http://www.sflphone.org/dev/
yanmorin's avatar
yanmorin committed
See tools/config.sh for details
yanmorin's avatar
yanmorin committed
So in debian, you need:
Emmanuel Milou's avatar
Emmanuel Milou committed
apt-get install autoconf automake1.9 libtool libosip2-dev libexosip2-dev libccrtp-dev libcommoncpp2-dev pkg-config libsamplerate-dev libasound2-dev

Building the dependencies
-------------------------

If you do not use either the development packages of your distribution or the source packages made by the upstream authors of dependencies, you may want to try our custom dependencies building script in tools/ directory:
Note that commoncpp, ccrtp, libosip and libexosip, samplerate are in debian and fedora.

You can also compile each dependency, one by one:
yanmorin's avatar
yanmorin committed
1/	For commoncpp2
jpbl's avatar
jpbl committed
	./configure [option]
	make
	make install

yanmorin's avatar
yanmorin committed
2/	For ccrtp
jpbl's avatar
jpbl committed
	./configure [option]
	make
	make install

yanmorin's avatar
yanmorin committed
3/	For libosip2
jpbl's avatar
jpbl committed
	./configure [option]
	make
	make install

	Note: if you install any package in /usr/local, don't forget to set pkg-config path with:
yanmorin's avatar
yanmorin committed
	export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
yanmorin's avatar
yanmorin committed
Building SFLPhone
-----------------
jpbl's avatar
jpbl committed
make
make install (as root) 


yanmorin's avatar
yanmorin committed
Using SFLPhone
--------------
If you have the sflphone 0.3 or 0.4 release, copy the file sflphonerc
to sflphonedrc:
yanmorin's avatar
yanmorin committed
  cp ~/.sflphone/sflphonerc ~/.sflphone/sflphonedrc
If you have an older version, remove your sflphonerc file located in
$HOME/.sflphone
Emmanuel Milou's avatar
Emmanuel Milou committed
1. Install the GTK GUI 
jpbl's avatar
jpbl committed

2. Lauch sflphone interface, a setup window appears. 

yanmorin's avatar
yanmorin committed
3. If you do have a SIP account, fill the SIP stuff where related. You can
   use STUN too.
jpbl's avatar
jpbl committed

4. Save your settings, restart it. You're done.

A user's guide will be available on:
http://www.sflphone.org/doc/


yanmorin's avatar
yanmorin committed
What if it does not build?
yanmorin's avatar
yanmorin committed
- Try using the same versions of the libraries as we do.
jpbl's avatar
jpbl committed
  See http://www.sflphone.org in section Downloads.

yanmorin's avatar
yanmorin committed
- Try using the same compilers as ours: gcc 4.1.0 on Fedora Linux Core 5
  is known to work.

- If you have dependencies installed in unusual directories, try setting
  the environment variable CXXFLAGS before building, for example:
  export CXXFLAGS="-I/opt/include"
yanmorin's avatar
yanmorin committed
How to enable IAX support?
yanmorin's avatar
 
yanmorin committed
--------------------------
yanmorin's avatar
 
yanmorin committed
Go inside libs directory and execute ./libiax2.sh script.
Then, run ./configure with --enable-iax2 option.

yanmorin's avatar
 
yanmorin committed

Debugging SFLPhone
------------------
You can use the --with-debug option with configure
./configure --with-debug
make
yanmorin's avatar
yanmorin committed


Run-time troubleshooting
------------------------

- If errors occured when trying to load shared libraries, check that the
  value of the environment variable LD_LIBRARY_PATH include the
  directories containing the required libraries, eg:
  export LD_LIBRARY_PATH=/path/to/my/lib:${LD_LIBRARY_PATH}
yanmorin's avatar
 
yanmorin committed

jpbl's avatar
jpbl committed
- Portaudio don't detect your sound card because :
  * artsd is running
  * jackd is running 
yanmorin's avatar
yanmorin committed
    On 2005/11/22, jack wasn't working with these settings: 
    jackd -d alsa -r 8000
  * you use alsa with sflphone and another application, but dmixer isn't
    configurated correctly inside ~/.asoundrc or /etc/alsa/alsa.conf

jpbl's avatar
jpbl committed
- sflphone refuse to start because it's running
  You could have something like: "Exception: could not bind socket"
  Try to close sflphone before 
yanmorin's avatar
yanmorin committed
    echo "stop sflphone" | nc localhost 3999
jpbl's avatar
jpbl committed
  or
yanmorin's avatar
yanmorin committed
    killall sflphone


Short description of content of source tree
jpbl's avatar
jpbl committed
-------------------------------------------

- ringtones/ contains the different ringtones.
- stund/ is an implementation of the protocol STUN used when there is a NAT.
- utilspp/ allows to implement a singleton.
- src/ is the core of SFLphone. It contains the main.cpp, managerimpl.cpp
  files, audio and gui directories, and files about signalisation SIP. Later,
  it should be better, when IAX will be implemented, that a directory groups
  these protocols. 
jpbl's avatar
jpbl committed
  The ManagerImpl class is the intermediaire between all the layer in the tree.
- src/audio/ is the audio layer. It contains all about tones, dtmf,
  audiodriver, rtp layer, audio codec ulaw, alaw and gsm.
jpbl's avatar
jpbl committed
- src/audio/gsm/ contains the implementation of gsm audiocodec library.
- src/audio/pacpp/ implements PortAudioCpp, a native C++ binding of 
  PortAudio V19. (remove in sflphone 0.7)
- src/gui/ is the old directory that contains all about different user
  interface.
- src/gui/server is the directory that talk (tcp socket on port 3999) to
  sflphone client. The slfphone client can be a console program or a graphical
  interface.
jpbl's avatar
jpbl committed
How is structured SFLphone (>=0.5)
----------------------------------

		+------------+
		|TCPSessionIO|  
		+------------+
		       |
		+------------+
		| SessionIO  |  
		+------------+
		       |
		+------------+
		| GUI Server |  
		+------------+
  		       |		
		+---------------------------+	
		|      GUI Framework        |
		+---------------------------+
		             |
		+---------------------------+
		|        ManagerImpl        |  
		+---------------------------+
		             |
yanmorin's avatar
 
yanmorin committed
       		+---------------------------+
		|          Account          |
		+---------------------------+
                             |
jpbl's avatar
jpbl committed
		+---------------------------+
		|         VoIPLink          |
		+---------------------------+
		      |                |
		+-----------+       +-------+
		|    SIP    |       |  IAX  |
		|    RTP    |       +-------+
		|   STUN    |
		+-----------+

It's in ManagerImpl where we declared Call vector and VoIPLink vector.
VoIPLink vector contains all different VoIP link like SIP, IAX, ...
Call vector contains all the calls according to the kind of VoIP link.



yanmorin's avatar
yanmorin committed
About Savoir-Faire Linux
------------------------
yanmorin's avatar
yanmorin committed
Savoir-Faire Linux is a consulting company based in Montreal, Quebec.
For more information, please check out our website:
http://www.savoirfairelinux.com/
yanmorin's avatar
yanmorin committed



Contributing to SFLPhone
------------------------

Of course we love patches. And contributions. And spring rolls.

The project infrastructure (CVS, bugtracker, MLs) is maintained on: 
http://forge.novell.com/modules/xfmod/project/?sflphone
yanmorin's avatar
yanmorin committed
Do not hesitate to join us and post comments, suggestions, questions
and general feedback on the forge.novell mailing-list.
yanmorin's avatar
yanmorin committed
  -- The SFLPhone Team