Index: uspace/lib/usbdev/include/usb/dev/driver.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/driver.h	(revision ea30cc16602dc9e31a335ad43074687c04b66566)
+++ uspace/lib/usbdev/include/usb/dev/driver.h	(revision c8c758d4ad2c97087b5a76ed235a0bedfa4ed3fe)
@@ -40,4 +40,5 @@
 #include <usb/dev/usb_device_connection.h>
 #include <usb/dev/pipes.h>
+#include <usb_iface.h>
 
 /** Descriptors for USB device. */
@@ -109,4 +110,5 @@
 	 */
 	void *driver_data;
+	usb_dev_session_t *bus_session;
 } usb_device_t;
 
Index: uspace/lib/usbdev/src/devdrv.c
===================================================================
--- uspace/lib/usbdev/src/devdrv.c	(revision ea30cc16602dc9e31a335ad43074687c04b66566)
+++ uspace/lib/usbdev/src/devdrv.c	(revision c8c758d4ad2c97087b5a76ed235a0bedfa4ed3fe)
@@ -411,4 +411,10 @@
 	usb_dev->pipes = NULL;
 
+	usb_dev->bus_session = usb_dev_connect(ddf_dev);
+	if (!usb_dev->bus_session) {
+		*errstr_ptr = "device bus session create";
+		return ENOMEM;
+	}
+
 	/* Get assigned params */
 	devman_handle_t hc_handle;
@@ -497,4 +503,5 @@
 {
 	if (dev) {
+		usb_dev_session_close(dev->bus_session);
 		/* Destroy existing pipes. */
 		destroy_current_pipes(dev);
