Skip to content

USB Host: No enumeration with USB-over-CAT5 extender on ESP32-P4 (HS PHY) — zero DWC/ENUM/PHY logs even at VERBOSE level (IDFGH-17839) #18742

Description

@SeByDocKy

Answers checklist.

  • I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report

Hardware:

Board: ESP32-P4 Function EV Board v1.4
IDF version: 5.5.4
Connection: USB Type-A port (powered via TPS2051C power switch)
USB extender: passive USB 2.0 over CAT5/6 extender (no driver required on Windows) — AliExpress link
Camera: SunplusIT VID=0x1BCF PID=0x0951 (UVC, MJPEG, HS capable)

Problem description:
When connecting a USB camera through a passive USB-over-CAT5 extender to the ESP32-P4 USB Type-A port (HS PHY, GPIO49/50), the USB host stack produces absolutely no log output at VERBOSE level — not a single message from USB_DWC, USB_PHY, ENUM, or HUB tags. The extender LED blinks slowly (~0.3 Hz), indicating it is powered but cannot establish a USB link with the host.
The exact same setup (same extender, same CAT5 cable, same camera) works perfectly on a Windows PC without any driver installation. On Windows, the extender LED blinks rapidly (~3 Hz) during enumeration, and the camera is fully recognized as a UVC device.
When the camera is connected directly to the ESP32-P4 Type-A port (without the extender), everything works perfectly — enumeration completes in under 1 second, UVC streaming works up to 2560×1440@30fps.

Logger configuration used for diagnosis (with my ESPhome component):
logger:
level: VERBOSE
logs:
USB_DWC: VERBOSE
USB_DWC_HAL: VERBOSE
USB_DWC_LL: VERBOSE
USB_PHY: VERBOSE
ENUM: VERBOSE
HUB: VERBOSE
Result: zero output from any of these tags during the entire session with the extender connected.

sdkconfig options tested (no effect):
CONFIG_USB_HOST_HW_INTERFACE_SELECT_HS=y
CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=4096
CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=2000
CONFIG_USB_HOST_RESET_HOLD_MS=100
CONFIG_USB_HOST_RESET_RECOVERY_MS=1000
CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=500
Also tested with CONFIG_USB_HOST_HW_INTERFACE_SELECT_HS=n (FS mode) — same result, zero enumeration activity.

Analysis:
The complete silence of the USB_DWC and USB_PHY logs suggests the DWC controller never detects a physical connection event (VBUS/D+ detection). The extender's slow LED blink confirms it cannot complete the USB handshake with the P4 host PHY.
The key difference between the PC and the ESP32-P4 may be in how the host PHY presents itself electrically during connection detection and HS chirp negotiation. Specifically:

Does the ESP32-P4 HS PHY present the correct host-side termination resistances (15kΩ pull-down on D+ and D−) that passive extenders rely on to detect a valid USB host?
Is there a mechanism to force the PHY to start enumeration in FS mode before attempting HS negotiation (chirp K/J sequence), as some extenders may not handle the HS chirp correctly over CAT5 cable?
Is there any way to control the PHY's SE0/J/K state signaling timing that might help with extenders that have additional propagation delay?

Expected behavior: USB enumeration should begin (at minimum some USB_DWC or USB_PHY log output) when any USB 2.0 FS/HS device is connected to the Type-A port, including through a passive electrical extender.
Actual behavior: No enumeration activity whatsoever. The DWC controller appears to not detect any connection event.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions