Was würde bei Verwendung von Motion zu einem „Crossover“ zwischen zwei USB2-Webcams führen?


7

Ich verwende das Motion- Paket für Linux, um als Sicherheitssystem mit zwei Microsoft LifeCam HD-5000-Webcams zu fungieren. Im Allgemeinen funktioniert es sehr gut, aber ich habe ein seltsames Problem. Hin und wieder zeigt der Vorschub von einer Nocke "Übersprechen" oder "Überkreuzen" von der anderen Nocke in geschwungenen Balken, die in diesem Bild am besten beschrieben sind (rot hervorgehoben):

WTF?

Wie Sie sehen können, ist das Bild ein gemischtes Durcheinander der Innen- und Außenkamera-Feeds. Ich glaube, dieser Artikel aus dem Wiki von Motion beschreibt dasselbe Problem, aber es gibt dort keine Lösung:

Wenn Sie mehr als eine USB-Kamera benötigen, fügen Sie Ihrem Computer zusätzliche USB-PCI-Karten hinzu

Es handelt sich jedoch um USB 1.1, und dies sind USB 2.0-Kameras. Ich glaube auch, dass dieses System zwei UCB-Karten hat und dass die Kameras an zwei verschiedene USB-Busse angeschlossen sind:

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)

Meine Fragen sind also:

  1. Weiß jemand, was eine solche Frequenzweiche verursachen könnte?
  2. Weitere Vorschläge zur Fehlerbehebung?
  3. Ich vermute, ich muss die Entwickler von Motion um Unterstützung bitten. Kann also jemand bestätigen, dass ich die Kameras wie vorgeschlagen an zwei verschiedene PCI-Karten angeschlossen habe?

1
Tritt das Übersprechen beim Anzeigen durch ein anderes Programm auf? (wie Camstream). Zumindest würden Sie dann wissen, dass es nicht die Schuld der Bewegung ist ...
Dotjoe

Antworten:


8

Zum ersten Punkt: USB1.1 war unter den meisten Umständen viel langsamer als USB2.0. Beachten Sie, dass Geräte immer noch eine Verbindung mit der niedrigeren Geschwindigkeit von 1,1 Mbit / s anstelle der schnelleren 480 Mbit / s herstellen können. In der Regel liegt dies jedoch entweder daran, dass der Port automatisch niedrig verhandelt, oder daran, dass eines der beiden Geräte tatsächlich 1,1 ist. Versuchen Sie, die Verbindung zu trennen und erneut herzustellen, wenn dies auftritt und Sie sicher sind, dass beide 2.0 sind und Ihr Betriebssystem 2.0 unterstützt. (allgemeiner Rat, ja?) ~~ Aus diesem Grund haben sie eine neue Karte empfohlen. Damit können Sie die volle USB1.1-Geschwindigkeit pro Kamera nutzen, da der PCI-Bus viel schneller als USB1.1 ist. Aber mit 2.0 ist das nicht nötig. [totes Pferd ausgepeitscht, weiter zum nächsten Thema]

Jetzt speziell auf Ihr Gerät. Sie haben einen Core i5 nach den meisten angeblichen Maßstäben, nämlich: PCH der Intel 5/3400 Serie und 82801 PCI Bridge. (Randnotiz: bestätigt, dass er einen Dell Core i5 hat) Dieser spezielle PCH trägt auch den Codenamen Ibex Peak . Sie haben keine unabhängige Southbridge mehr (so wie ich es verstehe), also sind Sie möglicherweise offen für neues Verhalten, das es vorher nicht gab. Der integrierte Chipsatz handhabt den USB jetzt viel näher am DMA, daher gehe ich davon aus, dass das Problem entweder beim 5/3400-Chipsatz oder beim Treiber liegt. Beide sind einfach zu testen, erfordern aber einen anfänglichen Kapitalaufwand, so dass das scheiße ist.

Hier sind meine Überlegungen, warum ich denke, dass es sich um den Chipsatz und nicht um die Kameras oder Treiber handelt: Es sind Probleme mit dem Intel PCH bekannt (ich werde jetzt zitieren, um hin und her zu sparen, indem ich auf Folgendes klicke:

  • USB-Anschlüsse hängen mit dem Massenverkehr zusammen und steuern den Datenverkehr (Erratum 7 und Microsoft KB982091 1 ).
  • Falsche USB-Anschlüsse werden am Desktop-PCH erkannt, der mit 6 USB-Anschlüssen (3420, H55) am ersten EHCI-Controller ausgestattet ist. Dies kann passieren, wenn nach der Eingabe von ACPI S4 die Wechselstromversorgung unterbrochen wird. Das Zurücksetzen der Wechselstromversorgung und die Wiederaufnahme von S4 kann dazu führen, dass ein USB-Gerät nicht erkannt wird oder sogar nicht funktioniert (Fehler 12).
  • Scheinbare USB-Anschlüsse werden am mobilen PCH erkannt, der mit 6 USB-Anschlüssen (HM55) am ersten EHCI-Controller ausgestattet ist. Dies kann passieren, wenn Wechselstrom und Batterie nach dem Aufrufen von ACPI S4 entfernt werden. Das Hinzufügen von Wechselstrom oder Batterie zurück und das Fortsetzen von S4 kann dazu führen, dass ein USB-Gerät nicht erkannt wird oder sogar nicht funktioniert (Fehler 13).

Dies lässt mich glauben, dass das Hinzufügen einer neuen PCI-Karte die Leistung verbessert, indem die jeweilige USB-Controller-Logik entlastet wird. Versuchen Sie jedoch als Test, beide Kameras auf denselben USB-Hub zu verschieben (passende gestapelte Steckplätze auf dem Motherboard sollten ausreichen) und Überprüfen Sie, ob sie das gleiche Problem aufweisen. Dollar zu Pesos sagt, dass Sie genau das gleiche Problem haben, wenn Sie dies tun.

Ich denke jedoch, dass es bei Linux-Treibern unter Linux im Allgemeinen wahrscheinlicher ist, dass mehrere Kameras von demselben Controller (wie Ihrem) verwaltet werden und nicht spezifisch für die Hardware. Ich dachte nur, ich würde zuerst mit der Hardware beginnen, um dieses bestimmte Bit zu adressieren (da es durchaus möglich ist, dass es ein Fehler ist). Hier ist eine Reihe verwandter URLs:

Ok, das ist genug für jetzt. Kommentare beantworten?


tl; dr: Besorgen Sie sich eine USB-PCI-Karte und setzen Sie dort eine Kamera ein.


Vielen Dank! Das ist eine sehr gründliche Antwort. Der Teil über den integrierten Chipsatz stößt an die Grenzen meines Verständnisses der Hardware, macht aber Sinn. Was USB 1.1 vs 2.0 lsusbbetrifft , bin ich mir fast sicher, dass die Geräte mit voller 2.0-Geschwindigkeit angeschlossen sind, weil "480M" steht, das ist USB2.0-Geschwindigkeit, oder?
Josh

1
Ja, das ist USB2.0-Geschwindigkeit, und obwohl Sie mehrere Ports haben, haben Sie immer noch nur einen Controller, und alles wird sozusagen über den einen Port zurück zum DMA-Spot geleitet. Denken Sie daran, es ist ein Baum, es gibt immer ein Root-Gerät für den USB (bis zur Ebene eines PCI oder eines anderen Bridge-Controllers, dann gelangt es auf den parallelen Bus des Backends des Systems). Wenn Sie also eine PCI-USB-Karte hinzufügen, dann Sie Ich werde logischerweise zwei "USB-Bäume" haben, was der Sinn der Empfehlung der anderen Karte war;)
jcolebrand

Ah, OK, obwohl lspcizwei USB-Karten und lsusbzwei USB-Busse aufgelistet sind, sind sie wirklich alle nur eine?
Josh

So wie ich die Situation verstehe, ja. Es ist jedoch bekannt, dass ich mich vorher geirrt habe. Ich habe zuvor USB-PCI-Karten installiert, die als mehrere im System mit nur einer physischen Karte gelesen wurden. ~ Ich habe auch Grafikkarten mit eigener PCI-Bridge gesehen, um ihnen eine bessere interne Bandbreite für mehrere Monitore zu bieten. Dies verursacht Kopfschmerzen, wenn Sie ein Motherboard mit einer PCI-Bridge und einen Chipsatz mit einer Southbridge-Komponente haben. Sie denken, "Slots, Karte, Arbeit", aber nein, Hardware ist ein besonderes Biest und braucht TLC.
Jcolebrand

Um das letzte Problem mit der PCI-Brücke klarer zu machen: Das durchschnittliche System erwartet, höchstens eine PCI-Brücke nach der Southbridge zu finden. Der Kernel (zumindest Windows) weist also genug zu, um eine PCI-Bridge zu handhaben. Wenn ein zweiter gefunden wird, kann der Kernel nicht damit umgehen und ignoriert ihn daher als fehlerhafte Hardware. Wenn Sie also auf einem System mit mehr als einer PCI-Brücke mindestens einen Windows-Computer haben, müssen Sie einen bestimmten Patch für dieses System haben. Interessantes Zeug das. Dies ist eine Lektion für die Unix / Linux-Leute. Lassen Sie Ihre Board-Treiber rekursiv sein. Es ist in Ordnung. ;)
jcolebrand
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.