A method for performing an operation in relation to a USB device (4a, 4b, 4c), the method comprising using a processing resource of a computing resource, which computing resource is configured for communication with a USB controller, to execute a computer program to cause the processing resource to: modify or over-ride a default USB endpoint configuration functionality of an operating system of the computing resource, wherein the default USB endpoint configuration functionality of the operating system automatically configures a USB interface in the USB controller so as to open a sufficient number of pipes between the USB controller and the corresponding USB endpoints of the USB device (4a, 4b, 4c) required for all possible interfaces of the USB device (4a, 4b, 4c);configure the USB interface in the USB controller, in response to detecting the attachment or connection of the USB device (4a, 4b, 4c) to the USB controller, so as to open one or more pipes between the USB controller and one or more corresponding USB endpoints of a USB device (4a, 4b, 4c) according to a required USB endpoint configuration of the USB device (4a, 4b, 4c) that is required for performing an operation in relation to the USB device (4a, 4b, 4c); perform the operation in relation to the USB device (4a, 4b, 4c); and unconfigure the configured USB interface in the USB controller, after the operation has been performed, so as to close the one or more pipes between the USB controller and the one or more corresponding USB endpoints of the USB device (4a, 4b, 4c), wherein the computing resource includes a memory, wherein the memory stores the operating system and the computer program, and wherein the computer program is configured to run on top of the operating system. modify or over-ride a default USB endpoint configuration functionality of an operating system of the computing resource, wherein the default USB endpoint configuration functionality of the operating system automatically configures a USB interface in the USB controller so as to open a sufficient number of pipes between the USB controller and the corresponding USB endpoints of the USB device (4a, 4b, 4c) required for all possible interfaces of the USB device (4a, 4b, 4c);configure the USB interface in the USB controller, in response to detecting the attachment or connection of the USB device (4a, 4b, 4c) to the USB controller, so as to open one or more pipes between the USB controller and one or more corresponding USB endpoints of a USB device (4a, 4b, 4c) according to a required USB endpoint configuration of the USB device (4a, 4b, 4c) that is required for performing an operation in relation to the USB device (4a, 4b, 4c); perform the operation in relation to the USB device (4a, 4b, 4c); and unconfigure the configured USB interface in the USB controller, after the operation has been performed, so as to close the one or more pipes between the USB controller and the one or more corresponding USB endpoints of the USB device (4a, 4b, 4c), wherein the computing resource includes a memory, wherein the memory stores the operating system and the computer program, and wherein the computer program is configured to run on top of the operating system.