DLink DWL-G650+ Wireless LAN Card and Linux

This document describes getting a Dlink Wireless LAN card (DWL-G650+) to work under Debian GNU/Linux 3.1 (Sarge). I run a custom 2.6.10 kernel on an IBM ThinkPad R40E. Make sure your kernel has PCMCIA support. Do not bother about acx100 driver set, because it does not support encrypted traffic for this card as of this writing.

Install ndiswrapper, which is also available in the Sarge package repository:

apt-get install ndiswrapper-source ndiswrapper-utils
ndiswrapper contains a userland component (ndiswrapper-utils) and a kernel module.

Get the Windows driver for DWL-G650+ from DLink's site.

Unzip, change to the driver directory, and have ndiswrapper read the .INF file:

ndiswrapper -i GPLUS.inf

The kernel module's source will lie in /usr/src/ndiswrapper-source.tar.bz2. Untar, and issue these commands:

make
make install
This will install the kernel module. If make fails, consult package documentation. (You probably do not have the kernel headers.)

Load the kernel module:

depmod -a
modprobe ndiswrapper
(If you want it to be loaded every time, append 'ndiswrapper' to /etc/modules.)

Plug in the card, and watch /var/log/syslog

$ tail -f /var/log/syslog
Mar  9 19:42:55 localhost kernel: cs: pcmcia_socket0: voltage interrogation timed out.
Mar  9 19:42:56 localhost kernel: PCI: Enabling device 0000:02:00.0 (0000 -> 0002)
Mar  9 19:42:56 localhost kernel: ACPI: PCI interrupt 0000:02:00.0[A] -> GSI 11 (level, low) -> IRQ 11
Mar  9 19:42:56 localhost kernel: PCI: Setting latency timer of device 0000:02:00.0 to 64
Mar  9 19:42:57 localhost kernel: ndiswrapper: using irq 11
Mar  9 19:42:58 localhost kernel: wlan0: ndiswrapper ethernet device 00:11:95:15:0a:8e using driver gplus
Mar  9 19:42:58 localhost kernel: wlan0: encryption modes supported: WEP, WPA with TKIP
^C
The card has been detected. Also check out lspci:
0000:02:00.0 Network controller: Texas Instruments ACX 111 54Mbps Wireless Interface
Next, download wireless-tools package:
apt-get install wireless-tools
Check if we can detect a Wireless LAN access point.
iwlist wlan0 scan
The output will contain an ESSID for the network. Copy-paste it:
iwconfig wlan0 essid <ESSID>
If you use an encryption key, set it. Security mode can be open or restricted. The default is 'restricted', but for me, it works only if I set the mode to be 'open'.
iwconfig wlan0 key open <wepkey>
Now say iwconfig, and the interface should be all set:
# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11g  ESSID:"BarFoo"  
          Mode:Managed  Frequency:2.437 GHz  Access Point: 00:13:19:8C:57:C0   
          Bit Rate:54 Mb/s   Tx-Power:10 dBm   Sensitivity=0/3  
          RTS thr:4096 B   Fragment thr:4096 B   
          Encryption key:DEADBEEF00   Security mode:open
          Power Management:off
          Link Quality:100/100  Signal level:-45 dBm  Noise level:-256 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
Let's move on. I use DHCP to get my IP address, so I add these lines to /etc/network/interfaces:
iface wlan0 inet dhcp
pre-up  iwconfig wlan0 essid "BarFoo" && \
    iwconfig wlan0 key open DEADBEEF00
That's it. To start using the wireless LAN card, issue:
ifdown eth0
ifup wlan0
Swap the up and down to revert back to Ethernet.

--
Notes:

1. Fedora Core's default 2.6 kernel panics with the above driver. You will have to compile a custom kernel if you run Fedora; ensure you have CONFIG_4KSTACKS disabled.

2. /usr/share/doc/wireless-tools/README.Debian says you can use:

wireless_essid "BarFoo"
wireless_key1 DEADBEEF00

in the interfaces file, but it did not work for me.
This file created: 6/Oct/2005
Back home