SUSE Support

Here When You Need Us

Installing and configuring ndiswrapper on SLED 11

This document (7002752) is provided subject to the disclaimer at the end of this document.

Environment

SUSE Linux Enterprise Desktop 11 (SLED 11)
openSUSE 11 and 11.1

Situation

Some users are finding that the manufacturer for their wireless network card is not providing a Linux driver at this time.  If the only driver available is a Windows driver then this TID may provide a solution.  SUSE Linux Enterprise Desktop (SLED) 11 comes with a module called ndiswrapper. This module creates a wrapper around a Windows driver allowing it to communicate to Linux using the native Windows driver.

Resolution

Installation and Configuration

In the following solution we will be using a Dell D600 laptop which has a broadcom wireless chipset. Therefore the individual examples given may reflect files and results specific to this implementation, however you should be able to apply the same concept to the workstation and driver that you are using.

  1. Download your windows driver to some place on your Linux desktop. The driver files need to be the .sys and .inf files.

  2. Open YaST and select Software Management under the Software group.  On the Software Manger screen enter "ndiswrapper" in the package search field as show in this screenshot:



  3. Using Ctrl-Click select the ndiswrapper and ndiswrapper-kmp package that is appropriate for your kernel.  In this case the "pae" kernel is installed.  If you are unsure of which kernel you have installed just open a terminal window (right-click on the desktop and select "Open in terminal") and enter the command "uname -r".  You will see your kernel version followed by "-pae" or "-default".  Once you have the packages selected click on the Install button and then on Apply.  The packages will be installed from the installation source.  If you installed from DVD you will be asked to place the DVD in the drive.

    Note:  When installing the ndiswrapper packages a message will be displayed indicating that there is no support for ndiswrapper or the configuration associated with it.  We provide it as a convenience but cannot guarantee it will work with your Windows drivers.

  4. Once the software has been installed, open a terminal and su to root.

    #su
    Password:

    Change to the directory where the Windows driver files are located.  This will include at least one .inf file which is the file that you will identify for the installation.  In some cases there may be multiple .inf files.  These are for different versions of Windows.  You may need to try each to find the one that works for your system.  Be sure to remove the installed one before installing another.

    #cd wireless/

    Install the driver by typing ndiswrapper -i driver.inf where driver.inf is the actual name of the .inf file.

    #ndiswrapper -i bcmwl5a.inf
    Installing bcmwl5a
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2
    Forcing parameter IBSSGMode|0 to IBSSGMode|2

    Note:  If you receive the error message "couldn't copy driver.inf at /usr/sbin/ndiswrapper line 135" then you have either typed in the wrong driver name or put in the wrong path.

  5. To load the module type modprobe ndiswrapper.

    #modprobe ndiswrapper

    Verify that it loaded properly by running "ndiswrapper -l" to "list" the installed driver.  You should see something similar to this:

    <driver-name> : driver installed
    device (xxxx:xxxx) present (alternate driver: <native-driver-name>)

    If ndiswrapper indicates that the driver is invalid or hardware is not found then you will need to uninstall the driver and try a different one as described below under #6.

    If it is installed okay and working then you should see your wireless options show up under the NetworkManager. For example, if you right click on your NetworkManager icon you will see that Enable Wireless is checked.  Left clicking the NetworkManager icon should start showing detected networks.

    You can also verify that the module loaded properly by looking at the last entries to the /var/log/messages file by running "cat /var/log/messages" or using your favorite editor.  If the Windows driver did not load properly or find the associated hardware you will see ndiswrapper messages indicating the problem.

  6. If you need to try a different driver or .inf file (in the case of multiple .inf files) be sure to remove the currently installed driver before installing a different one.  Using the "ndiswrapper -l" command to list the driver name you are then ready to remove the driver by running "ndiswrapper -r <driverName>".  You are then ready to install the new one with the "ndiswrapper -i <driver.inf>" command.

  7. When you have verified that it is working create an alias for the file by typing ndiswrapper -m.

    #ndiswrapper -m
    Adding "alias wlan0 ndiswrapper" to /etc/modprobe.d/ndiswrapper

  8. When you displayed the driver with the command "ndiswrapper -l" the <native-driver-name> (if displayed) is the Linux driver that is being overridden by ndiswrapper.  To make sure this native driver does not load and potentially cause a conflict with the Windows driver through ndiswrapper you will want to add this driver to the "blacklist" so the system will know not to load it.

    Edit the file "/etc/modprobe.d/blacklist" and add a line that reads:

    blacklist <native-driver-name>

    Of course replace <native-driver-name> with the exact name of the driver as indicated in the "ndiswrapper -l" command.

Making the Connection Permanent

The modprobe ndiswrapper option will work until you reboot. Once the system has rebooted you will loose your wireless configuration unless you do one last bit of additional configuration.  To have this module load every time you reboot you need to add the module to the /etc/sysconfig/kernel file using your favorite editor. In this example the terminal is still in as root so we can edit the file by typing gedit /etc/sysconfig/kernel. Look for the line MODULES_LOADED_ON_BOOT="" and place ndiswrapper within the quotes. Save the file and it should now load when you reboot as well.

MODULES_LOADED_ON_BOOT="ndiswrapper"

Note:  If you are not editing the file as root then you will have a readonly copy and will not be able to save it.

Additional Information

An article for ndiswrapper with the openSUSE product (and some additional detail) can be found here:

http://en.opensuse.org/Ndiswrapper

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.

  • Document ID:7002752
  • Creation Date: 17-Mar-2009
  • Modified Date:28-Sep-2022
    • SUSE Linux Enterprise Desktop
    • SUSE Linux Enterprise Desktop

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com

tick icon

SUSE Support Forums

Get your questions answered by experienced Sys Ops or interact with other SUSE community experts.

tick icon

Support Resources

Learn how to get the most from the technical support you receive with your SUSE Subscription, Premium Support, Academic Program, or Partner Program.

tick icon

Open an Incident

Open an incident with SUSE Technical Support, manage your subscriptions, download patches, or manage user access.