Hallo Apfelfreunde.
Ich versuche mich mal an meiner ersten Anleitung.
Ich möchte Euch zeigen wie Ihr eine Intel 10GBit Karte (X520/X540) so modifizieren könnt das diese unter macOS vom Smalltree-Treiber als Smalltree-Karte akzeptiert wird.
WARUM?
Ganz einfach - Smalltree möchte für seine 10GBit-Karten roundabout 600€ und dabei handelt es sich um eine Karte im Intel Referenzdesign.
Die Intel-Karten bekommt ihr in der "Bucht" für ca. 100€.
Warum überhaupt Smalltree?
Smalltree hatte bis jetzt immer Treiber die mit dem aktuellen macOS/OSX funktioniert haben und Apple unterstützt 10GBit-Karten von Haus aus nicht.
Der Smalltree-Treiber erkennt seine Karten zum einen an den Werten die im Treiberpaket in der info.plist mit Ihrer VendorID (Hersteller) und DeviceID gespeichert sind.
Das sieht dann so aus:
Wie Ihr sehen könnt ist die VendorID durchgängig 8086 also INTEL
Die DeviceID 10fb steht z.B. für eine X520-DA2. Die 1528 für eine X540-T2 usw.
Der Treiber selbst prüft aber noch die SUB-Device-ID die bei Smalltree 000a lautet und wie wir die im ROM der Karte anpassen zeige ich euch.
Vorbereitung:
- Ihr sollten euch einen Ubuntu-Live-Stick nach dieser Anleitung erstellen.
- Startet mit dem erstellten Boot-Stick das System in dem die Karte eingebaut.
- installiert die ethtools mit
- installiert die net-tools mit
Als nächstes müssen wir die oben besprochene VendorID und DeviceID unserer Karte herausfinden - warum erfahrt Ihr später.
Setzt einfach das Kommando
ab.
Die Ausgabe zeigt euch nun alle Eure Netzwerkkarten samt VendorID und DeviceID an. Diese stehen am Ende der Zeile in eckigen Klammer. so z.B [8086:1528]
Dann brauchen wir den Device-Namen unter dem Ubuntu die Netzwerkkarte angelegt hat.
Diesen finden wir mit dem Befehl
Bei mir hießen die beiden Ports der Karte enp1s0f0 und enp1s0f1
Damit wir bei Fehlschlägen eine Chance haben das ROM der Karte wiederherzustellen dummen wir dieses in eine Datei mit dem Befehl:
am Beispiel meiner oben genannten Karte sieht das dann so aus:
und für den zweiten Port direkt hinterher
Jetzt müssen wir im ROM der Karte den Offset suchen an dem die anzupassende SUB-Device ID liegt
Dazu bitte folgenden Befehl absetzen
86 80 deshalb weil die gesuchte VendorID 8086 in umgekehrter Bytefolge im ROM steht.
Nun seht ihr die Zeile in der der Wert gefunden wurde und am Anfang den Offset im ROM.
Ihr könnt jetzt den Befehl verändert wiederholen
Navigiert zu der Adresse zuvor gefundenen und sucht (wieder in umgekehrter Folge) die SUB-Vendor ID die wir oben mit lspci ermittelt haben .
Diese muss zwingend in den zwei Bytes vor '86 80' stehen. Bei meiner Intel war es glaube ich '1a 00'.
Zählt nun vom OffSet vorne in der Zeile bis zu der stelle wo die SUB-DeviceID beginnt. Denkt daran es ist HEX also nach 9 kommt A, B, C usw.
Jetzt haben wir alles was wir brauchen um die Anpassung vorzunehmen.
Wir haben:
- VendorID und DeviceID der Karte (8086:1528)
- SUB-DeviceID der Karte (001a)
- Devicename der Karte unter Ubuntu (enp1s0f0 und enp1s0f1)
- Den Offset an dem die SUB-VendorID steht (0x048e und 0x048f)
Also los
Der Befehl um die notwendige SUB-DeviceID ins ROM zu schreiben die der Smalltree Treiber prüft sieht für die in Klammern stehenden Werte folgendermaßen aus:
und
falls dort nicht schon '00' steht
Beide Befehle für den evtl. zweiten vorhandenen Port wiederholen.
Ihr müsst diese Werte aus den Klammern natürlich mit denen ersetzen die Ihr ermittelt habt.
Die Erfahrung hat gezeigt das die Intel X520 fast immer die Offsets 0x032a und 0x032b hat und die X540 hat 0x048e und 0x048f.
Aber nicht darauf verlassen - selber ermitteln
Nach einem Neustart könnt ihr den Treiber bei Smalltree herunterladen, installieren und Eure 10GBit-Karte genießen.
Ich schreibe mit meiner Karte knapp 1GByte/Sekunde auf mein NAS - das macht FUN.
Anbei noch Bilder zu den gezeigten Befehlen - hätte sie gerne an den richtigen Stellen eingefügt weiß jedoch nicht wie.