)
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)