Hi there,
mir ist die Nomenklatur von USB-Geräten nicht so ganz eindeutig.
Mit Hilfe von
devinfo erhalte ich zu Beginn folgende Infos:
Code:
[...]
ohci0
usbus0
uhub0
ohci1
usbus1
uhub1
ehci0
usbus2
uhub2
[...]
In anderen Worten: Ich habe drei USB-Root-Hubs auf dem Mainboard am Start:
ohci0,
ohci1 und
ehci0
etwas googlen bringt mir noch folgenden Zusatz:
Zitat:
OHCI steht für Open Host Controller Interface und meint USB-1.0
UHCI steht für Universal Host Controller Interface und meint USB-1.1
EHCI steht für Enhanced Host Controller Interface und meint USB-2.0
XHCI steht für Extensible Host Controller Interface und meint USB-3.0
|
Btw.: leider habe ich kein xhci - wuerde mich interessieren, ob das dann tatsächlich xhci heißt - wäre nett wenn mir da jemand seinen USB 3.0 devinfo Output posten könnte.
... Nun versuche die über
devinfo erhaltenen Informationen mit dem pciconf Output in Verbindung zu bringen:
Code:
pciconf -lvcb | /usr/bin/grep -A4 -i -E "ohci0|ohci1|ehci0"
ohci0@pci0:0:2:0: class=0x0c0310 card=0x50041458 chip=0x006710de rev=0xa4 hdr=0x00
vendor = 'NVIDIA Corporation'
device = 'Nvidia 7050 chipset HDMI Audio (MCP2)'
class = serial bus
subclass = USB
--
ohci1@pci0:0:2:1: class=0x0c0310 card=0x50041458 chip=0x006710de rev=0xa4 hdr=0x00
vendor = 'NVIDIA Corporation'
device = 'Nvidia 7050 chipset HDMI Audio (MCP2)'
class = serial bus
subclass = USB
--
ehci0@pci0:0:2:2: class=0x0c0320 card=0x50041458 chip=0x006810de rev=0xa4 hdr=0x00
vendor = 'NVIDIA Corporation'
device = 'nForce2 EHCI USB 2.0 Controller'
class = serial bus
subclass = USB
... ich fest, dass
ohci0 und
ohci1 eigentlich gar keine USB-Root-Hubs sind, sondern nur meine AudioDevices vom Mainboard (Onboard) ... passt ja soweit ... ehci0 ist also mein USB 2.0 Controller - soweit noch kein Verständnisproblem.
Jetzt bin ich hergegangen und habe all meine USB Ports mit Stick, Drive, WebCam und externem USB-Hub mit zusätzlichem Speicher Stick bestückt ... um zu sehen, wie sich das ganze auswirkt:
Code:
devinfo
[...]
ohci0
usbus0
uhub0
ohci1
usbus1
uhub1
ehci0
usbus2
uhub2
umass0
umass2
umass3
uhub3
umass1
[...]
... aha ... meine direkt in die USB-Stecker des Mainboards eingesteckten Geräte werden also unter
uhub2 gelistet ...
uhub3 ist der externe USB-Hub und unter
uhub3 der in das externe USB-Hub eingesteckte Speicherstick
(umass1). Hirarchie nachvollziehbar. Nice.
... jetzt vergleiche ich das ganze mit dem Output von
usbconfig um etwas mehr Informationen über die eingesteckten Geräte zu erhalten:
Code:
usbconfig show_ifdrv
ugen0.1: <OHCI root HUB nVidia> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen0.1.0: uhub0: <nVidia OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen1.1: <OHCI root HUB nVidia> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen1.1.0: uhub1: <nVidia OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen2.1: <EHCI root HUB nVidia> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen2.1.0: uhub2: <nVidia EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1>
ugen2.2: <USB TO IDE vendor 0x05e3> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen2.2.0: umass0: <vendor 0x05e3 USB TO IDE, class 0/0, rev 2.00/0.33, addr 2>
ugen2.4: <My Book Western Digital> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen2.4.0: umass2: <Western Digital My Book, class 0/0, rev 2.00/1.75, addr 4>
ugen2.5: <USB2.0 Reader Foxconn> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen2.5.0: umass3: <Foxconn USB2.0 Reader, class 0/0, rev 2.00/91.44, addr 5>
ugen1.2: <Camera vendor 0x046d> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen2.3: <USB2.0 Hub vendor 0x05e3> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen2.3.0: uhub3: <vendor 0x05e3 USB2.0 Hub, class 9/0, rev 2.00/7.02, addr 3>
ugen2.6: <Storage Media Sony> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen2.6.0: umass1: <Sony Storage Media, class 0/0, rev 2.00/1.00, addr 6>
ugen2.7: <STORE N GO Verbatim> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen2.7.0: umass4: <Verbatim STORE N GO, class 0/0, rev 2.00/1.00, addr 7>
... Oha ... ok ... wir sind noch nicht ganz verloren ... immerhin erkenne ich hier und da den ein oder anderen DeviceName wieder, den ich eben noch via devinfo gesehen habe:
uhub0,
uhub1 und
uhub2 sind also die Root-Hubs, die den jeweiligen USB-Controllern direkt unterliegen ...
uhub3 ist mein externer Hub.
Im Großen und Ganzen erkennt man hier an der Struktur, dass z.B. dem
uhub0 bzw. usbus0 ugen0.X.Y Geräte unterliegen, dem
uhub1 bzw. usbus1 ugen1.X.Y, dem
uhub2 bzw. usbus2 ugen2.X.Y ... - das lässt uns schlussfolgern, dass
ugen[n]. -->
[n] zu dem entsprechenden
usbus[n] unter
ehci0,
ohci0 oder
ohci1 gehört, ... während dessen
uhub3 (externer Hub) eine Untermenge von
uhub2 und somit zu
ubus2 gehört ... Ok, soweit steckt noch nachvollziehbare Logik dahinter ...
nun gehe ich einen Schritt weiter und schaue mir die eingesteckten Geräte genauer an ... eigentlich beinahe durchweg USB 2.0 Geräte ... bis auf meine WebCam ...:
Code:
ugen1.2: <Camera vendor 0x046d> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
... und stelle fest, dass es den DeviceName ugen1.2 zugewiesen bekommen hat und dem usbus1 unterliegt - dann mus es wohl auch zu dem ohci1 PCI-Gerät gehören! ... komisch, die WebCam ist doch am selben USB 2.0 Controller wie die anderen Geräte eingesteckt ... ?! - klare Sache dachte ich, ist ja ein USB 1.1 Gerät - und muss dann wohl auch einem
evtl. virtuellen USB 1.1 Controller zugewiesen werden
(Stichwort: Abwärtskompatibilität) ... aber wieso gerade meinem Onboard
AudioGerät?! ... , da ist was faul - denn ich erinnere an den pciconf Output von oben:
Code:
pciconf -lvcb | /usr/bin/grep -A4 -i -E "ohci0|ohci1|ehci0"
ohci0@pci0:0:2:0: class=0x0c0310 card=0x50041458 chip=0x006710de rev=0xa4 hdr=0x00
vendor = 'NVIDIA Corporation'
device = 'Nvidia 7050 chipset HDMI Audio (MCP2)'
class = serial bus
subclass = USB
--
ohci1@pci0:0:2:1: class=0x0c0310 card=0x50041458 chip=0x006710de rev=0xa4 hdr=0x00
vendor = 'NVIDIA Corporation'
device = 'Nvidia 7050 chipset HDMI Audio (MCP2)'
class = serial bus
subclass = USB
--
ehci0@pci0:0:2:2: class=0x0c0320 card=0x50041458 chip=0x006810de rev=0xa4 hdr=0x00
vendor = 'NVIDIA Corporation'
device = 'nForce2 EHCI USB 2.0 Controller'
class = serial bus
subclass = USB
ohci1 ist ja gar kein richtiger USB Controller, wie z.B. der
ehci0 "nForce2 EHCI USB 2.0 Controller" ... sondern ist: "Nvidia 7050 chipset HDMI Audio (MCP2)"
Wenn er mir unter ohci1 einen Output wie z.B.: "nForce2 EHCI USB 1.0 Controller" gebracht hätte, dann wäre ich nicht so verwirrt wie ich es jetzt bin.
Warum ist das so? ... kann mir das jemand erklären?
Grüße