The iwl4965 wireless chip, Linux & ndiswrapper

Note: since I installed the kernel 2.6.28 the iwl4965 is supported by the driver iwlagn. On my HP-Compaq 8710p I have to start it up (with WAP using the package WAP-Supplicant) immediately after the boot - waiting and doing it later returns an error. You therefore shouldn't need anymore the guide below.

I just wasted 6 hours trying to make the iwl4965 wireless chip work under Linux kernel 2.6.25 (was more or less working under 2.6.24). It is now working and here is how I did it (ndiswrapper) (as of 15.Jul.2008):

  • First of all, it used to work under kernel version 2.6.24, by starting the wlan, then it returned an error message, then I issued a ifconfig wlan0 txpower on, and finally I started again the wlan and this time it worked. Under 2.6.25 it didn't and I used to get error messages like WARNING: Requesting MAC access during RFKILL wakes up NIC or ADDRCONF(NETDEV_UP): wlan0: link is not ready or Wait for START_ALIVE timeout after 2000ms.
Therefore I thought about using again the Windows XP drivers, which can be used in Linux through the ndiswrapper program.
  • So, if you want to try as well using the Windows XP drivers, somehow (through package or source) install first ndiswrapper (I'm using the version 1.53).
  • Now find the Windows XP-drivers of the wireless card - if you have a 64bit Linux OS running, download the 64bit-drivers. I have a HP Compaq 8710p, running 64bit Gentoo Linux, so I downloaded these drivers.
  • Unpack the Windows XP drivers into some directory - e.g. /temp/winwireless.
  • Tell ndiswrapper to "install" the drivers with ndiswrapper -i /temp/wireless/blahblah.inf, where "blahblah.inf" is the ".inf" file that came when you unpacked the drivers you just downloaded.
  • (check) By doing a lspci you should see your adapter, e.g....
    10:00.0 Network controller: Intel Corporation Unknown device 4229 (rev 61)
...and by issuing a lspci -n you should see e.g....
10:00.0 0280: 8086:4229 (rev 61
...which should be reflected in the ndiswrapper installation directory with what was just extracted from the ".inf"-file:
--# ls /etc/ndiswrapper/netw4x64/*4229*
/etc/ndiswrapper/netw4x64/8086:4229.5.conf
/etc/ndiswrapper/netw4x64/8086:4229:1100:8086.5.conf
/etc/ndiswrapper/netw4x64/8086:4229:1000:8086.5.conf
/etc/ndiswrapper/netw4x64/8086:4229:1101:8086.5.conf
...
  • Now, if you try to load the ndiswrapper module with modprobe ndiswrapper, the system should tell you (issue the command "dmesg") something like:
    Jul 15 19:46:01 ndiswrapper: using IRQ 17
    Jul 15 19:46:02 wlan0: ethernet device 00:1d:e0:69:18:45 using NDIS driver: netw4x64, 
    version: 0x1000f, NDIS version: 0x501, vendor: 'Intel(R) Wireless WiFi Link 4965AG 
    Driver', 8086:4229.5.conf
    Jul 15 19:46:02 wlan0: encryption modes supported: WEP; TKIP with WPA, WPA2, 
    WPA2PSK; AES/CCMP with WPA, WPA2, WPA2PSK
  • Now you only need to configure your network interface!
    iwconfig wlan0 key restricted YOURKEY893428904
    iwconfig wlan0 essid youraccesspoint
    ifconfig wlan0 10.0.0.23 netmask 255.0.0.0 (<= Your IP address & network mask.)
    route add default gw 10.0.0.2 (<= Your default gateway)

That's it. One more thing: it will use much more CPU than before (but in my case, it's faster).