Changeset View
Changeset View
Standalone View
Standalone View
head/de_DE.ISO8859-1/books/handbook/usb-device-mode/chapter.xml
Property | Old Value | New Value |
---|---|---|
svn:keywords | null | FreeBSD=%H \ No newline at end of property |
svn:mime-type | null | text/sgml \ No newline at end of property |
- This file uses an unknown character encoding.
<?xml version="1.0" encoding="iso-8859-1"?> | |||||
<!-- | |||||
The FreeBSD Documentation Project | |||||
$FreeBSD$ | |||||
basiert auf: r51744 | |||||
--> | |||||
<chapter xmlns="http://docbook.org/ns/docbook" | |||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" | |||||
xml:id="usb-device-mode"> | |||||
<title>USB Gerätemodus</title> | |||||
<sect1 xml:id="usb-device-mode-synopsis"> | |||||
<title>Übersicht</title> | |||||
<info> | |||||
<authorgroup> | |||||
<author> | |||||
<personname> | |||||
<firstname>Edward Tomasz</firstname> | |||||
<surname>Napierala</surname> | |||||
</personname> | |||||
<affiliation> | |||||
<address> | |||||
<email>trasz@FreeBSD.org</email> | |||||
</address> | |||||
</affiliation> | |||||
<contrib>Beigetragen von </contrib> | |||||
</author> | |||||
</authorgroup> | |||||
</info> | |||||
<para>Dieses Kapitel behandelt die Verwendung des USB Gerätemodus | |||||
und USB On-The-Go (<acronym>USB OTG</acronym>) unter &os;. Dazu | |||||
gehören virtuelle serielle Konsolen, virtuelle Netzwerkkarten | |||||
und virtuelle USB-Laufwerke.</para> | |||||
<para>Wenn die eingesetzte Hardware den USB-Gerätemodus oder | |||||
<acronym>USB OTG</acronym> unterstützt, kann &os;s | |||||
<acronym>USB</acronym>-Stack im Gerätemodus ausgeführt werden. | |||||
Solche Hardware wird häufig in eingebetteten Systeme verbaut. | |||||
Der Gerätemodus ermöglicht es dem Rechner verschiedene Arten von | |||||
<acronym>USB</acronym>-Geräteklassen darzustellen, | |||||
einschließlich serieller Schnittstellen, Netzwerkkarten und | |||||
Massenspeicher oder Kombinationen davon. Ein | |||||
<acronym>USB</acronym>-Host, beispielsweise ein Notebook oder | |||||
ein Desktop-Rechner, kann wie auf ein physisches | |||||
<acronym>USB</acronym>-Gerät darauf zugreifen.</para> | |||||
<para>Es gibt zwei grundlegende Möglichkeiten, wie die Hardware | |||||
den Gerätemodus bereitstellen kann: mit einem separaten | |||||
<quote>Client Modus</quote>, der nur den Gerätemodus | |||||
unterstützt, und mit einem USB-OTG-Port, der sowohl den | |||||
Geräte- als auch den Hostmodus bereitstellen kann. Bei | |||||
USB-OTG-Ports wechselt der USB-Stack automatisch zwischen | |||||
host- und geräteseitig, je nachdem, was an dem Port | |||||
angeschlossen ist. Wenn Sie ein <acronym>USB</acronym>-Gerät | |||||
wie einen Speicherstick an den Port anschließen, wechselt &os; | |||||
in den Hostmodus. Wenn Sie einen <acronym>USB</acronym>-Host | |||||
wie einen Computer anschließen, wechselt &os; in den | |||||
Gerätemodus. <quote>Client Ports</quote> arbeiten immer | |||||
im Gerätemodus.</para> | |||||
<para>Was &os; dem <acronym>USB</acronym>-Host präsentiert, hängt | |||||
von der sysctl-Variable <varname>hw.usb.template</varname> ab. | |||||
Einige Vorlagen bieten ein einzelnes Gerät, beispielsweise ein | |||||
serielles Terminal, andere bieten mehrere, die alle gleichzeitig | |||||
verwendet werden können. Ein Beispiel ist die Vorlage 10, die | |||||
ein Massenspeichergerät, eine serielle Konsole und eine | |||||
Netzwerkkarte bereitstellt. &man.usb.template.4; enthält eine | |||||
Liste der verfügbaren Werte.</para> | |||||
<para>Beachten Sie, dass in einigen Fällen, abhängig von der | |||||
Hardware und dem Betriebssystem des Hosts, die Änderung an der | |||||
Konfiguration nur dann bemerkt werden kann, wenn der Host | |||||
entweder physisch getrennt und wieder verbunden oder gezwungen | |||||
wird, den <acronym>USB</acronym>-Bus auf eine | |||||
systemspezifische Weise neu zu scannen. Wenn &os; auf dem Host | |||||
läuft, kann &man.usbconfig.8; <command>reset</command> | |||||
verwendet werden. Dies muss auch nach dem Laden von | |||||
<filename>usb_template.ko</filename> geschehen, wenn der | |||||
<acronym>USB</acronym>-Host bereits an der | |||||
<acronym>USB OTG</acronym>-Buchse angeschlossen war.</para> | |||||
<para>Nachdem Sie dieses Kapitel gelesen haben, werden | |||||
Sie wissen:</para> | |||||
<itemizedlist> | |||||
<listitem> | |||||
<para>wie man den USB Gerätemodus unter | |||||
&os; einrichtet.</para> | |||||
</listitem> | |||||
<listitem> | |||||
<para>wie man die virtuelle serielle Schnittstelle unter | |||||
&os; konfiguriert.</para> | |||||
</listitem> | |||||
<listitem> | |||||
<para>wie man sich mit der virtuellen seriellen Schnittstelle | |||||
von verschiedenen Betriebssystemen aus verbindet.</para> | |||||
</listitem> | |||||
</itemizedlist> | |||||
</sect1> | |||||
<sect1 xml:id="usb-device-mode-terminals"> | |||||
<title>Virtuelle serielle | |||||
<acronym>USB</acronym>-Ports</title> | |||||
<sect2> | |||||
<title>Konfiguration des <acronym>USB</acronym>-Gerätemodus für | |||||
serielle Ports</title> | |||||
<para>Die virtuellen seriellen Ports werden durch die | |||||
Vorlagen 3, 8 und 10 unterstützt. Beachten Sie, dass | |||||
Vorlage 3 mit Microsoft Windows 10 ohne spezielle Treiber | |||||
und INF-Dateien funktioinert. Andere Host-Betriebssysteme | |||||
arbeiten mit allen drei Vorlagen. Die beiden Kernelmodule | |||||
&man.usb.template.4; und &man.umodem.4; müssen geladen | |||||
werden.</para> | |||||
<para>Um die seriellen Ports im | |||||
<acronym>USB</acronym>-Gerätemodus zu aktivieren, fügen Sie | |||||
folgenden Zeilen in | |||||
<filename>/etc/ttys</filename> hinzu:</para> | |||||
<programlisting>ttyU0 "/usr/libexec/getty 3wire" vt100 onifconsole secure | |||||
ttyU1 "/usr/libexec/getty 3wire" vt100 onifconsole secure</programlisting> | |||||
<para>Danach fügen Sie folgende Zeilen in | |||||
<filename>/etc/devd.conf</filename> hinzu:</para> | |||||
<programlisting>notify 100 { | |||||
match "system" "DEVFS"; | |||||
match "subsystem" "CDEV"; | |||||
match "type" "CREATE"; | |||||
match "cdev" "ttyU[0-9]+"; | |||||
action "/sbin/init q"; | |||||
};</programlisting> | |||||
<para>Laden Sie die Konfiguration neu, falls &man.devd.8; | |||||
bereits läuft:</para> | |||||
<screen>&prompt.root; <userinput>service devd restart</userinput></screen> | |||||
<para>Stellen Sie sicher, dass die notwendigen Module geladen | |||||
sind und die richtige Vorlage beim Booten gesetzt ist. Fügen | |||||
Sie dazu folgende Zeilen in | |||||
<filename>/boot/loader.conf</filename> ein:</para> | |||||
<programlisting>umodem_load="YES" | |||||
hw.usb.template=3</programlisting> | |||||
<para>Um das Modul zu laden und die Vorlage ohne Neustart zu | |||||
aktivieren, verwenden Sie:</para> | |||||
<screen>&prompt.root; <userinput>kldload umodem</userinput> | |||||
&prompt.root; <userinput>sysctl hw.usb.template=3</userinput></screen> | |||||
</sect2> | |||||
<sect2> | |||||
<title>&os; mit der seriellen Schnittstelle im | |||||
<acronym>USB</acronym>-Gerätemodus verbinden</title> | |||||
<para>Um eine Verbindung zu einer Karte herzustellen, die so | |||||
konfiguriert ist, dass sie serielle Ports im | |||||
<acronym>USB</acronym>-Gerätemodus bereitstellt, schließen | |||||
Sie den <acronym>USB</acronym>-Host, beispielsweise einen | |||||
Laptop, an den <acronym>USB OTG</acronym>- oder | |||||
<acronym>USB</acronym>-Client-Port der Karte an. Verwenden | |||||
Sie <command>pstat -t</command> auf dem Host, um die | |||||
Terminalzeilen aufzulisten. Am Ende der Liste sollten Sie | |||||
einen seriellen <acronym>USB</acronym>-Anschluss sehen, | |||||
zum Beispiel <quote>ttyU0</quote>. Um die Verbindung zu | |||||
öffnen, benutzen Sie:</para> | |||||
<screen>&prompt.root; <userinput>cu -l /dev/ttyU0</userinput></screen> | |||||
<para>Nach mehrmaligem Drücken der <keycap>Enter</keycap>-Taste | |||||
erscheint ein Anmeldeprompt.</para> | |||||
</sect2> | |||||
<sect2> | |||||
<title>macOS mit der seriellen Schnittstelle im | |||||
<acronym>USB</acronym>-Gerätemodus verbinden</title> | |||||
<para>Um eine Verbindung zu einer Karte herzustellen, die so | |||||
konfiguriert ist, dass sie serielle Ports im | |||||
<acronym>USB</acronym>-Gerätemodus bereitstellt, schließen | |||||
Sie den <acronym>USB</acronym>-Host, beispielsweise einen | |||||
Laptop, an den <acronym>USB OTG</acronym>- oder | |||||
<acronym>USB</acronym>-Client-Port der Karte an. Um die | |||||
Verbindung zu öffnen, benutzen Sie:</para> | |||||
<screen>&prompt.root; <userinput>cu -l /dev/cu.usbmodemFreeBSD1</userinput></screen> | |||||
</sect2> | |||||
<sect2> | |||||
<title>Linux mit der seriellen Schnittstelle im | |||||
<acronym>USB</acronym>-Gerätemodus verbinden</title> | |||||
<para>Um eine Verbindung zu einer Karte herzustellen, die so | |||||
konfiguriert ist, dass sie serielle Ports im | |||||
<acronym>USB</acronym>-Gerätemodus bereitstellt, schließen | |||||
Sie den <acronym>USB</acronym>-Host, beispielsweise einen | |||||
Laptop, an den <acronym>USB OTG</acronym>- oder | |||||
<acronym>USB</acronym>-Client-Port der Karte an. Um die | |||||
Verbindung zu öffnen, benutzen Sie:</para> | |||||
<screen>&prompt.root; <userinput>minicom -D /dev/ttyACM0</userinput></screen> | |||||
</sect2> | |||||
<sect2> | |||||
<title>Windows 10 mit der seriellen Schnittstelle im | |||||
<acronym>USB</acronym>-Gerätemodus verbinden</title> | |||||
<para>Um eine Verbindung zu einer Karte herzustellen, die so | |||||
konfiguriert ist, dass sie serielle Ports im | |||||
<acronym>USB</acronym>-Gerätemodus bereitstellt, schließen | |||||
Sie den <acronym>USB</acronym>-Host, beispielsweise einen | |||||
Laptop, an den <acronym>USB OTG</acronym>- oder | |||||
<acronym>USB</acronym>-Client-Port der Karte an. Um die | |||||
Verbindung zu öffnen, benötigen Sie ein Terminalprogramm mit | |||||
Unterstützung für serielle Schnittstellen, zum Beispiel | |||||
<application>PuTTY</application>. Um den von &windows; | |||||
verwendeten COM-Port zu ermitteln, starten Sie den | |||||
Geräte-Manager und erweitern Sie | |||||
<quote>Ports (COM & LPT)</quote>. Dort sehen Sie einen | |||||
Namen wie <quote>USB Serial Sevice (COM4)</quote>. Starten | |||||
Sie das Terminalprogramm Ihrer Wahl, zum Beispiel | |||||
<application>PuTTY</application>. Im Dialog von | |||||
<application>PuTTY</application> setzen Sie den | |||||
<quote>Connection type</quote> auf <quote>Serial</quote> und | |||||
notieren im Feld <quote>Serial line</quote> den ermittelten | |||||
COM-Namen. Danach klicken Sie auf <quote>Open</quote>.</para> | |||||
</sect2> | |||||
</sect1> | |||||
<sect1 xml:id="usb-device-mode-network"> | |||||
<title>Netzwerkkarten im | |||||
<acronym>USB</acronym>-Gerätemodus</title> | |||||
<para>Virtuelle Netzwerkkarten werden durch die Vorlagen 1, 8 und | |||||
10 unterstützt. Beachten Sie, dass keine dieser Vorlagen mit | |||||
&windows; funktioniert. Andere Host-Betriebssysteme arbeiten | |||||
mit allen drei Vorlagen. Die Kernelmodule | |||||
&man.usb.template.4; und &man.if.cdce.4; müssen | |||||
geladen sein.</para> | |||||
<para>Stellen Sie sicher, dass die notwendigen Module geladen | |||||
sind und die richtige Vorlage beim Booten gesetzt ist. Fügen | |||||
Sie dazu folgende Zeilen in | |||||
<filename>/boot/loader.conf</filename> ein:</para> | |||||
<programlisting>if_cdce_load="YES" | |||||
hw.usb.template=1</programlisting> | |||||
<para>Um das Modul zu laden und die Vorlage ohne Neustart zu | |||||
aktivieren, verwenden Sie:</para> | |||||
<screen>&prompt.root; <userinput>kldload if_cdce</userinput> | |||||
&prompt.root; <userinput>sysctl hw.usb.template=1</userinput></screen> | |||||
</sect1> | |||||
<sect1 xml:id="usb-device-mode-storage"> | |||||
<title>Virtuelle <acronym>USB</acronym>-Speichergeräte</title> | |||||
<note> | |||||
<para>&man.cfumass.4; ist ein | |||||
<acronym>USB</acronym>-Gerätetreiber, der seit | |||||
&os; 12.0 verfügbar ist.</para> | |||||
</note> | |||||
<para>Virtuelle Speichergeräte werden durch die Vorlagen 0 und 10 | |||||
unterstützt. Die Kernelmodule &man.usb.template.4; und | |||||
&man.cfumass.4; müssen geladen sein. &man.cfumass.4; ist die | |||||
Schnittstelle zum CTL-Subsystem, das auch für | |||||
<acronym>iSCSI</acronym>- oder Fibre-Channel-Targets benutzt | |||||
wird. Auf dem Host können Initiatioren von | |||||
<acronym>USB</acronym>-Massenspeichern nur auf eine einzige | |||||
<acronym>LUN</acronym>, <acronym>LUN</acronym> 0 | |||||
zugreifen.</para> | |||||
<sect2> | |||||
<title>Konfiguration von <acronym>USB</acronym>-Massenspeicher | |||||
Targets mit dem cfumass-Startskript</title> | |||||
<para>Der einfachste Weg, ein schreibgeschütztes | |||||
<acronym>USB</acronym>Speicherziel einzurichten, ist die | |||||
Verwendung des <filename>cfumass</filename> rc-Skripts. | |||||
Kopieren Sie einfach die Dateien, die dem | |||||
<acronym>USB</acronym>-Host präsentiert werden sollen, in das | |||||
Verzeichnis <filename>/var/cfumass</filename> und fügen Sie | |||||
diese Zeile in <filename>/etc/rc.conf</filename> ein:</para> | |||||
<programlisting>cfumass_enable="YES"</programlisting> | |||||
<para>Um das Ziel ohne Neustart zu konfigurieren, führen Sie | |||||
diesen Befehl aus:</para> | |||||
<screen>&prompt.root; <userinput>service cfumass start</userinput></screen> | |||||
<para>Im Gegensatz zur seriellen und Netzwerkfunktionalität | |||||
sollte die Vorlage in <filename>/boot/loader.conf</filename> | |||||
nicht auf 0 oder 10 gesetzt werden, da die | |||||
<acronym>LUN</acronym> vor dem Setzen der Vorlage | |||||
konfiguriert werden muss. Das <filename>cfumass</filename> | |||||
rc-Skript setzt beim Start automatisch die richtige | |||||
Vorlage.</para> | |||||
</sect2> | |||||
<sect2> | |||||
<title><acronym>USB</acronym>-Massenspeicher mit anderen | |||||
Werkzeugen konfigurieren</title> | |||||
<para>Der Rest dieses Kapitels enthält eine detaillierte | |||||
Beschreibung der Konfiguration ohne die Verwendung des | |||||
<filename>cfumass</filename> rc-Skripts. Dies ist | |||||
beispielsweise notwendig, wenn man eine beschreibbare | |||||
<acronym>LUN</acronym> zur Verfügung stellen will.</para> | |||||
<para>Im Gegensatz zu <acronym>iSCSI</acronym> ist es bei | |||||
<acronym>USB</acronym>-Massenspeichern nicht zwingend | |||||
erforderlich, dass der &man.ctld.8; Daemon läuft. Es | |||||
gibt zwei Möglichkeiten, das Target zu konfigurieren: | |||||
&man.ctladm.8; oder &man.ctld.8;. Beide erfordern, dass das | |||||
Kernelmodul <filename>cfumass.ko</filename> geladen ist. | |||||
Das Modul kann manuell geladen werden:</para> | |||||
<screen>&prompt.root; <userinput>kldload cfumass</userinput></screen> | |||||
<para>Wenn <filename>cfumass</filename> nicht im Kernel | |||||
integriert ist, kann <filename>/boot/loader.conf</filename> | |||||
angepasst werden, damit das Modul beim Booten geladen | |||||
wird:</para> | |||||
<programlisting>cfumass_load="YES"</programlisting> | |||||
<para>Eine <acronym>LUN</acronym> kann ohne den | |||||
&man.ctld.8; Daemon erstellt werden:</para> | |||||
<screen>&prompt.root; <userinput>ctladm create -b block -o file=/data/target0</userinput></screen> | |||||
<para>Dies stellt den Inhalt des Abbilds von | |||||
<filename>/data/target0</filename> als <acronym>LUN</acronym> | |||||
auf dem <acronym>USB</acronym>-Host dar. Die Datei muss vor | |||||
der Ausführung des Befehls vorhanden sein. Um die | |||||
<acronym>LUN</acronym> beim Systemstart zu konfigurieren, | |||||
muss das Kommando in <filename>/etc/rc.local</filename> | |||||
eingetragen werden.</para> | |||||
<para>&man.ctld.8; kann auch benutzt werden, um | |||||
<acronym>LUN</acronym>s zu verwalten. Dazu erstellen Sie eine | |||||
<filename>/etc/ctl.conf</filename> und fügen eine Zeile in | |||||
<filename>/etc/rc.conf</filename> hinzu, um sicherzustellen, | |||||
dass &man.ctld.8; beim Booten automatisch gestartet wird. | |||||
Danach kann der Daemon gestartet werden.</para> | |||||
<para>Es folgt ein Beispiel einer einfachen Konfiguration für | |||||
<filename>/etc/ctl.conf</filename>. Eine ausführliche | |||||
Beschreibung der Optionen finden Sie | |||||
in &man.ctl.conf.5;.</para> | |||||
<programlisting>target naa.50015178f369f092 { | |||||
lun 0 { | |||||
path /data/target0 | |||||
size 4G | |||||
} | |||||
}</programlisting> | |||||
<para>Dieses Beispiel erstellt ein einzelnes Target | |||||
mit einer einzigen <acronym>LUN</acronym>. | |||||
<literal>naa.50015178f369f092</literal> ist eine | |||||
Gerätekennung, die aus 32 zufälligen | |||||
Hexadezimalziffern besteht. | |||||
<literal>path</literal> definiert den absoluten Pfad zu einer | |||||
Datei oder eines zvol, welches die | |||||
<acronym>LUN</acronym> als Speicher nutzen kann. Diese Datei | |||||
muss vor dem Start von &man.ctld.8; existieren. Die zweite | |||||
Zeile ist optional und definiert die Größe | |||||
der <acronym>LUN</acronym>.</para> | |||||
<para>Damit der &man.ctld.8; Daemon beim Booten gestartet wird, | |||||
muss diese Zeile in <filename>/etc/rc.conf</filename> | |||||
hinzugefügt werden:</para> | |||||
<programlisting>ctld_enable="YES"</programlisting> | |||||
<para>Sie können &man.ctld.8; mit diesem Befehl direkt | |||||
starten:</para> | |||||
<screen>&prompt.root; <userinput>service ctld start</userinput></screen> | |||||
<para>Der &man.ctld.8; Daemon liest beim Start | |||||
<filename>/etc/ctl.conf</filename>. Wenn diese Datei nach dem | |||||
Start des Daemons bearbeitet wird, müssen die Änderungen neu | |||||
geladen werden, damit sie sofort wirksam werden:</para> | |||||
<screen>&prompt.root; <userinput>service ctld reload</userinput></screen> | |||||
</sect2> | |||||
</sect1> | |||||
</chapter> |