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

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

我正在使用运动Linux 软件包可充当带有两个 Microsoft LifeCam HD-5000 网络摄像头的安全系统。总的来说,它运行得很好,但我遇到了一个奇怪的问题。时不时地,来自一个凸轮的馈送会在扫描条中表现出来自另一个凸轮的“串扰”或“交叉”,如下图所示(以红色突出显示):

搞什么?

正如您所看到的,图像是内部和外部摄像机输入的图像的混合体。我相信这篇文章来自 Motion 的 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)

所以我的问题是:

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

答案1

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

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

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

  • USB 端口因批量和控制流量而挂起(勘误 7 和 Microsoft KB9820911
  • 将在第一个 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 卡并在上面放一个摄像头。

相关内容