> ## 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/P0rmO3AZfXx7cgqQ/Ubuntu/images/peripheral-interfaces/IQ9075-USB-interface.png?fit=max&auto=format&n=P0rmO3AZfXx7cgqQ&q=85&s=62b7ad992a1aa4c0a97aa5485102613e" width="576" height="215" data-path="Ubuntu/images/peripheral-interfaces/IQ9075-USB-interface.png" />

<img src="https://mintcdn.com/qualcomm-prod/P0rmO3AZfXx7cgqQ/Ubuntu/images/peripheral-interfaces/IQ9075-USB-ports.png?fit=max&auto=format&n=P0rmO3AZfXx7cgqQ&q=85&s=bfc7375e7df128781f4e09ff4d082f9e" width="883" height="215" data-path="Ubuntu/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 高速         | VDD\_A\_USBHS\_2\_1P8、VDD\_A\_USBHS\_2\_3P1 | —          |

<img src="https://mintcdn.com/qualcomm-prod/P0rmO3AZfXx7cgqQ/Ubuntu/images/peripheral-interfaces/IQ9075_USB_interface_configuration.png?fit=max&auto=format&n=P0rmO3AZfXx7cgqQ&q=85&s=16ce8bc3e8f722b3b16f302e52e05814" width="938" height="1066" data-path="Ubuntu/images/peripheral-interfaces/IQ9075_USB_interface_configuration.png" />

## 特性

### 硬件特性

| 特性               | 描述                               |
| ---------------- | -------------------------------- |
| **双角色设备（DRD）**   | 主机和设备模式，支持动态角色检测                 |
| **USB 3.1 Gen1** | USB0 和 USB1 上的 SuperSpeed 5 Gbps |
| **USB 2.0 高速**   | 所有控制器上均支持 480 Mbps               |
| **xHCI**         | 符合可扩展主机控制器接口标准                   |
| **传输类型**         | 控制、批量、中断、同步                      |
| **链路电源管理**       | 类似 ASPM 的 LPM 节能机制               |

### 软件特性

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

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

## 架构

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

<img src="https://mintcdn.com/qualcomm-prod/P0rmO3AZfXx7cgqQ/Ubuntu/images/peripheral-interfaces/usb_hw_controller_arch_diagram.png?fit=max&auto=format&n=P0rmO3AZfXx7cgqQ&q=85&s=6280882b439244661daed226928118f8" width="658" height="857" data-path="Ubuntu/images/peripheral-interfaces/usb_hw_controller_arch_diagram.png" />

| 层        | 关键组件                                          |
| -------- | --------------------------------------------- |
| **用户空间** | `diag-router`、`qusb` — 服务管理、组合切换              |
| **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 端口不支持运行时 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 视频类（UVC）标准的 USB 摄像头，设备以 `/dev/videoX` 的形式暴露。

### 检测与配置

<Steps>
  <Step title="检测摄像头">
    ```bash theme={null}
    lsusb
    v4l2-ctl --list-devices
    ls -l /dev/v4l/by-id/
    ```
  </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="ffplay">
        ```bash theme={null}
        ffplay -f v4l2 -framerate 30 -input_format mjpeg -video_size 1920x1080 -i /dev/video2
        ffplay -f v4l2 -framerate 30 -input_format yuyv422 -video_size 1920x1080 -i /dev/video2
        ```
      </Tab>

      <Tab title="GStreamer">
        ```bash theme={null}
        export XDG_RUNTIME_DIR=/run/user/$(id -u ubuntu)
        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
qusb showpid                                       # List compositions
```

## 调试

### 启用 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
    ```

    * 重新绑定 gadget：`qusb unbind && qusb bind`
    * 更改组合：`qusb setpid <PID>`
    * 检查线缆连接和电源轨
  </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>

  <Accordion title="组合切换失败">
    在切换期间防止挂起：

    ```bash theme={null}
    echo on > /sys/bus/platform/devices/a600000.usb/power/control
    qusb setpid <PID>
    echo auto > /sys/bus/platform/devices/a600000.usb/power/control
    ```
  </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)
