diff --git a/hardware/arduino/sam/cores/sam/USB/USBCore.cpp b/hardware/arduino/sam/cores/sam/USB/USBCore.cpp index 711ff8a5d..4ba52631b 100644 --- a/hardware/arduino/sam/cores/sam/USB/USBCore.cpp +++ b/hardware/arduino/sam/cores/sam/USB/USBCore.cpp @@ -425,17 +425,15 @@ static void USB_ISR(void) uint8_t requestType = setup.bmRequestType; if (requestType & REQUEST_DEVICETOHOST) { - TRACE_CORE(printf(">>> EP0 Int: IN Request\r\n");) + TRACE_CORE(puts(">>> EP0 Int: IN Request\r\n");) UDD_WaitIN(); } else { - TRACE_CORE(printf(">>> EP0 Int: OUT Request\r\n");) + TRACE_CORE(puts(">>> EP0 Int: OUT Request\r\n");) UDD_ClearIN(); } - - bool ok = true ; if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) { @@ -507,6 +505,9 @@ static void USB_ISR(void) else { TRACE_CORE(puts(">>> EP0 Int: ClassInterfaceRequest\r\n");) + + UDD_WaitIN(); // Workaround: need tempo here, else CDC serial won't open correctly + USBD_InitControl(setup.wLength); // Max length of transfer ok = USBD_ClassInterfaceRequest(setup); } diff --git a/hardware/arduino/sam/cores/sam/libsam_sam3x8e_gcc_dbg.a b/hardware/arduino/sam/cores/sam/libsam_sam3x8e_gcc_dbg.a index e59285c72..88d9d7bea 100644 Binary files a/hardware/arduino/sam/cores/sam/libsam_sam3x8e_gcc_dbg.a and b/hardware/arduino/sam/cores/sam/libsam_sam3x8e_gcc_dbg.a differ diff --git a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a index ab3148aeb..4a27d212b 100644 Binary files a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a and b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a differ