Index: uspace/lib/usb/src/addrkeep.c
===================================================================
--- uspace/lib/usb/src/addrkeep.c	(revision 103a36268784644d92fb6cc2e15a9ee181d31983)
+++ uspace/lib/usb/src/addrkeep.c	(revision bfc12ef87b410db1edd503580b17592d8bab2736)
@@ -149,4 +149,5 @@
 			&addresses->default_condvar_guard);
 	}
+	addresses->default_available = false;
 	fibril_mutex_unlock(&addresses->default_condvar_guard);
 }
Index: uspace/lib/usb/src/debug.c
===================================================================
--- uspace/lib/usb/src/debug.c	(revision 103a36268784644d92fb6cc2e15a9ee181d31983)
+++ uspace/lib/usb/src/debug.c	(revision bfc12ef87b410db1edd503580b17592d8bab2736)
@@ -67,4 +67,5 @@
 /** Serialization mutex for logging functions. */
 static FIBRIL_MUTEX_INITIALIZE(log_serializer);
+static FILE *log_stream = NULL;
 
 /** Find or create new tag with given name.
@@ -171,4 +172,12 @@
 	log_prefix = message_prefix;
 	log_level = level;
+	if (log_stream == NULL) {
+		char *fname;
+		int rc = asprintf(&fname, "/log/%s", message_prefix);
+		if (rc > 0) {
+			log_stream = fopen(fname, "w");
+			free(fname);
+		}
+	}
 }
 
@@ -197,8 +206,4 @@
 void usb_log_printf(usb_log_level_t level, const char *format, ...)
 {
-	if (level > log_level) {
-		return;
-	}
-
 	FILE *stream = NULL;
 	switch (level) {
@@ -216,7 +221,23 @@
 	va_start(args, format);
 
+	/*
+	 * Serialize access to log files.
+	 * Always print to log file, to screen print only when the enabled
+	 * log level is high enough.
+	 */
 	fibril_mutex_lock(&log_serializer);
-	fprintf(stream, "[%s]%s: ", log_prefix, log_level_name(level));
-	vfprintf(stream, format, args);
+
+	const char *level_name = log_level_name(level);
+
+	if (log_stream != NULL) {
+		fprintf(log_stream, "[%s]%s: ", log_prefix, level_name);
+		vfprintf(log_stream, format, args);
+	}
+
+	if (level <= log_level) {
+		fprintf(stream, "[%s]%s: ", log_prefix, level_name);
+		vfprintf(stream, format, args);
+	}
+
 	fibril_mutex_unlock(&log_serializer);
 
