Wie kann ich den Zielmodus unter Linux mit USB verwenden?

7

Kernel 3.5 führt ein:

Diese Version enthält einen Treiber für die Verwendung einer IEEE-1394-Verbindung als SCSI-Transport. Dies ermöglicht es, SCSI-Geräte anderen Knoten am Firewire-Bus auszusetzen, z. B. Festplattenlaufwerken. Es ist eine ähnliche Funktionalität wie der Firewire-Zielfestplattenmodus auf vielen Apple-Computern.

Diese Version fügt auch einen USB-Gadget-Treiber hinzu, der dasselbe mit USB macht. Der Treiber unterstützt zwei USB-Protokolle: BBB oder BOT (Bulk Only Transport) und UAS (USB Attached SCSI). BOT wird auf der alternativen Schnittstelle 0 (primär) und UAS auf der alternativen Schnittstelle 1 angekündigt. Beide Protokolle können mit USB 2.0 und USB 3.0 arbeiten. UAS verwendet die USB 3.0-Funktion, die als Streams-Unterstützung bezeichnet wird.

http://kernelnewbies.org/Linux_3.5

Ich habe ein Arch Linux mit Kernel 3.5.3-1 und möchte dieses Feature ausprobieren.

dash17291
quelle
Werfen Sie einen Blick auf SCST und das libusb-Gadget (zuletzt vor 3 Jahren aktualisiert), die möglicherweise hilfreich sind.
Harrymc

Antworten:

4

FireWire ist eine Peer-to-Peer-Architektur. Damit ein PC sich als Festplatte ausgibt, ist lediglich eine Software erforderlich.

Bei USB hingegen wird streng zwischen Host (PC) und Geräten unterschieden. Ob Ihre Hardware als Host oder als Gerät (oder beides im Fall von USB-On-The-Go) ausgeführt werden kann, hängt davon ab, wofür Ihr USB-Schnittstellen-Chip entwickelt wurde.

Linux läuft sowohl auf PCs als auch auf Geräten und hat Treiber für beide Arten von USB-Schnittstellen. Alle "USB Gadget" -Treiber setzen jedoch voraus, dass der Schnittstellenchip den Gerätemodus unterstützt, und keiner der in PCs integrierten Controller.

Die einzige Möglichkeit, diesen Code auszuführen, besteht in der Verwendung eines eingebetteten Geräts, z. B. eines Routers, einer NAS-Box oder eines Telefons.

CL.
quelle
2

Wenn Sie den Code unter dieser Nachricht lesen, sehen Sie die Patches. Der für Sie relevante ist:

--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -798,6 +798,16 @@ config USB_MASS_STORAGE
          Say "y" to link the driver statically, or "m" to build
          a dynamically linked module called "g_mass_storage".

+config USB_GADGET_TARGET
+       tristate "USB Gadget Target Fabric Module"
+       depends on TARGET_CORE
+       help
+         This fabric is an USB gadget. Two USB protocols are supported that is
+         BBB or BOT (Bulk Only Transport) and UAS (USB Attached SCSI). BOT is
+         advertised on alternative interface 0 (primary) and UAS is on
+         alternative interface 1. Both protocols can work on USB2.0 and USB3.0.
+         UAS utilizes the USB 3.0 feature called streams support.
+
 config USB_G_SERIAL
        tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
        help

Dies zeigt, dass USB_GADGET_TARGETdies hinzugefügt wurde. Wenn Sie diese Option in Ihrem Kernel aktivieren und den Kernel neu kompilieren / neu installieren, können Sie den Zielmodus unter Linux mit USB verwenden. Beachten Sie, dass Sie auch aktivieren müssen TARGET_CORE.

Weitere Informationen finden Sie unter:

Tamara Wijsman
quelle