Ralinkt RT2573 (USB) unter FreeBSD

moe

Well-Known Member
Hi,

Da der Vorbesitzer meines Laptops die PCMCIA-Slots zerstört hat, bin ich bzgl. WLan leider auf USB angewiesen. Der Zydas USB-Stick den ich davor unter Linux verwendet habe, wird ja leider nicht unterstützt, selbst per Ndisulator gehts nicht (wobei ich glaube, dass das gar keine USB-Geräte unterstützt). Also hab ich mir einen USB-Stick von TP-Link (TL-WN321G) besorgt, da der den Ralink Chipsatz hat, und dieser ja mittels ural unterstützt werden soll.

Aber bei meinem Glück ist das natürlich ein neuerer Chipsatz (2573) der von ural in FreeBSD-6.2 noch nicht unterstützt wird, ural fühlt sich für den Stick nicht zuständig. Also hab ich auf gut Glück den Treiber folgendermaßen angepasst:
Code:
% diff -Naur /usr/src/sys/dev/usb/usbdevs.orig /usr/src/sys/dev/usb/usbdevs
--- /usr/src/sys/dev/usb/usbdevs.orig   Sat Mar  3 21:32:21 2007
+++ /usr/src/sys/dev/usb/usbdevs        Sat Mar  3 18:49:00 2007
@@ -1448,6 +1448,7 @@
 /* Ralink Technology products */
 product RALINK RT2570          0x1706  RT2500USB wireless adapter
 product RALINK RT2570_2                0x2570  RT2500USB wireless adapter
+product RALINK RT2573          0x2573  RT2500USB wireless adapter
 
 /* ReakTek products */
 product REALTEK USBKR100       0x8150  USBKR100 USB Ethernet (GREEN HOUSE)

% diff -Naur /usr/src/sys/dev/usb/if_ural.c.orig  /usr/src/sys/dev/usb/if_ural.c
--- /usr/src/sys/dev/usb/if_ural.c.orig Sat Mar  3 21:32:06 2007
+++ /usr/src/sys/dev/usb/if_ural.c      Sat Mar  3 18:49:40 2007
@@ -101,6 +101,7 @@
        { USB_VENDOR_NOVATECH,          USB_PRODUCT_NOVATECH_NV902 },
        { USB_VENDOR_RALINK,            USB_PRODUCT_RALINK_RT2570 },
        { USB_VENDOR_RALINK,            USB_PRODUCT_RALINK_RT2570_2 },
+       { USB_VENDOR_RALINK,            USB_PRODUCT_RALINK_RT2573 },
        { USB_VENDOR_VTECH,             USB_PRODUCT_VTECH_RT2570 },
        { USB_VENDOR_ZINWELL,           USB_PRODUCT_ZINWELL_RT2570 }
 };

Damit hat ural zwar den Stick aktiviert:
Code:
ural0: Ralink 54M.USB......., rev 2.00/0.01, addr 2
ural0: MAC/BBP RT2570 (rev 0x00), RF unknown
ural0: Ethernet address: 00:14:78:xx:xx:xx
ural0: if_start running deferred for Giant

Aber beim Versuch ihn zu benutzen kommt
Code:
ural0: timeout waiting for BBP/RF to wakeup
was vermutlich mit "RF unknown" zusammenhängt.

Die Seite von damien wird leider nicht mehr regelmässig geupdatet, dementsprechend finde ich da auch keine Aussage ob der Treiber in CURRENT, oder in anderen BSDs den Chipsatz unterstützt. Aber dort steht immerhin, dass Damien hauptsächlich den OpenBSD-Treiber entwickelt, und siehe da, im CVS von OpenBSD sind die Device-IDs die ich oben händisch zugefügt habe schon bekannt, und werden vom Treiber rum (4) gehandelt. Ich hab noch nicht versucht selbigen unter FreeBSD zu übersetzen, weils auch sehr wahrscheinlich nicht ohne weiteres gehen wird. Treiberprogrammierung ist auch nicht gerade meine Stärke, deshalb werd ichs auch bestimmt nicht schaffen diesen Treiber anzupassen.

Lange Rede kurze Frage: Hat irgendjemand schonmal diesen Chipsatz unter FreeBSD zum Laufen gebracht, oder ein Dokument a la "Porting Drivers from OpenBSD to FreeBSD in 24 hours" bei der Hand? :)

Gruss Maurice

P.S. Wo kann man eigentlich 7-Current sehen, ich hab nur isos gefunden. Gibts da nicht auch irgendein cvsweb? Das normale ist ja nur 6-Current, wenn ich nicht komplett verwirrt bin.
 
Ich habs gerade schon in nem anderen Thread geschrieben, aber hier passt es natuerlich noch besser hin:
Den rum-Treiber gibts hier:
http://www.freebsd.org/cgi/query-pr.cgi?pr=usb/107642

Bei mir laeuft der ganz in Ordnung mit WPA. Was ein bisschen nervig ist, ist dass man den USB Stick nicht im laufenden Betrieb einstecken kann, da es sonst eine Kernel panic gibt.
Man muss das hier in /boot/loader.conf eintragen:
Code:
if_rum_load="YES"
rt2573_load="YES"

Viel Erfolg!
 
Geil, klappt. Zwar lief weder das patchen, noch das Kompilieren ohne Anpassung durch, aber es geht jetzt.
Danke!
 
Hast du die erste oder zweite Version des Patchfiles genommen?
Setzt du Current oder was anderes ein?
 
Die zweite Version, ich setze RELENG_6_2 momentan 6.2-RELEASE-p2 ein. Ist in dem Bugreport mit -CURRENT die 7-CURRENT gemeint?

Der Patch hat bei sys/dev/usb/usbdevs 6x rejectet, die hab ich dann per Hand eingefügt. Und beim Kompilieren gabs noch ein paar Fehler mit usbdevs.h in /sys/modules/rum und in if_rum.c musste ich aus
Code:
usb_add_task(sc->sc_udev, &sc->sc_task[COLOR="Red"], USB_TASKQ_DRIVER[/COLOR]);
das Rotgefärbte entfernen..
 
Zuletzt bearbeitet:
Oh, die Sourcen selber patchen musste ich nicht. Der Treiberschreiber weiss aber, dass es da noch ein paar Probleme mit dem geaenderten USB-Stack gibt. Hoffentlich wird der Treiber bald committet.
 
Hmm, komisch.. Ich kann meinen Stick aber auch im laufenden Betrieb anziehen und reinstecken ohne dass der Kernel panisch wird. Scheinbar ist FreeBSD != FreeBSD :-)
 
Ja, vielleicht liegts, wie schon oben gesagt, an den Aenderungen am USB-Stack. Sowohl bei mir als auch beim Entwickler des Treibers passiert das mit der Panic. Allerdings hast du auch einen anderen USB-Stick als wir (D-Link DWL-122)
 
So richtig gut läuft das bei mir nicht, ich ab ab und zu (eher selten) Abstürze des ganzen Systems, was allerdings wirklich störend ist, dass scheinbar einige Pakete verschluckt werden, ssh-Verbindungen werden z.B. ständig gekillt. An der Verbindungsqualität kanns eigentlich nicht liegen, der AP ist nichtmal 5m entfernt, und im Kabelbetrieb passiert es nicht, also kanns eigentlich nur am Stick bzw. Treiber liegen. :-(

Aber ich habe gerade gesehen, dass es inzwischen eine 3te Version des Patches gibt, dieser patcht schonmal ohne Fehler gegen FreeBSD-6.2-RELEASE-p3, ich werds mal eine Woche damit testen..

Gruss Maurice
 
Was mir aufgefallen ist, der Stick handelt ab und zu Verbindungen >11MBit aus, obwohl ich nur USB1.1 hab. Das dürfte ja eigentlich nicht sein, oder? Kann es sein dass zumindestens die "verschluckten" Pakete damit zusammenhängen?

Gruss Maurice
 
Also ich benutze den gerade auf nem Current von Januar mit WPA und ohne Paketverluste.
Auf nem aktuellen Current gibts leider nur eine Kernelpanic beim booten :/
 
Was meinst du mit "armer Linuxer", willst du den Treiber unter Linux installieren?

Gruss Maurice
 
armer Linuxer bedeutet ich nix ahnung freebsd.
Soll bedeuten, ich dachte immer Linux ist aus Unix entstanden, ich war nun so
froh das ich unter Linux einigermassen Fuss fassen konnte aber nun kommt
mit freebsd wie ein schuss in den fuss vor. Das aber nur am rande.

Mein Problem: Ich habe meinen Level One USB Stick mit dem Rt 73 Serialsmonkeys treiber dann doch irgendwie yum laufen gekriegt.

Ich habe jetzt fuer FreeBSD nachgeforscht und sehe nun ja das er duchaus
weit verbreitet ist. Ich dachte mir das ich den Treiber mal installiere aber wie
geht sowas?

das spuckt dmesg aus:
ugen0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 2

in ifconfig steht kein ugen0 drin.

seltsamerweise wirds ja irgendwie vom szstem erkannt, nur erscheint es nicht in ifconfig.



FreeBSD 6.2
 
Ugen ist ein generischer USB Treiber, der dann übernimmt, wenn kein passender Treiber gefunden wird. Der macht nur grundlegende USB Abstraktion, als Netzwerkkarte kannst du das Device so nicht verwenden.
 
@Kamikaze

wie installiere ich den Treiber?

kannst du mir bitte ywei oder drei stichworte geben mit den ich die Suchmaschiene fuettern kann?
 
Genau, im Bugreport stehts auch noch etwas genauer (beginnend mit make catalog rt2573)..
Die FreeBSD-Sourcen müssen natürlich installiert sein, wie das geht ist hier im Wiki und im Handbuch beschrieben.

Gruss Maurice
 
@opino:

Die Anleitung steht ja schon in dem PR drin.

Lad dir den dort angehaengten Patch herunter (die Version ganz unten). Vorausgesetzt, du hast die Systemsourcen unter /usr/src liegen, machst du einfach Folgedes:

Code:
# mkdir /sys/modules/rt2573
# mkdir /sys/modules/rum
# cd /usr/src
# patch < <Pfad zur Patchdatei>
# cd sys/modules/rt2573
# fetch ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/dev/microcode/rum/rum-rt2573
# make && make install
# cd /sys/modules/rum
# make && make install
# kldload rt2573
# kldload if_rum
WLAN-Stick reinstecken und Daumendruecken
Moeglicherweise bekommst du eine Fehlermeldung, wenn du patch ausfuehrst. Dann solltest du die noch fehlenden Zeilen aus /usr/src/sys/dev/usb/usbdevs.rej selbst einfuegen.
 
# patch < <Pfad zur Patchdatei>

ist das erste < ein tipfehler oder stelle ich mich gerade sehr daehmlich an?
 
sorry wenn ich mich ein bischen deppert anstelle, aber computer waren noch nie meine staerke.


# mkdir /sys/modules/rt2573
# mkdir /sys/modules/rum
# cd /usr/src
# patch < <Pfad zur Patchdatei>
# cd sys/modules/rt2573
# fetch ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/dev/microcode/rum/rum-rt2573
# make && make install
# cd /sys/modules/rum
# make && make install

Ich konnte die installation durchfuehren bis zu dem punkt an dem ich rum compilieren will. An der stelle kommt eine fehlermeldung von irgendeiner doppeldefinition. Ich kann den output nicht posten weil ich nicht weis wie ich den text aus der konsole in mein firefoxfenster kriegen soll.
 
Zuletzt bearbeitet:
Ich konnte die installation durchfuehren bis zu dem punkt an dem ich rum compilieren will. An der stelle kommt eine fehlermeldung von irgendeiner doppeldefinition. Ich kann den output nicht posten weil ich nicht weis wie ich den text aus der konsole in mein firefoxfenster kriegen soll.

Mit der Maus markieren und dann mit der mittleren Maustaste einfuegen.
Doppeldefinitionen klingt so, als seien irgendwelche Devices mehrfach in /sys/dev/usb/usbdevs vorhanden...
 
das ist nur der lezte Teil der Fehlermeldung. Kann man nicht im vi auch was in den Puffer kopieren und es dann per copy und paste einfuegen?



susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8647:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8647::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8675: warning: 'rum_update_slot' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8675:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8675::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8691: warning: 'rum_set_bssid' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8691:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8691::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8715: warning: 'rum_update_promisc' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8715:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8715::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8733: warning: 'rum_get_rf' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8733:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8733::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8745: warning: 'rum_read_eeprom' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8745:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8745::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8855: warning: 'rum_init' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8855:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8855::: Too many arguments.
susi# susi# /usr/sr
 
das ist nur der lezte Teil der Fehlermeldung. Kann man nicht im vi auch was in den Puffer kopieren und es dann per copy und paste einfuegen?

Im vim geht das mit
set clipboard=unnamed



susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8647:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8647::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8675: warning: 'rum_update_slot' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8675:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8675::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8691: warning: 'rum_set_bssid' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8691:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8691::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8715: warning: 'rum_update_promisc' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8715:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8715::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8733: warning: 'rum_get_rf' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8733:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8733::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8745: warning: 'rum_read_eeprom' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8745:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8745::: Too many arguments.
susi# susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8855: warning: 'rum_init' defined but not used
susi#: Command not found.
susi# /usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8855:: Too many arguments.
/usr/src/sys/modules/rum/../../dev/usb/if_rum.c:8855::: Too many arguments.
susi# susi# /usr/sr

Die Zeilennummern 8xxx sind viel zu hoch.
if_rum.c hat nur 2302 Zeilen. Hast du den Patch 4x ausgefuehrt?
 
Zurück
Oben