> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# USB

通用串行总线(USB)支持电子设备之间的数据交换和供电,速度从 1.5 Mbps(低速)到 10 Gbps(SuperSpeed Plus)不等。IQ-9075 使用 **Synopsys DesignWare Core SuperSpeed USB 3.x** 控制器,连接到 USB2 PHY(UTMI)和 USB3 PHY(PIPE)接口。

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/IQ9075-USB-interface.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=17f6bddd97e43f48a90654f8bd5e4607" width="576" height="215" data-path="Linux/images/peripheral-interfaces/IQ9075-USB-interface.png" />

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/IQ9075-USB-ports.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=eb4a96a9dc7d3972457d1859f51cef99" width="883" height="215" data-path="Linux/images/peripheral-interfaces/IQ9075-USB-ports.png" />

开发板配备三个 USB 连接器:两个 Type-C(USB0、USB1)和一个 micro-USB(USB2)。

## 控制器

| 控制器      | 地址        | 最大速度               | HS PHY 电源轨                                   | SS PHY 电源轨 |
| -------- | --------- | ------------------ | -------------------------------------------- | ---------- |
| **USB0** | 0xa600000 | USB 3.x SuperSpeed | L7A (0.88V), L6C (1.8V), L9A (3.3V)          | L1C, L7A   |
| **USB1** | 0xa800000 | USB 3.x SuperSpeed | L7A (0.88V), L6C (1.8V), L9A (3.3V)          | L1C, L7A   |
| **USB2** | 0xa400000 | USB 2.0 High Speed | VDD\_A\_USBHS\_2\_1P8, VDD\_A\_USBHS\_2\_3P1 | —          |

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/IQ9075_USB_interface_configuration.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=852f6d3591ce5b250b2ced6a81c1b3c7" width="938" height="1066" data-path="Linux/images/peripheral-interfaces/IQ9075_USB_interface_configuration.png" />

## 特性

### 硬件特性

| 特性                     | 描述                                         |
| ---------------------- | ------------------------------------------ |
| **双角色设备(DRD)**         | 支持主机和设备模式,并具有动态角色检测                        |
| **USB 3.1 Gen1**       | USB0 和 USB1 上的 SuperSpeed 5 Gbps           |
| **USB 2.0 High Speed** | 所有控制器均支持 480 Mbps                          |
| **xHCI**               | 符合 eXtensible Host Controller Interface 规范 |
| **传输类型**               | 控制、批量、中断、等时                                |
| **链路电源管理**             | ASPM 风格的 LPM 以节省功耗                         |

### 软件特性

\*\*外设模式:\*\*大容量存储、诊断(FunctionFS)、RNDIS、NCM

\*\*主机模式:\*\*xHCI、HID/MS/Hub 类驱动、UVC(USB 摄像头)、链路电源管理

## 架构

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/usb_architecture_layers.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=129753bc12fd3acdf3585acba853bbdc" width="927" height="892" data-path="Linux/images/peripheral-interfaces/usb_architecture_layers.png" />

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/usb_hw_controller_arch_diagram.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=6ee01739c5a6eae529a832a4f5030eaa" width="658" height="857" data-path="Linux/images/peripheral-interfaces/usb_hw_controller_arch_diagram.png" />

| 层        | 关键组件                                          |
| -------- | --------------------------------------------- |
| **用户空间** | `diag-router` — 服务管理                          |
| **VFS**  | `/dev/ffs-*`、`/sys/kernel/config` — 动态配置、端点访问 |
| **内核**   | `dwc3-qcom`、xHCI、Gadget 框架 — 双角色、电源管理         |
| **硬件**   | DWC3 控制器、Femto/QMP PHY                        |

## 配置

### 运行时电源管理

```bash theme={null}
# Enable autosuspend
echo auto > /sys/bus/platform/devices/a600000.usb/power/control
echo 2000 > /sys/bus/platform/devices/a600000.usb/power/autosuspend_delay_ms

# Check status
cat /sys/bus/platform/devices/a600000.usb/power/runtime_status
```

<Note>
  IQ-9075 的 Type-C 端口不支持运行时电源管理(Runtime PM)。
</Note>

### 启用远程唤醒(主机模式)

```bash theme={null}
# Enable wake-up for xHCI
echo enabled > /sys/bus/platform/devices/xhci-hcd.X.auto/power/wakeup

# Enable wake-up for root hubs
echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
```

### 在组合切换期间防止挂起

```bash theme={null}
echo on > /sys/bus/platform/devices/a600000.usb/power/control
# Perform composition switch
echo auto > /sys/bus/platform/devices/a600000.usb/power/control
```

## USB 摄像头

IQ-9075 通过 `uvcvideo` 内核驱动支持符合 USB Video Class(UVC)标准的 USB 摄像头,设备暴露为 `/dev/videoX`。

### 检测与配置

<Steps>
  <Step title="检测摄像头">
    ```bash theme={null}
    lsusb
    v4l2-ctl --list-devices
    ls -l /dev/v4l/by-path/
    ```
  </Step>

  <Step title="检查支持的格式">
    ```bash theme={null}
    yavta /dev/video2 --enum-formats
    ```
  </Step>

  <Step title="捕获或串流视频">
    <Tabs>
      <Tab title="yavta">
        ```bash theme={null}
        # MJPEG capture
        yavta -f MJPEG -s 1280x720 -t 1/30 -c10 -F/home/ubuntu/test.jpeg /dev/video2

        # YUYV capture
        yavta -f YUYV -s 1280x720 -t 1/5 -c10 -F/tmp/test.yuv /dev/video2
        ```
      </Tab>

      <Tab title="GStreamer">
        ```bash theme={null}
        export XDG_RUNTIME_DIR=/dev/socket/weston
        export WAYLAND_DISPLAY=wayland-1

        # 720p stream (YUYV = YUY2 in GStreamer)
        gst-launch-1.0 -e v4l2src device=/dev/video2 ! \
          video/x-raw,format=YUY2,width=1280,height=720,framerate=30/1 ! \
          videoconvert ! waylandsink fullscreen=true
        ```
      </Tab>
    </Tabs>
  </Step>
</Steps>

有关使用 USB 摄像头进行多流推理的信息,请参阅 [Qualcomm IM SDK](../../../ai-workflows/im-sdk) 和 [gst-usb-single-camera-app](https://docs.qualcomm.com/doc/80-70022-50/topic/usb-camera.html)。

## 验证

### 主机模式

```bash theme={null}
lsusb                              # List connected USB devices
cat /sys/kernel/debug/usb/devices  # Detailed device info
ls /sys/bus/usb/devices/           # USB device tree
```

### 设备模式

```bash theme={null}
cat /sys/kernel/debug/usb/a600000.usb/mode        # Check USB mode
cat /sys/kernel/debug/usb/a600000.usb/link_state  # Check link state
```

## 调试

### 启用 USB 跟踪

```bash theme={null}
mount -t debugfs none /sys/kernel/debug

# Enable traces
echo 1 > /sys/kernel/debug/tracing/events/dwc3/enable
echo 1 > /sys/kernel/debug/tracing/events/xhci-hcd/enable
echo 1 > /sys/kernel/debug/tracing/events/gadget/enable

cat /sys/kernel/debug/tracing/trace
```

### 收集寄存器转储

```bash theme={null}
mkdir -p /tmp/usb_debug
cat /sys/kernel/debug/usb/a600000.usb/regdump    > /tmp/usb_debug/regdump.txt
cat /sys/kernel/debug/usb/a600000.usb/lsp_dump   > /tmp/usb_debug/lsp_dump.txt
cat /sys/kernel/debug/usb/a600000.usb/mode       > /tmp/usb_debug/mode.txt
cat /sys/kernel/debug/usb/a600000.usb/link_state > /tmp/usb_debug/link_state.txt
dmesg > /tmp/usb_debug/dmesg.txt
lsusb -v > /tmp/usb_debug/lsusb.txt
```

## 故障排除

<AccordionGroup>
  <Accordion title="USB 设备未被枚举">
    ```bash theme={null}
    cat /sys/kernel/debug/usb/a600000.usb/mode
    cat /sys/kernel/debug/usb/a600000.usb/link_state
    dmesg | grep -i usb
    ```

    * 检查线缆连接和电源轨
  </Accordion>

  <Accordion title="USB 摄像头无法工作">
    ```bash theme={null}
    lsusb
    ls /dev/video*
    dmesg | grep -i uvc
    lsmod | grep uvcvideo
    ```

    * 确保已加载 `uvcvideo` 驱动
    * 尝试其他 USB 端口
    * 确认摄像头符合 UVC 标准
  </Accordion>

  <Accordion title="低功耗模式无法工作">
    ```bash theme={null}
    cat /sys/bus/platform/devices/a600000.usb/power/runtime_status
    cat /sys/bus/platform/devices/a600000.usb/power/control
    ```

    启用自动挂起:

    ```bash theme={null}
    echo auto > /sys/bus/platform/devices/a600000.usb/power/control
    echo 2000 > /sys/bus/platform/devices/a600000.usb/power/autosuspend_delay_ms
    ```
  </Accordion>
</AccordionGroup>

## 资源

* [DWC3 QCOM 驱动](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2)
* [Femto PHY 驱动](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c?h=v6.6.2)
* [UVC 视频驱动](https://www.kernel.org/doc/html/v4.19/media/v4l-drivers/uvcvideo.html)
* [LibUVC](https://github.com/libuvc/libuvc)
