diff --git a/daemon/src/audio/alsa/alsalayer.cpp b/daemon/src/audio/alsa/alsalayer.cpp
index d91fc5eec3d9bfdefe5fcb2aee712d637c47133f..fed0cd5320909e588b3a2c4132f29cdb1852db0d 100644
--- a/daemon/src/audio/alsa/alsalayer.cpp
+++ b/daemon/src/audio/alsa/alsalayer.cpp
@@ -418,6 +418,9 @@ AlsaLayer::write(void* buffer, int length, snd_pcm_t * handle)
 
     int err = snd_pcm_writei(handle, buffer , frames);
 
+    if (err < 0)
+        snd_pcm_recover(handle, err, 0);
+
     if (err >= 0)
         return;