Home Wiki > SDB:Wireless-Ndiswrapper
Sign up | Login

SDB:Wireless-Ndiswrapper

tagline: Aus openSUSE

NDISwrapper ist ein Programm, das mangels Linux Treiber-Unterstützung die Windows Anwendungsdatei (*.inf), welche Inhalt der erworbenen Hardware ist, verwendet um die Wireless-Geräte auf openSUSE System zur Arbeit zu bewegen.
Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png

Warum (und warum nicht) NDISwrapper

Einige Anbieter geben keine Spezifikation der Hardware heraus oder unterstützen keine Linux-Treiber für ihre WLAN-Netzwerkkarten. Das NDISwrapper-Projekt implementiert die Programmierschnittstellen (API) und NDIS (Network Driver Interface Specification) API des Windows-Kernel in den Linux-Kernel. Ein Windows-Treiber für eine WLAN-Netzwerkkarte ist dann mit dieser Implementierung verbunden, so dass der Treiber so läuft, als ob er unter Windows laufen würde, ohne binäre Emulation.

Bitte beachten Sie, dass Sie die originalen WLAN-Treiber (wie b43, ath9k, usw.) verwenden, der vom Kernel unterstützt wird, wenn immer es möglich ist. NDISwrapper funktioniert durch die Verbindung des Windows-Treibers mit dem Kernel-Raum; für Kernel Entwickler: das ist eine Verletzung der GPL Lizenz des Kernels.

Überdies funktioniert NDISwrapper nicht mit den Standard-Kernel-Eigenschaften, wie 4K Stacks, und beschränken den Anwender auf den reinen Binärtreiber im Kernel Raum, den der Anwender nicht modifizieren oder beheben kann. Weiterhin funktioniert NDISwrapper überhaupt nicht ohne Windows-Treiber, die 1. nicht verteilbar und 2. nicht Open Source sind.

Ergänzend, weil der NDISwrapper an den Kernel gebunden ist, haben Bugs im Windows-WLAN-Treiber das Potential Kernel abstürze zu verursachen, obwohl die gleichen Bugs in Windows keine Probleme verursachen könnten. Es ist also ein Stabilitätsproblem zu berücksichtigen. Ein weiteres Problem ist, wenn Sie einem Kernel-Bug begegnen, das in einem "oops" endet, weil die meisten Kernel Entwickler Sie fragen werden, das Problem zu reproduzieren, ohne den Kernel zu verderben, indem Sie ihn ohne nicht-GPL-Treiber laden.


Wie erhält man NDISwrapper

Von der openSUSE CD/DVD

Ndiswrapper ist auf Ihrer openSUSE Installations-CD/DVD enthalten. Nutzen Sie den Softwaremanager YaST und stellen Sie sicher, dass folgende Pakete installiert sind:

  • ndiswrapper
  • ndiswrapper-kmp-[default|smp|xen]
  • wireless-tools

Wählen Sie das passende Kernel Modul-Paket (kmp) für Ihre Architektur. Um herauszufinden, welches Kernel Modul Sie verwenden, geben Sie folgenden Befehl in der Konsole ein:

$ uname -r


Vom Repository Wireless (WLAN)

Sie können die letzte Version von NDISwrapper vom Repository:Wireless-Treiber erhalten.

  • Bitte prüfen Sie zuerst, welche Kernel-Version auf Ihrem Rechner läuft:
$ uname -r


  • Dann verschaffen Sie sich Root-Rechte mit:
$ su -
  • In Abhängigkeit von Ihrer openSUSE Version und der letzten Kernel-Version müssen Sie das richtige Repository wählen:

Bestands-Kernel

Wenn Sie Ihren Kernel nicht aktualisiert haben, sind das die richtigen Repositorys, die Sie hinzufügen müssen:

kernel 2.6.37. i386 or x86_64 GNU/Linux (openSUSE 11.4)

$ sudo zypper ar http://download.opensuse.org/repositories/driver:/wireless/openSUSE_11.4 ndiswrapper


kernel 2.6.34. i386 or x86_64 GNU/Linux (openSUSE 11.3)

$ sudo zypper ar http://download.opensuse.org/repositories/driver:/wireless/openSUSE_11.3 ndiswrapper


Aktuellste Kernel-Versionen

Wenn Sie Ihren Kernel auf die neueste Version mit YAST per Online Update aktualisiert haben, müssen Sie stattdessen folgende Repositorys hinzufügen:

openSUSE 11.4: shell|$ sudo zypper ar http://download.opensuse.org/repositories/driver:/wireless/11.4-update/ ndiswrapper}}

openSUSE 11.3:

$ sudo zypper ar http://download.opensuse.org/repositories/driver:/wireless/11.3-update/ ndiswrapper



  • Nachdem Sie die Repositorys hinzugefügt haben, können Sie sie installieren:

Wenn Sie einen "Desktop" Kernel verwenden:

$ sudo zypper in ndiswrapper ndiswrapper-kmp-desktop


Wenn Sie einen "Standard"-Kernel verwenden:

$ sudo zypper in ndiswrapper ndiswrapper-kmp-default


Wenn Sie einen "pae" Kernel verwenden:

$ sudo zypper in ndiswrapper ndiswrapper-kmp-pae


Aus dem Quellcode

Sie können ebenso die neueste Version von der Ndiswrapper Seite herunterladen und kompilieren .


Beschaffung der Windows-Treiber

Auf den Ndiswrapper-Seiten unter Dokumentationkönnen Sie eventuell heraus bekommen, ob Ihre spezielle Hardware mit Ndiswrapper funktioniert.

Wenn Sie einen 64-Bit Linux-Kernel nutzen, müssen Sie einen 64-Bit Windows-Treiber finden. (Die 64-Bit-Version ist schwieriger zu finden als eine 32-Bit-Version.) Wenn Sie keinen 64-Bit-Windows-Treiber finden können, müssen Sie die 32-Bit-Version von openSUSE installieren!

Von Ihrer Windows-Partition

Wenn Sie ein Dual-Boot-System besitzen und Ihre Karte funktioniert unter Windows, besteht auch eine Möglichkeit darin, Ihre Treiber von der Windows-Partition zu übernehmen. (Wenn Ihre Windows-Installation 32-Bit-System ist, dann sind auch die Treiber 32 Bit bzw. 64 Bit bei einem 64-Bit-System.)

Im Windows-System gehen Sie zum Geräte-Manager und suchen Sie Ihre Wireless-Karte unter "Network adapters", führen einen Rechts-Klick darauf aus und gehen zu Properties->Driver->'Driver Details...'. Jetzt sollten Sie den Pfad zur *.sys-Datei finden, gewöhnlich im Verzeichnis: C:\windows\system32\drivers\.

Nun nutzen Sie die Windows-Suchfunktion, um die passende *.inf-Datei zu finden. Sie ist nicht mehr als eine einfache Textdatei mit einer Liste aller geforderten Treiberdateien. So eine einfache Suchfrage in Windows würde sein:

Windows-Suchfrage
Alle Teile des Dateinamens: *.inf
Ein Wort oder Begriff innerhalb der Datei: <the *.sys path found above>
Siehe in: örtliche Festplatte (C:)

Diese Suche könnte eine Weile dauern! Wenn Sie die Datei gefunden haben, schauen Sie in die *.inf-Datei mit einem Texteditor und prüfen Sie, ob Sie noch mehr Dateien finden müssen. Wenn Sie Glück haben, ist alles in einem einzigen Verzeichnis. (zum Beispiel: C:\Programmdateien\Atheros\Treiber\) Kopieren Sie alle diese Dateien an einen gemeinsamen Ort oder auf einen externen USB-Datenspeicher, der auch für Ihr Linux-System zugänglich ist.

Mit einer Treiber-Installations-Software

Es gibt mehrere Orte, wo Sie versuchen können, Ihren Treiber zu finden:

  • Die Installations-CD, die Sie mit ihrer Hardware erhalten haben;
  • Die Support-Webseite Ihres PC- oder Karten-Herstellers;
  • Durchsuchen Ihrer *.sys-Datei mit Google;

Wenn Sie Glück haben, können Sie die geeignete *.inf-Datei und die mit Ihr verbundenen Dateien sehr leicht finden. Manchmal müssen Sie eine *.cab-Datei entpacken, die Ihren Treiber enthält. Sie können versuchen, diese *.cab-Datei mit cabextract (ein Kammandozeilenwerkzeug) zu entpacken.


Sie können cabextract erhalten durch:

$ su -c 'zypper in cabextract'


Noch einmal, wenn Sie alle Ihre Dateien gefunden haben, kopieren Sie sie an einen Ort, auf den Sie unter LINUX Zugriff haben.

Verfahren mit Mehrfach-*.inf-Dateien

Wenn es zwei oder mehr .inf-Dateien gibt, bedeutet das, dass Treiber für verschiedene Windows-Versionen vorhanden sind.

Zum Beispiel:

bcmwl5a.inf und bcmwl5.inf


Der erste ist für win98 und der zweite für Win2K, Me und XP. So kann es sein, dass der Treiber für win98 funktioniert und der für XP nicht. Hier gilt ausprobieren.


Treiber Installation

  • Öffnen Sie ein Konsolenfenster und erlangen erweiterte Nutzerrechte (Root-Rechte) mit dem su Kommando. Danach wird nach Ihrem Passwort gefragt:
$ su -


  • Haben Sie Root-Rechte, geben Sie z. B. ein:
# ndiswrapper -i /path/to/drivers/bcmwl5a.inf


Natürlich müssen Sie darauf achten, dass Sie den aktuellen Pfad zu Ihrer .inf-Datei eingeben.

Tipp: Anstatt den absoluten Pfad einzugeben, sollten Sie mit dem cd-Kommando in das Verzeichnis wechseln, in dem sich die .inf-Datei befindet, bevor Sie das Installationskommando ausführen:

cd '/home/Unterordner/.../Ordner in dem die .inf-Datei enthalten ist'
und danach können Sie den Treiber installieren, indem Sie den .inf-Dateinamen eingeben:

ndiswrapper -i filename.inf
  • Wenn alles gut geht, geben Sie ein:
# ndiswrapper -l


  • Wenn Sie einen passenden/kompatiblen Windows-Treiber installiert haben, Ndiswrapper wird etwas ähnliches wie das Folgende anzeigen:

<Treiber-Bezeichnung> : Treiber installiert
Treiber (xxxx:xxxx) vorhanden (anderer Treiber: <ursprünglicher-Treiber-Name>)


Während <Treiber-Bezeichnung> den Namen des mit Ndiswrapper installierten Windows-Treibers zeigt, ist <ursprünglicher-Treiber-Name> die Bezeichnung des ursprünglichen Linux-Treibers, der überschrieben wurde.

Dieser ursprüngliche Treiber müsste möglicher Weise auf eine 'schwarze Liste' gesetzt werden, wenn er installiert ist und erkannt wird, wie angegeben in der Log-Datei: '/var/log/messages'. Das auf die schwarze Liste setzen verhindert, dass der ursprüngliche Treiber versucht, auf die Hardware einzuwirken, da wir wollen, dass der von Ndiswrapper installierte Treiber diese bedienen soll. Um einen ursprünglichen Treiber auf die schwarze Liste zu setzen, müssen Sie eine Zeile in die Datei '/etc/modprobe.d/blacklist' einfügen, die lautet:

blacklist <ursprünglicher-Treiber>


wobei <ursprünglicher-Treiber> ist der aktuelle Name des Treibers, der auf die schwarze Liste gesetzt wird.
  • Wenn Ndiswrapper sagt "ungültiger Treiber", dann müssen Sie ihn deinstallieren und es mit einem anderen versuchen.
  • Um einen Treiber zu deinstallieren, müssen Sie folgendes eingeben:
# ndiswrapper -r <dann den Namen des Treibers, der zu deinstallieren ist>


  • Eine zusätzliche Prüfung besteht darin, in
# /etc/ndiswrapper


zu schauen, ob ein Verzeichnis benannt, wie der installierte Treiber, vorhanden ist.

USB-WLAN-Stick

Wenn Sie einen USB-WLAN-Stick benutzen, gibt es einen zusätzlichen Schritt, den Sie ausführen müssen, um den Treiber vernünftig zu installieren. Sie müssen Ndiswrapper die Vertreiber-ID und die Produkt-ID Ihres USB-WLAN-Sticks mit der -d Option zur Verfügung stellen. Schauen Sie unter YAST Hardware Information Kategorie USB nach. Alternativ können Sie eingeben:

$ lsusb


Damit sollten es möglich sein, zwei vierstellige Nummern wie 168c und 0013 zu erhalten.

Um die USBIB mit dem Treiber zu verbinden, geben Sie ein:

# ndiswrapper -d xxxx:xxxx <dann den Namen des Treibers>


Werfen Sie einen Blick auf den Befehl:

$ dmesg

um den Treiber erfolgreich zu laden/zu verbinden.

Wenn es funktioniert, können Sie den Alias für Ndiswrapper in die modules.conf mit

# ndiswrapper -m

schreiben.

Laden Sie Ndiswrapper mit folgendem Befehl:

# modprobe ndiswrapper

Danach können Sie ihn mit YAST konfigurieren.


Konfigurieren Sie Ihre Karte mit YaST

Wenn Sie das Problem haben, dass Ihre WLAN-Karte vom (K)NetworkManager nicht erkannt wird, müssen Sie zusätzliche Schritte ausführen, um Ihre Karte zu konfigurieren.

Seit openSUSE 11.1 können Sie nicht länger die Netzwerkeinstellungen mit YAST durchführen, wenn das Netzwerk vom NetworkManager kontrolliert wird. Wenn Sie ein Problem mit (K)NetworkManager haben, finden Sie auf folgender Seite http://en.opensuse.org/NDISwrapper#Conflicts_with_NetworkManager mehr Informationen.

Es sind eine Vielzahl von Konfigurationen möglich:

  • Starten Sie YaST's Netzwerkkonfiguration:   Netzwerkgerät → Netzwerk Karte
  • Gehen Sie zum "Übersicht" Reiter
  • Wähle den: "Hinzufügen" Knopf in der unteren Hälfte
  • Wähle:
    • Vorrichtungstyp: "Wireless"
    • Konfigurations-Name: "0" (oder was auch immer :))
    • Hardware Konfigurations-Name: "statisch-0"
    • Modul Name: "ndiswrapper"
    • Options: "" (bleibt leer)
    • Nicht "PCMCIA" oder "USB" auswählen
    • ... und schließlich "Weiter"
  • Auf dem nächsten Bildschirm wählen Sie DHCP in "Hostname und Server-Name" und in "fortgeschritten → DHCP Optionen", dann Klick "Weiter"
  • Im "Wireless-Netzwerk-Kartenkonfiguration"-Fenster wähle (= behalte die Standardeinstellung):
    • Operations Modus: "durchgeführt"
    • Netzwerk Name (ESSID): "" (bleibt leer)
    • Authentifizierungs-Modus: "Offen"
    • Eingabe Typ: "Passphrase"
    • Verschlüsselungs-Schlüssel: "" (bleibt leer)
    • .. . und schließlich "Weiter"
  • Der Kwallet-manager könnte öffnen -- geben Sie ihm Ihr Passwort und ignorieren Sie das Öffnen (es macht nichts)
  • Ignorieren Sie die Warnung, dass "die Verschlüsselung auf eigenes Risiko erfolgt"
  • zurück in der "Netzwerk-Karten-Konfigurationsübersicht wähle "Weiter".

Ihre Karte ist konfiguriert.

Sie könnten nun den Netzwerkmanager in Ihrer Taskleiste öffnen und einen der gefundenen Netzwerke auswählen. Wenn die LAN-Verbindung noch besteht, müssen Sie diese Verbindung unterbrechen.

Wenn Ihre SSID (WLAN-Name) nicht angezeigt wird, können Sie einen eigenen speziellen im Netzwerkmanager auswählen.


Hardware spezifische Informationen

Atheros

Wenn Sie eine auf Atheros basierende Karte besitzen, ist es empfehlenswert, es zuerst mit madwifi zu versuchen. Wenn Sie madwifi nicht zum Laufen bekommen, Ndiswrapper macht meistens den Job auch, obwohl Sie einige kleinere Probleme erfahren könnten. Schauen Sie auch auf SDB:Atheros madwifi nach mehr Informationen.

Bemerkung: Nach anfänglichen Versuchen nach dieser Anleitung auf einem IBM t43p, zeigte sich, dass es nicht mit der Standardeinstellung von Ndiswrapper funktionierte. Der Autor musste die letzte stabile Version (1.43 stabil) herunterladen und folgende Schritte ausführen: compile / make / make install. Schließlich musste die Zeile "modprobe ndiswrapper" am Beginn von /etc/rc.d/network eingefügt werden, um WLAN beim Booten starten zu können.

Weitere Bemerkung: Vergessen Sie nicht, wenn Sie Ihr openSUSE aktualisieren, besitzen Sie bereits den neuesten Kernel. Sie müssen dann Ndiswrapper erneut kompilieren.

Für den AR5005G (häufig verwendeter Laptop) werden Sie die neuesten Windows-Treiber benötigen. Wenn Sie Zugang zu der Windows-Installation haben, können Sie die Treiber von C:\Program Files\Atheros\Driver kopieren.

Sie können ebenso versuchen, den Treiber von der Windows-Treiber-CD extrahieren oder den 32bit Atheros-NDIS-Treiber von hier herunter zu laden. (Es gilt als die letzte Möglichkeit, wenn es keinen anderen Weg gibt, an die Treiber heranzukommen. Wenn Sie die 64bit-Version verwenden, brauchen Sie auch die Treiber für 64 bit.

Broadcom


openSUSE 11.2

Der Treiber für den Broadcom-WLAN-Adapter kann von der offiziellen Webseite http://www.broadcom.com/support/802.11/linux_sta_SUSE.php herunter geladen werden.

Laden Sie die Tar-Datei herunter und entpacken sie mit

# tar xvf hybrid-portsrc-x86_32-v5.60.48.36.tar.gz


Installieren Sie Kernel-Entwicklungsumgebung:

$ sudo zypper in -t pattern devel_kernel


Wechseln Sie in das Verzeichnis als Root, make und installiere den Treiber:

  1. cd hybrid-portsrc-x86_32-v5.60.48.36
  2. make
  3. make install
  4. depmod


Prüfen Sie, ob der Treiber installiert ist:

  1. modprobe -l


Nun können Sie den Treiber laden und versuchen zu verbinden:

# modprobe wl


Wenn etwas schief geht, gehen Sie bitte zu Wlan-Probleme und prüfen, ob Sie einen Bug-Report an Bug-Report senden wollen.


Externe Links