CASE 3 : The iPad Pro is the same M4-based model as in case 1 + USB HUB. Our device connected via a USB hub. 00> USBD Setup Received 00 05 06 00 00 00 00 00 00> Set Address 00> Prepare BufCtrl: [0] = 0xf400 [1] = 0x0000 00> buf_status = 0x00000001 00> Sync BufCtrl: [0] = 0x6000 [1] = 0x0000 00> Short packet on buffer 0 with 0 bytes 00> Completed transfer of 0 bytes on ep 80 00> USBD Xfer Complete on EP 80 with 0 bytes 00> 00> USBD Setup Received 80 06 00 01 00 00 08 00 00> Get Descriptor Device 00> Queue EP 80 with 8 bytes ... 00> Prepare BufCtrl: [0] = 0xf408 [1] = 0x0000 00> buf_status = 0x00000001 00> Sync BufCtrl: [0] = 0x6008 [1] = 0x0000 00> Short packet on buffer 0 with 8 bytes 00> Completed transfer of 8 bytes on ep 80 00> USBD Xfer Complete on EP 80 with 8 bytes 00> Queue EP 00 with 0 bytes ... 00> Prepare BufCtrl: [0] = 0x7400 [1] = 0x0000 00> buf_status = 0x00000002 00> Sync BufCtrl: [0] = 0xe000 [1] = 0x0000 00> Short packet on buffer 0 with 0 bytes 00> Completed transfer of 0 bytes on ep 00 00> USBD Xfer Complete on EP 00 with 0 bytes 00> 00> USBD Setup Received 80 06 00 01 00 00 12 00 00> 00> 00> buf_status = 0x00000020 00> Sync BufCtrl: [0] = 0xa040 [1] = 0x0000 00> Prepare BufCtrl: [0] = 0x1440 [1] = 0x0000 00> buf_status = 0x00000020 00> Sync BufCtrl: [0] = 0x8040 [1] = 0x0000 00> Prepare BufCtrl: [0] = 0x3440 [1] = 0x0000 00> buf_status = 0x00000020 00> Sync BufCtrl: [0] = 0xa010 [1] = 0x0000 00> Short packet on buffer 0 with 16 bytes 00> Completed transfer of 144 bytes on ep 02 00> Queue EP 82 with 42 bytes ... 00> Prepare BufCtrl: [0] = 0xf42a [1] = 0x0000 00> USBD Xfer Complete on EP 02 with 144 bytes 00> buf_status = 0x00000010 00> Sync BufCtrl: [0] = 0x602a [1] = 0x0000 00> Short packet on buffer 0 with 42 bytes 00> Completed transfer of 42 bytes on ep 82 00> NET xfer callback <----CUTOUT-FOR-REGULAR-TRAFFIC-ON-THE-BUS-----------------> 00> NET xfer callback 00> USBD Xfer Complete on EP 80 with 0 bytes 00> buf_status = 0x00000004 00> Sync BufCtrl: [0] = 0x4008 [1] = 0x0000 00> Short packet on buffer 0 with 8 bytes 00> Completed transfer of 8 bytes on ep 81 00> USBD Xfer Complete on EP 81 with 8 bytes 00> NET xfer callback 00> Queue EP 81 with 16 bytes ... 00> Prepare BufCtrl: [0] = 0xf410 [1] = 0x0000 WENT INTO SLEEP MODE on M4 + HUB. 00> USBD Suspend : Remote Wakeup = 0 00> Queue EP 82 with 42 bytes ... 00> Prepare BufCtrl: [0] = 0xd42a [1] = 0x0000 00> USBD Resume And the bus woke up, as expected 00> buf_status = 0x00000010 00> Sync BufCtrl: [0] = 0x402a [1] = 0x0000 00> Short packet on buffer 0 with 42 bytes 00> Completed transfer of 42 bytes on ep 82 00> USBD Xfer Complete on EP 82 with 42 bytes 00> NET xfer callback 00> 00> USBD Setup Received 21 43 0E 00 00 00 00 00 00> NET control request 00> Queue EP 80 with 0 bytes ... 00> Prepare BufCtrl: [0] = 0xf400 [1] = 0x0000 00> buf_status = 0x00000001 00> Sync BufCtrl: [0] = 0x6000 [1] = 0x0000 00> Short packet on buffer 0 with 0 bytes 00> Completed transfer of 0 bytes on ep 80 00> USBD Xfer Complete on EP 80 with 0 bytes 00> 00> USBD Setup Received 21 43 0E 00 00 00 00 00 00> NET control request 00> Queue EP 80 with 0 bytes ... 00> buf_status = 0x00000004 00> Sync BufCtrl: [0] = 0x6010 [1] = 0x0000 00> Short packet on buffer 0 with 16 bytes 00> Completed transfer of 16 bytes on ep 81 00> Prepare BufCtrl: [0] = 0xf400 [1] = 0x0000 00> buf_status = 0x00000001 00> Sync BufCtrl: [0] = 0x6000 [1] = 0x0000 00> Short packet on buffer 0 with 0 bytes 00> Completed transfer of 0 bytes on ep 80 00> buf_status = 0x00000020 00> Sync BufCtrl: [0] = 0xa02a [1] = 0x0000 00> Short packet on buffer 0 with 42 bytes 00> Completed transfer of 42 bytes on ep 02 00> USBD Xfer Complete 00> 21 43 0E 00> Short packet on buffer 0 with 0 bytes 00> Completed transfer of 0 bytes on ep 80 00> buf_status = 0x00000020 00> Sync BufCtrl: [0] = 0x8040 [1] = 0x0000 00> Prepare BufCtrl: [0] = 0x3440 [1] = 0x0000 00> buf_status = 0x00000020 00> Sync BufCtrl: [0] = 0xa040 [1] = 0x0000 00> Prepare BufCtrl: [0] = 0x1440 [1] = 0x0000 00> Queue EP 81 with 8 bytes ... 00> buf_status = 0x00000020 00> Sync BufCtrl: [0] = 0x8040 [1] = 0x0000 00> buf_status = 0x00000020 00> USBD Xfer Complete Prepare BufCtrl: [0] = 0xf42e [1] = 0x0000 00> buf_status = 0x00000010 00> Sync BufCtrl: [0] = 0x602e [1] = 0x0000 00> Short packet on buffer 0 with 46 bytes 00> Completed transfer of 558 bytes on ep 82 00> USBD Xfer Complete on EP 82 with 558 bytes 00> NET xfer callback 00> buf_status = 0x00000004 00> Sync BufCtrl: [0] = 0x4008 [1] = 0x0000 00> Short packet on buffer 0 with 8 bytes 00> Completed transfer of 8 bytes on ep 81 00> USBD Xfer Complete on EP 81 with 8 bytes 00> NET xfer callback So, on the same iPad but with the external USB Hub communications we can observe the correct behavior of the USB bus in sleep mode.