diff --git a/sflphone-common/src/call.h b/sflphone-common/src/call.h
index aed0168c90eeb59c9152f3166e17b9e9bd9f7e7e..d9ab61b0e0cfd241e73caf3e6eb2f8dfab97549e 100644
--- a/sflphone-common/src/call.h
+++ b/sflphone-common/src/call.h
@@ -125,6 +125,20 @@ class Call: public Recordable{
          */
         const std::string& getPeerName() {  return _peerName; }
 
+	/** 
+         * Set the display name (caller in ingoing)
+         * not protected by mutex (when created)
+         * @return std::string The peer display name
+         */
+        void setDisplayName(const std::string& name) {  _displayName = name; }
+
+	/** 
+         * Get the peer display name (caller in ingoing)
+         * not protected by mutex (when created)
+         * @return std::string The peer name
+         */
+        const std::string& getDisplayName() {  return _displayName; }
+
         /**
          * Tell if the call is incoming
          * @return true if yes
@@ -260,8 +274,13 @@ class Call: public Recordable{
         /** Number of the peer */
         std::string _peerNumber;
 
+	/** Display Name */
+	std::string _displayName;
+
 	/** File name for his call : time YY-MM-DD */
         std::string _filename;
+
+	
 };
 
 #endif
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 1f98b69241b93e5d1781dd7ad334a5113db795d4..86e911c6bc3d1751ebd7b66aa5d6bd7ac8cb6719 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -1745,7 +1745,7 @@ bool
 ManagerImpl::incomingCall (Call* call, const AccountID& accountId)
 {
     PulseLayer *pulselayer;
-    std::string from, number;
+    std::string from, number, display_name;
 
     stopTone (true);
 
@@ -1775,8 +1775,12 @@ ManagerImpl::incomingCall (Call* call, const AccountID& accountId)
 
     from = call->getPeerName();
 
+    display_name = call->getDisplayName();
+
     number = call->getPeerNumber();
 
+    _debug(    "incomingCall display_name from: %s, number: %s\n");
+
     if (from != "" && number != "") {
         from.append (" <");
         from.append (number);
@@ -1797,7 +1801,8 @@ ManagerImpl::incomingCall (Call* call, const AccountID& accountId)
     */
 
     /* Broadcast a signal over DBus */
-    if (_dbus) _dbus->getCallManager()->incomingCall (accountId, call->getCallId(), from);
+    _debug("    From: %s, Number: %s\n", from.c_str(), number.c_str());
+    if (_dbus) _dbus->getCallManager()->incomingCall (accountId, call->getCallId(), from.c_str());
 
     //if (_dbus) _dbus->getCallManager()->callStateChanged(call->getCallId(), "INCOMING");
 
@@ -2626,6 +2631,8 @@ ManagerImpl::setAudioOutputDevice (const int index)
     alsalayer = dynamic_cast<AlsaLayer*> (getAudioDriver ());
     alsaplugin = alsalayer->getAudioPlugin ();
 
+    _debug("  set output plugin: %s\n", alsaplugin.c_str());
+
     _audiodriver->openDevice (_audiodriver->getIndexIn(), index, _audiodriver->getSampleRate(), _audiodriver->getFrameSize(), SFL_PCM_PLAYBACK, alsaplugin);
 
     if (_audiodriver -> getErrorMessage() != -1)
@@ -2646,6 +2653,7 @@ ManagerImpl::getAudioInputDeviceList (void)
 
     audiolayer = dynamic_cast<AlsaLayer *> (getAudioDriver());
 
+
     if (audiolayer)
         devices = audiolayer->getSoundCardsInfo (SFL_PCM_CAPTURE);
 
@@ -2668,6 +2676,8 @@ ManagerImpl::setAudioInputDevice (const int index)
     alsalayer = dynamic_cast<AlsaLayer*> (getAudioDriver ());
     alsaplugin = alsalayer->getAudioPlugin ();
 
+    _debug("  set input plugin: %s\n", alsaplugin.c_str());
+
     _audiodriver->openDevice (index, _audiodriver->getIndexOut(), _audiodriver->getSampleRate(), _audiodriver->getFrameSize(), SFL_PCM_CAPTURE, alsaplugin);
 
     if (_audiodriver -> getErrorMessage() != -1)
diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp
index dae0f09b649292e0988b2e5ba838bb7417258216..a7bd88402889f0e31e26df4d8cd3101bc106535a 100644
--- a/sflphone-common/src/sip/sipvoiplink.cpp
+++ b/sflphone-common/src/sip/sipvoiplink.cpp
@@ -41,6 +41,7 @@
 #include <netinet/in.h>
 #include <arpa/nameser.h>
 #include <resolv.h>
+#include <istream>
 
 #define CAN_REINVITE        1
 
@@ -2836,7 +2837,7 @@ mod_on_rx_request (pjsip_rx_data *rdata)
     AccountID account_id;
     pjsip_uri *uri;
     pjsip_sip_uri *sip_uri;
-    std::string userName, server;
+    std::string userName, server, displayName;
     SIPVoIPLink *link;
     CallID id;
     SIPCall* call;
@@ -2844,6 +2845,8 @@ mod_on_rx_request (pjsip_rx_data *rdata)
 	SIPAccount *account;
     pjmedia_sdp_session *r_sdp;
 
+    pjsip_generic_string_hdr* hdr;
+
     // voicemail part
     std::string method_name;
     std::string request;
@@ -2882,12 +2885,26 @@ mod_on_rx_request (pjsip_rx_data *rdata)
         return false;
     }
 
+    
+    char* from_header = strstr(rdata->msg_info.msg_buf, "From: ");
+    // _debug("------------------------------ thefromheader: %s\n", from_header);
+    char* display_name = strtok(from_header, "\"");
+    display_name = strtok(NULL, "\"");
+    _debug("UserAgent: The displayname for this call: %s\n", display_name);
+    displayName = string(display_name);
+
     _debug ("UserAgent: The receiver is : %s@%s\n", userName.data(), server.data());
 
     _debug ("UserAgent: The callee account id is %s\n", account_id.c_str());
 
     /* Now, it is the time to find the information of the caller */
     uri = rdata->msg_info.from->uri;
+
+
+    // display_name = rdata->msg_info.from->name;
+
+    std::string temp((char*)(&display_name));
+
     sip_uri = (pjsip_sip_uri *) pjsip_uri_get_uri (uri);
 
     // Store the peer number
@@ -3009,6 +3026,8 @@ mod_on_rx_request (pjsip_rx_data *rdata)
 
     call->setPeerNumber (peerNumber);
 
+    call->setDisplayName(displayName);
+
     call->initRecFileName();
 
     // Notify UI there is an incoming call