远程重启 USB 3.1 摄像头

上次修订日期:2015 年 7 月 16 日

本文描述了如何远程重置或重启您的 USB 3.1 摄像头。本文不适用于 Blackfly S。

某些情况下,用户可能想要远程重置摄像头。禁用再启用摄像头供电,或重新通电,可以使摄像头恢复到已知的工作状况。如果要让 USB 3.1 摄像头实现此效果,用户需要同时断开外部 GPIO 和 USB 3.1 接口总线电源 (VBUS)。摄像头通过 GPIO 针脚进行供电时,无法重启。GPIO 电源必须先

某些 USB 3.1 主机控制器支持通过软件命令切换 VBUS。这样用户可以远程重启 USB 3.1 摄像头。

如果要切换电源位:

    1. 确定一个受支持的 USB 3.1 主机控制器(例如 ACC-01-1201)。
    2. 找到主机控制器的内存映射输入/输出 (MMIO) 基地址。
    3. 识别摄像头连接的内部 USB 3.1 端口地址。
    4. 识别摄像头连接的内部 USB 2.0 端口地址。
    5. 禁用端口电源。
    6. 切换端口电源。

UsbHostControlUtility 可用于识别受支持的主机控制器,并修改 MMIO 基地址。请联系 [email protected] 获取该实用程序。

本示例采用以下配置:

主机控制器: ACC-01-1201(驱动程序版本:3.0.23.0)
摄像头: BFLY-U3-12S2(驱动程序版本:2.7.3.62)

USB 3.1 主机控制器端口电源支持

如果要弄清楚一个主机控制器是否支持端口电源控制,请使用以下命令行运行 UsbHostControlUtility:

UsbHostControlUtility.exe /th


该实用程序会列出系统上启用的每个 USB 3.1 主机控制器,并识别是否支持端口电源控制。下面列出了已知支持/不支持的主机控制器:

主机控制器 端口电源控制 部件编号
Renesas µPD720202 支持   ACC-01-1201
Fresco FL1100   不支持 ACC-01-1202、U3-PCIE2-2P01X
ASMedia ASM1142   不支持  
Intel 9 系列   不支持  

 

识别 MMIO 基地址

如果要查找 USB 3.1 主机控制器的 MMIO 基地址,请使用以下命令行运行 UsbHostControlUtility:

UsbHostControlUtility.exe /th

Renesas 控制器的 MMIO 基地址显示为 0xDF900000。

 

识别 USB 3.1 端口地址

在只有 USB 3.1 摄像头连入主机控制器的情况下,请通过运行以下命令,查询主机控制器的 MMIO 基地址报告一组主机控制器上的端口:

UsbHostControlUtility.exe /portsc 0xDF900000

摄像机连接端口的值不同于其他所有端口。

 

识别 USB 2.0 端口地址

主机控制器卡有两个物理端口,但在 PORTSC 列表中表示出四个端口。这是因为在 PORTSC 列表中,每个物理端口都有 USB 3.1 端口和 USB 2.0 端口两种表示。如果要识别 USB 2.0 端口的地址,请关闭 USB 3.1 端口的电源,强制摄像头进入 USB 2.0 状态。我们可以读取 USB 3.1 端口地址的数据值,将 bit[9](端口电源位)改为 0,然后把新的数据值写回地址,完成该操作。

运行以下命令:

UsbHostControlUtility.exe /w 0xDF900430 0x1043




注意:使用 FlyCapture2 验证摄像头被识别为 USB 2.0 设备。如果此摄像头未出现在 FlyCapture2 中,则可能需要安装摄像头驱动程序。断开并重新连接摄像头电缆以触发驱动程序安装。

 

禁用端口电源

如果要禁用向摄像头供电的总线电源,请将 USB 3.1 和 USB 2.0 的电源位 (bit[9]) 都更改为 0。我们可以读取每个端口地址的数据值,将 bit[9](端口电源位)改为 0,然后把新的数据值写回地址,完成该操作。

运行以下命令:

UsbHostControlUtility.exe /w 0xDF900450 0xa0

 此时,USB 总线不再为摄像头供电,且摄像头的 LED 电源指示灯熄灭。

切换端口电源

使用 MMIO 基地址、USB 3.1 端口地址和 USB 2.0 端口地址,可以按照以下顺序切换端口电源:

关闭电源:

    1. UsbHostControlUtility.exe /w [USB2_Port_Address] [将 bit[9] 设置为 0]
    2. UsbHostControlUtility.exe /w [USB3_Port_Address] [将 bit[9] 设置为 0]

开启电源:

    1. UsbHostControlUtility.exe /w [USB3_Port_Address] [将 bit[9] 设置为 1]
    2. UsbHostControlUtility.exe /w [USB2_Port_Address] [将 bit[9] 设置为 1]

这样就使主机控制器恢复到原始状态并完成摄像头的重启。

故障排除

如果以上步骤都无法重置摄像头,用户必须手动重置摄像头及主机控制器。

    • 手动重置摄像头时,请断开再重连主机侧或摄像头侧的 USB 3.1 电缆。
    • 如果要手动重置主机控制器,请使用 Windows Device Manager。