diff --git a/daemon/src/audio/audiorecord.cpp b/daemon/src/audio/audiorecord.cpp
index 54c4bb6918b3c350a90ba8a0e1c29c7f8281c990..af1f94ef161628194cdf32758e934acf33df402f 100644
--- a/daemon/src/audio/audiorecord.cpp
+++ b/daemon/src/audio/audiorecord.cpp
@@ -33,6 +33,7 @@
 #include <sstream> // for stringstream
 #include <cstdio>
 #include "logger.h"
+#include "fileutils.h"
 
 // structure for the wave header
 
@@ -76,10 +77,22 @@ void AudioRecord::setSndSamplingRate(int smplRate)
 
 void AudioRecord::setRecordingOption(FILE_TYPE type, int sndSmplRate, const std::string &path)
 {
+    std::stringstream s;
+    std::string filePath;
+
+    // use HOME directory if path is empty, nor does not exist
+    if(path.empty() || !fileutils::check_dir(path.c_str())) {
+        s << getenv("HOME");
+        filePath = s.str();
+    }
+    else {
+        filePath = path;
+    }
+
     fileType_ = type;
     channels_ = 1;
     sndSmplRate_ = sndSmplRate;
-    savePath_ = path + "/";
+    savePath_ = (*filePath.rbegin() == '/') ? filePath : filePath + "/";
 }
 
 void AudioRecord::initFilename(const std::string &peerNumber)
@@ -230,7 +243,7 @@ void AudioRecord::createFilename()
     out << timeinfo->tm_sec;
     filename_ = out.str();
 
-    DEBUG("AudioRecord: create filename for this call %s ", filename_.c_str());
+    DEBUG("AudioRecord: Generate filename for this call %s ", filename_.c_str());
 }
 
 bool AudioRecord::setRawFile()
diff --git a/daemon/src/audio/recordable.cpp b/daemon/src/audio/recordable.cpp
index 72649412d5c723b2c096bfc10a2ddfa34e7475cf..7eda5bd661f1d8e24c8c092f8e0425ac8b0b5b37 100644
--- a/daemon/src/audio/recordable.cpp
+++ b/daemon/src/audio/recordable.cpp
@@ -29,9 +29,11 @@
 
 #include "recordable.h"
 #include "manager.h"
+#include "logger.h"
 
 Recordable::Recordable() : recAudio_(), recorder_(&recAudio_, Manager::instance().getMainBuffer())
 {
+    DEBUG("=================== Set recornding options: %s", Manager::instance().audioPreference.getRecordpath().c_str());
     recAudio_.setRecordingOption(AudioRecord::FILE_WAV, 8000, Manager::instance().audioPreference.getRecordpath());
 }
 
diff --git a/daemon/src/fileutils.cpp b/daemon/src/fileutils.cpp
index 93829c7edfca32522e8fd46ef1e57736f8c70e3d..29376115950b5a2634ca44cd285c1a8af71b40c4 100644
--- a/daemon/src/fileutils.cpp
+++ b/daemon/src/fileutils.cpp
@@ -39,7 +39,7 @@
 #include <iostream>
 #include "fileutils.h"
 
-namespace {
+namespace fileutils {
 // returns true if directory exists
 bool check_dir(const char *path)
 {
@@ -55,9 +55,7 @@ bool check_dir(const char *path)
 
     return true;
 }
-}
 
-namespace fileutils {
 static char *program_dir = NULL;
 
 void set_program_dir(char *program_path)
diff --git a/daemon/src/fileutils.h b/daemon/src/fileutils.h
index 67bc019d6811b1e0a6225b6785cc22de0cc048fc..c513daed12d902efc88f53e81fa67ad865fe7c63 100644
--- a/daemon/src/fileutils.h
+++ b/daemon/src/fileutils.h
@@ -42,6 +42,7 @@
 #define DIR_SEPARATOR_CH = '/'  // Directory separator string
 
 namespace fileutils {
+    bool check_dir(const char *path);
     void set_program_dir(char *program_path);
     const char *get_program_dir();
     bool create_pidfile();