ubuntuusers.de

ubuntuusers.deWikiWLANNdisWrapper

NdisWrapper

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Bei NdisWrapper handelt es sich um ein Werkzeug, welches die Windowstreiber für WLAN-Karten nutzt, um diese unter Linux zum Laufen zu bringen. Bei einigen Chipsätzen kann man auf der Homepage des Herstellers spezielle Chipsatz-Treiber bekommen. Diese sind den mitgelieferten Windows-Treibern vorzuziehen. Ndiswrapper benötigt sowohl eine Treiberdatei mit der Endung .inf als auch alle dazugehörigen Dateien (z.B. mit der Endung .sys) in demselben Verzeichnis.

Vorbereitung

Bevor man mit der Installation von NdisWrapper beginnt, sollte man sich unbedingt die Anleitung zur WLAN-Installation durchlesen! Grundsätzlich sollte fast jede WLAN-Karte mit NdisWrapper lauffähig sein. Ist die eigene Karte hier nicht aufgeführt, sollte man es trotzdem zumindest probieren.

Bei den meisten Karten in dieser Liste ist auch der verwendete Chipsatz und eine Downloadquelle für den Treiber angegeben. Sollte dies nicht der Fall sein, kann man es immer noch mit den beiliegenden Windows-Treibern versuchen. Die entsprechenden Treiber müssen zunächst auf die Festplatte kopiert und evtl. entpackt werden. Bei Dateien von einer Treiber-CD müssen noch die Schreibrechte [6] für alle Benutzer gesetzt werden. Ansonsten kann ndiswrapper diese nicht in das System einbinden.

Wenn die Treiberpakete als exe-Datei vorliegen, müssen diese über ein Windowssystem, mit Hilfe eines der Programme [1]

  • cabextract (universe [2])

  • unshield (universe [2])

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install cabextract unshield 

sudo aptitude install cabextract unshield 

oder mit Hilfe von Wine extrahiert werden (Pseudoinstallation). Einige Pakete können auch direkt mit einem Archivmanager entpackt werden, einfach ausprobieren.

Wurde das Windows-Archiv mit wine entpackt, sind die Dateien in dem verborgenen Ordner $HOME/.wine/drive_c/Programme/Name_des_Treibers zu finden.

Achtung!

Ndiswrapper und die nachfolgend genannten Pakete aus den offiziellen Paketquellen sind ab Ubuntu 12.10 fehlerhaft und dürfen momentan nicht verwendet werden! Fehlerreport 1023645 mit Lösungsmöglichkeit. Dies gilt ebenfalls für Ubuntu 12.04-2/3 mit Kernelversion 3.5 oder 3.8! Hier kann aber einfach Kernel 3.2 nachinstalliert werden um das Problem zu umgehen.

Aktuell werden Installationspakete für Ubuntu 12.10 und 13.xx über ein PPA angeboten. Dies ist die einfachste Lösung auch ohne bestehende Internetverbindung unter Ubuntu. Referenzartikel dazu. Unter 13.10 funktionieren die Pakete aus den Quellen, Referenzartikel.

ndiswrapper-ppa auf launchpad.net

Alternativ kann Version 1.58rc1 gemäß dieser Anleitung manuell nachinstalliert werden.

Zunächst müssen folgende Pakete installiert [1] werden:

  • ndiswrapper-utils-1.9

  • ndiswrapper-common

  • ndisgtk (in main)

  • dkms

  • ndiswrapper-dkms

  • gksu

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install ndiswrapper-utils-1.9 ndiswrapper-common ndisgtk dkms ndiswrapper-dkms gksu 

sudo aptitude install ndiswrapper-utils-1.9 ndiswrapper-common ndisgtk dkms ndiswrapper-dkms gksu 

Ist am betroffenen PC keine Internetverbindung zum Herunterladen der ndiswrapper-Pakete vorhanden, können die Pakete von der Ubuntu Installations-CD verwendet werden. Die deb-Installationspakete befinden sich im Verzeichnis /pool/main/n und müssen nur nacheinander doppelt angeklickt werden. Siehe auch Paketinstallation DEB.

Das Paket ndiswrapper-dkms ist leider nicht auf CD enthalten, kann aber so wie alle anderen Pakete auch direkt vom Server {dl} heruntergeladen werden. Auf zusätzlich benötigte abhängige Pakete mit dem roten Punkt ist dabei zu achten.

Installation des Treibers

Achtung!

Für 32 bit-Systeme muss natürlich ein 32bit-Treiber, für 64 bit-Systeme ein entsprechender 64 bit-Windows-Treiber verwendet werden

Nach der Installation der Pakete klickt man unter "System -> Systemverwaltung -> Windows WLAN Treiber" auf "Neuen Treiber installieren". Nach der Auswahl der entsprechenden inf-Datei des Windowstreibers sollte der Treiber in der Liste auftauchen und darunter auch "Hardware verfügbar: Ja" stehen.

Treiber wird nicht gefunden

Sollte die inf-Datei nicht gefunden werden hilft es, den Treiber auf ein externes Medium zu entpacken z.B. USB Stick. Dann erneut "System -> Systemverwaltung -> Windows WLAN Treiber" aufrufen und bei Laufwerk USB Stick wählen hier die entsprechende inf Datei wählen.

Hat es dennoch nicht geklappt, kann es mitunter helfen ndisgkt manuell als Root per

gksu ndisgtk 

zu starten.

Hinweis:

ndisgtk findet den Windows-Treiber nicht wenn sich im Pfad Ordnernamen mit Leerzeichen befinden.

Installation des Treibers (Im Terminal)

Manchmal funktioniert der Weg über ndisgtk nicht. Man kann aber ohne weiteres auf das Terminal [3] ausweichen:

sudo ndiswrapper -i /Pfad_zum_Windowstreiber/Dateiname.inf 

Man sollte jetzt mal einen Blick in /etc/ndiswrapper/ werfen. Dort sollte nun ein neuer Ordner erscheinen, der den Namen der bei der Installation verwendeten *.inf Datei trägt und die Treiber- und Firmwaredateien sowie die durch Ndiswrapper angelegten Konfigurationsdateien enthält.

Mit folgendem Befehl lässt man sich den Status des Treibers anzeigen.

ndiswrapper -l 

Die Ausgabe sollte etwa so aussehen:

Treibername  driver present, hardware present

Jetzt kann man das Modul ndiswrapper laden [5].

sudo modprobe ndiswrapper 

Die Karte sollte jetzt funktionieren und kann benutzt werden.

Damit das Modul beim Systemstart oder beim Hinzufügen der Hardware automatisch geladen wird, gibt man

sudo ndiswrapper -ma 

ein, was eine Aliastabelle für die verwendeten Geräte-ID anlegt.

Fehlersuche

Zur Kontrolle und Fehlersuche bei Problemen.

Versuchen Ndiswrapper manuell zu laden:

sudo modprobe ndiswrapper 

Dabei werden ggf. Fehler angezeigt. Erfolgt keine Rückmeldung, wurde das Modul in den Kernel eingebunden.

Möglicherweise wird das Modul aber nicht gefunden. Die Ausgabe sieht dann etwa so aus:

FATAL Module Ndiswrapper not found.

Es wurden nicht alle erforderlichen Programmpakete installiert, wahrscheinlich fehlen die Pakete dkms und ndiswrapper-dkms. Das passiert vor allem nach einem Systemupgrade von einer früheren Ubuntuversion auf Ubuntu 12.04. Ndiswrapper und alle benötigten Pakete dann manuell und nach Möglichkeit über Kabelverbindung nachinstallieren wie im ersten Abschnitt beschrieben. Versuch anschließend wiederholen.

Anschließend kann überprüft werden, ob eine Schnittstelle initialisiert wurde:

iwconfig 

Wenn nicht, das Kernel-Log auf Fehlereinträge hin auslesen:

dmesg | egrep 'ndis|wlan' 

Typische Fehler

falsche Treiberversion

Es wurde unter einem 64bit Systemkern ein 32bit Windows-Treiber installiert, oder umgekehrt. Treiber deinstallieren und einen zur Systemarchitektur passenden Treiber verwenden.

ndiswrapper version 1.57 loaded (smp=yes, preempt=no)
usbcore: registered new interface driver ndiswrapper
ndiswrapper (check_nt_hdr:150): kernel is 64-bit, but Windows driver is not 64-bit;bad magic: 010B

(hier wurde ein 32bit Treiber unter einem 64bit Systemkern verwendet.

Initialisierungsfehler

Meist Initialisierungsfehler -22. Dieses Problem tritt bei bestimmten 32bit und 64bit Windows Gerätetreibern auf.

ndiswrapper: probe of 0000:00:08.0 failed with error -22
..
ndiswrapper (pnp_start_device:395): Windows driver couldn't initialize the device (C0000001)

Abhilfe schafft eine manuelle Installation von Ndiswrapper Version 1.57 (ab Ubuntu 12.04 Standard). Anleitung weiter unten im Artikel. Alternativ kann ein Initialisierungsskript verwendet werden.

Ungeeigneter Treiber

Diverse Meldungen „unknown symbol“. Verwendete Treiberversion ist nicht für Ndiswrapper geeignet. Ndiswrapper kann einige Eigenschaften des Windows-Treibers nicht implementieren. Die Geräteinitialisierung scheitert oder es funktioniert einfach nicht. Dieses Problem tritt meistens bei der Verwendung neuerer Windows7 oder Vista Treibern auf.

Beispiel:

ndiswrapper (import:233): unknown symbol: NDIS.SYS:'NdisAllocateNetBufferAndNetBufferList'
ndiswrapper (import:233): unknown symbol: NDIS.SYS:'NdisMIndicateReceiveNetBufferLists'
usw.
...

Treiber deinstallieren und nach Möglichkeit eine ältere Version für Windows-XP/2000/98 verwenden.

Ndiswrapper wird nicht geladen

Ndiswrapper startet u.U. nicht automatisch bei Systemstart. Ab Ubuntu 11.10 wird die benötigte Konfigurationsdatei nicht mehr im entsprechenden Ordner angelegt, kann aber einfach manuell kopiert werden. Dann wird die WLAN-Karte oder der WLAN-Stick auch bei Systemstart direkt erkannt.

Alias-Tabelle prüfen:

cat /etc/modprobe.d/ndiswrapper 

Hier werden die vom Ndiswrapper benötigten Geräte-ID's abgelegt welche in der *.inf-Datei der installierten Windows-Treiber enthalten sind.

Konfigurationsdatei kopieren, sollte diese fehlen:

sudo cp /etc/modules.conf /etc/modprobe.d/ndiswrapper.conf  

Deinstallation eines Treibers

Installiert man über Ndiswrapper einen neuen Treiber, ist es eventuell vonnöten den alten zu deinstallieren. Zuerst findet man mittels

sudo ndiswrapper -l 

den Namen des installierten Treibers heraus. Das Entfernen des Treibers geschieht schließlich mit

sudo ndiswrapper -r namedestreibers 

Fehlerhafte Treiber, unvollständige Installationen oder leere Installationsverzeichnisse unter /etc/ndiswrapper und /etc/modprobe.d/ndiswrapper müssen ggf. gelöscht werden.

Konfiguration der Karte

Wenn der Treiber erfolgreich geladen wurde, kann an dieser Stelle auf der Übersichtsseite mit der Konfiguration fortgefahren werden.

Ndiswrapper aus den Quellen kompilieren

Vorbereitung

Damit das Unterfangen gelingt, benötigt man das folgende Paket [1]:

  • build-essential

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install build-essential 

sudo aptitude install build-essential 

Außerdem wird das Paket linux-headers passend zur eigenen Kernel-Version und -Architektur (-generic, -386, -generic-pae usw.) benötigt. Dieses Paket lässt sich über den folgenden Befehl installieren:

sudo apt-get install linux-headers-$(uname -r) 

Im Terminal [3]:

sudo apt-get install --reinstall linux-headers-$(uname -r) linux-headers-generic build-essential 

Vorhandene Ndiswrapper-Version deinstallieren, dabei auch ndiswrapper-dkms deinstallieren, falls dies verwendet wurde:

sudo apt-get remove --purge ndiswrapper-common ndiswrapper-utils-1.9 ndiswrapper-dkms
sudo rm /lib/modules/$(uname -r)/kernel/ubuntu/ndiswrapper/ndiswrapper.ko 

NdisWrapper 1.57 installieren

(nur ab Ubuntu 10.04 - 11.10 erforderlich, Version 1.57 ist ab Ubuntu 12.04 in den Paketquellen enthalten)

Manuelle Installation

Zunächst wird die aktuelle Version bei Sourceforge {en} heruntergeladen.

wget http://downloads.sourceforge.net/project/ndiswrapper/stable/1.57/ndiswrapper-1.57.tar.gz 

Nachdem man in das Verzeichnis gewechselt ist, in dem das heruntergeladen Archiv ist, entpackt man es mit

tar -xvf ndiswrapper-1.57.tar.gz 

und wechselt mittels

cd ndiswrapper-1.57 

in das Verzeichnis der entpackten Dateien.

Module bauen und in das System einbinden:

make
sudo make install
sudo depmod -a
sudo update-initramfs -u 

Prüfen:

modinfo ndiswrapper 

Version 1.57 muss angezeigt werden. Ist alles fehlerfrei abgelaufen, kann der Gerätetreiber wie oben beschrieben über Terminal [3] installiert werden. Das grafische Tool ndisgtk zu Ndiswrapper darf in diesem Fall nicht aus den offiziellen Paketquellen installiert werden, kann aber nun ebenfalls manuell gebaut und installiert werden. Anleitung dazu im Forum.

Hinweis:

Nach einem Kernel-Upgrade muss Ndiswrapper für die nun verwendete Kernelversion neu gebaut und installiert werden.

cd ndiswrapper-1.57
make clean
make
sudo make install
sudo depmod -a
sudo update-initramfs -u 

Diese Revision wurde am 17. Juli 2014 21:09 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, Netzwerk, WLAN