WLAN-Karten mit ndiswrapper
Aus Fedorawiki.de
Um eine WLAN-Karte zu betreiben, für die kein Linux-Treiber vorhanden ist, kann das Programm ndiswrapper genutzt werden.
Ndiswrapper wird nicht vom Fedoraprojekt unterstützt, um quelloffene Projekte voran zu treiben. Weigert sich der Geräte-Hersteller einen "Treiber" zur Verfügung zu stellen, kann oder soll kein "Treiber" programmiert werden, kann auf die notwendigen Pakete des Repositories (kurz: Repos) RPMFusion zurückgegriffen werden. Die Einrichtung des Repos findet sich in der Verknüpfung zu RPMFusion.
In diesem Artikel gibt es einige Unstimmigkeiten, möglicherweise müssen die Links am Ende des Artikels genutzt werden um eine erfolgreiche Einrichtung zu vollziehen.
Sobald eine Königslösung gefunden wurde, bitte ich um Korrektur des Artikels!
Inhaltsverzeichnis |
Paketbeschreibungen
ndiswrapper besteht aus zwei Teilen:
Nutzerseitiges Programm, welches benötigt wird um Windows XP - "Treiber" einzurichten und das Kernmodul, welches den XP-Treiber lädt.
Beide werden ndiswrapper genannt.
loadndisdriver
Nutzerseitiges Programm, dass den Treiber für das ndiswrapper Kernmodul lädt.
Loadndisdriver sollte nicht direkt genutzt werden, sondern nur vom Kernmodul ndiswrapper.
Die Parameter variieren stark, während der Entwicklung.
Loadndisdriver erwartet die Treiber im Verzeichniszweig /etc/ndiswrapper/.
Das Paket ndiswrapper enthält das Nutzerprogramm ndiswrapper und das Programm ndisdriver (loadndisdriver im Pojekt-Quellarchiv). Das Paket kmod-ndiswrapper ist ein Metapaket, welches das Paket ndiswrapper und das zugehörige Kernmodul ebenfalls berücksichtigt. Das Kernmodul steht auch als akmod zur Verfügung.
Programmbeschreibungen
ndiswrapper - Nutzerseitiges Programm
/usr/sbin/ndiswrapper gewährt die Kontrolle der Windows-Treiber.
Erlaubte Parameter und erforderliche Angaben:
-i $inf Datei
Richtet einen neuen Windows XP "Treiber" ein, liegen die Treiberinformationen nicht im gleichen Verzeichniszweig muss er angegeben werden.
-l (kleines L)
Gibt des momentan genutzen Treiber aus.
-r $Treiber
Entfernt den angegebenen Treiber.
-m
Erzeugt ein temporäres Alias für das logische Gerät wlan0 um bei Nutzung des Geräts automatisch das Kern-Modul zu laden.
ndiswrapper - Kernmodul
Das Kern-Modul lädt den eingerichteten Windows "Treiber" und führt ihn aus, damit das betreffende Funkgerät (WLAN-Modul/Karte) unter Linux genutzt werden kann.
Es verbindet die Kernaufrufe mit Windows XP-API-konformen Treiberanfragen.
Erlaubte Parameter und erforderliche Angaben:
if_name=$Stammbezeichnung
Bezeichnet den ersten Teil des Namens des logischen Geräts. Ohne Angabe wird wlan genutzt. Die niedrigste verfügbare Ganzzahl wird für den nummerischen Teil des Namens genutzt. Bei einem logischen wlan-Gerät wäre das wlan0. Gewünschte Bezeichnungen wie eth oder ndis stellen somit kein Problem dar.
proc_uid=$uid
Das Kernmodul erstellt Dateien in /proc/net/ndiswrapper/, in denen einige Informationen bereit gestellt werden. Gewöhnlich können diese Dateien nur von root gelesen werden. $uid bezeichnet die Nutzer-ID des Nutzers, welcher außerdem Leserechte hat. Ob mehrere Nutzer erlaubt sind ist mir unbekannt, ein Blick in den Quelltext könnte helfen.
proc_gid=$gid
Analog zum Punkt $uid, nur handelt es sich hier um den Nutzergruppen-Index.
Wurde das Kernmodul ndiswrapper bereits geladen und wird ein neuer Windows XP-Treiber eingerichtet, kann ausnahmsweise der neue Treiber an das Kermodul angemeldet werden ohne das Modul erneut zu laden.
Anmerkung: Der Fedora-Kern nutzt einen 4K großen Stapelspeicher. Viele Windows "Treiber" erwarten zumindest einen 8k großen Stapelspeicher.
Genauere Informationen hierzu, momentan leider nicht weit verfügbar.
Einrichtung
Über Ethernet
Nachdem das Repo erfolgreich eingerichtet wurde, können die benötigten Dateien im Terminal als root mit der Kommandozeile
oder unter GNOME in der oberen Randleiste im Menü Anwendungen/Software hinzufügen, samt Abhängigkeiten übertragen und eingerichtet werden.
Entscheidend ist die Wahl des Meta-Pakets.
Lokal, ohne direkte Anbindung
Falls keine direkte Internetverbindung besteht, müssen drei Pakete manuell eingerichtet werden.
ndiswrapper, das Metapaket und kmod-ndiswrapper, letzteres für den jeweils passenden Kern, von Hand heruntergeladen und (gleichzeitig!) installiert werden.
Für 32-Bit Intel-Architekturen finden sich die Pakete unter folgendem URL:
http://download1.rpmfusion.org/free/fedora/releases/10/Everything/i386/os/repoview/__nogroup__.group.html
Unter GNOME kann über das Symbol Über diesen Computer in der oberen Randleiste im Menü System die Ausgabenummer des Kerns eingesehen werden.
Im der Shell erledigt man diese Aufgabe wie folgt:
Ein Terminal öffnen!
cat /proc/version
oder
uname -r
Die Kommandozeilen sind quasi Synonyme. Das Programm uname fragt die Informationen aus /proc/version ab.
Für den Kern 2.6.27.5-117.fc10.i686 (Kern der Fedora 10 DVD) werden folgende Pakete benötigt:
http://download1.rpmfusion.org/free/fedora/releases/10/Everything/i386/os/kmod-ndiswrapper-1.53-5.fc10.9.i686.rpm http://download1.rpmfusion.org/free/fedora/releases/10/Everything/i386/os/kmod-ndiswrapper-2.6.27.5-117.fc10.i686-1.53-5.fc10.9.i686.rpm http://download1.rpmfusion.org/free/fedora/releases/10/Everything/i386/os/ndiswrapper-1.53-2.fc10.i386.rpm
Die Dateien lassen sich z.B. über ein USB-Laufwerk auf dem gewünschten System einrichten.
Ein Terminal öffnen:
Ein cd in das entsprechende Verzeichnis, Wechseldatenträger werden für gewöhnlich im Verzeichnis /media eingebunden.
Beispiel:
cd /media/disk su -
Kennzeichenfolge für root eingeben und bestätigen.
Nachbereitung
Besteht die Netzwerkverbindung, sollte das Repository RPM Fusion eingerichtet werden, da sonst bei einer Systemaktualisierung keine entsprechenden Pakete angefordert und empfangen werden. Alle anderen Pakete werden aktualisiert, aber nach einem Neustart mit dem neuen Kern ist keine Internetverbindung mehr möglich, da das entsprechende Kern-Modul von ndiswrapper nicht vorhanden ist.
Einrichten der Windows-Treiber
In der Shell
Treiberdateien von Windows können dann mit dem Befehl
installiert werden, wobei die Treiberdatei jene für Windows ist. Die von Windows genutzte Treiberdatei mit der Endung .sys muss dazu im gleichen Verzeichnis liegen, damit ndiswrapper die benötigten Funktionen daraus nutzen kann.
Anschließend lädt man das ndiswrapper-modul mit dem Befehl
Damit werden auch die Treiber für die Karte geladen, was dazu führt, dass auch die Karte selbst funktioniert.
Damit die WLAN-Karte auch nach einem Neustart einsatzbereit und für Network-Manager zur Verfügung steht, ist folgende Kommandozeile nötig:
Damit die WLAN-Karte auch nach einem Neustart einsatzbereit und für Network-Manager zur Verfügung steht, ist folgende Kommandozeile nötig:
Dies veranlasst ndiswrapper einen temporären Alias anzulegen.
Wir prüfen die Bindung des Treibers an das logische Gerät mittels:
Weiter geht es im Artikel Einrichtung eines Funktnetzwerkes unter Fedora.
Unter Gnome
Die Aufnahme des Paketes ndisgtk in RPMFusion wurde am 05.01.08 in #fedora-de kurz angerissen.
Prüfen welcher Windows-Treiber genutzt wird
ndiswrapper -l
Zeigt ob und welcher Treiber genutzt wird.
Blacklisten von vorhandenen Modulen
Blacklisten ist der Ausschluss von bestimmten Kern-Modulen aus der Liste von ladbaren Modulen für den Kern.
Die Ausschlüsse werden dem Kern in der Datei /etc/modprobe.d/blacklist bekannt gemacht.
Soll ndiswrapper genutzt werden, obwohl schon ein Treiber in Form eines Kern-Moduls geladen wurde kann dies zu einem Konflikt führen. Die Gründe für diese Ausschlüsse können unterschiedlich sein; manchmal arbeitet ein Treiber gar nicht, nur teilweise oder instabil. Oder ein Windows-Treiber stellt Funktionen zur Verfügung, die ein entsprechendes Kern-Modul (noch) nicht bietet.
prism54
Siemens Gigaset USB54 läuft mit diesem Treiber ohne Blacklist. Leider muss erst von Hand ein Netzwerkgerät hinzugefügt werden, siehe: system-config-network.
Ein Blick in Prism-Chipsatz könnte helfen, denn viele WLAN-Karten mit Prism-Chipsatz sollten mittlerweile auch ohne ndiswrapper ihren Dienst tun.
bcm4318 Chipsatz
Dies ist auch nötig wenn es sich um einen bcm4318 Chipsatz handelt, da dieser wie unter [1] beschrieben nur instabil läuft. Der korrekte Eintrag sieht dann so aus:
blacklist bcm43xx
Bei meiner Karte mit bcm43xx Chipsatz funktioniert aus mir unerklärlichen Gründen der Eintrag in die Datei /etc/modprobe.conf nicht. Um die Karte trotzdem beim Start zu aktivieren habe ich in die Datei /etc/rc.d/rd.local noch eine Zeile
eingefügt. Ist zwar nicht sehr elegant, aber funktioniert.