O que causaria “crossover” entre duas webcams USB2 ao usar movimento?

7

Estou usando o pacote Motion para que o linux funcione como um sistema de segurança com dois Microsoft Webcams LifeCam HD-5000. Em geral, está funcionando muito bem, mas estou tendo um problema estranho. De vez em quando a alimentação de uma câmera exibirá "crosstalk" ou "crossover" da outra câmera, nas barras de varredura, melhor descritas nesta imagem (destacadas em vermelho):

Comovocêpodever,aimageméumamisturaconfusadointerioredoexteriordacâmera.Euacreditoque este artigo do wiki da Motion está descrevendo o mesmo problema, no entanto, não há nenhuma solução lá além :

If you need more than 1 USB camera add extra USB PCI cards to your computer

No entanto, isso está falando sobre o USB 1.1, e estas são câmeras USB 2.0. Além disso, acredito que este sistema tenha duas placas UCB e que as câmeras estejam conectadas a dois barramentos USB diferentes:

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)

Então, minhas perguntas são:

  1. Alguém sabe o que poderia causar crossover como este?
  2. Alguma outra sugestão de solução de problemas?
  3. Acredito que precisarei pedir suporte aos desenvolvedores da Motion, por isso, antes de fazer isso, alguém pode confirmar que eu tenho as câmeras conectadas a duas placas PCI diferentes, como sugeriram?
por Josh 21.12.2010 / 19:08

1 resposta

8

Para o primeiro ponto: USB1.1 era muito mais lento que USB2.0 , na maioria das circunstâncias. Observe que os dispositivos ainda podem se conectar à velocidade mais baixa de 1,1mbbps, em vez dos 480Mbps mais rápidos, mas geralmente, quando isso ocorre, é porque a porta está autonegociando baixa ou porque um dos dois dispositivos é realmente 1,1. Tente desconectar e reconectar se você tiver isso e tiver certeza de que ambos são 2.0 e seu sistema operacional tem suporte para 2.0. (conselho geral, ya?) ~~ De qualquer forma, foi por isso que eles recomendaram um novo cartão. Para que você possa usar a velocidade total de USB1.1 por câmera individual, pois o barramento PCI é muito mais rápido que o USB1.1. Mas com 2,0 isso não é necessário. [cavalo morto açoitado, indo para o próximo tópico]

Agora no seu dispositivo especificamente. Você tem um Core i5 pelas métricas mais ostensivas, a saber: Intel 5/3400 series PCH e 82801 PCI bridge. (nota: confirmou que ele tem um Dell Core i5) Este PCH em particular também é um codinome Ibex Peak . Você não tem mais uma southbridge independente (como é do meu conhecimento), então você está possivelmente aberto a um novo comportamento que não existia antes. O chipset integrado agora lida com o USB muito mais perto do DMA, então espero que o problema seja com o chipset 5/3400 ou que o problema esteja com o driver. Ou são fáceis de testar, mas requerem um desembolso de capital inicial, o que é uma droga.

Aqui está o meu raciocínio porque eu acho que é o chipset e não as câmeras ou drivers: Existem problemas conhecidos com o Intel PCH (Vou citar agora para salvar e voltar clicando:

  • USB ports hang with bulk and control traffic (erratum 7 & Microsoft KB9820911)
  • Bogus USB ports will be detected at desktop PCH equipped with 6 USB ports (3420, H55) on the first EHCI controller. This can happen when AC power is removed after entering ACPI S4. Adding AC power back and resuming from S4 may result in non detected or even non functioning USB device (erratum 12)
  • Bogus USB ports will be detected at mobile PCH equipped with 6 USB ports (HM55) on the first EHCI controller. This can happen when AC power and battery are removed after entering ACPI S4. Adding AC power or battery back and resuming from S4 may result in non detected or even non functioning USB device (erratum 13)

Isso me leva a acreditar que adicionar uma nova placa PCI melhorará o desempenho removendo a carga na lógica do controlador USB, mas como um teste tente mover a câmera para o mesmo hub USB (os slots empilhados correspondentes na placa-mãe devem ser suficiente) e ver se eles apresentam o mesmo problema. Dólares a pesos diz que você terá o mesmo problema EXATO quando fizer isso.

No entanto, acho que é mais provável que haja um problema com os drivers UVC no Linux em geral, com várias câmeras tratadas pelo mesmo controlador (como o seu é) e não algo específico para o hardware. Eu só pensei que eu iria começar com o hardware primeiro para resolver esse bit específico (já que é totalmente possível que possa ser a culpa). Aqui está uma sequência de URLs relacionadas:

Ok, isso é o suficiente divagar por enquanto. Responder comentários?

tl: dr: pegue uma placa PCI USB e coloque uma câmera lá.

    
por 22.12.2010 / 00:13