Some vendors do not release specifications of the hardware or provide a linux driver for their wireless network cards. This project provides a linux kernel module that loads and runs Ndis (Windows network driver API) drivers supplied by the vendors.
[http://ndiswrapper.sourceforge.net/phpwiki/index.php/List?PHPSESSID=b28b87ff0aec7df96a15472b24b07901 Before you buy: card list].
To compile and install the module with debian ( provided you have the standard debian kernel )
apt-get install module-assistant ndiswrapper-utils ndiswrapper-source
module-assistant auto-install ndiswrapper
It should also work to use the precompiled ndiswrapper-modules-<deb kernel version> that matches your installed kernel version. Kernel 2.6.8-3-686 and ndiswrapper-module-2.6.8-3-686 work well on a Dell Inspirion 1200 and the Dell branded Broadcom BCM4306 802.11b/g Wireless LAN Controller.
Configure on insert / Hotplug
According to a DebianEtch entry on the ndiswrapper wiki, an 'allow-hotplug wlan0' entry in /etc/network/interfaces is about all it takes to get the card to be automatically configured and brought up when inserted (beyond the required steps to configure the card for manually bringing the interface up.)
On Sarge this does not appear to be the case. Adding that line does not make hotplug 'just work'. This is most likely due to the lack of an entry for ndiswrapper in /lib/modules/<kernel version>/modules.pcimap. According to the hotplug overview when new hardware is detected the MODULE_DEVICE_TABLE map is consulted to determine which module is responsible for the device. Without that entry or some other help hotplug will not 'just work' for the device.
The easiest workaround is to require the ndiswrapper module at boot so that it is always loaded and ready to claim the hardware. Just add it to the list in /etc/modules.
The most difficult workaround (for many) may be to edit the ndiswrapper source and recompile so that it will make MODULE_DEVICE_TABLE entries for your hardware.
An inbetween workaround may be to modifiy /etc/hotplug/pci.agent to parse an /etc/hotplug/pci.handmap and have it include the hardware details necessary to load ndiswrapper when your card is inserted, like you can do with usb.handmap. This step and the re-coding are probably best left to the developers which leaves us with /etc/modules.
There seems to be a couple different ways documented to enable hotplugging on interfaces (once hotplugging is working for ndiswrapper). Mentioned in the DebianEtch page on the ndiswrapper wiki is the line allow-hotplug wlan0. The man page for the interfaces file confirms that this is the intended way to enable hotplug. In /etc/hotplug/net.agent, you are directed to include mapping hotplug stanzas in /etc/network/interfaces.
On a Debian 3.1 / Dell Inspiron 1200 system the allow-hotplug entry did not seem to be necessary. The map stanza seemed to be enough, once ndiswrapper was already loaded. YMMV.