diff --git a/src/mod/endpoints/mod_skypiax/mod_skypiax.c b/src/mod/endpoints/mod_skypiax/mod_skypiax.c
index 6f9120a2bb..ef7d5a86b4 100644
--- a/src/mod/endpoints/mod_skypiax/mod_skypiax.c
+++ b/src/mod/endpoints/mod_skypiax/mod_skypiax.c
@@ -240,7 +240,7 @@ static switch_status_t interface_exists(char *the_interface)
 
 static switch_status_t remove_interface(char *the_interface)
 {
-	int x = 100;
+	int x = 10;
 	unsigned int howmany = 8;
 	int interface_id = -1;
 	private_t *tech_pvt = NULL;
@@ -318,7 +318,7 @@ static switch_status_t remove_interface(char *the_interface)
 
 	while (x) {
 		x--;
-		switch_yield(20000);
+		switch_yield(50000);
 	}
 
 	if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_signaling_thread) {
@@ -1257,7 +1257,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_skypiax_load)
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown)
 {
-	int x = 100;
+	int x;
 	private_t *tech_pvt = NULL;
 	switch_status_t status;
 	unsigned int howmany = 8;
@@ -1268,6 +1268,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown)
 	for (interface_id = 0; interface_id < SKYPIAX_MAX_INTERFACES; interface_id++) {
 		tech_pvt = &globals.SKYPIAX_INTERFACES[interface_id];
 
+		if (strlen(globals.SKYPIAX_INTERFACES[interface_id].name)) {
 		if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_signaling_thread) {
 #ifdef WIN32
 			switch_file_write(tech_pvt->SkypiaxHandles.fdesc[1], "sciutati", &howmany);	// let's the controldev_thread die
@@ -1297,9 +1298,10 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown)
 			XSync(tech_pvt->SkypiaxHandles.disp, False);
 #endif
 		}
-		while (x) {				//FIXME 2 seconds?
+		x=10;
+		while (x) {				//FIXME 0.5 seconds?
 			x--;
-			switch_yield(20000);
+			switch_yield(50000);
 		}
 		if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_signaling_thread) {
 			switch_thread_join(&status, globals.SKYPIAX_INTERFACES[interface_id].skypiax_signaling_thread);
@@ -1307,8 +1309,24 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypiax_shutdown)
 		if (globals.SKYPIAX_INTERFACES[interface_id].skypiax_api_thread) {
 			switch_thread_join(&status, globals.SKYPIAX_INTERFACES[interface_id].skypiax_api_thread);
 		}
-	}
+#ifndef WIN32
+				WARNINGA("SHUTDOWN interface_id=%d\n", SKYPIAX_P_LOG, interface_id);
+			shutdown(tech_pvt->audioskypepipe[0], 2);
+			close(tech_pvt->audioskypepipe[0]);
+			shutdown(tech_pvt->audioskypepipe[1], 2);
+			close(tech_pvt->audioskypepipe[1]);
+			shutdown(tech_pvt->audiopipe[0], 2);
+			close(tech_pvt->audiopipe[0]);
+			shutdown(tech_pvt->audiopipe[1], 2);
+			close(tech_pvt->audiopipe[1]);
+			shutdown(tech_pvt->SkypiaxHandles.fdesc[0], 2);
+			close(tech_pvt->SkypiaxHandles.fdesc[0]);
+			shutdown(tech_pvt->SkypiaxHandles.fdesc[1], 2);
+			close(tech_pvt->SkypiaxHandles.fdesc[1]);
+		}
+#endif /* WIN32 */
 
+	}
 	switch_safe_free(globals.dialplan);
 	switch_safe_free(globals.context);
 	switch_safe_free(globals.destination);