Wie erstelle ich ein Loopback für ein Ethernet-Gerät per Software?

273
linker06

Ich möchte einen Loopback für einige USB-Ethernet-Adapter mit einem ax88772b- oder ax 88179-Chipsatz erstellen. Die Datenblätter erwähnen einen PHY-Loopback. Ich denke, das ist es, wonach ich suche, obwohl ich nicht zu 100% sicher bin. Ich habe versucht, die Loopback-Funktion für das ax88772b mit ethtool zu setzen, es heißt jedoch "Operation nicht unterstützt". Entweder verwende ich es falsch oder vielleicht gibt es keine Treiberunterstützung dafür. Ich weiß, dass dies auch durch einen Hardware-Loopback (Verbinden von TX- und RX-Kabeln) möglich ist, aber ich brauche eine reine Softwarelösung (auch für Gbit-Ethernet wäre die Geschwindigkeit für den Hardware-Loopback afaik auf 100 MBit begrenzt.) Das Datenblatt für die ax88772b finden Sie hier:

https://github.com/fabiobaltieri/usb-100basefx/blob/master/docs/AX88772B_Datasheet_v104.pdf

0
Das Datenblatt sagt, dass Endpunkt 0 der Steuerendpunkt ist, das PHY-Register PM_BMCR (Adresse 0) hat ein Bit für das Loopback, und die herstellerspezifischen Befehle zum Lesen / Schreiben von PHY-Registern befinden sich auf p. 36. Also probieren Sie es aus und sehen Sie, ob es funktioniert? Es ist unwahrscheinlich, dass Ethtool herstellerspezifische Befehle unterstützt. dirkt vor 5 Jahren 0
[Rohdaten auf USB schreiben] (http://unix.stackexchange.com/questions/292933/how-can-i-write-raw-data-to-a-usb-device). dirkt vor 5 Jahren 0
Danke vielmals. Ich bin eigentlich ein Noob zu diesem Thema. Nach allem, was ich verstehe, müsste ich den Befehl über eine Steuerungsübertragung an Endpunkt 0 ausgeben. Ich weiß immer noch nicht, wie dies im wirklichen Leben aussieht, aber es sieht zumindest nach etwas aus, das von Software ausgeführt werden kann. Kennen Sie gute Bücher / Websites, die Ihnen beim Lesen eines solchen Datenblattes helfen oder die den Weg vom Datenblatt zum Treiber aufzeigen? linker06 vor 5 Jahren 0
Nein, ich kenne keine guten Bücher / Websites. Grundsätzlich funktioniert die gesamte Hardware ähnlich - die Hardware verfügt über Register, Sie schreiben Werte in die Register oder lesen Werte aus ihnen, und dies hat Auswirkungen auf die Hardware. Der einzige Unterschied für USB besteht darin, dass Sie sich über herstellerspezifische Befehle registrieren und registrieren. Ich habe das auch noch nie über USB gemacht, aber ich würde mir Beispiele mit libusb anschauen. Und ja, Sie müssen ein C-Programm schreiben. In Ihrem Fall ist das, was tatsächlich getan werden muss, sehr einfach (Register lesen, Bit ändern, Register schreiben), daher sollte es nicht zu schwierig sein. dirkt vor 5 Jahren 0
Weitere Beispiele für die Verwendung von libusb in Python finden Sie in diesem [Tutorial] (https://github.com/walac/pyusb/blob/master/docs/tutorial.rst), das eine Bibliothek oberhalb von libusb verwendet. [Here] (http://www.beyondlogic.org/usbnutshell/usb6.shtml#StandardRequests) sind die Anforderungen des USB-Protokolls. meuh vor 5 Jahren 0

0 Antworten auf die Frage