diff --git a/cores/arduino/USB/PluggableUSB.cpp b/cores/arduino/USB/PluggableUSB.cpp
index 84d781d812a5f447ea918b5b89253885b6e1c6ac..1a15dfa463684b75060c30d6d8ea3bbd5658ddc7 100644
--- a/cores/arduino/USB/PluggableUSB.cpp
+++ b/cores/arduino/USB/PluggableUSB.cpp
@@ -40,7 +40,7 @@ int PUSB_GetInterface(uint8_t* interfaceNum)
 	int ret = 0;
 	PUSBListNode* node = rootNode;
 	for (uint8_t i=0; i<modules_count; i++) {
-		ret = node->cb->getInterface(interfaceNum);
+		ret += node->cb->getInterface(interfaceNum);
 		node = node->next;
 	}
 	return ret;
diff --git a/cores/arduino/USB/USBCore.cpp b/cores/arduino/USB/USBCore.cpp
index 171fe389fa76ded6abbae45cf98186b515f985f7..ddc20146b2fe73c96e9b30965e53dc43ff7eabe7 100644
--- a/cores/arduino/USB/USBCore.cpp
+++ b/cores/arduino/USB/USBCore.cpp
@@ -156,6 +156,8 @@ uint32_t USBDeviceClass::sendConfiguration(uint32_t maxlen)
 		return true;
 	}
 
+	total = 0;
+
 	packMessages(true);
 	sendControl(&config, sizeof(ConfigDescriptor));
 	SendInterfaces(&total);