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

@thulioamorim A brief google search shows that you might be missing some patches to get this device working, perhaps have you checked out the librealsense repo ?

Hi, thanks for the suggestion.

I did look into the Librealsense installation options. I’m currently using the LibUVC backend, so the kernel patches described in the Librealsense documentation are not required for my setup.

To rule out an installation issue, I tested three different installation methods:

All three exhibit the same behavior on the VIM4.

The same LibUVC-based setup also works correctly on the Khadas VIM3, which is why I currently suspect this is not a Librealsense installation issue.

Additionally, the ROS 2 wrapper detects the camera and can start streaming. The failure only occurs after streaming begins, when the kernel reports that the xHCI controller has stopped responding (xHCI host not responding to stop endpoint command, followed by HC died).

If you think there are specific Librealsense patches that are still relevant when using the LibUVC backend, I’d be happy to try them.

@thulioamorim in that case, looking at dmesg messages, it could also be some kind of power cycling issue, try comparing the logs to a system which is working to see if it’s only the xHCI controller messages or something else is involved.