diff --git a/src/audio/alsalayer.cpp b/src/audio/alsalayer.cpp
index b379daaad4a87c536ae10bcb60350b3b8df48fef..72673ec566442a3cd146b7d19423019e90a8cffa 100644
--- a/src/audio/alsalayer.cpp
+++ b/src/audio/alsalayer.cpp
@@ -195,10 +195,6 @@ AlsaLayer::putUrgent(void* buffer, int toCopy)
   int
 AlsaLayer::canGetMic()
 {
-
-
-  _debug("alsa\n");
-
   int avail;
   if ( _CaptureHandle ) {
     avail = snd_pcm_avail_update( _CaptureHandle );
diff --git a/src/audio/audiostream.cpp b/src/audio/audiostream.cpp
index 0e6496068344750b07fced32836a47cae84b7b28..1f7df13ba887c2c66f334f3cd1039567850680a1 100644
--- a/src/audio/audiostream.cpp
+++ b/src/audio/audiostream.cpp
@@ -28,7 +28,7 @@ AudioStream::AudioStream( pa_context* context, int type, std::string desc, doubl
   sample_spec.rate = 44100; 
   sample_spec.channels = 1; 
   channel_map.channels = 1; 
-  pa_cvolume_set( &_volume , 1 , PA_VOLUME_MUTED ) ; // * vol / 100 ;
+  pa_cvolume_set( &_volume , 1 , PA_VOLUME_NORM ) ; // * vol / 100 ;
   
   _audiostream =  createStream( context );
 } 
diff --git a/src/audio/pulselayer.cpp b/src/audio/pulselayer.cpp
index 59b1d4b95fc73d1ef8d15ee8695918335d32a802..a2da80d467f095d9cfbd318e81349f05292ab8a2 100644
--- a/src/audio/pulselayer.cpp
+++ b/src/audio/pulselayer.cpp
@@ -199,7 +199,6 @@ PulseLayer::putUrgent(void* buffer, int toCopy)
   int
 PulseLayer::canGetMic()
 {
-  _debug("pulseaudio");
   if( record )
     return  _micRingBuffer.AvailForGet();
   else
diff --git a/src/iaxvoiplink.cpp b/src/iaxvoiplink.cpp
index 73b42a0492d6b3752b8bf3846a8f33dad7536037..f8bf510607a42a1085f57e2c6addc8b2014a85a5 100644
--- a/src/iaxvoiplink.cpp
+++ b/src/iaxvoiplink.cpp
@@ -252,14 +252,18 @@ IAXVoIPLink::sendAudioFromMic(void)
   // Send sound here
   if (audiolayer) {
 
-    _debug("hum");
     // we have to get 20ms of data from the mic *20/1000 = /50
     // rate/50 shall be lower than IAX__20S_48KHZ_MAX
     maxBytesToGet = audiolayer->getSampleRate()* audiolayer->getFrameSize() / 1000 * sizeof(SFLDataFormat);
 
+    // We have to update the audio layer type in case we switched
+    // TODO Find out a better way to do it
+    updateAudiolayer();
+
     // available bytes inside ringbuffer
     availBytesFromMic = audiolayer->canGetMic();
 
+
     if (availBytesFromMic < maxBytesToGet) {
       // We need packets full!
       return;
@@ -887,3 +891,8 @@ IAXVoIPLink::iaxCodecMapToFormat(IAXCall* call)
 }
 
 
+void IAXVoIPLink::updateAudiolayer( void )
+{
+    audiolayer = NULL;
+    audiolayer = Manager::instance().getAudioDriver();
+}
diff --git a/src/iaxvoiplink.h b/src/iaxvoiplink.h
index 770bd82d5db806a92b0362abb9e0c8fbdbae3b57..569ac88298964b0462cb4e4ef5945b3dd72cffdb 100644
--- a/src/iaxvoiplink.h
+++ b/src/iaxvoiplink.h
@@ -188,6 +188,8 @@ class IAXVoIPLink : public VoIPLink
      */
     void setPass(const std::string& pass) { _pass = pass; }
 
+    void updateAudiolayer( void ); 
+
   private:
     /**
      * Get IAX Call from an id