Index: uspace/lib/drv/generic/remote_usbhc.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhc.c	(revision ffe3fe12b19081143903cc87cf2647a6fb8899d0)
+++ uspace/lib/drv/generic/remote_usbhc.c	(revision 3a8370c3d80a3fa3219a0ce31bcfd992a49501a9)
@@ -393,5 +393,5 @@
 	assert(usb_iface != NULL);
 
-	if (!usb_iface->control_write) {
+	if (!usb_iface->write) {
 		async_answer_0(callid, ENOTSUP);
 		return;
@@ -434,12 +434,13 @@
 		return;
 	}
-	trans->setup_packet = setup_packet;
 	trans->buffer = data_buffer;
 	trans->size = data_buffer_len;
 
-	rc = usb_iface->control_write(fun, target,
-	    setup_packet, setup_packet_len,
-	    data_buffer, data_buffer_len,
-	    callback_out, trans);
+	assert(setup_packet_len == 8);
+	uint64_t setup_buffer;
+	memcpy(&setup_buffer, setup_packet, 8);
+	free(setup_packet);
+	rc = usb_iface->write(fun, target, setup_buffer, trans->buffer,
+	    trans->size, callback_out, trans);
 
 	if (rc != EOK) {
@@ -456,5 +457,5 @@
 	assert(usb_iface != NULL);
 
-	if (!usb_iface->control_read) {
+	if (!usb_iface->read) {
 		async_answer_0(callid, ENOTSUP);
 		return;
@@ -494,5 +495,4 @@
 	}
 	trans->data_caller = data_callid;
-	trans->setup_packet = setup_packet;
 	trans->size = data_len;
 	trans->buffer = malloc(data_len);
@@ -504,9 +504,10 @@
 	}
 
-	rc = usb_iface->control_read(fun, target,
-	    setup_packet, setup_packet_len,
-	    trans->buffer, trans->size,
-	    callback_in, trans);
-
+	assert(setup_packet_len == 8);
+	uint64_t setup_buffer;
+	memcpy(&setup_buffer, setup_packet, 8);
+	free(setup_packet);
+	rc = usb_iface->read(fun, target, setup_buffer, trans->buffer,
+	    trans->size, callback_in, trans);
 	if (rc != EOK) {
 		async_answer_0(data_callid, rc);
