main.c: Reset board if USB not configured
diff --git a/firmware/src_simtrace/main.c b/firmware/src_simtrace/main.c
index c7283df..3b0d22d 100644
--- a/firmware/src_simtrace/main.c
+++ b/firmware/src_simtrace/main.c
@@ -31,7 +31,7 @@
 /*------------------------------------------------------------------------------
  *        Main
  *------------------------------------------------------------------------------*/
-
+#define MAX_USB_ITER BOARD_MCK/72  // This should be around a second
 extern int main( void )
 {
     uint8_t isUsbConnected = 0;
@@ -50,6 +50,15 @@
 
     printf("%s", "USB init\n\r");
 
+    int i = 0;
+    while(USBD_GetState() < USBD_STATE_CONFIGURED){
+        if(i >= MAX_USB_ITER) {
+            TRACE_ERROR("Resetting board (USB could not be configured)\n");
+            NVIC_SystemReset();
+        }
+        i++;
+    }
+
     for (unsigned int i = 0; i < sizeof(config_func_ptrs)/sizeof(config_func_ptrs[0]); ++i)
     {
         config_func_ptrs[i].configure();
@@ -58,8 +67,6 @@
     config_func_ptrs[simtrace_config-1].init();
     last_simtrace_config = simtrace_config;
 
-// FIXME: why don't we get any interrupts with this line?:
-    while(USBD_GetState() < USBD_STATE_CONFIGURED);
 
     TRACE_DEBUG("%s", "Start\n\r");