General

§ How do I get the latest Jitsi source code?

You could either clone the Git repository from GitHub (see Retrieving and Building the Sources for details) or use one of the nightly source snapshots (check the Download page).

§ I’ve discovered a bug, what can I do?

Please, report it to the developers!
Take a look at the Reporting bugs guidelines page describing the steps to report bugs effectively.

§ Where is the user profile directory?

Jitsi’s user profile directory is where Jitsi keeps it’s configuration, logs, etc. Its location depends on the operating system.

  • Windows: “%APPDATA%\Jitsi” (or “%APPDATA%\SIP Communicator”)
    On Windows XP and earlier, this path translates to “C:\Documents and Settings\<Windows login/user name>\Application Data\Jitsi” (the folder may also be called SIP Communicator if you first installed Jitsi while it was still called that way).
    On Windows Vista, 7, 8, it expands to “C:\Users\<Windows login/user name>\AppData\Roaming\Jitsi” or “C:\Users\<Windows login/user name>\AppData\Roaming\SIP Communicator”.
    Note that these folders are hidden.
  • OS X: ~/Library/Application Support/Jitsi (again, could be SIP Communicator)
  • Linux: ~/.jitsi (or ~/.sip-communicator)

§ Where do I find the log files?

The easiest way to get hold of the log files is to save them to a location of your choice using Jitsi’s GUI. You can do so by clicking on Tools→Options (Jitsi→Preferences on OS X), then selecting the “Advanced” tab and opening the “Logging” form. You’ll see the “Archive Logs” button in there.

Check out the screenshot for an even better description.

Important Note: When asked for logs, please make sure that you provide the full set of logs, or better yet, the zip that Jitsi generates when following the above instructions. Please do not send separate files or file snippets as those are likely to be insufficient.

Otherwise, if you really want to know, the log files are located in:

§ Where is the configuration file?

Jitsi’s main configuration file is called sip-communicator.properties and is in the user profile directory.

§ How do you spell Jitsi and what does it mean?

The correct spelling of the application name is Jitsi (“jitsi” also works). The origin of the name is Bulgarian (spelled Жици). It means wires and the point is that the application allow you to connect to many network and people just as wires do. Of course no one other than Bulgarians is supposed to know what this means and we picked the name mainly because it was short and sounded good.

§ I’d like to see a new feature in Jitsi, can you do that for me?

Yes, developers take feature requests into account. Send an email to the development list with a detailed description of the requested feature. After we examine its feasibility and decide whether it can be included in the Jitsi distributions you would likely be asked to open a ticket in our issue tracker. It is worth mentioning though, that handling feature requests is highly dependent of the developers’ availability and there is no guarantee that all requests will be satisfied.

§ How do I subscribe to mailing lists?

Please visit the Mailing Lists page to learn more about Jitsi’s mailing lists.

§ How do I contact the project developers?

You can ask questions concerning usage of the Jitsi on the dev mailing list (Note that the mailing lists are moderated, so, unless you subscribe to them, there may be a delay before your post shows up). For all urgent queries you could also use IRC at irc.freenode.net, channel #jitsi.

§ How do I send a patch?

Mail patches to the dev mailing list, with a subject line that contains the word “PATCH” in all uppercase, for example

 Subject: [PATCH] fix for SDP descriptor in INVITE message

A patch submission should contain one logical change; please don’t mix N unrelated changes in one submission, send N separate emails instead.

The patch itself should be generated from within the project root directory using unified diff format. The following example shows one way to generate it:

 jitsi$ git diff > fix_sdp_in_invite.patch

You should give your patch files meaningful names. For instance if you fix a socket bug in the foo class do not call your patch file “patchfile.txt” but instead call it “foo-socket.patch”.

If the patch implements a new feature, make sure to describe the feature completely in your mail; if the patch fixes a bug, describe the bug in detail and give a reproduction recipe. An exception to these guidelines is when the patch addresses a specific issue in the issues database — in that case, just make sure to refer to the issue number in your log message.

Note that unless you are describing a change rather than posting one, we would probably need you to sign, scan and return back to us a copy of our contributor agreement

§ I would like to update this wiki - what can I do?

Currently, only project developers are permitted to update the wiki. Please send your suggested changes to the dev mailing list.

A wiki page can be updated by appending the string ?action=edit to the current url and refreshing the page. The page will then be displayed with an extra menu line that includes a ‘Page Edit’ item.

If you click on the ‘Page Edit’ item, you will be redirected to a logon page. Enter your developer username and password and you should be redirected back to the original page. Click on ‘Page Edit’ again to access the source content of the page (a quick reference to wiki markup syntax is also displayed).

§ How do I reset my XMPP or jit.si password?

You can reset your jit.si password from within Jitsi. You can do the same for any XMPP account that allows it.

  1. Tools > Options (Mac OS: Jitsi > Preferences)
  2. Click on the “Accounts” tab
  3. Double click to edit the account you would like to change
  4. Click “Change account password” (a large button at the bottom of the account tab as shown on this screenshot).
  5. Enter your new password twice
  6. Click “OK” to confirm
  7. On the Account window click “Next” and “Sign in” to complete the change

In the case of jit.si, you can also change your password via the web

§ Why can’t I connect to ekiga.net?

NB: the problems described in this section also apply to other providers such as 1und1.de

Short Answer: The ekiga.net SIP servers are configured in a way that prevent Jitsi (and many other SIP user agents for that matter) to register with the service. Please use iptel.org or ippi.com instead.

Slightly Longer Answer: The service at ekiga.net is configured to only accept SIP REGISTER requests that contain a public IP address in their Contact header. This means that registration from Jitsi would fail unless you actually have a public IP address. The Ekiga client circumvents this by using STUN to learn the address and port that have been allocated for the current session. It then uses the pair in the SIP Contact header. This kind of use was common for the first version of the STUN protocol defined in RFC 3489 which was sometimes referred to as “classic STUN”.

The IETF has since significantly reviewed the way STUN should be used. The new version of the protocol is now defined in RFC 5389 which, among other things, advises against the use of STUN as a standalone NAT traversal utility:

 However, experience since the publication of RFC 3489 has found 
 that classic STUN simply does not work sufficiently well to be 
 a deployable solution.

Today STUN represents one of the tools used by complete traversal mechanisms such as SIP OUTBOUND (RFC 5626) or ICE (RFC 5245). Neither of these includes sending a STUN obtained address in a Contact header.

So, where does Jitsi currently stand on all this? At the time of writing, we support the ICE protocol but only use it with XMPP. Use with SIP is likely to come in the near future. The reason we haven’t implemented it yet is that most SIP servers currently open to use over the Internet, use a technique called latching. When such servers detect you are connecting from behind a NAT, they would start acting as a relay, receiving media from your peers and then forwarding it to you (and vice versa). While this is by far the most reliably way of traversing NATs, it does indeed imply some scalability constraints.

ICE on the other hand would only fall back to relaying if no other way was found to connect the two participants. This is why it is considered as a more optimal solution and why it’s also on our roadmap.

Note however that the constraints on ekiga.net would continue preventing Jitsi from connecting even when we do implement support for ICE.

§ Why do I see “ICE failed” errors when trying to make calls.

Jitsi implements a number of NAT traversal methods as described here. In many situations we will be able to setup a call directly between you and other users but in order to be able to reliably establish calls, your XMPP or SIP provider has to provide relaying capabilities such as TURN, Jingle Nodes or . If looking for services that support these you can try jit.si or ippi. Also note that both you and your partner need to have unhindered outgoing UDP access to the Internet or at least to your VoIP service provider. You DO NOT however need to map any port numbers on your home router. At best this is going to have no effect.

§ Does Jitsi support STUN? (and how about TURN, UPnP and Jingle Nodes?)

STUN, together with TURN, Jingle Nodes, IPv6 and UPnP, is one of the techniques that Jitsi uses as part of the Interactive Connectivity Establishment (ICE) protocol to handle NAT traversal for calls made over XMPP.

For its SIP calls, Jitsi currently relies on servers to relay media (a technique also known as Hosted NAT Traversal or latching, which would be the case of the majority of the SIP servers used on the Internet today. Note that in terms of reliability Hosted NAT Traversal gives the same results as use of ICE. It even works better in some ways because the connection is setup immediately and no time is waisted for gathering candidates and making connectivity checks. The only downside of HNT is that it may put a strain on SIP providers requiring more bandwidth. This could become a problem especially in environments with a high number of all IP high quality video calls.

It is likely that ICE support for SIP calls would also be added to Jitsi in 2014 especially since this would also help with WebRTC compatibility.

Standalone support for STUN is NOT going to be part of Jitsi. Check out the ekiga entry for more information on the shortcomings of STUN as a standalone NAT traversal utility.

§ I have a few questions regarding ZRTP, SRTP and VoIP security in general. Where can I find some answers?

Check out our ZRTP FAQ.

§ Why does my call stay in the “Initiating Call” status and I can never connect?

A common reason for providers not to respond to calls is that they simply don’t get the INVITE request Jitsi sends to them. This can happen if you are using UDP. The Jitsi INVITE requests may often exceed the maximum allowed packet size (MTU) for your network or that of your server. In such cases packets may be fragmented by your IP stack and fragmentation for UDP does not always work well in certain networks. This is what happens when a client supports multiple features ;). To resolve the issue you can do one of the following:

  • Disable codecs that you don’t use and keep only those that you know you need. PCMU and G.722 are generally a safe minimum choice for audio and you’d better disable all video codecs, at least while testing. Once you manage to successfully connect you may try re-enabling codecs one by one until you reach the upper limit.
  • Use TCP or TLS. If your network supports either of these, that would be a far better option.

§ How does on-line provisioning work?

On-line provisioning is the feature that allows Jitsi to connect to an http URI every time it starts and retrieve part or all of its configuration there. On-line provisioning is often used by providers to remotely configure the clients they maintain. It can be used to set any property in Jitsi such as the codecs used, the features that users can manually configure and even protocol accounts.

When requesting its provisioning information Jitsi can transmit any of a number of parameters to the server, like for example: the OS it is running on, user credentials, a unique ID and others. This way the provisioning server can fine-tune the parameters it sends to Jitsi.

For more information, please check our on-line provisioning manual

§ Are my chat sessions protected and if so, how?

Jitsi supports the OTR encryption protocol. OTR stands for Off-the-Record Messaging and once you’ve set it up (i.e. clicked on that padlock icon in a chat window and verified the identity of your contact) it allows you to make sure that no one other than you two can read your messages, not even your service provider. You can find more on the OTR mechanisms here:

http://en.wikipedia.org/wiki/Off-the-Record_Messaging

§ Should logging be disabled by default when using OTR?

By default Jitsi stores all chats so that if you need any information from them it would always be available. If you would like to disable this behavior you can currently do so by opening Jitsi’s Options/Preferences, selecting the “General” pane and then unchecking the “Log chat history” option near the top. It is also possible to disable chats for specific contacts, to erase their history. An indicator in the chat window makes it aware at all times whether history is on or off while chatting with someone.

OTR protected chats follow the same pattern and some users have expressed concerns that this might be incompatible with their security expectations. Our position on this is that Jitsi’s role is to protect your communication. We also strive to offer usability. The current defaults represent these objectives: most people would prefer for their private communication not to be readable by third parties and most of the time people use Jitsi from personal devices where they are in control of the access policy.

In some cases users may wish for their communications not to be stored locally. This can be the case when using Jitsi on devices that others may also have access to. In such cases users need to be able to easily see whether history is being logged. They would also need to easily turn this off and potentially even erase previous history.

Note however that this subject is entirely different from the encryption one. They are separate measures meant to protect you against separate attacks or problems. We don’t believe that the need for one would necessarily imply the need for the other. We are hence committed to also keeping that separation in the user interface.

§ Force SIP Message support.

Some SIP servers (Asterisk in particular) do not announce the MESSAGE support, despite supporting it. If you enable the account property FORCE_MESSAGING, Jitsi will attempt to use MESSAGE for chats, despite your configured SIP server not explicitly announcing this support to connected clients. For example, if your SIP account is john.smith@example.com, go to property editor type that in the search field and look for something like

net.java.sip.communicator.impl.protocol.sip.acc0123456789.ACCOUNT_UID with the value SIP:john.smith@example.com

The property to add in that case would be:

net.java.sip.communicator.impl.protocol.sip.acc0123456789.FORCE_MESSAGING with the value true.

§ How to add/edit configuration properties.

You can do so by clicking on Tools→Options (Jitsi→Preferences on OS X), then selecting the “Advanced” tab and opening the “Property Editor” form. There you can search edit/delete or create new properties.

Development topics

§ Is there an an Android version of Jitsi?

Yes, but it is still in an early alpha stage. A lot of the user interface is not yet implemented. You can find the apk on the Download page. We expect an usable release in 2014.

§ Is there an iPhone/iPad version of Jitsi?

No. Due to the restrictions imposed by the platform it is highly unlikely this answer is going to change.

§ The cc-buildloop target of ant fails with the following error message: “Could not create task or type of type: junitreport”.

On some Linux distributions such as Debian, the ant package is actualy subdivided into multiple packages. So when you chose to install junit and ant with the distribution specific package system, don’t forget to install ant-optional too.

§ The cc-buildloop target of ant fails with the following error message: “No test with id=IcqProtocolProviderSlick”.

Have you created your own accounts.properties file in the lib directory? You’ll need to define two ICQ test accounts at least, and preferably some test accounts for the other supported protocols.