Index: uspace/drv/bus/usb/usbmast/bo_trans.c
===================================================================
--- uspace/drv/bus/usb/usbmast/bo_trans.c	(revision a6a5b252d3b9a9098a1bea80af3061fbcf9a5c8c)
+++ uspace/drv/bus/usb/usbmast/bo_trans.c	(revision 3e23316d5f84ed5e9d6882893c001916dc58833e)
@@ -67,6 +67,6 @@
 	int retval = EOK;
 	size_t act_size;
-	usb_pipe_t *bulk_in_pipe = &mfun->mdev->usb_dev->pipes[BULK_IN_EP].pipe;
-	usb_pipe_t *bulk_out_pipe = &mfun->mdev->usb_dev->pipes[BULK_OUT_EP].pipe;
+	usb_pipe_t *bulk_in_pipe = mfun->mdev->bulk_in_pipe;
+	usb_pipe_t *bulk_out_pipe = mfun->mdev->bulk_out_pipe;
 	usb_direction_t ddir;
 	void *dbuf;
@@ -119,9 +119,9 @@
 			usb_pipe_clear_halt(
 			    usb_device_get_default_pipe(mfun->mdev->usb_dev),
-			    &mfun->mdev->usb_dev->pipes[BULK_IN_EP].pipe);
+			    bulk_in_pipe);
 		} else {
 			usb_pipe_clear_halt(
 			    usb_device_get_default_pipe(mfun->mdev->usb_dev),
-			    &mfun->mdev->usb_dev->pipes[BULK_OUT_EP].pipe);
+			    bulk_out_pipe);
 		}
         } else if (rc != EOK) {
@@ -219,7 +219,7 @@
 	usb_massstor_reset(mdev);
 	usb_pipe_clear_halt(usb_device_get_default_pipe(mdev->usb_dev),
-	    &mdev->usb_dev->pipes[BULK_IN_EP].pipe);
+	    mdev->bulk_in_pipe);
 	usb_pipe_clear_halt(usb_device_get_default_pipe(mdev->usb_dev),
-	    &mdev->usb_dev->pipes[BULK_OUT_EP].pipe);
+	    mdev->bulk_out_pipe);
 }
 
Index: uspace/drv/bus/usb/usbmast/main.c
===================================================================
--- uspace/drv/bus/usb/usbmast/main.c	(revision a6a5b252d3b9a9098a1bea80af3061fbcf9a5c8c)
+++ uspace/drv/bus/usb/usbmast/main.c	(revision 3e23316d5f84ed5e9d6882893c001916dc58833e)
@@ -150,4 +150,13 @@
 	unsigned i;
 
+	usb_endpoint_mapping_t *epm_in =
+	    usb_device_get_mapped_ep_desc(dev, &bulk_in_ep);
+	usb_endpoint_mapping_t *epm_out =
+	    usb_device_get_mapped_ep_desc(dev, &bulk_out_ep);
+	if (!epm_in || !epm_out || !epm_in->present || !epm_out->present) {
+		usb_log_error("Required EPs were not mapped.\n");
+		return ENOENT;
+	}
+
 	/* Allocate softstate */
 	mdev = usb_device_data_alloc(dev, sizeof(usbmast_dev_t));
@@ -162,9 +171,7 @@
 	    usb_device_get_name(dev));
 	usb_log_debug("Bulk in endpoint: %d [%zuB].\n",
-	    dev->pipes[BULK_IN_EP].pipe.endpoint_no,
-	    dev->pipes[BULK_IN_EP].pipe.max_packet_size);
+	    epm_in->pipe.endpoint_no, epm_in->pipe.max_packet_size);
 	usb_log_debug("Bulk out endpoint: %d [%zuB].\n",
-	    dev->pipes[BULK_OUT_EP].pipe.endpoint_no,
-	    dev->pipes[BULK_OUT_EP].pipe.max_packet_size);
+	    epm_out->pipe.endpoint_no, epm_out->pipe.max_packet_size);
 
 	usb_log_debug("Get LUN count...\n");
@@ -182,4 +189,6 @@
 			goto error;
 	}
+	mdev->bulk_in_pipe = &epm_in->pipe;
+	mdev->bulk_out_pipe = &epm_out->pipe;
 
 	return EOK;
Index: uspace/drv/bus/usb/usbmast/usbmast.h
===================================================================
--- uspace/drv/bus/usb/usbmast/usbmast.h	(revision a6a5b252d3b9a9098a1bea80af3061fbcf9a5c8c)
+++ uspace/drv/bus/usb/usbmast/usbmast.h	(revision 3e23316d5f84ed5e9d6882893c001916dc58833e)
@@ -49,4 +49,8 @@
 	/** LUN functions */
 	ddf_fun_t **luns;
+	/** Data read pipe */
+	usb_pipe_t *bulk_in_pipe;
+	/** Data write pipe */
+	usb_pipe_t *bulk_out_pipe;
 } usbmast_dev_t;
 
