# SFLphone Manual v&docversion;

2006
2007
2008
2009
2010
Savoir-faire Linux

SFLphone is an enterprise-class SIP/IAX2 compatible softphone for GNU/Linux, published under the GPLv3 license.

Savoir-faire Linux

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation Licence (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual.

This manual is part of a collection of GNOME manuals distributed under the GFDL. If you want to distribute this manual separately from the collection, you can do so by adding a copy of the licence to the manual, as described in section 6 of the licence.

Pierre-Luc
Bacon

    pierre-luc.bacon@savoirfairelinux.com

Emmanuel
Milou

    emmanuel.milou@savoirfairelinux.com

Jérémy
Quentin

    jeremy.quentin@savoirfairelinux.com

Alexandre
Savard

    alexandre.savard@savoirfairelinux.com

SFLphone Manual v1.0.1
March 2010

SFLphone team

Savoir-faire Linux

Minor changes

SFLphone Manual v1.0
September 2009

SFLphone team

Savoir-faire Linux

This manual describes SFLphone version &appversion;.

## Introduction

SFLphone is a SIP/IAX2 softphone and VoIP client for GNU/Linux. It aims at being a robust enterprise-class desktop phone and has been designed with a hundred-calls-a-day receptionist in mind.

SFLphone is a free software and is distributed under the GNU General Public License version 3. It is developed by Savoir-Faire Linux, a Canadian Linux consulting company, in partnership with the global community.

Among the many features we developed for you, we could highlight the high definition sound (wide-band audio codecs - speex, G722, Celt), multiple conference call, audio recording, voicemail notification, and call history. More than a simple softphone, SFLphone supports advanced enterprise-class call features: unlimited number of calls, call transfer, and on/off hold option.

This release also provides advanced security features (secure RTP and TLS).

Besides the native ALSA interface, SFLphone now fully supports PulseAudio sound server so you could experience the great possibilities it offers (sound mixing, per application volume control, ...).

## Getting started

The first time you start up SFLphone, you will be ask to complete a wizard to set up your(s) account(s). This account configuration manager offers you two possibilities:

- Create a free SIP/IAX2 account on sflphone.org

  Savoir-faire Linux provides free SIP/IAX2 accounts on an Asterisk server. By clicking this option, you will be created an account to make test calls. The echo service is available, you may also call other accounts registered to the same server.

  By filling out your email address information, you will receive voicemail notifications by email. This information is not mandatory to get your free account.

- Register an existing SIP or IAX2 account

  Click there if you already have an account and you want to use it with SFLphone. You will be prompted to select the account type (SIP or IAX2) and to fill out your account information. SFLphone will then try to register it so you could start using it.

You can always access the account creation manager: Edit Account creation assistant.

## Managing your accounts

SFLphone supports both IAX2 and SIP accounts.

### Basic features

#### Creating a new account

To create a new account, perform the following steps:

1. Choose Edit Manage accounts.

2. Click on the Add button. Fill out the following information:

   - Alias

     The name to identify your account in the list. It is not used for the communications

   - Protocol

     Select SIP or IAX2. The most commonly used protocol is SIP.

   - Host name

     The name or the IP address of the server you want to register on.

   - User name

     The name or the extension for your account.

   - Password

     The password for your account.

   - Voicemail number

     The number to dial to reach your voicemail. Example: 888, or *97. It will be used as a quick dial button on the main interface.

3. Click the Apply button.

You may now check the state of your account(s). If it is registered, you may now use it to make calls.

You can setup as many accounts as you wish.

#### Editing a configured account

To edit an existing account, perform the following steps:

1. Choose Edit Manage accounts.

2. Select in the list the account you would like to edit, then click on the Edit button.

3. Make your modifications, then click on the Apply button.

#### Deleting an account

To delete an existing account, perform the following steps:

1. Choose Edit Manage accounts.

2. Select in the list the account you would like to delete, then click on the Delete button.

#### Selecting a default account

Since it is possible to have an unlimited number of registered accounts at the same time, which account will be used when making a call ? You can not only set up a default account to be used every time you are making a call, but an entire priority list. To do that, perform the following steps:

1. Choose Edit Manage accounts to access the accounts list.

2. The first account in the account in list will be used as the default account to make calls with. If it is not registered, SFLphone will try to use the second in the list, if still not registered, the third, and so one ...

   To reorder the accounts as you wish, select an account and click on the Up or Down button.

Note that you also can select an account to make a call with when dialing by right-clicking on it.

### Advanced features

These features are only available with SIP.

Follow the indications to edit an account and choose the Advanced tab.

#### Advanced features configuration panel

#### Registration

You may set the expires header for a contact.

It basically represents the duration your registration will remain active. If you don't register again within that time, calls will no longer be routed to you. It should not be used as a keepalive mechanism though. The default value is 600 seconds (ten minutes).

Some VoIP services requires that you set this value at at least 1600 seconds (e.g. the French VoIP server freephonie.net).

#### Network

This section enables you to set advanced network parameters.

Local address

  it is initialized to your private/local IP address. Calls will be routed to this address by default.

Local port

  It is initialized to the default SIP port, 5060.

Set published address and port

  - Using STUN

    If enabled, the core will try to initialize an UDP transport on the mapped address/port number that the NAT (Network Address Translator) has allocated to SFLphone.

  - Same as local parameters

  - Manually

### Security features

These features are only available with SIP.

Follow the indications to edit an account and choose the Security tab.

#### Security features configuration panel

#### Credentials

SFLphone supports multiple realms.

#### Security

Please refer to the section Security features for detailed information about security features.

## Call features

The following features are available with both SIP and IAX2 accounts.

### Dialing a number

#### Dial button

You may have an unlimited number of calls at the same time, even with different accounts.

To create a new call when you already have a current call, just click on the Dial button. The current call will automatically be put on hold.

#### Make an other call

Keyboard shortcut to perform this action: NUMPAD or almost any keys.

### Calling a number

#### Call button

Keyboard shortcut to perform this action: Enter.

### Answering a call

#### Answer button

Keyboard shortcut to perform this action: Enter.

### Hanging up a call

#### Hangup button

Keyboard shortcut to perform this action: ESC.

### Refusing a call

When you refuse a call, your caller is automatically redirected to your voicemail box, if applicable.

#### Refuse button

Keyboard shortcut to perform this action: ESC.

### Holding on/off a call

#### Hold on button

#### Hold off button

### Transferring a call

#### Transfer button

Then type the number you want to transfer the current call to.

#### Validate the transfer

And press Enter. Clicking again on the transfer button cancels the transfer.

### Record a call

Go to Edit Preferences Audio to configure the recordings destination folder.

#### Record settings

#### Record button

### Voicemail quick dial

This feature is available only if you fill out the voicemail number information for your default account.

#### Voicemail button

### Direct IP calls

A direct IP call is a call established between two peers without any accounts. When dialing, such a call must prefixed with sip:.

Direct IP calls use SIP protocol to establish communication and RTP to transport data. It is right now not available with IAX2.

Go to Edit Preferences Direct IP calls to configure the advanced security features for this kind of calls.

### Conference calls

SFLphone now supports conference call hosting integrating server like features in a simple GUI.

- Create a conference

  To host a conference, simply drag and drop one call on another. Additional participants are added the same way, dragging a call on the conference icon.

  #### Creating a new conference

  #### Conference call

- Leave a conference

  SFLphone conference model let you leave a conference that you are currently hosting to answer any other incoming communication or even initiate new ones. The conference is not interrupted, double clicking the conference icon let you reintroduce it at any moment.

  #### Conference detached

  #### Conference attached

- Multiple conference

  SFLphone supports multiple conferences running simultaneously. Two conferences can be joined the same way they are created, dragging one on the other.

- Hangup/Hold a conference

  Select the conference icon and press hangup/hold button on the toolbar. The selected action is applied on every conference participants.

## Security features

### SRTP/ZRTP

#### SRTP and ZRTP, the big picture

RTP is the underlying protocol that is used in pair with the widely used SIP protocol to carry voice data. RTP alone does not provide any security features.

Details for implementing Secure RTP (SRTP) were described independently in a separate document (RFC). However, in this paper, one aspect was deliberately left unspecified: how should the encryption keys be exchanged between the two parties involved in a secure RTP session ?

Multiple solutions were proposed to fill in that blank. Among them, are SDES (RFC4568) and ZRTP which are probably the most popular today. For the 0.9.7 release, SFLphone integrates support for Secure RTP through the ZRTP protocol, and SDES is expected to be implemented in the very few next releases.

As of today, blueprints for ZRTP are still laid out and are recognized under the name "zrtp-draftzimmerman" in the RFC machine. The author of ZRTP is Phil Zimmermann, that same person who brought us PGP. Therefore, it is not surprising that he designed ZRTP as an anti-PKI solution for key exchange.

ZRTP makes possible for two parties to automatically establish a shared secret in a very simple way from the user's point of view. Indeed under SFLphone no special configuration is needed, apart from enabling the option itself.

If you want to use ZRTP, please take note that if you are connecting to a PBX, this one must have been configured to support ZRTP. Unfortunately, security for VoIP communications is still young and chances are that your PBX software won't support it.

This does not mean that you want be able to benefit from ZRTP ! In fact, it turns out that you will be able to use it, as long as the server does not need to decode the RTP stream. This is often the case when the person you are calling to uses a codec that you don't support. In that case, the server will need to transcode the RTP packets and obviously need to be able to handle the ZRTP stream.

Obviously, if you are calling another user (for example by prefixing the number with "sip:") directly, then this one will have to support ZRTP as well if you want to use it.

#### Enabling SRTP/ZRTP

To enable ZRTP per account basis, perform the following steps:

1. Choose Edit Manage accounts.

2. Select in the list the account you would like to edit, then click on the Edit button.

3. Select the Security tab.

4. Select ZRTP from the select box named SRTP Key Exchange.

##### Enabling SRTP

#### Configuration options

After enabling SRTP, click the Preferences button.

For basic usage, one don't have to worry about that.

##### ZRTP configuration panel

Send Hello Hash in SDP

  Selecting this option will cause the program to compute an hash function over the "Hello" packet and send it as an SDP field "zrtp-hash:". The remote end might be interested in getting this value to add an additional layer of protection based on another communication channel. Upon receiving this value, the remote point can compute the hash function on the received hello packet and compare it.

  Take note that for 0.9.7, SFLphone does not perform the comparison on its side.

Ask user to confirm SAS

  The short authentication mechanism is at the heart of the ZRTP protocol. Not requiring the user to manually check the SAS value presents a security risk over Man in the Middle type of attacks.

  Disabling this option will stop the program from prompting the user with the SAS.

  Such an option was motivated to be developed at that time by the the state of the libzrtpcpp library that SFLphone was making use of. It is only from version x.x that this library can cache results of SAS computation between two peers.

Display SAS once for hold event

  When call is put on hold, the RTP stream is stopped and reinitiated later. From the ZRTP point of view, this appears as a "new call". Therefore, the SAS will be redisplayed unless this option is selected.

ZRTP for direct peer-to-peer calls

  If you want to use ZRTP for calls that are placed directly to a user (without an intervening PBX), you must enable the option under the "Direct IP Calls" tab in the "configuration" window, available from the "edit" menu.

  Configuration instruction from that point are the same as for configured accounts.

### TLS

TODO

## Audio configuration

ALSA and PulseAudio native interfaces are available.

### Pulseaudio

### ALSA

## Codecs overview

SFLphone supports several widely used audio codecs:

- PCMU/PCMA

  ITU-T telephony standard PCM formats, 8kHz, 64 kbit/s, using logarithmic byte compression algorithm.

- GSM

  Global System for Mobile communications (GSM) narrowband 8kHz standard based on linear prediction encoding.

- G722

  ITU-T standard wideband 16kHz standard based on linear prediction.

- SPEEX

  High quality voice encoding/decoding available in narrowband 8kHz, wideband 16kHz (HD Voice), and ultra-wideband 32 kHz. Integrate additional features such as Variable Bit Rate (VBR) and noise reduction.

- CELT

## Address books

### Enable the address book support

To enable the address book, perform the following steps:

1. Choose Edit Preferences.

2. Select the Address book tab.

3. Check the Use Evolution address books box.

Every address books you configured in Evolution will be now available in SFLphone. Please be sure you selected at least one address book.

### Available options

In Edit PreferencesAddress book, you may select one or all of the following options:

Display contact photo if available

  The contact photo will be displayed as a thumbnail beside the phone number.

Fields from Evolution's address book

  You may use one or all of these following information from your contact.

  - Work phone number

  - Home phone number

  - Mobile phone number

### Using the address book

1. On the toolbar, click on the following button to display the address book window:

   #### Address book toolbar button

2. Search for a contact

3. New entries should have appeared in the window. Double click on it to call the contact. You may also Right click Edit before calling to modify the entry before calling.

## Preferences

Go to Edit Preferences to access the configuration panel.

Each section is detailed below.

### General

This section provides the user general settings regarding the application.

#### Desktop Notifications

##### Desktop notifications options

Enable notifications

  Both clients use their desktop environment notification system. If checked, you will receive desktop notifications for events such as incoming calls and system messages.

  ##### Example of an incoming call notification

Enable voicemail notifications

  The voicemail notifications are handled separately. If checked, you will be notified with the number of unread voicemails for your accounts.

  ##### Example of a voicemail notification

#### System Tray Icon

##### System tray options

Popup main window on incoming call

  If SFLphone is closed on the system tray, pops the main window up on foreground when receiving an incoming call.

Never popup main window

  If SFLphone is closed on the system tray, never pops the main window up on foreground when receiving an incoming call.

Hide SFLphone window on startup

  On startup, SFLphone will go directly on the system tray.

#### Call history

##### Call history options

Keep my history for at least n days

  If checked, calls will be kept up to N days in the history. You may select a custom number of days. Do not check it if you don't want to use this feature.

#### Configuration File

##### Configuration file options

Store SIP credentials as MD5 hash

  If checked, your password information will be encrypted in the configuration file, instead of plain text.

### Audio

TODO

### Address book

Refer to the Address books section for more information.

### Hooks

TODO

### Network

TODO

### Direct IP calls

Refer to the Direct IP calls section for more information.