xHCI controller crashes when streaming Intel RealSense D435i

Which system do you use? Android, Ubuntu, OOWOW, or others?

Ubuntu

Which version of the system do you use? Please provide the version of the system here:

  • Official Khadas Ubuntu image built with Fenix.

  • Fenix configuration (from make info):

    • Vendor: Amlogic
    • Chip: A311D2
    • Kernel: 5.15
    • U-Boot: 2019.01
    • Ubuntu Jammy (GNOME)
    • Installation: eMMC
  • Linux kernel: 5.15.137 (Khadas official khadas-vim-5.15.y branch).

Please describe your issue below:

I am trying to use an Intel RealSense D435i on the Khadas VIM4.

The camera is connected directly to the USB 3.x port and enumerates correctly at 5 Gbps, and all UVC devices are created correctly.

However, when running a RealSense workload (using either ROS 2 or realsense-viewer), the USB host controller eventually stops responding. The kernel reports:

  • xHCI host not responding to stop endpoint command

  • HC died

  • USB disconnect of the RealSense device

The issue is also reproducible with realsense-viewer.

Some observations:

  • The camera negotiates a 5 Gbps SuperSpeed connection.

  • USB bandwidth does not appear to be the limiting factor.

  • Simple V4L2 streaming tests can run successfully.

  • The failure occurs specifically with the RealSense streaming workload.

To support the D435i IMU, I rebuilt the official 5.15.137 kernel only to enable the required HID/IIO kernel configuration options. I did not modify the xHCI driver, USB subsystem, UVC driver, or device tree. The issue remains unchanged.

I would like to know whether this is a known limitation or bug of the VIM4 USB/xHCI driver, and whether there are any recommended patches or configuration changes to support stable RealSense D435i operation.

Post a console log of your issue below:

Below the logs:

The relevant kernel messages include:

xhci-hcd-meson: xHCI host not responding to stop endpoint command.
xhci-hcd-meson: HC died
xhci-hcd-meson: xHCI host controller not responding, assume dead
usb 2-1: USB disconnect, device number 2