Hello!
We are developing a device based on the nRF5340 and using SDK v2.6.0.
The firmware implements a USB composite device (CDC ACM + MIDI + Audio). Everything works perfectly and enumerates correctly on Windows, macOS, iOS, and Android, but we found a issue related to power sequence.
- When the device is powered from USB, it enumerates successfully on all OSes.
- When the device is powered from an external DC input and, after power-up, connected to USB:
- It enumerates fine on macOS, iOS, and Android.
- It fails to enumerate on Windows.
Is there any known issue related to this behavior, or any recommended workaround?
Below are the debug logs captured when powered from an external DC input and connecting the device after power-up.
Windows
[00:00:19.551,177] <dbg> usb_nrfx: usbd_event_handler: RESUMING from suspend [00:00:19.551,177] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:00:19.551,208] <inf> cdc_acm: Device reset detected [00:00:19.551,208] <dbg> usb_nrfx: usbd_work_process_pwr_events: USB resume [00:00:19.551,208] <inf> cdc_acm: Device resumed [00:00:19.551,208] <inf> cdc_acm: Spurious resume event [00:00:19.551,879] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:00:19.551,879] <inf> cdc_acm: Device reset detected [00:00:19.552,368] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:00:19.552,368] <inf> cdc_acm: Device reset detected [00:00:19.552,734] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:00:19.552,764] <inf> cdc_acm: Device reset detected [00:00:19.552,886] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:00:19.552,886] <inf> cdc_acm: Device reset detected [00:00:19.553,039] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:00:19.553,070] <inf> cdc_acm: Device reset detected [00:00:19.566,436] <dbg> usb_nrfx: usbd_event_handler: SUSPEND state detected [00:00:19.566,436] <dbg> usb_nrfx: usbd_work_process_pwr_events: USB Suspend state [00:00:19.566,436] <inf> cdc_acm: Device suspended
iOS
[00:03:09.498,107] <dbg> usb_nrfx: usbd_event_handler: RESUMING from suspend [00:03:09.498,107] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,138] <inf> cdc_acm: Device reset detected [00:03:09.498,138] <dbg> usb_nrfx: usbd_work_process_pwr_events: USB resume [00:03:09.498,138] <inf> cdc_acm: Device resumed [00:03:09.498,138] <inf> cdc_acm: Spurious resume event [00:03:09.498,168] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,168] <inf> cdc_acm: Device reset detected [00:03:09.498,199] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,199] <inf> cdc_acm: Device reset detected [00:03:09.498,229] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,260] <inf> cdc_acm: Device reset detected [00:03:09.498,291] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,291] <inf> cdc_acm: Device reset detected [00:03:09.498,291] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,321] <inf> cdc_acm: Device reset detected [00:03:09.498,321] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,321] <inf> cdc_acm: Device reset detected [00:03:09.498,352] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,352] <inf> cdc_acm: Device reset detected [00:03:09.498,413] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,413] <inf> cdc_acm: Device reset detected [00:03:09.498,443] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,443] <inf> cdc_acm: Device reset detected [00:03:09.498,443] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,474] <inf> cdc_acm: Device reset detected [00:03:09.498,474] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,504] <inf> cdc_acm: Device reset detected [00:03:09.498,504] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,535] <inf> cdc_acm: Device reset detected [00:03:09.498,565] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.498,565] <inf> cdc_acm: Device reset detected [00:03:09.502,868] <dbg> usb_nrfx: usbd_event_handler: SUSPEND state detected [00:03:09.502,899] <dbg> usb_nrfx: usbd_work_process_pwr_events: USB Suspend state [00:03:09.502,899] <inf> cdc_acm: Device suspended [00:03:09.860,137] <dbg> usb_nrfx: usbd_event_handler: RESUMING from suspend [00:03:09.860,168] <dbg> usb_nrfx: usbd_work_handler: USBD reset event [00:03:09.860,168] <inf> cdc_acm: Device reset detected [00:03:09.860,198] <dbg> usb_nrfx: usbd_work_process_pwr_events: USB resume [00:03:09.860,198] <inf> cdc_acm: Device resumed [00:03:09.860,198] <inf> cdc_acm: Spurious resume event [00:03:09.885,864] <dbg> usb_nrfx: usbd_event_handler: SUSPEND state detected [00:03:09.885,894] <dbg> usb_nrfx: usbd_work_process_pwr_events: USB Suspend state [00:03:09.885,894] <inf> cdc_acm: Device suspended --- 37 messages dropped --- [00:03:10.547,424] <dbg> usbCDC Device found! Wait for DTR... _nrfx: usbd_work_process_setup: SETUP: bR:0x06 bmRT:0x80 wV:0x0303 wI:0x0409 wL:28 --- 140 messages dropped --- [00:03:10.563,781] <dbg> usb_nrfx: usb_dc_ep_write: ep_write: ep 0x80, len 0 --- 9 messages dropped --- [00:03:10.564,727] <dbg> usb_device: usb_handle_control_transfer: ep 0x00, status 0x00 --- 11 messages dropped --- [00:03:10.570,251] <dbg> usb_nrfx: usbd_sof_trigger_iso_read: Endpoint is not enabled --- 12 messages dropped ---
Thank you in advance for your help!
Tomás