D-Link DWL-G650+ ans laufen bekommen mittels ndis

realisticer

Active Member
Tag allerseits,

ich habe mich letztes Wochenende mal daran gemacht, meine WLAN Karte auch unter FreeBSD ans
laufen zu bekommen. Ich gebe hier eine kurze Anleitung, wie ich das gemacht habe:

-------

Einbinden der WLAN-Karte 'DWL-G650+' in FreeBSD
mit Hilfe des ndis-wrappers

1.Was wird benoetigt?
2.Erstellen der Header- + Objektdatei 'ndis_driver_data'
3.FwRad16.bin und FwRad17.bin – Was hat es damit auf sich?
4.Anpassen der Kernelkonfiguration
5.Wohin mit den Dateien ndis_driver_data.(h/o)
6.Anpassen der Makefile fuer den Kernel
7.Letzte Schritte

1. Was wird benoetigt?

Zunaechst einmal benoetigen wir die Windows 2000/XP-Treiber. Diese koennen hier erworben
werden: http://www.dlink.com.tw/ (*1)

tnet1130.cat
GPLUS.INF
GPLUS.SYS
FwRad16.bin
FwRad17.bin

2. Erstellen der Header + Objektdatei 'ndis_driver_data'

Wir benoetigen eine Header und eine Objektdatei, welche dann zum bauen des Kernelmoduls
genutzt werden. Dabei gehen wir wie folgt vor:

1.Die Dateien aus 1.) in ein Verzeichnis entpacken, z. B. /tmp/ndis
2.Nun erstellen wir die Header + Objektdatei mittels des tools 'ndiscvt':

ndiscvt -i GPLUS.INF -s GPLUS.SYS -o ndis_driver_data.h -O

Diese Zeile wird, mit Hilfe der beiden Dateien GPLUS.INF/SYS die Headerdatei ndis_driver_data.h
und ndis_driver_data.o erstellen.

Anmerkung: Das Device welches erstellt wird, ist ndis0. Diesen Namen kann man aendern, wenn
wir die Option -n <devname> noch zusaetzlich spezifizieren.

3. FwRad16.bin und FwRad17.bin – Was hat es damit auf sich?

Bei manchen Karten wird eine Firmware mitgeliefert, die bei Aktivierung der Karte geladen wird.
Eine solche Firmware wird auch bei D-Link's AirPlus XTREME G+ DWL-G650+ mitgeliefert.

Wenn man die Karte nicht zum Booten des Systems nutzt, reicht es diese Datei nach /compat/ndis
zu kopieren, sie wird dann automatisch vom Modul mitgeladen.

Benoetigt man allerdings die Karte zum Booten des Systems, so muss man diese Datei in eine
shared-object-file konvertieren, damit der Kernel in der Lage ist, diese zu laden. Dazu gibt man in
der Befehlszeile folgendes ein:

ndiscvt -f <firmware>

Die shared-object-file kann dann beim boot-prompt bzw. mit Hilfe der loader.conf geladen werden.

Das war relativ knapp, da ich darauf nicht angewiesen bin. Etwas genauer kann man das unter
'man ndiscvt' nachlesen.

4. Anpassen der Kernelkonfiguration

Eines der einfachsten Schritte ist es, die Kernelkonfiguration entsprechend anzupassen. Dazu
oeffnen wir die Kernelkonfigurationsdatei mit unserem Lieblingseditor und fuegen folgende Zeilen
der Datei hinzu (am besten unter '# Wireless NIC cards'):

options NDISAPI
device ndis

danach speichern und schliessen wir den Editor wieder.

5. Wohin mit den Dateien ndis_driver_data.(h/o)

Nun, damit beim Bauen des Kernels die Dateien ndis_driver_data.h und ndis_driver_data.o auch
gefunden werden koennen, muessen diese natuerlich auch im entsprechenden Verzeichnis
vorhanden sein.

Wir kopieren die beiden Dateien nach

/usr/src/sys/i386/compile/<Kernelname>

6. Anpassen der Makefile fuer den Kernel

Damit auch die Objektdatei ndis_driver_data.o zum Kernel hinzugelinkt wird, muss diese noch in
der Makefile mit angegeben werden.

Dazu oeffnen wir mit unserem Lieblingseditor die Datei

/usr/src/sys/i386/compile/<Kernelname>/Makefile

Gleich auf der ersten Seite sollte uns die Variable 'OBJS' auffallen, welche saemtliche Objektdateien
auflistet, welche zum Bauen des Kernels benoetigt werden. Wir gehen an den Schluss der
Definition dieser Variable und fuegen dort hinter der letzten aufgefuehrten Objektdatei
'ndis_driver_data.o' an.

Danach speichern und schliessen wir die Makefile wieder.

7. Letzte Schritte

Die letzten Schritte sollten im Prinzip klar sein, wir muessen natuerlich den Kernel neu
uebersetzen. Dazu gehen wir ganz normal nach Handbuch vor.

Ab dem naechsten Start des Systems kann die Karte DWL-G650+ dann genutzt werden. Nachdem
die Karte eingesteckt worden ist, sollte sie dann genutzt werden koennen. Evtl. muss man noch
ein 'ifconfig <devname> up' machen.

Naehere Informationen dazu findet man in den Manpages von 'ifconfig'.

(*1) Mit den Treibern von dlink.de kann man nur eine Datenuebertragungsrate bis max 11Mb/s
bekommen. Keine Ahnung, wo da der Unterschied ist.
------

Hoffe das versetzt einige in die Lage, ihre Karte zu nutzen, sollte mit jeder X-beliebigen Karte
so moeglich sein, diese ans laufen zu bekommen.

Ausserdem hoffe ich mal, dass ich jetzt nichts vergessen hab.

Wenn Dinge zu verbessern sind, einfach schreiben :).

mfg
realisticer
 
Hi!

Erst mal Lob für das gute HowTo.
Habs gerade ausprobiert, aber leider hats bei mir (so) nicht funktioniert.
Das tolle an den D-Link Teilen ist das es 4 verschiedene Karten mit dem Namen DWL-G650 bzw DWL-G650+ gibt. Und diese unterscheiden sich dann noch in den verschiedenen Hardware-Revisionen.

Meiner einer besitzt die
Air Plus XtremeG
DWL-G650
Hardware-Revision: B2

Bei dieser gibt's auch keine Firmware zum laden. Nachdem ich es nach ein paar Versuchen dann mal geschafft hab den richtigen Treiber zu finden (musste Windows zu hilfe nehmen und da schauen wie der richtig Treiber heisst).

Aus diesem Treiber-Packet muss man sich dann die .inf und die .sys Datei (bei mir net5211.inf und ar5211.sys) in das Verzeichnis /usr/src/sys/moduls/if_ndis kopieren und mit

ndiscvt -i net5211.inf -s ar5211.sys -o ndis_driver_data.h

konvertieren.
Hier kam es bei mir zu einer Fehlermeldung das er eine Zeile nicht konvertieren kann. Diese habe ich dann einfach mal aus der inf-Datei gelöscht und schon hats funktioniert.

Danach ein make && make install.
Das make && make install dann noch im Verzeichnis /usr/src/sys/moduls/ndis
Jetzt kann man mit kldload ndis und kldload if_ndis die Module laden.
Die karte sollte sich jetzt dann mit dem Namen ndis0 melden.

Vielleicht hilft dieser kleine Nachtrag ein paar Leute die "tollen" D-Link Karten zum laufen zu bekommen.

Gruß Rookie
 
Rookie schrieb:
Vielleicht hilft dieser kleine Nachtrag ein paar Leute die "tollen" D-Link Karten zum laufen zu bekommen.

Klingt irgendwie abwertend. War eigentlich immer ganz zufrieden mit meinen D-Link Karten. Auch wenn einem das 'against all standards' hin und wieder auf den Geist geht.

Super How To. Hoffe das kommt noch in das Wiki
 
Zuletzt bearbeitet:
Rookie schrieb:

Tut mir leid, dass ich erst jetzt antworte, hatte viel zu tun in letzter Zeit.

Erst mal Lob für das gute HowTo.
Habs gerade ausprobiert, aber leider hats bei mir (so) nicht funktioniert.
Das tolle an den D-Link Teilen ist das es 4 verschiedene Karten mit dem Namen DWL-G650 bzw DWL-G650+ gibt. Und diese unterscheiden sich dann noch in den verschiedenen Hardware-Revisionen.

Meiner einer besitzt die
Air Plus XtremeG
DWL-G650
Hardware-Revision: B2

Du musst hier differenzieren. Fuer die DWL-G650 gibt es sehr wohl die HR B2:
http://tsd.dlink.com.tw/Download.asp
Select -> DWL -> G650

Bei dieser gibt's auch keine Firmware zum laden. Nachdem ich es nach ein paar Versuchen dann mal geschafft hab den richtigen Treiber zu finden (musste Windows zu hilfe nehmen und da schauen wie der richtig Treiber heisst).

Aus diesem Treiber-Packet muss man sich dann die .inf und die .sys Datei (bei mir net5211.inf und ar5211.sys) in das Verzeichnis /usr/src/sys/moduls/if_ndis kopieren und mit

ndiscvt -i net5211.inf -s ar5211.sys -o ndis_driver_data.h

konvertieren.
Hier kam es bei mir zu einer Fehlermeldung das er eine Zeile nicht konvertieren kann. Diese habe ich dann einfach mal aus der inf-Datei gelöscht und schon hats funktioniert.

Danach ein make && make install.
Das make && make install dann noch im Verzeichnis /usr/src/sys/moduls/ndis
Jetzt kann man mit kldload ndis und kldload if_ndis die Module laden.
Die karte sollte sich jetzt dann mit dem Namen ndis0 melden.

Vielleicht hilft dieser kleine Nachtrag ein paar Leute die "tollen" D-Link Karten zum laufen zu bekommen.

Gruß Rookie

Jedenfalls gut, falls andere Probleme mit meinem vorgehen haben.

mfg
realisticer
 
Zurück
Oben