README 8.17 KB
Newer Older
yanmorin's avatar
yanmorin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
This is SFLPhoned, release 0.7pre0cvs.

Copyright (c) Savoir-faire Linux, Inc 2004-2006
  <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

Introduction
------------

SFLPhone is a Voice-over-IP software phone. We want it to be:
- portable (it runs under GNU/Linux, Mac OS X, Win32)
- user friendly (fast, sleek, easy to learn interface)
- corporate grade (transfers, holds, perfect audio quality)
- fully compatible with Asterisk (SIP and IAX protocols)
- customizable (support for custom skins in the QT interface)

As the SIP/audio daemon and the user interface are separate processes,
it is easy to provide different user interfaces. SFLPhone comes with
a QT graphical user interface, an interactive command line interface,
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/


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

Optional libraries:
- zeroconf: (tested with mDNSResponder87)
    http://developer.apple.com/darwin/projects/bonjour/
- QT: required for the graphical user interface
    usually available in distribution repositories
- speex : codec for sound

Some of the required libraries may be downloaded from
  http://www.sflphone.org/#downloads
  or
  http://www.sflphone.org/dev/
See tools/config.sh for details
jpbl's avatar
jpbl committed
67 68 69

Dependencies build instructions:
--------------------------------
yanmorin's avatar
yanmorin committed
70 71 72 73 74 75 76 77
If you don't use development files of your distribution and you don't want 
to go on dependencies web site, you can use a custom dependencies building 
script in tools/ directory.

1. Go to tools/ (cd tools)
2. Change the default configuration in config.sh (~/sflphone) is the prefix
3. ./download.sh
4. ./install.sh
jpbl's avatar
jpbl committed
78 79 80
 
You can also compile each dependencies, one by one:

yanmorin's avatar
yanmorin committed
81
1/	For commoncpp2
jpbl's avatar
jpbl committed
82 83 84 85
	./configure [option]
	make
	make install

yanmorin's avatar
yanmorin committed
86
2/	For ccrtp
jpbl's avatar
jpbl committed
87 88 89 90
	./configure [option]
	make
	make install

yanmorin's avatar
yanmorin committed
91
3/	For libosip2
jpbl's avatar
jpbl committed
92 93 94 95
	./configure [option]
	make
	make install

yanmorin's avatar
yanmorin committed
96 97 98 99 100 101 102 103 104 105 106 107 108

Preparing a CVS checkout of SFLPhone to be built
------------------------------------------------

Before building from a CVS checkout, the GNU autotools suite must be used
to generate the configure script and Makefiles. The current version
of SFLPhone has been tested with Automake 1.9 and Autoconf 2.59.

To do so, you may run the following script from the top directory:
  ./tools/autotoolize.sh

Building SFLPhone
-----------------
jpbl's avatar
jpbl committed
109 110 111 112 113 114

./configure [option]
make
make install (as root) 


yanmorin's avatar
yanmorin committed
115 116
Using SFLPhone
--------------
jpbl's avatar
jpbl committed
117 118

If you have the sflphone 0.3 or 0.4 release, copy the file sflphonerc to sflphonedrc
yanmorin's avatar
yanmorin committed
119
  cp ~/.sflphone/sflphonerc ~/.sflphone/sflphonedrc
jpbl's avatar
jpbl committed
120 121 122 123 124 125
If you have an older version, remove your sflphonerc file located in $HOME/.sflphone

1. Install a GUI like sflphone-qt

2. Lauch sflphone interface, a setup window appears. 

yanmorin's avatar
yanmorin committed
126 127
3. If you do have a SIP account, fill the SIP stuff where related. You can
   use STUN too.
jpbl's avatar
jpbl committed
128 129 130 131 132 133 134

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
135
What if it does not build?
jpbl's avatar
jpbl committed
136
-------------------------
yanmorin's avatar
yanmorin committed
137
- Try using the same versions of the libraries as we do.
jpbl's avatar
jpbl committed
138 139
  See http://www.sflphone.org in section Downloads.

yanmorin's avatar
yanmorin committed
140 141 142 143 144 145
- 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"
jpbl's avatar
jpbl committed
146 147 148



yanmorin's avatar
yanmorin committed
149
How to enable IAX support?
yanmorin's avatar
 
yanmorin committed
150
--------------------------
yanmorin's avatar
yanmorin committed
151

yanmorin's avatar
 
yanmorin committed
152 153 154
Go inside libs directory and execute ./libiax2.sh script.
Run ./configure with --enable-iax2 option.

yanmorin's avatar
yanmorin committed
155 156 157 158 159 160 161 162 163


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
164

jpbl's avatar
jpbl committed
165 166 167
- Portaudio don't detect your sound card because :
  * artsd is running
  * jackd is running 
yanmorin's avatar
yanmorin committed
168 169 170 171 172
    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
173 174 175
- 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
176
    echo "stop sflphone" | nc localhost 3999
jpbl's avatar
jpbl committed
177
  or
yanmorin's avatar
yanmorin committed
178 179 180
    killall sflphone


jpbl's avatar
jpbl committed
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
  
Short description of content of source tree:
-------------------------------------------

- 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. 
  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.
- src/audio/gsm/ contains the implementation of gsm audiocodec library.
- src/audio/pacpp/ implements PortAudioCpp, a native C++ binding of 
  PortAudio V19.

- 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


yanmorin's avatar
yanmorin committed
205

jpbl's avatar
jpbl committed
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
How is structured SFLphone (>=0.5)
----------------------------------

		+------------+
		|TCPSessionIO|  
		+------------+
		       |
		+------------+
		| SessionIO  |  
		+------------+
		       |
		+------------+
		| GUI Server |  
		+------------+
  		       |		
		+---------------------------+	
		|      GUI Framework        |
		+---------------------------+
		             |
		+---------------------------+
		|        ManagerImpl        |  
		+---------------------------+
		             |
yanmorin's avatar
 
yanmorin committed
229 230 231 232
       		+---------------------------+
		|          Account          |
		+---------------------------+
                             |
jpbl's avatar
jpbl committed
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
		+---------------------------+
		|         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
249 250
About Savoir-Faire Linux
------------------------
jpbl's avatar
jpbl committed
251

yanmorin's avatar
yanmorin committed
252 253 254 255 256 257 258 259 260 261 262
Savoir-Faire Linux is a consulting company based in Montreal, Quebec.



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
jpbl's avatar
jpbl committed
263

yanmorin's avatar
yanmorin committed
264 265
Do not hesitate to join us and post comments, suggestions, questions
and general feedback on the forge.novell mailing-list.
jpbl's avatar
jpbl committed
266

yanmorin's avatar
yanmorin committed
267
  -- The SFLPhone Team