USBMon、DebugFS、Trace 与故障排查

USBMon、DebugFS、Trace 与故障排查

1. 枚举

1
2
3
4
5
lsusb
lsusb -t
lsusb -v -d VID:PID
usb-devices
dmesg -w

lsusb -t确认速度、拓扑、driver和root hub。

2. Sysfs

1
2
3
readlink -f /sys/bus/usb/devices/1-1/driver
cat /sys/bus/usb/devices/1-1/{speed,version,authorized}
cat /sys/bus/usb/devices/1-1/power/{control,runtime_status,wakeup}

3. usbmon

Defconfig列出USB_MON。挂载debugfs后:

1
2
modprobe usbmon
cat /sys/kernel/debug/usb/usbmon/0u

Wireshark可读usbmon binary接口。抓包含payload和控制请求,需按敏感数据保护。

4. Trace

USB/DWC3/xHCI tracepoints可通过tracefs启用,适合分析URB延迟、role切换、endpoint和controller events。

5. DebugFS

可用节点依配置:

  • DWC3 registers/events/link state;
  • xHCI rings/contexts;
  • usbmon;
  • gadget/UDC;
  • Type-C/TCPM trace。

Gadget debug files已在defconfig列出,但最终 .config仍需核对。

6. 枚举失败阶段

日志/现象 重点
无connect VBUS、D+/D-、PHY、role
device descriptor read error 电源、信号、reset、线材
address失败 controller/Hub/设备firmware
config descriptor错误 设备描述符
driver未绑定 ID/class/Kconfig/module
USB2正常USB3失败 SS lane、orientation、PHY、线材

7. 常见errno

  • -71 EPROTO;
  • -110 timeout;
  • -32 EPIPE/stall;
  • -19 ENODEV;
  • -108 ESHUTDOWN;
  • -75 EOVERFLOW。

同一errno不是唯一根因,需结合发生阶段。

8. RK3588检查

1
2
dmesg | grep -Ei 'dwc3|xhci|ehci|ohci|usb2phy|usbdp|typec|tcpm'
cat /sys/kernel/debug/clk/clk_summary | grep -Ei 'usb|utmi|pipe'

同时确认regulator、GPIO、power domain和PHY状态。

9. 性能

使用fio/iperf/实际UVC workload并记录:

  • negotiated speed;
  • UAS/BOT;
  • xHCI errors;
  • CPU/IRQ affinity;
    -IOMMU/DMA;
    -autosuspend;
    -线材/Hub;
    -thermal throttling。

10. 方法

先固定单端口、短线、无Hub、autosuspend临时关闭,再逐项恢复变量,避免同时修改DTS quirk和driver参数。

文章互动

阅读 --

留言

0 条留言

正在加载留言…