# Jetson Orin 多路 RealSense D435i / D405 开启深度流丢帧与 USB 带宽溢出

> 原文链接：https://robotics.hellobike.com/pitfalls/realsense-d435i-usb3-bandwidth-frame-drop-jetson
> 频道：pitfalls | 更新日期：2026-10-21 | 标签：RealSense, D435i, D405, Jetson Orin, 多相机同步, LeRobot采数
> 核心摘要：双手腕 + 头部 3 路 RealSense 相机在 Jetson Orin 上同时拉流报帧超时（Frame didn't arrive within 5000），需扩容 usbfs_memory_mb 并开启硬件同步。

# Jetson Orin 多路 RealSense D435i / D405 开启深度流丢帧与 USB 带宽溢出

## 硬件与软件环境
- **计算平台**：NVIDIA Jetson AGX Orin / Orin NX（JetPack 6.0 / Ubuntu 22.04）
- **传感器配置**：1 路头部全局相机（RealSense D435i/D455）+ 2 路手腕相机（RealSense D405/D435i），用于双臂遥操作采集 LeRobot / OpenPI 数据集

## 故障现象与报错
单开任意 1 路相机时可稳定跑满 30fps；当同时启动 3 路相机的 RGB + Depth（640×480 @ 30fps）流时，第 3 路相机频繁打印警告：
`WARN [realsense2_camera]: Frame didn't arrive within 5000` 或 `uvc streamer watchdog triggered`，导致采集的演示轨迹（Episode）出现图像卡顿与时间戳错位。

## 根因分析
1. **Linux 内核 `usbfs_memory_mb` 默认仅 16MB**：多路高分辨率未压缩 RGB-D 视频流并发传输时，内核 USB DMA 环形缓冲区瞬间耗尽，导致 UVC 驱动直接丢弃后续 USB 批量传输包。
2. **多路相机共用同一个 USB Root Hub 控制器**：许多扩展坞将 4 个 Type-A 接口复用到同一个内部 USB 3.2 Gen1 5Gbps 通道上，3 路 RGB + Depth + IMU 加上主动红外散斑投射器峰值电流波动会导致链路降速至 USB 2.0。

## 解决步骤
1. **将内核 `usbfs_memory_mb` 扩容至 1000MB**：
   临时生效命令：
   ```bash
   echo 1000 | sudo tee /sys/module/usbcore/parameters/usbfs_memory_mb
   ```
   永久生效可在 `/etc/rc.local` 或 `udev` 规则中写入该参数。
2. **按序列号固定绑定并拆分 USB 主控制器**：
   使用 `rs-enumerate-devices -s` 获取每台相机的 `serial_no`，通过 `lsusb -t` 检查拓扑，将头部相机与左右手腕相机分别插在对应不同 `Bus`（独立 xHCI 控制器）的原生接口上。
3. **关闭非必要的散斑交叉干扰或启用多机硬件同步线**：双腕近距离操作时，两台 D435i 的红外结构光会互相干扰，建议手腕近距相机改用基于双目 RGB 被动纹理的 D405，或通过同步排线设置 1 主 2 从（`inter_cam_sync_mode=1/2`）错峰曝光。

## 原始参考来源 (Sources)

- [GitHub IntelRealSense/realsense-ros](https://github.com/IntelRealSense/realsense-ros)