enterprise:~ # cat /proc/pci PCI devices found: ... Bus 0, device 7, function 2: USB Controller: VIA Technologies, Inc. USB (rev 22). IRQ 10. Master Capable. Latency=64. I/O at 0xc800 [0xc81f]. Bus 0, device 7, function 3: USB Controller: VIA Technologies, Inc. USB (#2) (rev 22). IRQ 10. Master Capable. Latency=64. I/O at 0xcc00 [0xcc1f]. ...
Im obigen Beispiel finden Sie den Eintrag ``I/O at 0xc800''. Ein Eintrag solchen Typs deutet auf einen UHCI-Controller hin. Würde dort ein Eintrag wie ``32 bit memory at 0xc800'' stehen, dann handelt es sich um einen OHCI-Controller. Im allgemeinen finden Sie UHCI auf den Hauptplatinen von Intel und VIA. OHCI findet sich dagegen auf Platinen von Compaq und solchen mit ALI- und SIS-Chipsätzen. Sollten Sie dennoch nicht wissen, welcher USB-Typ vorliegt, dann probieren Sie einfach alle Treiber aus und ermitteln den Richtigen aus den Fehlermeldungen in den Logfiles.
Unter Linux werden durch die Treiber alle USB-Anschlüsse zu einem virtuellen Hub zusammgefaßt. Dies führt zu einer vereinfachten und damit leichter zu verwaltenden Bustopologie. Die angeschlossenen USB-Geräte bekommen eine Gerätenummer zwischen 1 und 127. Dabei wird auch der Deskriptor des Gerätes ausgelesen. Er gibt Auskunft über das Gerät und seine USB-Unterstützung. Auch die Zuweisung zu einer Geräteklasse und -unterklasse erfolgt dort.
Auf jeden Fall muß immer der Treiber usbcore.o geladen werden. Er stellt den controllerunabhängigen Teil des USB-Subsystemkerns dar. Bei Verwendung von UHCI haben Sie die Wahl zwischen uhci.o und usb-uhci.o. Bei OHCI ist der Treiber usb-ohci.o für die Funktion verantwortlich. Sollten Sie sogar USB 2.0 einsetzen, dann brauchen Sie noch ehci-hcd.o. Auch hier müssen Sie trotzdem einen der UHCI- und OHCI-Treiber parallel laufen lassen, da die Steuerung der alten USB-Geräte hierüber erfolgt.