使用运动时,什么会导致两个 USB2 网络摄像头之间的“交叉”?

Jos*_*osh 7 usb troubleshooting camera

我正在使用Linux的Motion包作为带有两个 Microsoft LifeCam HD-5000 网络摄像头的安全系统。总的来说,它运行良好,但我遇到了一个奇怪的问题。时不时地,来自一个凸轮的馈送将表现出来自另一个凸轮的“串扰”或“交叉”,在扫掠条中,在此图像中得到了最好的描述(以红色突出显示):

跆拳道?

如您所见,图像是内部和外部相机输入的混合混乱。我相信来自 Motion's wiki 的这篇文章描述了同样的问题,但除此之外没有其他解决方案:

如果您需要 1 个以上的 USB 摄像头,请为您的计算机添加额外的 USB PCI 卡

然而,这是在谈论 USB 1.1,这些是 USB 2.0 相机。另外,我相信这个系统有两个 UCB 卡,并且相机连接到两个不同的 USB 总线:

root@chef:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
        |__ Port 2: Dev 3, If 0, Class=stor., Driver=usbfs, 480M
        |__ Port 3: Dev 4, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
        |__ Port 3: Dev 4, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
        |__ Port 3: Dev 4, If 2, Class=audio, Driver=snd-usb-audio, 480M
        |__ Port 3: Dev 4, If 3, Class=audio, Driver=snd-usb-audio, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 3, If 0, Class=HID, Driver=usbhid, 12M
        |__ Port 3: Dev 4, If 0, Class=HID, Driver=usbhid, 1.5M
        |__ Port 4: Dev 5, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
        |__ Port 4: Dev 5, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
        |__ Port 4: Dev 5, If 2, Class=audio, Driver=snd-usb-audio, 480M
        |__ Port 4: Dev 5, If 3, Class=audio, Driver=snd-usb-audio, 480M
root@chef:~# lspci
00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 12)
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 12)
00:16.0 Communication controller: Intel Corporation 5 Series/3400 Series Chipset HECI Controller (rev 06)
00:1a.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)
00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 (rev 06)
00:1c.5 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 6 (rev 06)
00:1d.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a6)
00:1f.0 ISA bridge: Intel Corporation 5 Series Chipset LPC Interface Controller (rev 06)
00:1f.2 IDE interface: Intel Corporation 5 Series/3400 Series Chipset 4 port SATA IDE Controller (rev 06)
00:1f.3 SMBus: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller (rev 06)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57788 Gigabit Ethernet PCIe (rev 01)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 有谁知道什么会导致这样的交叉?
  2. 还有其他故障排除建议吗?
  3. 我猜我需要向 Motion 的开发人员寻求支持,所以在我这样做之前,谁能确认我确实按照他们的建议将相机连接到了两个不同的 PCI 卡上?

jco*_*and 8

第一点:在大多数情况下,USB1.1 比 USB2.0 慢很多。请注意,设备仍然可以以 12Mbps 的较低 1.1 速度连接,而不是更快的 480Mbps,但通常发生这种情况时,要么是因为端口自动协商低,要么是因为两个设备之一实际上是 1.1。如果您遇到这种情况并确定两者都是 2.0 并且您的操作系统支持 2.0,请尝试断开连接并重新连接。(一般性建议,是吗?)~~无论如何,这就是他们推荐新卡的原因。因为PCI 总线比 USB1.1 快得多,所以您可以使用每个单独的相机的完整 USB1.1 速度。但是对于 2.0,这是没有必要的。[死马鞭打,继续下一个话题]

现在专门到您的设备上。从大多数表面指标来看,您拥有 Core i5,即:Intel 5 / 3400 系列 PCH 和 82801 PCI 桥接器。(旁注:确认他有一台戴尔酷睿 i5)这个特殊的 PCH 也代号为Ibex Peak。您不再拥有独立的南桥(据我所知),因此您可能会接受以前不存在的新行为。集成芯片组现在更接近于 DMA 处理 USB,所以我预计问题出在 5/3400 芯片组或驱动程序上。两者都很容易测试,但它们确实需要初始资本支出,所以很糟糕。

这是我认为是芯片组而不是相机或驱动程序的原因:英特尔 PCH存在已知问题(我现在要引用以节省来回点击:

  • USB 端口因大量和控制流量而挂起(勘误 7 和 Microsoft KB982091 1
  • 将在第一个 EHCI 控制器上配备 6 个 USB 端口(3420、H55)的桌面 PCH 上检测到伪造的 USB 端口。在进入 ACPI S4 后断开交流电源时可能会发生这种情况。添加交流电源并从 S4 恢复可能会导致未检测到甚至无法运行的 USB 设备(勘误 12)
  • 将在第一个 EHCI 控制器上配备 6 个 USB 端口 (HM55) 的移动 PCH 上检测到伪造的 USB 端口。在进入 ACPI S4 后移除交流电源和电池时,可能会发生这种情况。添加交流电源或电池并从 S4 恢复可能会导致未检测到甚至无法运行的 USB 设备(勘误 13)

这让我相信添加新的 PCI 卡将通过消除特定 USB 控制器逻辑上的负载来提高性能,但作为测试,尝试将两个摄像头移动到同一个 USB 集线器(匹配主板上的堆叠插槽就足够了)和看看他们是否表现出同样的问题。美元兑比索表示,当您这样做时,您将遇到完全相同的问题。

但是,我认为通常 Linux 上的 UVC 驱动程序更可能是由同一控制器(如您的控制器)处理的多个摄像头的问题,而不是特定于硬件的问题。我只是想我会首先从硬件开始解决那个特定的位(因为它完全有可能有问题)。这是一串相关的 URL:

好了,到此就够啰嗦了。回复评论?


tl;dr:获取一张 USB PCI 卡并在那里放一个摄像头。