diff --git a/drivers/usbdev/usbdev_trace.c b/drivers/usbdev/usbdev_trace.c
index 02ecde718c40f4c6eb9871952d32b694d72cf3e8..5b70e6f720b4c31d63ddbca80591353ef78e3899 100644
--- a/drivers/usbdev/usbdev_trace.c
+++ b/drivers/usbdev/usbdev_trace.c
@@ -339,6 +339,9 @@ void usbtrace(uint16 event, uint16 value)
           lldbg("Class API call %d: %04x\n", TRACE_DATA(event), value);
           break;
 
+        case TRACE_CLASSSTATE_ID:      /* Track class driver state changes */
+          lldbg("Class state %d: %04x\n", TRACE_DATA(event), value);
+
         case TRACE_INTENTRY_ID:        /* Interrupt handler entry */
           lldbg("Interrrupt %d entry: %04x\n", TRACE_DATA(event), value);
           break;
diff --git a/include/nuttx/usbdev_trace.h b/include/nuttx/usbdev_trace.h
index 3c304c6ce75a4ee22d206626d247231e50575279..13a02833a7594a06444b04b1dfd8c31c1f196c4c 100644
--- a/include/nuttx/usbdev_trace.h
+++ b/include/nuttx/usbdev_trace.h
@@ -62,16 +62,17 @@
 #define TRACE_DEV_ID             (0x0200) /* USB device API calls */
 #define TRACE_CLASS_ID           (0x0300) /* USB class driver API calls */
 #define TRACE_CLASSAPI_ID        (0x0400) /* Other class driver system API calls */
-#define TRACE_INTENTRY_ID        (0x0500) /* Interrupt handler entry */
-#define TRACE_INTDECODE_ID       (0x0600) /* Decoded interrupt event */
-#define TRACE_INTEXIT_ID         (0x0700) /* Interrupt handler exit */
-#define TRACE_OUTREQQUEUED_ID    (0x0800) /* Request queued for OUT endpoint */
-#define TRACE_INREQQUEUED_ID     (0x0900) /* Request queued for IN endpoint */
-#define TRACE_READ_ID            (0x0a00) /* Read (OUT) action */
-#define TRACE_WRITE_ID           (0x0b00) /* Write (IN) action */
-#define TRACE_COMPLETE_ID        (0x0c00) /* Request completed */
-#define TRACE_DEVERROR_ID        (0x0d00) /* USB controller driver error event */
-#define TRACE_CLSERROR_ID        (0x0e00) /* USB class driver error event */
+#define TRACE_CLASSSTATE_ID      (0x0500) /* Track class driver state changes */
+#define TRACE_INTENTRY_ID        (0x0600) /* Interrupt handler entry */
+#define TRACE_INTDECODE_ID       (0x0700) /* Decoded interrupt event */
+#define TRACE_INTEXIT_ID         (0x0800) /* Interrupt handler exit */
+#define TRACE_OUTREQQUEUED_ID    (0x0900) /* Request queued for OUT endpoint */
+#define TRACE_INREQQUEUED_ID     (0x0a00) /* Request queued for IN endpoint */
+#define TRACE_READ_ID            (0x0b00) /* Read (OUT) action */
+#define TRACE_WRITE_ID           (0x0c00) /* Write (IN) action */
+#define TRACE_COMPLETE_ID        (0x0d00) /* Request completed */
+#define TRACE_DEVERROR_ID        (0x0e00) /* USB controller driver error event */
+#define TRACE_CLSERROR_ID        (0x0f00) /* USB class driver error event */
 
 #define TRACE_NIDS               15
 
@@ -114,6 +115,8 @@
 
 #define TRACE_CLASSAPI(id)       TRACE_EVENT(TRACE_CLASSAPI_ID, id)
 
+#define TRACE_CLASSSTATE(id)     TRACE_EVENT(TRACE_CLASSSTATE_ID, id)
+
 /* USB device controller interrupt events.  The 'id' is specific to the driver.
  * Particular values for 'id' are unique for a given implementation of a
  * controller driver