Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.


To help users requiring ndiswrapper for their wireless cards to get online with as little hassle as possible


Ubuntu prides itself on superior hardware detection, but like other distros it still has a weakness in wireless network support which often puts off new Ubuntu users.

Unfortunately, open source drivers are not available for many cards. An increasing number of desktop & laptop users are using wireless network cards, often as the only source of connecting to the Internet. On a new install, many of these cards require ndiswrapper to work. Finding this out and knowing what to do about it is rather tricky when you don't have any Internet access, and the usual support channels are unavailable.

Additionally it requires the command line to get working using programs on the CD even though a graphical utility, ndisgtk, is available (in universe)

Use cases

* Leonardo has just installed Ubuntu, but it isn't connected to the Internet even though his wireless card is attached and detected. He has the driver CD for the card, but no idea how install the driver.

* Raphael has a wireless card, but he doesn't know who makes it or what drivers he would need to install with ndiswrapper. He has a driver CD, but doesn't realize it can be there as he has never had to setup a wireless card before.

* Michelagelo wants to get on the Internet to order some pizza, but is scared to use the command line, and confused as to why a graphical tool to help him is only available via the Internet (which he can't get on).

* Donatello has a wireless card, knows he needs ndiswrapper, but has Internet access to get to the drivers. He wishes there was an automated process to download the drivers from his manufacturer's website and install the drivers.


This spec tries to alert the user that their wireless card has been found but the drivers not yet installed, and guide them through setting up the hardware (a Wizard if you will), by extending the functionality of ndisgtk, the ndiswrapper graphical utility.


* Cards that require ndiswrapper drivers would be detected using PCI-ID information from http://ndiswrapper.sourceforge.net/mediawiki/index.php/List

* During package build time, this list can be populated with all of the information available about wireless cards. Every time the package is rebuilt, a perl script can scrape the list and update the local copy. A utility can be shipped with the package to update the local list without rebuilding as well.

* A hal rule for these wireless devices would create a notification bubble saying that the wireless card has been detected which when clicked on would run something similar to/based on ndisgtk.

* When run, this would check for current connectivity to the web. If connected, it would provide a relevant link to the driver or give the user the option to insert the relevant CD.

* On insertion of CD, attempt find the relevant .inf file. Prompt the user for the inf files found (eg if a win2k, winxp, and winnt inf file were found, the user can choose the one they wanted) and setup ndiswrapper using the functions of ndisgtk.

* On future bootups, the hal popup would only come up for other wireless cards that don't have modules loaded for them.

* Implement workarounds as necessary such as blacklisting bcm4xxx? module for the correct cards identified via pci-id.

* Include ndiswrapper and ndisgtk-ng on the default install so all this can happen automagically (requires promotion of ndisgtk to main)



Data preservation and migration

Unresolved issues

Though out of scope for this spec, A separate specification could be created to discuss the feasibility of get permission from any major wireless vendors to distribute the driver blobs on the CD (clearly marked as being unsupported) which could then be automagically set up for the right wireless cards

BoF agenda and discussion


EasyWirelessDrivers (last edited 2008-08-06 16:37:29 by localhost)