2026/10/23 4:49:18

USB Halt on CDC Interrupt IN (NXP Host Stack)

USB Halt on CDC Interrupt IN (NXP Host Stack) This note collects the information about USB CDC host APIs, the notification endpoint, when ahalt/stallhappens, why it can stick, and how this SDK (MCUXpresso2.12.1) handles it.1. What “halt” means hereOn USB 2.0, afunctional stallon a bulk/interrupt endpoint is the Halt feature. The device returnsSTALLon every token to that endpoint until Halt is cleared.On the NXPhost, that shows up askStatus_USB_TransferStall(EHCI Halted bit0x40, without other QTD error bits0x3E). Those other bits arenotHalt (babble, transaction error, etc. →kStatus_USB_TransferFailed).Device behaviorHost seesMeaningNAKInterrupt INTransfer stays pendingNo notification yet (normal idle)STALLInterrupt INkStatus_USB_TransferStallEndpointhaltedSTALL onEP0Control transfer stallBad/unsupportedsetup, not Interrupt IN HaltHalt isnot“no SerialState / no RNDIS response.” Idle Interrupt IN is NAK.Clear Halt withCLEAR_FEATURE(ENDPOINT_HALT)andwIndex=endpoint number | IN (bit 7). Also cleared bySET_CONFIGURATION/SET_INTERFACE/ bus reset.2. CDC pipes (where Halt can apply)A CDC function has two interfaces:InterfaceEndpointsRoleCommunications (0x02)Defaultcontrol+interrupt INClass requests +notificationsData (0x0A)