This was a nice tutorial. Thank you @B.Montanari . If it helps someone else out, I was testing this with a Nucleo-F446ZE. I found I needed the change pointed out by @Eurous along with a call to USBD_LL_PrepareReceive within the _DataOut function to ...