Index: uspace/app/init/init.c
===================================================================
--- uspace/app/init/init.c	(revision 4285851becf7e512acbfdd864790959fa9915a5a)
+++ uspace/app/init/init.c	(revision 99c2c69ebfa745e3ff1dc016fb1b0309f27ebb8b)
@@ -402,4 +402,5 @@
 		}
 	}
+	srv_start("/srv/hound");
 	
 	return 0;
Index: uspace/app/wavplay/dplay.c
===================================================================
--- uspace/app/wavplay/dplay.c	(revision 4285851becf7e512acbfdd864790959fa9915a5a)
+++ uspace/app/wavplay/dplay.c	(revision 99c2c69ebfa745e3ff1dc016fb1b0309f27ebb8b)
@@ -151,5 +151,6 @@
 	    device_event_callback, pb);
 	if (ret != EOK) {
-		printf("Failed to register event callback.\n");
+		printf("Failed to register event callback: %s.\n",
+		    str_error(ret));
 		return;
 	}
@@ -285,5 +286,6 @@
 			    pb->f.sample_format);
 			if (ret != EOK) {
-				printf("Failed to start playback\n");
+				printf("Failed to start playback: %s\n",
+				    str_error(ret));
 				return;
 			}
@@ -291,5 +293,6 @@
 			ret = audio_pcm_get_buffer_pos(pb->device, &pos);
 			if (ret != EOK) {
-				printf("Failed to update position indicator\n");
+				printf("Failed to update position indicator "
+				   "%s\n", str_error(ret));
 			}
 		}
@@ -308,5 +311,6 @@
 		const int ret = audio_pcm_get_buffer_pos(pb->device, &pos);
 		if (ret != EOK) {
-			printf("Failed to update position indicator\n");
+			printf("Failed to update position indicator %s\n",
+			    str_error(ret));
 		}
 		getuptime(&time);
@@ -350,5 +354,5 @@
 	ret = audio_pcm_get_info_str(session, &info);
 	if (ret != EOK) {
-		printf("Failed to get PCM info.\n");
+		printf("Failed to get PCM info: %s.\n", str_error(ret));
 		goto close_session;
 	}
Index: uspace/app/wavplay/main.c
===================================================================
--- uspace/app/wavplay/main.c	(revision 4285851becf7e512acbfdd864790959fa9915a5a)
+++ uspace/app/wavplay/main.c	(revision 99c2c69ebfa745e3ff1dc016fb1b0309f27ebb8b)
@@ -79,8 +79,12 @@
 	    &format.sampling_rate, &format.sample_format, &error);
 	if (ret != EOK) {
-		printf("Error parsing wav header: %s.\n", error);
+		printf("Error parsing `%s' wav header: %s.\n", filename, error);
 		fclose(source);
 		return EINVAL;
 	}
+
+	printf("File `%s' format: %u channel(s), %uHz, %s.\n", filename,
+	    format.channels, format.sampling_rate,
+	    pcm_sample_format_str(format.sample_format));
 
 	/* Allocate buffer and create new context */
@@ -136,8 +140,11 @@
 	    &format.sampling_rate, &format.sample_format, &error);
 	if (ret != EOK) {
-		printf("Error parsing wav header: %s.\n", error);
+		printf("Error parsing `%s' wav header: %s.\n", filename, error);
 		fclose(source);
 		return EINVAL;
 	}
+	printf("File `%s' format: %u channel(s), %uHz, %s.\n", filename,
+	    format.channels, format.sampling_rate,
+	    pcm_sample_format_str(format.sample_format));
 
 	/* Connect new playback context */
Index: uspace/app/wavplay/wave.c
===================================================================
--- uspace/app/wavplay/wave.c	(revision 4285851becf7e512acbfdd864790959fa9915a5a)
+++ uspace/app/wavplay/wave.c	(revision 99c2c69ebfa745e3ff1dc016fb1b0309f27ebb8b)
@@ -81,8 +81,10 @@
 	}
 
-	if (uint16_t_le2host(header->subchunk1_size) != PCM_SUBCHUNK1_SIZE) {
+	if (uint32_t_le2host(header->subchunk1_size) != PCM_SUBCHUNK1_SIZE) {
+		//TODO subchunk 1 sizes other than 16 are allowed ( 18, 40)
+		//http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/WAVE/WAVE.html
 		if (error)
 			*error = "invalid subchunk1 size";
-		return EINVAL;
+//		return EINVAL;
 	}
 
@@ -94,10 +96,14 @@
 
 	if (str_lcmp(header->subchunk2_id, SUBCHUNK2_ID, 4) != 0) {
+		//TODO basedd on subchunk1 size, we might be reading wrong
+		//offset
 		if (error)
 			*error = "invalid subchunk2 id";
-		return EINVAL;
+//		return EINVAL;
 	}
 
 
+	//TODO data and data_size are incorrect in extended wav formats
+	//pcm params are OK
 	if (data)
 		*data = header->data;
Index: uspace/srv/audio/hound/audio_device.c
===================================================================
--- uspace/srv/audio/hound/audio_device.c	(revision 4285851becf7e512acbfdd864790959fa9915a5a)
+++ uspace/srv/audio/hound/audio_device.c	(revision 99c2c69ebfa745e3ff1dc016fb1b0309f27ebb8b)
@@ -162,5 +162,5 @@
 		}
 		audio_pcm_register_event_callback(dev->sess,
-		    device_event_callback, dev);\
+		    device_event_callback, dev);
 
 		/* Fill the buffer first. Fill the first two fragments,
