diff --git a/sflphone-common/src/audio/audiorecord.cpp b/sflphone-common/src/audio/audiorecord.cpp
index 588d82e3d409d6c33922c6ed6c1aed5b074996a3..88f9619edda47e702231141ef9289de679c3163f 100644
--- a/sflphone-common/src/audio/audiorecord.cpp
+++ b/sflphone-common/src/audio/audiorecord.cpp
@@ -301,6 +301,7 @@ bool AudioRecord::setRawFile()
 
 bool AudioRecord::setWavFile()
 {
+    _debug ("AudioRecord: Create wave file %s", savePath_.c_str());
 
     fp = fopen (savePath_.c_str(), "wb");
 
diff --git a/sflphone-common/src/audio/audiorecorder.cpp b/sflphone-common/src/audio/audiorecorder.cpp
index d5763aaa3c3b32012c678f29783810a7bd8afd90..0adba9caa09b323fb17bfc37cec34ad17baf3552 100644
--- a/sflphone-common/src/audio/audiorecorder.cpp
+++ b/sflphone-common/src/audio/audiorecorder.cpp
@@ -59,7 +59,9 @@ AudioRecorder::AudioRecorder (AudioRecord  *arec, MainBuffer *mb) : Thread()
  */
 void AudioRecorder::run (void)
 {
-    SFLDataFormat buffer[10000];
+
+    int bufferLength = 10000;
+    SFLDataFormat buffer[bufferLength];
 
     while (true) {
 
@@ -68,6 +70,10 @@ void AudioRecorder::run (void)
 
         int availBytes = mbuffer->availForGet (recorderId);
 
+        int toGet = (availBytes < bufferLength) ? availBytes : bufferLength;
+
+        mbuffer->getData (buffer, toGet, 100, recorderId);
+
         if (availBytes > 0) {
 
             arecord->recData (buffer, availBytes/sizeof (SFLDataFormat));
diff --git a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
index a4638126a4b60a416e8e60da7da0c4d2befb4988..02076436821f8d067037b17ad146bf3d37778aba 100644
--- a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
+++ b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
@@ -76,13 +76,14 @@ static void latency_update_callback (pa_stream *p, void *userdata UNUSED)
 
     pa_stream_get_latency (p, &r_usec, NULL);
 
+    /*
     _debug ("Audio: Stream letency update %0.0f ms for device %s", (float) r_usec/1000, pa_stream_get_device_name (p));
     _debug ("Audio: maxlength %u", pa_stream_get_buffer_attr (p)->maxlength);
     _debug ("Audio: tlength %u", pa_stream_get_buffer_attr (p)->tlength);
     _debug ("Audio: prebuf %u", pa_stream_get_buffer_attr (p)->prebuf);
     _debug ("Audio: minreq %u", pa_stream_get_buffer_attr (p)->minreq);
     _debug ("Audio: fragsize %u", pa_stream_get_buffer_attr (p)->fragsize);
-
+    */
 }
 
 static void sink_input_info_callback (pa_context *c UNUSED, const pa_sink_info *i, int eol, void *userdata)
diff --git a/sflphone-common/src/audio/recordable.cpp b/sflphone-common/src/audio/recordable.cpp
index 799bb814533b46d24905d101131f55fa0a3490c7..87c3f2b302aac7020335f3d25d5cbfdfa41f2c12 100644
--- a/sflphone-common/src/audio/recordable.cpp
+++ b/sflphone-common/src/audio/recordable.cpp
@@ -36,7 +36,7 @@ Recordable::Recordable() : recorder (&recAudio, Manager::instance().getMainBuffe
     FILE_TYPE fileType = FILE_WAV;
     SOUND_FORMAT soundFormat = INT16;
 
-    recAudio.setRecordingOption (fileType, soundFormat, 8000, Manager::instance().getConfigString (AUDIO, RECORD_PATH));
+    recAudio.setRecordingOption (fileType, soundFormat, 8000, Manager::instance().audioPreference.getRecordpath());
 }
 
 
diff --git a/sflphone-common/src/call.cpp b/sflphone-common/src/call.cpp
index 51a3d4546360ac7e7ac3a970d8d65cddb18a61f4..040d90c74ca1a3a69bb5897cb1c3ef947f7ae3a7 100644
--- a/sflphone-common/src/call.cpp
+++ b/sflphone-common/src/call.cpp
@@ -189,6 +189,8 @@ Call::isAudioStarted()
 bool
 Call::setRecording()
 {
+    _debug ("Call: Set recording");
+
     bool recordStatus = Recordable::recAudio.isRecording();
 
     Recordable::recAudio.setRecording();
@@ -196,16 +198,21 @@ Call::setRecording()
     // Start recording
     if (!recordStatus) {
 
+        _debug ("Call: Call not recording yet, set ringbuffers");
+
         MainBuffer *mbuffer = Manager::instance().getMainBuffer();
         CallID process_id = Recordable::recorder.getRecorderID();
 
         mbuffer->bindHalfDuplexOut (process_id, _id);
         mbuffer->bindHalfDuplexOut (process_id);
 
+        Recordable::recorder.start();
     }
     // Stop recording
     else {
 
+        _debug ("Call: Stop recording");
+
         MainBuffer *mbuffer = Manager::instance().getMainBuffer();
         CallID process_id = Recordable::recorder.getRecorderID();
 
@@ -216,7 +223,5 @@ Call::setRecording()
 
     Manager::instance().getMainBuffer()->stateInfo();
 
-    Recordable::recorder.start();
-
     return recordStatus;
 }
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 47e5f3c385cc7b433ce3cc9f04f4968dbe5370d0..ed2d543c6b31906a4070c4531bd8bd323ed3d88a 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -2557,9 +2557,11 @@ void ManagerImpl::setRecordingCall (const CallID& id)
     Recordable* rec = NULL;
 
     if (!isConference (id)) {
+        _debug ("Manager: Set recording for call %s", id.c_str());
         AccountID accountid = getAccountFromCall (id);
         rec = (Recordable *) getAccountLink (accountid)->getCall (id);
     } else {
+        _debug ("Manager: Ser recording for conference %s", id.c_str());
         ConferenceMap::iterator it = _conferencemap.find (id);
         rec = (Recordable *) it->second;
     }