> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.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-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/IQ9075-USB-interface.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=a57fb137c200069807bb923f0426f97f" width="576" height="215" data-path="Linux/images/peripheral-interfaces/IQ9075-USB-interface.png" />

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/IQ9075-USB-ports.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=8a057d6273926bcfdce6958a6f3a6453" 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-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/IQ9075_USB_interface_configuration.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=2365e2f5fd8c9e217cc6cf3a716a597f" 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**               | 符合可扩展主机控制器接口标准                   |
| **传输类型**               | 控制、批量、中断、等时                      |
| **链路电源管理**             | 类 ASPM 的 LPM，用于节能                |

### 软件特性

**外设模式：** 大容量存储、诊断（FunctionFS）、RNDIS、NCM

**主机模式：** xHCI、HID/MS/Hub 类驱动、UVC（USB 摄像头）、链路电源管理

## 架构

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

<img src="https://mintcdn.com/qualcomm-prod/jy6NQT2Y7J_sAxdX/Linux/images/peripheral-interfaces/usb_hw_controller_arch_diagram.png?fit=max&auto=format&n=jy6NQT2Y7J_sAxdX&q=85&s=7979c48c8a7d2aa39715ffbb287dd713" 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
```

### 组合（composition）切换期间防止挂起

```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 视频类（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)
