notes
Robotics

RealSense D4xx の USB リンク速度確認と帯域の目安

lsusb -t / sysfs speed で 480 Mbps (USB 2.0) か 5000 Mbps (USB 3) かを確かめる方法、プロファイル別の必要帯域、USB 2.0 で起きる症状 (フレーム落ち・VIDIOC_QBUF 失敗・ジッタ)

要点: D4xx は USB 3 (5 Gbps) 前提。USB 2.0 (480 Mbps) で繋がると 640x480@15 の color+depth (約 18 MB/s) が上限近くになり、@30 や 848x480 は破綻する。cat /sys/bus/usb/devices/<dev>/speed が 480 なら配線 (ケーブル/ポート) が USB 2.0 になっている。

確認#

lsusb -t                                   # Class=Video, Driver=uvcvideo の行の末尾が 480M か 5000M か
for d in /sys/bus/usb/devices/*; do
  grep -q 8086 $d/idVendor 2>/dev/null && echo "$(basename $d) $(cat $d/product) $(cat $d/speed) Mbps"
done
journalctl -k --since -2h | grep -iE "usb.*(disconnect|reset|bandwidth)"   # 再接続・帯域不足の記録

USB 3 ハブは 2.0 側と 3.0 側の 2 デバイスとして見える。3.0 側 (10000M / 5000M のハブ) の下にカメラが無く、2.0 側 (480M) の下に居るなら、カメラ〜ハブ間のケーブルかポートが 2.0 になっている。

必要帯域 (無圧縮、非同期転送のオーバーヘッド前)#

プロファイルcolor YUYV (2 B/px)depth Z16 (2 B/px)合計
640x480 @159.2 MB/s9.2 MB/s18.4 MB/s (147 Mbps)
640x480 @3018.4 MB/s18.4 MB/s36.9 MB/s (295 Mbps)
848x480 @3024.4 MB/s24.4 MB/s48.8 MB/s (391 Mbps)
1280x720 @3055 MB/s55 MB/s110 MB/s (885 Mbps)

USB 2.0 の実効は 35〜40 MB/s (280〜320 Mbps)。640x480@30 で上限、848x480@30 は不可。USB 3.0 (5 Gbps、実効 300〜400 MB/s) なら全プロファイルが入る。

USB 2.0 で出る症状#

  • 起動時 VIDIOC_QBUF 失敗、ストリームが開かない (高プロファイル)
  • フレーム間隔のジッタ (公称 66 ms に対し 9〜235 ms)、撮像→受信遅延が 0.1〜0.6 s でばらつく
  • 頻繫な USB disconnect (バスパワーのハブで電力不足が重なると増える。D455 は最大 約 700 mA)

対処#

  • USB 3.x データ対応ケーブル (SuperSpeed 線あり) を使う。USB-C ケーブルは充電専用 (2.0) が多いので "USB 3.x Gen1/2" 明記のもの
  • USB 3 ポート (青、SS 表記) またはセルフパワーの USB 3 ハブに接続
  • 接続後に speed が 5000 になっているか再確認
最終更新:

On this page