> ## 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-8275 使用 **Synopsys DesignWare Core SuperSpeed USB 3.x** 控制器,连接到 USB2 PHY(UTMI)和 USB3 PHY(PIPE)接口。

板卡配有三个 USB 连接器:两个 Type-C(带开关的 USB0)和一个 micro-USB(USB1)。

## 控制器

| 控制器      | 地址        | 最高速率               |
| -------- | --------- | ------------------ |
| **USB0** | 0xa600000 | USB 3.x SuperSpeed |
| **USB1** | 0xa400000 | USB 2.0 High Speed |

## 特性

### 硬件特性

| 特性                     | 说明                               |
| ---------------------- | -------------------------------- |
| **双角色设备(DRD)**         | 主机和设备模式,支持动态角色检测                 |
| **USB 3.1 Gen1**       | USB0 和 USB1 上的 SuperSpeed 5 Gbps |
| **USB 2.0 High Speed** | 所有控制器上均为 480 Mbps                |
| **xHCI**               | 符合可扩展主机控制器接口规范                   |
| **传输类型**               | 控制、批量、中断、同步                      |

### 软件特性

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

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

## 配置

### 运行时电源管理

```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
cat /sys/bus/platform/devices/a600000.usb/power/runtime_status
```

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

```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-8275 通过 `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}
        yavta -f MJPEG -s 1280x720 -t 1/30 -c10 -F/home/ubuntu/test.jpeg /dev/video2
        ```
      </Tab>

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


        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>

## 验证

```bash theme={null}
lsusb                              # List connected USB devices
cat /sys/kernel/debug/usb/devices  # Detailed device info
cat /sys/kernel/debug/usb/a600000.usb/mode        # Check USB mode
cat /sys/kernel/debug/usb/a600000.usb/link_state  # Check link state
```

## 调试

```bash theme={null}
mount -t debugfs none /sys/kernel/debug
echo 1 > /sys/kernel/debug/tracing/events/dwc3/enable
echo 1 > /sys/kernel/debug/tracing/events/xhci-hcd/enable
cat /sys/kernel/debug/tracing/trace
```

## 故障排除

<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
    ```
  </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)
* [UVC 视频驱动](https://www.kernel.org/doc/html/v4.19/media/v4l-drivers/uvcvideo.html)
* [LibUVC](https://github.com/libuvc/libuvc)
