Index: uspace/drv/uhci/debug.h
===================================================================
--- uspace/drv/uhci/debug.h	(revision f0e25e8e722ea77e97e5cae9b0f6c0f93e129aa6)
+++ uspace/drv/uhci/debug.h	(revision 096a1ff8b12997178e8f707bd897284efca520a2)
@@ -60,4 +60,8 @@
 	usb_dprintf( NAME, DEBUG_LEVEL_VERBOSE, fmt, ##args )
 
+#define UHCI_GET_STR_FLAG(reg, flag, msg_set, msg_unset) \
+	((((reg) & (flag)) > 0) ? (msg_set) : (msg_unset))
+
+
 #endif
 /**
Index: uspace/drv/uhci/root_hub/port.c
===================================================================
--- uspace/drv/uhci/root_hub/port.c	(revision f0e25e8e722ea77e97e5cae9b0f6c0f93e129aa6)
+++ uspace/drv/uhci/root_hub/port.c	(revision 096a1ff8b12997178e8f707bd897284efca520a2)
@@ -1,4 +1,5 @@
 
 #include <errno.h>
+#include <str_error.h>
 //#include <usb/devreq.h> /* for usb_device_request_setup_packet_t */
 #include <usb/usb.h>
@@ -22,15 +23,21 @@
 
 	while (1) {
-		uhci_print_info("Port(%d) status address %p:\n",
-		  port_instance->number, port_instance->address);
-
-		/* read register value */
+		/* Read port status. */
 		port_status_t port_status =
 			port_status_read(port_instance->address);
 
-		/* debug print */
-		uhci_print_info("Port(%d) status %#.4x:\n",
-		  port_instance->number, port_status);
-		print_port_status(port_status);
+		uhci_print_info("Port %d: %04X (@ 0x%x) = " \
+		    "%s,%s,%s,%s,[%s,%s],%s,%s,%s,%s\n",
+		    port_instance->number, port_status, port_instance->address,
+		    UHCI_GET_STR_FLAG(port_status, STATUS_SUSPEND, "suspend", "up"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_IN_RESET, "in reset", "-"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_LOW_SPEED, "lowsp", "fullsp"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_RESUME, "resume", "k-state"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_LINE_D_MINUS, "D- on", "D- off"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_LINE_D_PLUS, "D+ on", "D+ off"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_ENABLED_CHANGED, "enblchg", "-"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_ENABLED, "enabled", "disabled"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_CONNECTED_CHANGED, "connchg", "-"),
+		    UHCI_GET_STR_FLAG(port_status, STATUS_CONNECTED, "hasdev", "nodev"));
 
 		if (port_status & STATUS_CONNECTED_CHANGED) {
@@ -81,5 +88,6 @@
 
 	if (ret != EOK) { /* address assigning went wrong */
-		uhci_print_error("Failed(%d) to assign address to the device.\n", ret);
+		uhci_print_error("Failed to assign address (port %d): %s.\n",
+		    port->number, str_error(ret));
 		uhci_port_set_enabled(port, false);
 		usb_address_keeping_release_default(&uhci_instance->address_manager);
Index: uspace/drv/uhci/uhci.c
===================================================================
--- uspace/drv/uhci/uhci.c	(revision f0e25e8e722ea77e97e5cae9b0f6c0f93e129aa6)
+++ uspace/drv/uhci/uhci.c	(revision 096a1ff8b12997178e8f707bd897284efca520a2)
@@ -218,4 +218,5 @@
 	return EOK;
 }
+
 /*---------------------------------------------------------------------------*/
 int uhci_debug_checker(void *arg)
@@ -227,6 +228,14 @@
 		reg = pio_read_16(&instance->registers->usbcmd);
 		uhci_print_verbose("Command register: %X\n", reg);
+
 		reg = pio_read_16(&instance->registers->usbsts);
-		uhci_print_verbose("Status register: %X\n", reg);
+		uhci_print_verbose("Status register: %X (%s,%s,%s,%s,%s,%s)\n",
+		    reg,
+		    UHCI_GET_STR_FLAG(reg, UHCI_STATUS_HALTED, "halted", "-"),
+		    UHCI_GET_STR_FLAG(reg, UHCI_STATUS_PROCESS_ERROR, "prerr", "-"),
+		    UHCI_GET_STR_FLAG(reg, UHCI_STATUS_SYSTEM_ERROR, "syserr", "-"),
+		    UHCI_GET_STR_FLAG(reg, UHCI_STATUS_RESUME, "res", "-"),
+		    UHCI_GET_STR_FLAG(reg, UHCI_STATUS_ERROR_INTERRUPT, "errintr", "-"),
+		    UHCI_GET_STR_FLAG(reg, UHCI_STATUS_INTERRUPT, "intr", "-"));
 /*
 		uintptr_t frame_list = pio_read_32(&instance->registers->flbaseadd);
Index: uspace/drv/uhci/uhci.h
===================================================================
--- uspace/drv/uhci/uhci.h	(revision f0e25e8e722ea77e97e5cae9b0f6c0f93e129aa6)
+++ uspace/drv/uhci/uhci.h	(revision 096a1ff8b12997178e8f707bd897284efca520a2)
@@ -56,4 +56,11 @@
 
 	uint16_t usbsts;
+#define UHCI_STATUS_HALTED (1 << 5)
+#define UHCI_STATUS_PROCESS_ERROR (1 << 4)
+#define UHCI_STATUS_SYSTEM_ERROR (1 << 3)
+#define UHCI_STATUS_RESUME (1 << 2)
+#define UHCI_STATUS_ERROR_INTERRUPT (1 << 1)
+#define UHCI_STATUS_INTERRUPT (1 << 0)
+
 	uint16_t usbintr;
 	uint16_t frnum;
