BKPT LabsDOCS/TRACE DOMAINS/STM32U575 USBX / THREADX BKPT DEBUG & VIEWALYZER RS
TRACE DOMAINS · PRACTICAL GUIDES

STM32U575 USBX / ThreadX

USB controller, CDC transfers, ThreadX waits, error reports, control queue and allocator pressure.

Download domain JSON · GitHub source · Domain catalog

Probe sampled · Descriptor com.bkpt.stm32u575.usbx-cdc-threadx · version 0.3.0 · domain API 1.

Purpose and prerequisites

For the NUCLEO-U575ZI-Q USBX CDC ACM to USART1 bridge on ThreadX, based on STM32CubeU5 v1.9.0. Requires its matching Debug ELF with DWARF, STM32U575 SVD and a Trace Domains v1 build supporting structured fields and capacity cards. The descriptor includes no firmware. The existing U575 walkthrough explains connections and application controls; this page is the field reference.

Engineering interpretation

Follow the path from controller interrupts/connection to USBX configuration, endpoint requests and the UART/USB ring. Configured with idle endpoints and waiting threads is healthy idle behavior. Under expected traffic, stopped indices plus masked interrupts are stronger evidence than a thread wait alone. The error counter and retained codes show reports, not every failed API call. Queue pressure concerns USB start/stop control messages. Allocator pressure is sampled capacity, not proof of failed allocation or a measured minimum-free watermark. The two pools can share storage.

Acquisition and validity

The descriptor declares 37 inputs and 5 derived channels, with a requested default of 20 Hz per input. Unsupported/unsafe rows remain unavailable. The achieved poll rate depends on the probe and selected inputs.

SVD device: STM32U575. Target prefix: STM32U575.

Inputs are sampled separately while firmware runs. DWARF paths require the exact Debug ELF; unresolved or null pointers produce unavailable values. A readable object is not proof that it has finished initialization. Firmware can update or reuse it between reads. Missing observations propagate to dependent fields and checks.

Cards with a capacity reference show value / capacity, not a percentage. Both readings must be available, capacity must be positive, and the value must lie between zero and capacity. Otherwise the card is unavailable. Individual fields retain their raw values in traces. Saved observations describe their acquisition time, not fresh target state.

Cards and tables

Errors and buffer health

Reported errors may predate this session and persist after recovery. Zero reports is not proof that all API calls succeeded. Observed incidents below remain visible after recovery.

CARD OR ROW READING AND SIGNIFICANCE UNIT
Last reported stack error · usbx.last_errorLast code supplied to the USBX error handler, retained after recovery. Zero or an old code is not an active-health verdict. Values.Raw value / decoded state
Reported errors since stack init · usbx.error_count32-bit count of calls to the USBX error handler since stack initialization. API errors that bypass the handler are not counted; a decrease is not converted to a wrap delta.reports
USB start/stop control queue · app.control_queue.enqueuedCurrent queued USB start/stop control messages. The card pairs this with capacity; CDC payload bytes use a different ring. Reference: app.control_queue.capacity. Capacity in control messages, five for this example. This is the denominator for queue occupancy/free-space checks.messages
USBX regular memory free · usbx.memory.regular.freeAvailable allocator bytes at this sample. Free space does not establish the largest contiguous allocatable block. Compare with total, and do not add potentially aliased pools. Reference: usbx.memory.regular.total. Configured byte-pool size. This is the card/check denominator, not cumulative allocated bytes. Cache-safe storage may alias the regular pool.bytes
USBX cache-safe memory free · usbx.memory.cache_safe.freeAvailable allocator bytes at this sample. Free space does not establish the largest contiguous allocatable block. Compare with total, and do not add potentially aliased pools. Reference: usbx.memory.cache_safe.total. Configured byte-pool size. This is the card/check denominator, not cumulative allocated bytes. Cache-safe storage may alias the regular pool.bytes

USB controller

Sampled controller state; brief changes between reads can be missed.

CARD OR ROW READING AND SIGNIFICANCE UNIT
Interrupt delivery · usb.interrupts_enabledGlobal interrupt delivery: 0 disabled, 1 enabled. Enabled does not prove NVIC delivery or ISR servicing. Values.Raw value / decoded state
Software connection · usb.soft_disconnect0 means connected by software; 1 means held disconnected. It does not detect the cable. Values.Raw value / decoded state
USB address · usb.addressUSB device address, 0–127. Zero is the default address during enumeration; compare with stack configuration.Raw value / decoded state
Bus state · usb.suspended0 active bus, 1 suspended. Host power management can make suspension normal. Values.Raw value / decoded state

USBX device and CDC class

Current device and host settings. Uninitialized or changing objects are shown as unavailable.

CARD OR ROW READING AND SIGNIFICANCE UNIT
USBX state · usbx.device_stateUSBX software device state. Configured (3) can persist even when controller interrupts stop; compare controller and endpoint evidence. Values.Raw value / decoded state
Selected configuration · usbx.configurationHost-selected configuration value. This bridge normally selects 1; it is not a transfer counter.Raw value / decoded state
CDC baud rate · usbx.baudCDC line-coding baud rate in bits/s, used for the UART bridge. It is not USB bus speed.Raw value / decoded state
Host DTR · usbx.dtrHost CDC data-terminal-ready flag. It may remain 0 until a serial client opens the CDC port. Values.Raw value / decoded state
Host RTS · usbx.rtsHost CDC request-to-send flag. Its absence alone does not identify a fault. Values.Raw value / decoded state

CDC endpoint 1

Current or most recent request. Fields are sampled separately; these lengths do not measure throughput.

CARD OR ROW READING AND SIGNIFICANCE UNIT
Endpoint / direction · usbx.ep1.addressEndpoint descriptor address. Bit 7 set means IN (device to host), clear means OUT (host to device). The endpoint number here is linked-list traversal order; read this address to determine direction. Values.Raw value / decoded state
Transfer state · usbx.ep1.statusCurrent or most recent USBX request state: 0 not pending, 1 pending, 2 completed, 4 aborted. A pending OUT request is normal when the host is idle. Values.Raw value / decoded state
Requested bytes · usbx.ep1.requested_lengthBytes requested for the current/most recent transfer, not a cumulative count or throughput.Raw value / decoded state
Actual bytes · usbx.ep1.actual_lengthBytes recorded as actually transferred for that request. A pending request can show zero. Compare with status before interpreting completion.Raw value / decoded state
Completion code · usbx.ep1.completion_codeUSBX result code of the current/most recent request. Zero is the success code but does not prove a pending request has completed. A retained error is not a count of repeated failures. Values.Raw value / decoded state

CDC endpoint 2

Current or most recent request. Fields are sampled separately; these lengths do not measure throughput.

CARD OR ROW READING AND SIGNIFICANCE UNIT
Endpoint / direction · usbx.ep2.addressEndpoint descriptor address. Bit 7 set means IN (device to host), clear means OUT (host to device). The endpoint number here is linked-list traversal order; read this address to determine direction. Values.Raw value / decoded state
Transfer state · usbx.ep2.statusCurrent or most recent USBX request state: 0 not pending, 1 pending, 2 completed, 4 aborted. A pending OUT request is normal when the host is idle. Values.Raw value / decoded state
Requested bytes · usbx.ep2.requested_lengthBytes requested for the current/most recent transfer, not a cumulative count or throughput.Raw value / decoded state
Actual bytes · usbx.ep2.actual_lengthBytes recorded as actually transferred for that request. A pending request can show zero. Compare with status before interpreting completion.Raw value / decoded state
Completion code · usbx.ep2.completion_codeUSBX result code of the current/most recent request. Zero is the success code but does not prove a pending request has completed. A retained error is not a count of repeated failures. Values.Raw value / decoded state

Application and ThreadX

Waiting is normal at idle. Compare the producer and consumer indices with endpoint demand.

CARD OR ROW READING AND SIGNIFICANCE UNIT
CDC read thread · threadx.read_stateThreadX state of the USB OUT reader. Semaphore wait (6) is normal when no host data is available. Values.Raw value / decoded state
CDC write thread · threadx.write_stateThreadX state of the USB IN writer. Event flags wait (7) is normal while waiting for UART data. Values.Raw value / decoded state
UART producer index · app.tx_inUART producer position in the 2048-byte ring. It advances on received UART bytes and wraps; it is not a lifetime byte counter.Raw value / decoded state
USB consumer index · app.tx_outUSB consumer position in the 2048-byte ring. It advances by bytes actually written to USB and wraps. Compare progress with the producer; equality alone cannot prove no past overflow.Raw value / decoded state

Queue and allocator details

The control queue is separate from the UART/CDC payload ring. Bare ring indices cannot establish overflow or lost bytes. Allocator minimum-free and queue full/timeout statistics are not enabled in the example firmware. The two USBX pools may share storage; do not add their sizes.

CARD OR ROW READING AND SIGNIFICANCE UNIT
Control message size · app.control_queue.message_wordsWords per control message, one 32-bit ULONG in this firmware. Multiply by four for payload bytes per message, not total queue object size.32-bit words
Control queue free slots · app.control_queue.availableFree message slots. Below 20% of five slots means zero free slots; a sampled full queue does not prove a dropped message.slots
Threads waiting on control queue · app.control_queue.waitersThreads suspended on the control queue. A waiting receiver is normal while no start/stop event is pending.Raw value / decoded state
Regular pool fragments · usbx.memory.regular.fragmentsAllocator block-fragment count, including allocator bookkeeping blocks. It is not the number or size of free blocks, nor a high-water mark; use it only as context for allocation pressure.Raw value / decoded state
Cache-safe pool fragments · usbx.memory.cache_safe.fragmentsAllocator block-fragment count, including allocator bookkeeping blocks. It is not the number or size of free blocks, nor a high-water mark; use it only as context for allocation pressure.Raw value / decoded state

Every sampled input

All paths below come from the downloadable definition. Integer types specify width and signedness. No scaling is applied to a raw read. A field without a declared unit is a code, count, address or raw register; its engineering meaning is explained above or below.

INPUT SOURCE / ADDRESS PATH TYPE INTERPRETATION / ACCESS
usb.gahbcfgOTG_FS.GAHBCFGu32AHB configuration word. Bit 0 gates delivery of controller interrupts; inspect this before blaming a Configured-but-stalled USBX stack. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN).
usb.dctlOTG_FS.DCTLu32Device control word. Bit 1 is software disconnect; a set bit can explain failed enumeration even with the target cable present. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN).
usb.dstsOTG_FS.DSTSu32Device status word. Suspend and enumerated-speed fields describe controller state, not measured traffic throughput. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN).
usb.dcfgOTG_FS.DCFGu32Device configuration word. Bits 10:4 contain the host-assigned USB address. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN).
usb.gintmskOTG_FS.GINTMSKu32Individual interrupt mask. A globally enabled controller can still have individual interrupt sources masked. Guard: (RCC.RCC_AHB2ENR1 & 0x4000) = 0x4000. The USB OTG peripheral clock must be enabled (RCC OTGEN).
usbx.device_state(*_ux_system_slave).ux_system_slave_device.ux_slave_device_stateu32See its card/table above.
usbx.configuration(*_ux_system_slave).ux_system_slave_device.ux_slave_device_configuration_selectedu32See its card/table above.
usbx.baud(*cdc_acm).ux_slave_class_cdc_acm_baudrateu32See its card/table above.
usbx.dtr(*cdc_acm).ux_slave_class_cdc_acm_data_dtr_stateu8See its card/table above.
usbx.rts(*cdc_acm).ux_slave_class_cdc_acm_data_rts_stateu8See its card/table above.
usbx.ep1.address(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_descriptor.bEndpointAddressu8See its card/table above.
usbx.ep1.status(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_statusu32See its card/table above.
usbx.ep1.requested_length(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_requested_lengthu32See its card/table above.
usbx.ep1.actual_length(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_actual_lengthu32See its card/table above.
usbx.ep1.completion_code(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_completion_codeu32See its card/table above.
usbx.ep2.address(*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_descriptor.bEndpointAddressu8See its card/table above.
usbx.ep2.status(*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_statusu32See its card/table above.
usbx.ep2.requested_length(*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_requested_lengthu32See its card/table above.
usbx.ep2.actual_length(*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_actual_lengthu32See its card/table above.
usbx.ep2.completion_code(*(*(*(*cdc_acm).ux_slave_class_cdc_acm_interface).ux_slave_interface_first_endpoint).ux_slave_endpoint_next_endpoint).ux_slave_endpoint_transfer_request.ux_slave_transfer_request_completion_codeu32See its card/table above.
threadx.read_stateux_cdc_read_thread.tx_thread_stateu32See its card/table above.
threadx.write_stateux_cdc_write_thread.tx_thread_stateu32See its card/table above.
app.tx_inUserTxBufPtrInu32See its card/table above.
app.tx_outUserTxBufPtrOutu32See its card/table above.
usbx.last_error(*_ux_system).ux_system_last_erroru32See its card/table above.
usbx.error_count(*_ux_system).ux_system_error_countu32See its card/table above. Counter policy: monotonic.
app.control_queue.enqueuedux_app_MsgQueue.tx_queue_enqueuedu32See its card/table above.
app.control_queue.capacityux_app_MsgQueue.tx_queue_capacityu32See its card/table above.
app.control_queue.availableux_app_MsgQueue.tx_queue_available_storageu32See its card/table above.
app.control_queue.message_wordsux_app_MsgQueue.tx_queue_message_sizeu32See its card/table above.
app.control_queue.waitersux_app_MsgQueue.tx_queue_suspended_countu32See its card/table above.
usbx.memory.regular.free(*(*_ux_system).ux_system_memory_byte_pool[0]).ux_byte_pool_availableu32See its card/table above.
usbx.memory.regular.total(*(*_ux_system).ux_system_memory_byte_pool[0]).ux_byte_pool_sizeu32See its card/table above.
usbx.memory.regular.fragments(*(*_ux_system).ux_system_memory_byte_pool[0]).ux_byte_pool_fragmentsu32See its card/table above.
usbx.memory.cache_safe.free(*(*_ux_system).ux_system_memory_byte_pool[1]).ux_byte_pool_availableu32See its card/table above.
usbx.memory.cache_safe.total(*(*_ux_system).ux_system_memory_byte_pool[1]).ux_byte_pool_sizeu32See its card/table above.
usbx.memory.cache_safe.fragments(*(*_ux_system).ux_system_memory_byte_pool[1]).ux_byte_pool_fragmentsu32See its card/table above.

wrapping tells analysis to account for rollover at the declared integer width; a reset can look like a wrap, and multiple wraps between samples cannot be recovered. monotonic uses sampled increases without inventing a reset/wrap delta. clear_on_read reports a consuming read interval, not a lifetime total. A display styled as a counter does not itself establish any of these policies.

Derived fields and rates

CHANNEL CALCULATION MEANING UNIT
usb.interrupts_enabled(usb.gahbcfg >> 0) & 0x1Global interrupt delivery: 0 disabled, 1 enabled. Enabled does not prove NVIC delivery or ISR servicing. Values.Code / state
usb.soft_disconnect(usb.dctl >> 1) & 0x10 means connected by software; 1 means held disconnected. It does not detect the cable. Values.Code / state
usb.suspended(usb.dsts >> 0) & 0x10 active bus, 1 suspended. Host power management can make suspension normal. Values.Code / state
usb.address(usb.dcfg >> 4) & 0x7fUSB device address, 0–127. Zero is the default address during enumeration; compare with stack configuration.Code / state
usb.enumerated_speed(usb.dsts >> 1) & 0x3Encoded enumerated speed, not a throughput measurement. Value 3 means full speed with the 48 MHz PHY in this example. Values.Code / state

Rates need two valid samples at increasing timestamps and are interval averages. Gaps break the calculation. A negative raw delta is clamped to zero by the rate calculation; do not infer an instantaneous event rate from a reset. Unknown map keys pass through numerically; an unmapped code is not a validated physical measurement.

Findings

USB interrupt delivery disabled

error · usb-global-interrupts-disabled. usb.interrupts_enabled ≤ 0 for 500 ms of observations.

The OTG_FS global interrupt enable remained clear for at least 500 ms while the USB peripheral clock was enabled. The USBX CDC ACM interrupt-driven driver cannot service USB interrupts in this state. Check HAL_PCD_Start / USB_EnableGlobalInt and code that masks GAHBCFG.GINTMSK. This check is specific to the STM32Cube USBX CDC ACM example; deliberate polling-only drivers may disable this bit. USBX may still report Configured while interrupt delivery is disabled. Compare endpoint pending work and producer/consumer indices to see which work has stopped; waiting threads alone are not an error, and polled transfer fields do not count every transfer.

Evidence: usb.gahbcfg, usb.interrupts_enabled, usb.gintmsk, usbx.device_state, usbx.configuration, usbx.ep1.status, usbx.ep2.status, app.tx_in, app.tx_out, threadx.read_state, threadx.write_state.

USB device held in software disconnect

warning · usb-software-disconnected. usb.soft_disconnect ≥ 1 for 500 ms of observations.

DCTL.SDIS remained set for at least 500 ms. The controller is disconnected from the host by software, so the CDC port cannot enumerate or carry data. Check USB_DevConnect / HAL_PCD_Start and intentional disconnect or power-management paths. This is controller state; it does not prove that a cable is missing or that a USBX thread is faulty.

Evidence: usb.dctl, usb.soft_disconnect, usb.address, usb.suspended.

USBX error-handler count increased

info · usbx-error-reports. usbx.error_count increases between valid samples.

The firmware reported additional codes through the USBX error handler between these samples. The last code is context, not a complete log or proof of an active fault. Resets, aborts and device removal may be intentional. API errors that bypass this handler are not counted. A counter decrease ends an advance interval; no reset/wrap delta is inferred.

Evidence: usbx.error_count, usbx.last_error.

CDC endpoint 1 error code observed

warning · usbx-ep1-completion. usbx.ep1.completion_code is one of: 255, 253, 251, 250, 248, 247, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 33, 34, 35, 36, 39, 41, 49, 50, 51, 65, 66, 67, 68, 69, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 128, 129, 130, 144, 145, 146, 147.

A sampled endpoint completion field contained a recognized error code. Inspect its named code, endpoint direction and transfer state. This is the current or most recent request field, not an active-fault flag or a complete transfer log. Repeated samples do not count repeated failures. Pending receives and ordinary thread waits are normal; reset, abort and not-ready codes are excluded.

Evidence: usbx.ep1.address, usbx.ep1.status, usbx.ep1.completion_code, usbx.ep1.requested_length, usbx.ep1.actual_length.

CDC endpoint 2 error code observed

warning · usbx-ep2-completion. usbx.ep2.completion_code is one of: 255, 253, 251, 250, 248, 247, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 33, 34, 35, 36, 39, 41, 49, 50, 51, 65, 66, 67, 68, 69, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 128, 129, 130, 144, 145, 146, 147.

A sampled endpoint completion field contained a recognized error code. Inspect its named code, endpoint direction and transfer state. This is the current or most recent request field, not an active-fault flag or a complete transfer log. Repeated samples do not count repeated failures. Pending receives and ordinary thread waits are normal; reset, abort and not-ready codes are excluded.

Evidence: usbx.ep2.address, usbx.ep2.status, usbx.ep2.completion_code, usbx.ep2.requested_length, usbx.ep2.actual_length.

Control queue full or nearly full

warning · usbx-control-queue-pressure. app.control_queue.available < 0.2 × app.control_queue.capacity for 0 ms of observations.

A sample found fewer than 20% of control-message slots free. For this five-slot queue that means full. This queue carries USB start/stop messages, not CDC payload bytes. Sampling can miss brief fullness; this does not prove a dropped message or an exact occupancy peak.

Evidence: app.control_queue.enqueued, app.control_queue.capacity, app.control_queue.available, app.control_queue.message_words.

USBX regular memory below 10% free

warning · usbx-memory-regular-pressure. usbx.memory.regular.free < 0.1 × usbx.memory.regular.total for 0 ms of observations.

A sample found less than 10% of the pool free. This is a pressure threshold, not proof of allocation failure. Free space may be fragmented and does not establish the largest available block. The cache-safe pool may alias the regular pool.

Evidence: usbx.memory.regular.free, usbx.memory.regular.total, usbx.memory.regular.fragments.

USBX cache-safe memory below 10% free

warning · usbx-memory-cache_safe-pressure. usbx.memory.cache_safe.free < 0.1 × usbx.memory.cache_safe.total for 0 ms of observations.

A sample found less than 10% of the pool free. This is a pressure threshold, not proof of allocation failure. Free space may be fragmented and does not establish the largest available block. The cache-safe pool may alias the regular pool.

Evidence: usbx.memory.cache_safe.free, usbx.memory.cache_safe.total, usbx.memory.cache_safe.fragments.

Value dictionaries

These are the exact value mappings in this version of the descriptor. Unlisted status codes remain numeric; they are not implicitly success. Decode a value in the context of its field and validity.

Value map 1

RAW VALUE DECODED LABEL / MAPPED VALUE
0No error recorded (0)
255Error (UX_ERROR)
254Busy (UX_BUSY)
253Timeout (UX_TIMEOUT)
252Reentry (UX_REENTRY)
251Invalid state (UX_INVALID_STATE)
250Invalid parameter (UX_INVALID_PARAMETER)
249Aborted (UX_ABORTED)
248Math overflow (UX_MATH_OVERFLOW)
247Invalid build option (UX_INVALID_BUILD_OPTION)
17Too many devices (UX_TOO_MANY_DEVICES)
18Memory insufficient (UX_MEMORY_INSUFFICIENT)
19No td available (UX_NO_TD_AVAILABLE)
20No ed available (UX_NO_ED_AVAILABLE)
21Semaphore error (UX_SEMAPHORE_ERROR)
22Thread error (UX_THREAD_ERROR)
23Mutex error (UX_MUTEX_ERROR)
24Event error (UX_EVENT_ERROR)
25Memory corrupted (UX_MEMORY_CORRUPTED)
26Memory array full (UX_MEMORY_ARRAY_FULL)
27Fatal error (UX_FATAL_ERROR)
28Already activated (UX_ALREADY_ACTIVATED)
33Transfer stalled (UX_TRANSFER_STALLED)
34Transfer no answer (UX_TRANSFER_NO_ANSWER)
35Transfer error (UX_TRANSFER_ERROR)
36Transfer missed frame (UX_TRANSFER_MISSED_FRAME)
37Transfer not ready (UX_TRANSFER_NOT_READY)
38Transfer bus reset (UX_TRANSFER_BUS_RESET)
39Transfer buffer overflow (UX_TRANSFER_BUFFER_OVERFLOW)
40Transfer application reset (UX_TRANSFER_APPLICATION_RESET)
41Transfer data less than expected (UX_TRANSFER_DATA_LESS_THAN_EXPECTED)
49Port reset failed (UX_PORT_RESET_FAILED)
50Controller init failed (UX_CONTROLLER_INIT_FAILED)
51Controller dead (UX_CONTROLLER_DEAD)
65No bandwidth available (UX_NO_BANDWIDTH_AVAILABLE)
66Descriptor corrupted (UX_DESCRIPTOR_CORRUPTED)
67Over current condition (UX_OVER_CURRENT_CONDITION)
68Device enumeration failure (UX_DEVICE_ENUMERATION_FAILURE)
69Too many hub ports (UX_TOO_MANY_HUB_PORTS)
80Device handle unknown (UX_DEVICE_HANDLE_UNKNOWN)
81Configuration handle unknown (UX_CONFIGURATION_HANDLE_UNKNOWN)
82Interface handle unknown (UX_INTERFACE_HANDLE_UNKNOWN)
83Endpoint handle unknown (UX_ENDPOINT_HANDLE_UNKNOWN)
84Function not supported (UX_FUNCTION_NOT_SUPPORTED)
85Controller unknown (UX_CONTROLLER_UNKNOWN)
86Port index unknown (UX_PORT_INDEX_UNKNOWN)
87No class match (UX_NO_CLASS_MATCH)
88Host class already installed (UX_HOST_CLASS_ALREADY_INSTALLED)
89Host class unknown (UX_HOST_CLASS_UNKNOWN)
90Connection incompatible (UX_CONNECTION_INCOMPATIBLE)
91Host class instance unknown (UX_HOST_CLASS_INSTANCE_UNKNOWN)
92Transfer timeout (UX_TRANSFER_TIMEOUT)
93Buffer overflow (UX_BUFFER_OVERFLOW)
94No alternate setting (UX_NO_ALTERNATE_SETTING)
95No device connected (UX_NO_DEVICE_CONNECTED)
96Host class protocol error (UX_HOST_CLASS_PROTOCOL_ERROR)
97Host class memory error (UX_HOST_CLASS_MEMORY_ERROR)
98Host class media not supported (UX_HOST_CLASS_MEDIA_NOT_SUPPORTED)
99Class malformed packet received error (UX_CLASS_MALFORMED_PACKET_RECEIVED_ERROR)
112Host class hid report overflow (UX_HOST_CLASS_HID_REPORT_OVERFLOW)
113Host class hid usage overflow (UX_HOST_CLASS_HID_USAGE_OVERFLOW)
114Host class hid tag unsupported (UX_HOST_CLASS_HID_TAG_UNSUPPORTED)
115Host class hid push overflow (UX_HOST_CLASS_HID_PUSH_OVERFLOW)
116Host class hid pop underflow (UX_HOST_CLASS_HID_POP_UNDERFLOW)
117Host class hid collection overflow (UX_HOST_CLASS_HID_COLLECTION_OVERFLOW)
118Host class hid collection underflow (UX_HOST_CLASS_HID_COLLECTION_UNDERFLOW)
119Host class hid min max error (UX_HOST_CLASS_HID_MIN_MAX_ERROR)
120Host class hid delimiter error (UX_HOST_CLASS_HID_DELIMITER_ERROR)
121Host class hid report error (UX_HOST_CLASS_HID_REPORT_ERROR)
122Host class hid periodic report error (UX_HOST_CLASS_HID_PERIODIC_REPORT_ERROR)
123Host class hid unknown (UX_HOST_CLASS_HID_UNKNOWN)
128Host class audio wrong type (UX_HOST_CLASS_AUDIO_WRONG_TYPE)
129Host class audio wrong interface (UX_HOST_CLASS_AUDIO_WRONG_INTERFACE)
130Host class audio wrong frequency (UX_HOST_CLASS_AUDIO_WRONG_FREQUENCY)
144Class eth link state down error (UX_CLASS_ETH_LINK_STATE_DOWN_ERROR)
145Class eth packet pool error (UX_CLASS_ETH_PACKET_POOL_ERROR)
146Class eth packet error (UX_CLASS_ETH_PACKET_ERROR)
147Class eth size error (UX_CLASS_ETH_SIZE_ERROR)

Value map 2

RAW VALUE DECODED LABEL / MAPPED VALUE
0Disabled
1Enabled

Value map 3

RAW VALUE DECODED LABEL / MAPPED VALUE
0Connected by software
1Software disconnected

Value map 4

RAW VALUE DECODED LABEL / MAPPED VALUE
0Active bus
1Suspended

Value map 5

RAW VALUE DECODED LABEL / MAPPED VALUE
0Reset
1Attached
2Addressed
3Configured
4Suspended

Value map 6

RAW VALUE DECODED LABEL / MAPPED VALUE
0Not asserted
1Asserted

Value map 7

RAW VALUE DECODED LABEL / MAPPED VALUE
10x01 - OUT (host to device)
1290x81 - IN (device to host)
20x02 - OUT (host to device)
1300x82 - IN (device to host)

Value map 8

RAW VALUE DECODED LABEL / MAPPED VALUE
0Not pending
1Pending
2Completed
4Aborted

Value map 9

RAW VALUE DECODED LABEL / MAPPED VALUE
0Success code (UX_SUCCESS)
255Error (UX_ERROR)
254Busy (UX_BUSY)
253Timeout (UX_TIMEOUT)
252Reentry (UX_REENTRY)
251Invalid state (UX_INVALID_STATE)
250Invalid parameter (UX_INVALID_PARAMETER)
249Aborted (UX_ABORTED)
248Math overflow (UX_MATH_OVERFLOW)
247Invalid build option (UX_INVALID_BUILD_OPTION)
17Too many devices (UX_TOO_MANY_DEVICES)
18Memory insufficient (UX_MEMORY_INSUFFICIENT)
19No td available (UX_NO_TD_AVAILABLE)
20No ed available (UX_NO_ED_AVAILABLE)
21Semaphore error (UX_SEMAPHORE_ERROR)
22Thread error (UX_THREAD_ERROR)
23Mutex error (UX_MUTEX_ERROR)
24Event error (UX_EVENT_ERROR)
25Memory corrupted (UX_MEMORY_CORRUPTED)
26Memory array full (UX_MEMORY_ARRAY_FULL)
27Fatal error (UX_FATAL_ERROR)
28Already activated (UX_ALREADY_ACTIVATED)
33Transfer stalled (UX_TRANSFER_STALLED)
34Transfer no answer (UX_TRANSFER_NO_ANSWER)
35Transfer error (UX_TRANSFER_ERROR)
36Transfer missed frame (UX_TRANSFER_MISSED_FRAME)
37Transfer not ready (UX_TRANSFER_NOT_READY)
38Transfer bus reset (UX_TRANSFER_BUS_RESET)
39Transfer buffer overflow (UX_TRANSFER_BUFFER_OVERFLOW)
40Transfer application reset (UX_TRANSFER_APPLICATION_RESET)
41Transfer data less than expected (UX_TRANSFER_DATA_LESS_THAN_EXPECTED)
49Port reset failed (UX_PORT_RESET_FAILED)
50Controller init failed (UX_CONTROLLER_INIT_FAILED)
51Controller dead (UX_CONTROLLER_DEAD)
65No bandwidth available (UX_NO_BANDWIDTH_AVAILABLE)
66Descriptor corrupted (UX_DESCRIPTOR_CORRUPTED)
67Over current condition (UX_OVER_CURRENT_CONDITION)
68Device enumeration failure (UX_DEVICE_ENUMERATION_FAILURE)
69Too many hub ports (UX_TOO_MANY_HUB_PORTS)
80Device handle unknown (UX_DEVICE_HANDLE_UNKNOWN)
81Configuration handle unknown (UX_CONFIGURATION_HANDLE_UNKNOWN)
82Interface handle unknown (UX_INTERFACE_HANDLE_UNKNOWN)
83Endpoint handle unknown (UX_ENDPOINT_HANDLE_UNKNOWN)
84Function not supported (UX_FUNCTION_NOT_SUPPORTED)
85Controller unknown (UX_CONTROLLER_UNKNOWN)
86Port index unknown (UX_PORT_INDEX_UNKNOWN)
87No class match (UX_NO_CLASS_MATCH)
88Host class already installed (UX_HOST_CLASS_ALREADY_INSTALLED)
89Host class unknown (UX_HOST_CLASS_UNKNOWN)
90Connection incompatible (UX_CONNECTION_INCOMPATIBLE)
91Host class instance unknown (UX_HOST_CLASS_INSTANCE_UNKNOWN)
92Transfer timeout (UX_TRANSFER_TIMEOUT)
93Buffer overflow (UX_BUFFER_OVERFLOW)
94No alternate setting (UX_NO_ALTERNATE_SETTING)
95No device connected (UX_NO_DEVICE_CONNECTED)
96Host class protocol error (UX_HOST_CLASS_PROTOCOL_ERROR)
97Host class memory error (UX_HOST_CLASS_MEMORY_ERROR)
98Host class media not supported (UX_HOST_CLASS_MEDIA_NOT_SUPPORTED)
99Class malformed packet received error (UX_CLASS_MALFORMED_PACKET_RECEIVED_ERROR)
112Host class hid report overflow (UX_HOST_CLASS_HID_REPORT_OVERFLOW)
113Host class hid usage overflow (UX_HOST_CLASS_HID_USAGE_OVERFLOW)
114Host class hid tag unsupported (UX_HOST_CLASS_HID_TAG_UNSUPPORTED)
115Host class hid push overflow (UX_HOST_CLASS_HID_PUSH_OVERFLOW)
116Host class hid pop underflow (UX_HOST_CLASS_HID_POP_UNDERFLOW)
117Host class hid collection overflow (UX_HOST_CLASS_HID_COLLECTION_OVERFLOW)
118Host class hid collection underflow (UX_HOST_CLASS_HID_COLLECTION_UNDERFLOW)
119Host class hid min max error (UX_HOST_CLASS_HID_MIN_MAX_ERROR)
120Host class hid delimiter error (UX_HOST_CLASS_HID_DELIMITER_ERROR)
121Host class hid report error (UX_HOST_CLASS_HID_REPORT_ERROR)
122Host class hid periodic report error (UX_HOST_CLASS_HID_PERIODIC_REPORT_ERROR)
123Host class hid unknown (UX_HOST_CLASS_HID_UNKNOWN)
128Host class audio wrong type (UX_HOST_CLASS_AUDIO_WRONG_TYPE)
129Host class audio wrong interface (UX_HOST_CLASS_AUDIO_WRONG_INTERFACE)
130Host class audio wrong frequency (UX_HOST_CLASS_AUDIO_WRONG_FREQUENCY)
144Class eth link state down error (UX_CLASS_ETH_LINK_STATE_DOWN_ERROR)
145Class eth packet pool error (UX_CLASS_ETH_PACKET_POOL_ERROR)
146Class eth packet error (UX_CLASS_ETH_PACKET_ERROR)
147Class eth size error (UX_CLASS_ETH_SIZE_ERROR)

Value map 10

RAW VALUE DECODED LABEL / MAPPED VALUE
0Ready
1Completed
2Terminated
3Suspended
4Sleeping
5Queue wait
6Semaphore wait
7Event flags wait
8Block memory wait
9Byte memory wait
13Mutex wait

Value map 11

RAW VALUE DECODED LABEL / MAPPED VALUE
0High speed
1Full speed (30/60 MHz PHY)
2Low speed
3Full speed (48 MHz PHY)

Definition and contribution

Verified against the USBX/ThreadX bridge application, ux_device_cdc_acm.c, app_usbx_device.c, USBX ux_api.h and allocator/error-handler implementations, ThreadX tx_api.h, the STM32U575 register definitions, and the shared domain decoder/card formatting. The descriptor supplies exact enum dictionaries below.

View or propose changes to the canonical JSON. Contribution guide.

Download SHA-256: 0ac59f1e9c33e210a9343cf86f929d426f6116324e2ff279ebd92b106646439e.