Gentoo Logo

Gentoo Linux USB Guide

Inhalt:

1.  Einleitung

Was ist USB?

USB steht für Universal Serial Bus und ist im Grunde ein Standard für externe Schnittstellen, die eine Kommunikation zwischen dem Computer und verschiedenen anderen Peripheriegeräten ermöglicht. Einge der heutzutage gebräuchlichsten USB-Geräte sind Tastaturen, Mäuse, USB Sticks, Digitalkameras, externe CD & DVD Brenner, Drucker, etc.

Gegenwärtig sind zwei USB Versionen im Einsatz: USB 1.1 und USB 2.0. Da USB schon immer abwärtskompatibel mit früheren Versionen war, ist USB 2.0 abwärtskompatibel mit USB 1.1. Die neuesten USB-Geräte sind normalerweise USB 2.0 kompatibel. USB 2.0 unterstützt eine maximale Datentransferrate von 480 Mbps oder 60 MBps und das ist der Hauptunterschied zwischen den zwei Standards. Ein anderer Vorteil von USB ist, dass die Geräte alle hot-pluggable sind, was bedeutet, dass Sie Ihr System nicht neu starten müssen damit es Ihnen möglich ist diese Geräte zu benutzen.

Ein technischer Blickwinkel

Bevor wir auf die genauen Konfigurationsoptionen im Kernel eingehen, würde es passen einen etwas genaueren Blick auf USB zu werfen. Wenn Sie in Eile sind oder diesen Abschnitt überspringen möchten, springen Sie bitte zur Kernelkonfiguration.

Ein USB-System hat unter anderem einen Hostcontroller, Hubs, einen root Hub und unterstützt bis zu 127 USB-Geräte inklusive der Hubs. Der Hostcontroller ist nichts anderes als die Hardwareschnittstelle zwischen dem USB-Gerät und dem Betriebsystem. Es sind heutzutage einige HCI (Host Controller Interface) im Einsatz und die sind der OHCI (Open HCI) von Compaq, UHCI (Universal HCI) und EHCI (Enhanced HCI), beide von Intel. OHCI/UHCI sind die beiden Industriestandards für USB 1.1 Schnittstellen während EHCI der für USB 2.0 ist.

Der Hardwarehersteller stellt eine Schnittstelle für Programmierer zur Verfügung die es dem System erlaubt mit der Hardware zu interagieren, genannt wird sie HCD oder Host Controller Device. Durch dieses HCD kann das Gerät mit der Systemsoftware interagieren. Das folgende Diagramm sollte die Sache einfacher nachvollziehbar machen.

Befehlsauflistung 1.1: Grundlegende USB Architektur

(Die Software besteht auch aus anderen Bestandteilen, wie dem Gerätetreiber,
aber der Einfachheit halber sind diese hier nicht aufgeführt)

    + ----  Hardware  ----   + ----  Software  ---- +
    |                        |                      |
    | [USB Ger.]-+-> {EHCI} -+--->  ( EHCD )        |
    |            |           |                      |  Benutzer
    |            `-> {UHCI} -+--->  ( UHCD )        |
    |                        |                      |
    + ----  Hardware  ----   + ----  Software  ---- +

Ein USB-Gerät kann entweder einen individuellen Treiber benutzen oder einen der bereits auf dem System vorhanden ist, das Ganze basiert auf dem Konzept einer Geräteklasse. Das bedeutet, wenn ein Gerät zu einer bestimmten Klasse gehört, dann nutzen andere Geräte die zu der selben Klasse gehören denselben Gerätetreiber. Einige dieser Klassen sind die USB HID (Human Interface Devices) Klasse, die Eingabegeräte wie Tastaturen und Mäuse abdeckt, die USB Massenspeichergeräteklasse, die Geräte wie USB Sticks, Digitalkamers, Musikplayer, etc abdeckt und die USB CDC (Communication Devices Class), die hauptsächlich USB Modems und ähnliche Geräte abdeckt.

Was steckt in Ihrem Rechner?

Es ist ganz einfach herauszufinden ob Ihr Rechner USB 2.0 Unterstützung bietet oder nicht. Wir benutzen den Befehl lspci für diesen Zweck.

Notiz: Das lspci Werkzeug ist Teil des sys-apps/pciutils Pakets. Wenn Sie dieses nicht installiert haben, starten Sie bitte emerge pciutils. Bitte beachten Sie, dass Sie root sein müssen während Sie den lspci Befehl ausführen.

Befehlsauflistung 1.2: Verschiedene lspci Ausgaben

(In diesem USB 1.1 konformen System sehen Sie nur UHCI)

# lspci -v | grep USB
0000:00:04.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01) (prog-if 00 [UHCI])

(In diesem USB 2.0 konformen System sehen Sie EHCI und UHCI)

00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 01) (prog-if 00 [UHCI])
00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 01) (prog-if 00 [UHCI])
00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 01) (prog-if 00 [UHCI])
00:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 01) (prog-if 20 [EHCI])

Also können wir mit dem lspci Befehl herausfinden ob das System USB 2.0 unterstützt. Dies ist nützlich da wir die dazugehörigen Optionen im Kernel aktivieren werden.

2.  Kernelkonfiguration

Den Kernel beziehen

Emergen Sie zuerst die Kernelquellen Ihrer Wahl. Hier werden wir die gentoo-sources verwenden. Für weitere Informationen zu den verschiendenen im Portage verfügbaren Kernelquellen schauen Sie bitte im Gentoo Linux Kernel Guide nach.

Befehlsauflistung 2.1: Beziehen der Kernelquellen

# emerge gentoo-sources

Nun machen wir mit der Aufgabe der Kernelkonfiguration weiter.

Befehlsauflistung 2.2: Zur Quelle wechseln

# cd /usr/src/linux
# make menuconfig

Notiz: Das obige Beispiel setzt voraus, dass der /usr/src/linux Symlink auf die Kernelquellen zeigt, die Sie benutzen wollen. Bitte stellen Sie entsprechendes sicher bevor Sie weitermachen.

Konfigurationsoptionen für den Kernel

Jetzt werden wir einen Blick auf die Optionen werfen, die wir im Kernel aktivieren müssen, um sicherzustellen, dass wir richtige USB-Unterstützung für unsere Geräte erhalten.

Notiz: Die Beispiele in diesem Dokument werden Konfigurationsoptionen für einfache USB-Unterstützung sowie die meistbenötigten, wie z.B. USB-Massenspeichergeräte (hauptsächlich Kameras und USB-Sticks) zeigen. Wenn Sie ein bestimmtes USB-Gerät haben, das konfiguriert werden muss, schauen Sie bitte in das Handbuch des Geräts oder suchen Online um herauszufinden ob die Unterstützung für dieses Gerät in den Kernel integriert wurde oder ob spezifische Treiber existieren die Sie benutzen können. Bitte beachten Sie, dass der Einfachheit halber bei allen Beispielen die Optionen in den Kernel kompiliert wurden. Wenn Sie einen modularen Kernel haben möchten stellen Sie sicher, dass Sie sich die verschiedenen Module notieren und Ihre Konfigurationsdateien entsprechend anpassen.

Befehlsauflistung 2.3: make menuconfig Optionen

Device Drivers  --->
  SCSI device support  --->

(Obwohl SCSI automatisch aktiviert wird wenn Sie USB Mass Storage
ausählen, müssen wir die Festplattenunterstützung aktivieren.)
---   SCSI support type (disk, tape, CD-ROM)
<*>   SCSI disk support

(Gehen Sie dann eine Ebene zurück und gehen Sie in USB support)
USB support  --->

(Das ist der root-Hub und ist für die USB-Unterstützung notwendig.
Falls Sie es als ein Modul kompilieren möchten, es wird usbcore genannt.)
<*> Support for Host-side USB

(Wählen Sie mindestens eine der HCDs. Wenn Sie sich nicht sicher sind
ist die Auswahl aller auch in Ordnung.)
--- USB Host Controller Drivers
<*> EHCI HCD (USB 2.0) support
< > OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support

(Bewegen wir uns ein bischen weiter nach unten, gelangen wir zu CDC
und Massenspeicher.)
< > USB Modem (CDC ACM) support
<*> USB Printer support
<*> USB Mass Storage support

(Wenn Sie eine USB-Netzwerkkarte wie die RTL8150 haben, benötigen Sie
folgendes)
USB Network Adapters  --->
    <*> USB RTL8150 based ethernet device support (EXPERIMENTAL)

(Wenn Sie einen Seriell auf USB Konverter wie den Prolific 2303 haben,
benötigen Sie folgendes)
USB Serial Converter support  --->
    <*> USB Serial Converter support
    <*> USB Prolific 2303 Single Port Serial Driver (NEW)

Falls Sie eine USB-Tastatur, Maus, Joystick oder irgendein anderes Eingabegerät besitzen, müssen Sie die HID-Unterstützung aktivieren. Gehen Sie eine Ebene zurück zu "Device drivers" und schalten sie die HID-Unterstützung wie folgt ein:

Befehlsauflistung 2.4: Aktivieren der HID-Unterstützung

Device Drivers --->
  [*] HID Devices  --->
    <*>   USB Human Interface Device (full HID) support

Jetzt da Ihre Optionen gesetzt sind können Sie den Kernel (neu) kompilieren und USB sollte funktionieren sobald Sie mit dem neuen Kernel booten. Sie können jetzt mit USB in Betrieb sehen weitermachen und feststellen ob alles funktioniert wie es soll.

3.  USB in Betrieb sehen

dmesg ist Ihr Freund!

Endlich ist die Zeit gekommen, um mit den USB-Geräten zu spielen :) Lassen Sie uns also anfangen. In diesem Kapitel werden wir sehen, wie das System auf verschiedene USB-Geräte reagiert. Wir starten damit, einen USB 512 MB Memory Stick/Pen Drive einzustecken. Sie können andere ähnliche Massenspeichergeräte verwenden. Wir benutzen hauptsächlich dmesg, um zu sehen, was passiert und wie das System auf das Gerät reagiert.

Notiz: dmesg gibt generell viel aus, bevor wir zu den Informationen kommen, die wir benötigen, da es den Kernel-Ringpuffer ließt, der auch alle Bootmeldungen enthält. Die Ausgabe in folgenden Beispielen beinhaltet nur die relevanten Teile und zusätzliche Leerzeichen dazwischen, um bessere Lesbarkeit zu ermöglichen. Wenn nötig, benutzen Sie bitte dmesg | more oder dmesg | less um die Ausgabe auf Ihrem System besser darzustellen.

Befehlsauflistung 3.1: dmesg Ausgabe bei einem Memorystick

(Stecken Sie den Memorystick in einen verfügbaren USB Steckplatz und dann..)
# dmesg | less

(Das Gerät wird als USB 1.1 erkannt und eine Adresse wird zugeordnet.
Auch wird die verwendete HCD genannt.)
usb 1-1: new full speed USB device using uhci_hcd and address 2

(SCSI-Emulation läuft automatisch an)
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2

(Jetzt werden die Geräteinformationen inklusive der Modellnummer bezogen)
usb-storage: waiting for device to settle before scanning
  Vendor: JetFlash  Model: TS512MJF2A        Rev: 1.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 1003600 512-byte hdwr sectors (514 MB)

(Die Schreibschutzerkennung ist EXPERIMENTELLER Code in neueren Kerneln)
sdb: Write Protect is off
sdb: Mode Sense: 0b 00 00 08
sdb: assuming drive cache: write through
SCSI device sdb: 1003600 512-byte hdwr sectors (514 MB)
/dev/scsi/host0/bus0/target0/lun0: p1
Attached scsi removable disk sdb at scsi0, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0,  type 0
usb-storage: device scan complete
(Zu diesem Zeitpunkt ist das Gerät grundsätzlich durch Mounten von
/dev/sdb1 zugänglich)

(Wenn das Gerät entfernt wird, bestätigt das System entsprechendes)
usb 1-1: USB disconnect, address 2

Sobald das Gerät angeschlossen und gemountet ist, können Sie es wie eine normale Festplatte ansprechen. Gewohnte Aktionen wie cp, mv, rm, usw. funktionieren gut. Sie können auch ein Dateisystem auf dem USB-Stick anlegen/ihn formatieren.

Befehlsauflistung 3.2: Auf den Memorystick zugreifen

# mount /dev/sdb1 /mnt/usb
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda8             9.4G  7.5G  1.9G  80% /
/dev/sda9              11G  8.1G  2.4G  78% /usr
none                  189M     0  189M   0% /dev/shm
/dev/sdb1             490M   34M  457M   7% /mnt/usb

Notiz: Auf Digitalkameras kann auf die gleiche Weise zugegriffen werden wie auf Memorysticks. Ich habe eine Nikon Coolpix 5200 und auf diese Weise greife ich darauf zu. Kameras haben heutzutage normalerweise zwei Modi, um Bilder zu übertragen; USB Massenspeicher und PTP (Picture Transfer Protocol). Die Kamera ist auf den USB-Massenspeichermodus eingestellt und daher ist die Vorgehensweise genau die selbe wie beim Zugriff auf einen Memorystick, daher bin ich hier nicht ins Detail gegangen. Bitte beachten Sie, dass es womöglich NICHT in allen Fällen und mit allen Digitalkameras, die USB-Unterstützung haben, funktionieren muss.

Wie würde eine USB Maus angezeigt, falls Sie eine haben? Sie wird als HID-Gerät angezeit.

Befehlsauflistung 3.3: Optische USB-Maus

# dmesg | grep USB
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
usb 1-1: new low speed USB device using address 2
input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1

Ein anderer schicker Befehl, den Sie benutzen können, um den Status Ihrer USB-Anschlüsse anzeigen zu lassen, ist lsusb. Er ist Teil von sys-apps/usbutils und wird im nächsten Kapitel behandelt.

4.  USB auf Benutzerebene

Schicke Werkzeuge

Bis jetzt haben wir gesehen, wie viel Unterstüzung auf Kernel-/Systemseite für USB unter Linux vorhanden ist. Jetzt werden wir einen Blick darauf werfen, welche Unterstützung von Gentoo für USB auf Benutzerebene zur Verfügung gestellt wird.

Eines der nützlichsten Werkzeuge ist lsusb. Es listet alle USB-Geräte auf, die mit dem System verbunden sind. Die Installation ist ein Kinderspiel.

Befehlsauflistung 4.1: usbutils installieren

# emerge usbutils

Sobald es installiert ist, können Sie lsusb ausführen, um einfache Informationen über die USB-Geräte zu erhalten, die mit der Maschine verbunden sind.

Notiz: Sie müssen in den meisten Fällen root sein, um lsusb ausführen zu können.

Warnung: lsusb liest die Informationen über die USB-Geräte aus /proc/bus/usb. Wenn Sie dies nicht in Ihrem Kernel aktiviert haben, wird lsusb wahrscheinlich gar nicht funktionieren. Bitte stellen Sie sicher, dass Sie die Unterstützung für das /proc Dateisystem im Kernel aktiviert haben und dass usbfs nach /proc/bus/usb gemountet ist (was automatisch passieren sollte).

Befehlsauflistung 4.2: lsusb bei der Arbeit

# lsusb
(Das ist der 512 MB Memorystick von Transcend)
Bus 001 Device 003: ID 0c76:0005 JMTek, LLC. USBdisk
(Das ist die optische Maus)
Bus 001 Device 002: ID 046d:c00e Logitech, Inc. Optical Mouse
(Das ist der root Hub)
Bus 001 Device 001: ID 0000:0000

Wenn Sie jemand sind, der es liebt, viele Informationen zu sehen, haben Sie die Option lsusb -v zu starten. Versuchen Sie es und schauen Sie sich die Menge von Informationen an, die es ausgibt. Eine andere gute Option ist dass lsusb die aktuelle physikalische Hierarchie als Baum ausgibt und es so einfacher macht die genaue Gerätekarte zu verstehen. Der Befehl lautet lsusb -t. Zum Beispiel:

Befehlsauflistung 4.3: lsusb zeigt die USB-Hierarchie

# lsusb -t
Bus#  1
`-Dev#   1 Vendor 0x0000 Product 0x0000
  |-Dev#   2 Vendor 0x046d Product 0xc00e
  `-Dev#   3 Vendor 0x0c76 Product 0x0005

Sie können ganz einfach die Ausgaben von lsusb und lsusb -t in Beziehung zueinander setzen, was bei der Fehlersuche und beim Verstehen der Funktionsweise von USB hilft.

5.  Und Dank an...

Referenzen

Eine große Anzahl Onlinedokumente half mir während der Entwicklung dieses Dokuments und darunter sind einige hochtechnische aber wirklich interessante. Ich dachte, dass alle eine Würdigung verdienen, also los!

Andere interessante Links



Drucken

Seite aktualisiert 26. Dezember 2011

Die Originalversion dieser Übersetzung wird nicht länger gepflegt

Zusammenfassung: Dieses Dokument hilft einem Benutzer USB auf einem Gentoo-System einzurichten und auch verschiedene USB-Geräte zu konfigurieren.

Shyam Mani
Author

Sebastian Westermayer
Übersetzer

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.