Index: uspace/lib/usbdev/src/devdrv.c
===================================================================
--- uspace/lib/usbdev/src/devdrv.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/devdrv.c	(revision d93f5afb66a052121af391b708957e081d9184d7)
@@ -45,10 +45,8 @@
 /** USB device structure. */
 typedef struct usb_device {
-	/** Connection to USB hc, used by wire and arbitrary requests. */
-	usb_hc_connection_t hc_conn;
-	/** Connection backing the pipes.
-	 * Typically, you will not need to use this attribute at all.
-	 */
-	usb_device_connection_t wire;
+	/** Connection to device on USB bus */
+	usb_dev_session_t *bus_session;
+	/** devman handle */
+	devman_handle_t handle;
 	/** The default control pipe. */
 	usb_pipe_t ctrl_pipe;
@@ -78,8 +76,4 @@
 	void *driver_data;
 
-	/** Connection to device on USB bus */
-	usb_dev_session_t *bus_session;
-	/** devman handle */
-	devman_handle_t handle;
 } usb_device_t;
 
@@ -157,12 +151,9 @@
 	assert(usb_dev->descriptors.full_config == NULL);
 
-	/* It is worth to start a long transfer. */
-	usb_pipe_start_long_transfer(&usb_dev->ctrl_pipe);
-
 	/* Get the device descriptor. */
 	int rc = usb_request_get_device_descriptor(&usb_dev->ctrl_pipe,
 	    &usb_dev->descriptors.device);
 	if (rc != EOK) {
-		goto leave;
+		return rc;
 	}
 
@@ -173,6 +164,4 @@
 	    &usb_dev->descriptors.full_config_size);
 
-leave:
-	usb_pipe_end_long_transfer(&usb_dev->ctrl_pipe);
 
 	return rc;
@@ -198,5 +187,4 @@
  * - registers endpoints with the host controller
  *
- * @param[in] wire Initialized backing connection to the host controller.
  * @param[in] endpoints Endpoints description, NULL terminated.
  * @param[in] config_descr Configuration descriptor of active configuration.
@@ -240,5 +228,5 @@
 	int rc = usb_pipe_initialize_from_configuration(pipes, pipe_count,
 	    usb_dev->descriptors.full_config,
-	    usb_dev->descriptors.full_config_size, &usb_dev->wire,
+	    usb_dev->descriptors.full_config_size,
 	    usb_dev->bus_session);
 	if (rc != EOK) {
@@ -353,32 +341,4 @@
 }
 
-static int usb_dev_get_info(usb_device_t *usb_dev, devman_handle_t *handle,
-    usb_address_t *address, int *iface_no)
-{
-	assert(usb_dev);
-
-	int ret = EOK;
-	async_exch_t *exch = async_exchange_begin(usb_dev->bus_session);
-	if (!exch)
-		ret = ENOMEM;
-
-	if (ret == EOK && address)
-		ret = usb_get_my_address(exch, address);
-
-	if (ret == EOK && handle)
-		ret = usb_get_hc_handle(exch, handle);
-
-	if (ret == EOK && iface_no) {
-		ret = usb_get_my_interface(exch, iface_no);
-		if (ret == ENOTSUP) {
-			ret = EOK;
-			*iface_no = -1;
-		}
-	}
-
-	async_exchange_end(exch);
-	return ret;
-}
-
 /** Clean instance of a USB device.
  *
@@ -393,5 +353,4 @@
 		usb_device_destroy_pipes(usb_dev);
 		/* Ignore errors and hope for the best. */
-		usb_hc_connection_deinitialize(&usb_dev->hc_conn);
 		usb_alternate_interfaces_deinit(&usb_dev->alternate_interfaces);
 		usb_device_release_descriptors(usb_dev);
@@ -437,31 +396,8 @@
 	}
 
-	/* Get assigned params */
-	devman_handle_t hc_handle;
-	usb_address_t address;
-
-	int rc = usb_dev_get_info(usb_dev, &hc_handle, &address, NULL);
-	if (rc != EOK) {
-		usb_dev_disconnect(usb_dev->bus_session);
-		*errstr_ptr = "device parameters retrieval";
-		return rc;
-	}
-
-	/* Initialize hc connection. */
-	usb_hc_connection_initialize(&usb_dev->hc_conn, hc_handle);
-
-	/* Initialize backing wire and control pipe. */
-	rc = usb_device_connection_initialize(
-	    &usb_dev->wire, &usb_dev->hc_conn, address);
-	if (rc != EOK) {
-		usb_dev_disconnect(usb_dev->bus_session);
-		*errstr_ptr = "device connection initialization";
-		return rc;
-	}
-
 	/* This pipe was registered by the hub driver,
 	 * during device initialization. */
-	rc = usb_pipe_initialize_default_control(
-	    &usb_dev->ctrl_pipe, &usb_dev->wire, usb_dev->bus_session);
+	int rc = usb_pipe_initialize_default_control(
+	    &usb_dev->ctrl_pipe, usb_dev->bus_session);
 	if (rc != EOK) {
 		usb_dev_disconnect(usb_dev->bus_session);
@@ -470,17 +406,8 @@
 	}
 
-	/* Open hc connection for pipe registration. */
-	rc = usb_hc_connection_open(&usb_dev->hc_conn);
-	if (rc != EOK) {
-		usb_dev_disconnect(usb_dev->bus_session);
-		*errstr_ptr = "hc connection open";
-		return rc;
-	}
-
 	/* Retrieve standard descriptors. */
 	rc = usb_device_retrieve_descriptors(usb_dev);
 	if (rc != EOK) {
 		*errstr_ptr = "descriptor retrieval";
-		usb_hc_connection_close(&usb_dev->hc_conn);
 		usb_dev_disconnect(usb_dev->bus_session);
 		return rc;
@@ -499,5 +426,4 @@
 		rc = usb_device_create_pipes(usb_dev, endpoints);
 		if (rc != EOK) {
-			usb_hc_connection_close(&usb_dev->hc_conn);
 			usb_device_fini(usb_dev);
 			*errstr_ptr = "pipes initialization";
@@ -506,5 +432,4 @@
 	}
 
-	usb_hc_connection_close(&usb_dev->hc_conn);
 	return EOK;
 }
@@ -645,15 +570,4 @@
 }
 
-usb_address_t usb_device_address(usb_device_t *usb_dev)
-{
-	assert(usb_dev);
-	return usb_dev->wire.address;
-}
-
-devman_handle_t usb_device_hc_handle(usb_device_t *usb_dev)
-{
-	assert(usb_dev);
-	return usb_dev->hc_conn.hc_handle;
-}
 /**
  * @}
Index: uspace/lib/usbdev/src/devpoll.c
===================================================================
--- uspace/lib/usbdev/src/devpoll.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/devpoll.c	(revision d93f5afb66a052121af391b708957e081d9184d7)
@@ -87,5 +87,4 @@
 	}
 
-	usb_pipe_start_long_transfer(pipe);
 	size_t failed_attempts = 0;
 	while (failed_attempts <= params->max_failures) {
@@ -148,6 +147,4 @@
 	}
 
-	usb_pipe_end_long_transfer(pipe);
-
 	const bool failed = failed_attempts > 0;
 
Index: uspace/lib/usbdev/src/pipes.c
===================================================================
--- uspace/lib/usbdev/src/pipes.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/pipes.c	(revision d93f5afb66a052121af391b708957e081d9184d7)
@@ -38,34 +38,4 @@
 #include <assert.h>
 
-/** Prepare pipe for a long transfer.
- *
- * Long transfer is transfer consisting of several requests to the HC.
- * Calling this function is optional and it has positive effect of
- * improved performance because IPC session is initiated only once.
- *
- * @param pipe Pipe over which the transfer will happen.
- * @return Error code.
- */
-int usb_pipe_start_long_transfer(usb_pipe_t *pipe)
-{
-	assert(pipe);
-	assert(pipe->wire);
-	assert(pipe->wire->hc_connection);
-	return usb_hc_connection_open(pipe->wire->hc_connection);
-}
-
-/** Terminate a long transfer on a pipe.
- * @param pipe Pipe where to end the long transfer.
- * @return Error code.
- * @see usb_pipe_start_long_transfer
- */
-int usb_pipe_end_long_transfer(usb_pipe_t *pipe)
-{
-	assert(pipe);
-	assert(pipe->wire);
-	assert(pipe->wire->hc_connection);
-	return usb_hc_connection_close(pipe->wire->hc_connection);
-}
-
 /** Try to clear endpoint halt of default control pipe.
  *
@@ -271,5 +241,4 @@
  *
  * @param pipe Endpoint pipe to be initialized.
- * @param connection Connection to the USB device backing this pipe (the wire).
  * @param endpoint_no Endpoint number (in USB 1.1 in range 0 to 15).
  * @param transfer_type Transfer type (e.g. interrupt or bulk).
@@ -278,13 +247,10 @@
  * @return Error code.
  */
-int usb_pipe_initialize(usb_pipe_t *pipe,
-    usb_device_connection_t *connection, usb_endpoint_t endpoint_no,
+int usb_pipe_initialize(usb_pipe_t *pipe, usb_endpoint_t endpoint_no,
     usb_transfer_type_t transfer_type, size_t max_packet_size,
     usb_direction_t direction, usb_dev_session_t *bus_session)
 {
 	assert(pipe);
-	assert(connection);
-
-	pipe->wire = connection;
+
 	pipe->endpoint_no = endpoint_no;
 	pipe->transfer_type = transfer_type;
@@ -300,14 +266,12 @@
  *
  * @param pipe Endpoint pipe to be initialized.
- * @param connection Connection to the USB device backing this pipe (the wire).
  * @return Error code.
  */
 int usb_pipe_initialize_default_control(usb_pipe_t *pipe,
-    usb_device_connection_t *connection, usb_dev_session_t *bus_session)
-{
-	assert(pipe);
-	assert(connection);
-
-	int rc = usb_pipe_initialize(pipe, connection, 0, USB_TRANSFER_CONTROL,
+    usb_dev_session_t *bus_session)
+{
+	assert(pipe);
+
+	const int rc = usb_pipe_initialize(pipe, 0, USB_TRANSFER_CONTROL,
 	    CTRL_PIPE_MIN_PACKET_SIZE, USB_DIRECTION_BOTH, bus_session);
 
Index: uspace/lib/usbdev/src/pipesinit.c
===================================================================
--- uspace/lib/usbdev/src/pipesinit.c	(revision 3969a425b60997df437e943e91d861b21c393972)
+++ uspace/lib/usbdev/src/pipesinit.c	(revision d93f5afb66a052121af391b708957e081d9184d7)
@@ -148,5 +148,4 @@
  * @param interface Interface descriptor under which belongs the @p endpoint.
  * @param endpoint Endpoint descriptor.
- * @param wire Connection backing the endpoint pipes.
  * @return Error code.
  */
@@ -155,5 +154,5 @@
     usb_standard_interface_descriptor_t *interface,
     usb_standard_endpoint_descriptor_t *endpoint_desc,
-    usb_device_connection_t *wire, usb_dev_session_t *bus_session)
+    usb_dev_session_t *bus_session)
 {
 
@@ -193,5 +192,5 @@
 	}
 
-	int rc = usb_pipe_initialize(&ep_mapping->pipe, wire,
+	int rc = usb_pipe_initialize(&ep_mapping->pipe,
 	    ep_no, description.transfer_type,
 	    uint16_usb2host(endpoint_desc->max_packet_size),
@@ -236,5 +235,4 @@
 			    (usb_standard_endpoint_descriptor_t *)
 			        descriptor,
-			    (usb_device_connection_t *) parser_data->arg,
 			    bus_session);
 		}
@@ -281,7 +279,6 @@
     usb_endpoint_mapping_t *mapping, size_t mapping_count,
     const uint8_t *config_descriptor, size_t config_descriptor_size,
-    usb_device_connection_t *connection, usb_dev_session_t *bus_session)
-{
-	assert(connection);
+    usb_dev_session_t *bus_session)
+{
 
 	if (config_descriptor == NULL) {
@@ -307,5 +304,4 @@
 		.data = config_descriptor,
 		.size = config_descriptor_size,
-		.arg = connection
 	};
 
@@ -348,7 +344,4 @@
 		return EINVAL;
 	}
-
-
-	usb_pipe_start_long_transfer(pipe);
 
 	uint8_t dev_descr_start[CTRL_PIPE_MIN_PACKET_SIZE];
@@ -368,5 +361,4 @@
 		}
 	}
-	usb_pipe_end_long_transfer(pipe);
 	if (rc != EOK) {
 		return rc;
