Using IPW3945 instead IWL3945 for Intel wireless 3945 in hardy

Sponsored Link
while i'm using my dell d620 with an intel wireless 3945 card i have the following problems with hardy and the new iwl3945:

-throughput is limited 110kb/s rx
-the wireless lan is very unstable
-sometimes the system freezes while scanning for networks

i tried some things to workaround:

-- installed the ubuntu-backports (so the driver 1.2.25 is install) = ok the wlan led works again
-- add the file /etc/modprobe.d/iwl3945 (alias wlan0 iwl3945
options iwl3945 disable_hw_scan=1)
-- to config the card i used wicd ( of the builtin network-admin

now i decided to backport to the old ipw3945 driver which has do everything fine in gutsy...

1. sudo vim /etc/modprobe.d/blacklist

added the lines
# blacklist new iwl3945
blacklist iwl3945
blacklist mac8021

so the new iwl3945 won't load at system startup

2. Reboot

3. Download ipw3945 microcode ( and copy it into /lib/firmware/2.6.24-17-generic/

4. Download ipw3945 regulatory daemon from here and copy it into /sbin/
(copy the file within folder x86 to /sbin/ too)

5. get the patch from here thanks

6. get the ipw driver <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } -->

7. patch -p1 < ipw3945-1.2.2.patch (target file = ipw3945.h)

8. make

9. sudo make install

10. sudo chmod 777 /sbin/ipw*

11. add a file /etc/modprobe.d/ipw3945
add lines:
install ipw3945 /sbin/modprobe -i ipw3945 ; sleep 0.5 ; /sbin/ipw3945d –quiet
remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r -i ipw3945

12. sudo modprobe ipw3945

13. reboot

14. set the correct interface (eth1) in the wicd

Sponsored Link

et voila

You may also like...

55 Responses

  1. DaveC says:

    Has anyone else been having issues compiling this in the intrepid kernel, even with Juergen’s patch? Is their anywhere someone might be able to point me that might help me doing this? Thank you to everyone who has and may still help….

  2. Larry says:

    DaveC: I have successfully compiled the ipw3945 driver on Intrepid Ibex and Hardy Heron. It seemed to work fine on Heron but I had stability issues on Ibex. I used an online forum to help me compile the ipw3945 driver similar to the directions above but instead uses checkinstall to make a debian package for easy install and removal. You can go to the forum link here. Just make sure to use the 2.6.24 and 2.6.27 patch from Juergen’s web site to patch the ipw3945.h and ipw3945.c files, respectively.

  3. DaveC says:

    Thanks Larry, gonna check it out now, will let you know if I get it to work

  4. DaveC says:

    when I get to the make command I keep getting this error:

    WARNING: Your kernel contains ieee80211 symbol definitions and you
    are not using the kernel’s default ieee80211 subsystem. (Perhaps you
    used the out-of-tree ieee80211 subsystem’s ‘make install’ or have
    provided a path to the ieee80211 subsystem via IEEE80211_INC.)

    If you wish to use the out-of-tree ieee80211 subsystem then it is
    recommended to use that projects’ “make patch_kernel” facility
    and rebuild your kernel to update the Module symbol version information.

    Failure to do this may result in build warnings and unexpected
    behavior when running modules which rely on the ieee80211 subsystem.

    Aborting the build. You can force the build to continue by adding:


    to your make command line.

    make: *** [check_inc] Error 1

    anyone know what exactly I am doing wrong?

  5. Torfinn says:

    The patch mentioned initially isn’t available any more ( seems to have disappeared) I upgraded my laptop (Acer Aspire 5672) to Xubuntu 8.10, and now my kernel is 2.6.27-8.
    Are there a patch / working procedure to get ipw3945 working with this kernel?

  6. Larry says:

    DaveC: I received this error as well the first time I tried running make on Ubuntu 8.10. A similar if not the same error was mentioned earlier in the comments by SlowPoison here. First, before running make I would make sure you have the kernel headers installed for your currently running kernel. Second, I’m also assuming that you’ve applied both of the patches from Juergen’s website to the ipw3945-1.2.2.tgz driver. Third, take Steve’s advice and run make SHELL=/bin/bash instead of make. That should get you going. Let us know how it goes.

    Torfinn: I have the exact same laptop that you have. Don’t worry about the patch originally posted here. Juergen’s website has both of them for download. In my second comment I put a link to a forum post about installing the driver on Ubuntu using checkinstall. The only difference between that post and your distro (Xubuntu 8.10) is that the kernel now is 2.6.27 and so you need to patch the ipw3945 driver with both patches from Juergen’s website.

    For the record…I think the iwl3945 driver is stable to use on a daily basis. The only issue I have found is that on my LAN I’m getting poor upload performance to my media server. With iwl3945 I get ~200-400kB/s, but with ipw3945 I get ~1.6-2.0MB/s. The weird thing is that the download from the exact same media server is the same for both drivers (~1.6-2.0MB/s). I’ve looked over on the bugzilla forums on but haven’t found anybody with the same performance issue.

  7. Torfinn says:

    Larry: Ok, I got these patches from Juergen’s site: ipw3945-1.2.2-kernel-2.6.24.patch, ipw3945-1.2.2-kernel-2.6.27.patch. I patched and installed the ipw3945 module – no problem. Then I blacklisted the iwl3945 module and rebooted. Now I get this in dmesg and /var/log/messages:

    root@kg-home:~# dmesg | grep 3945
    [ 21.864415] ipw3945: Unknown symbol escape_essid

  8. Larry says:

    Torfinn: I’m not sure what that error means. I did some googling but I didn’t come up with a clear answer. You might want to make sure that both drivers aren’t being loaded at boot. Try lsmod | grep iwl and lsmod | grep ipw. If you get a result from both commands, then each of the drivers are loade and conflicting with each other. I’m assuming that this is not the case but its worth trying. It could also be that the ipw3945 driver is conflicting somehow with the ieee80211 subsystem. In that case I would sudo make uninstall the ipw3945 driver and rebuild it again.

    I don’t use Ubuntu anymore but I’m currently writing this message from an Ubuntu 8.10 LiveDVD with the ipw3945 driver installed and running. So instead of troubleshooting I’ll write the commands that I used to get the driver up and running on the LiveDVD. Hopefully, you can compare the steps from the following steps to the ones you tried.

    Compiling IPW3945 Driver:
    # mkdir ipw3945
    # cd ipw3945
    # wget
    # wget
    # wget
    # tar zxf ipw3945-ucode-1.14.2.tgz
    # sudo cp ipw3945-ucode-1.14.2/ipw3945.ucode /lib/firmware/
    # sudo dpkg -i ipw3945d_1.7.22-5_i386.deb
    # sudo nano /etc/modprobe.d/blacklist

    Insert into the blacklist file
    blacklist iwl3945
    blacklist mac80211
    blacklist cfg80211

    # sudo touch /etc/modprobe.d/00local
    # sudo nano /etc/modprobe.d/00local

    Insert into 00local
    #disable iwl3945 to allow ipw3945
    install iwl3945 /bin/true

    # sudo nano /etc/udev/rules.d/70-persistent-net.rules

    SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:13:02:03:d7:d1″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″

    #SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:13:02:03:d7:d1″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″
    SUBSYSTEMS==”pci”, DRIVERS==”iwl3945″, ATTR{type}==”1″, NAME=”wlan0″

    SUBSYSTEMS==”pci”, DRIVERS==”ipw3945″, NAME=”wlan0″

    # tar zxf ipw3945-1.2.2.tgz
    # cd ipw3945-1.2.2
    # wget
    # wget
    # patch -p0 --verbose < ipw3945-1.2.2-kernel-2.6.24.patch
    # patch -p1 --verbose < ipw3945-1.2.2-kernel-2.6.27.patch
    # make SHELL=/bin/bash
    # sudo modprobe -r iwl3945
    # sudo make install
    # sudo /etc/init.d/udev restart

    or, alternatively, just reboot instead of the previous restart step.

    As I said earlier, I’m writing this from an Ubuntu 8.10 LiveDVD with the IPW3945 driver currently running, so I know this works without installing anything other then patch from Synaptic. I didn’t include the patch installation step since you already have it installed. I bypassed the checkinstall step as well because I wanted to keep this longwinded setup as short as possible. I, also, highly recommend using checkinstall to make the ipw3945 driver because that will help you uninstall the driver via Synaptic when there is a kernel upgrade.

    If you see any differences between your installation and the previous steps then I would try making the necessary changes. If you still get errors from dmesg then please reply back with the errors you are running into.

  9. Larry says:

    I noticed that the formatting of my previous post was changed by me using the cite formatting tag. So here are the corrections.

    Insert into the blacklist file
    blacklist iwl3945
    blacklist mac80211
    blacklist cfg80211


    Insert into the 00local file
    #disable iwl3945 to allow ipw3945
    install iwl3945 /bin/true

    Torfinn: If you still have error messages after making any changes then it would be best to start a new forum thread on either or The comments section here isn’t the best way to troubleshoot your problems. You will also get more eyeballs looking at your problem as well. So post the forum link here if you still need help.

  10. Torfinn says:

    Larry and everybody: I did what I should have been doing in the first place; I booted a Xubuntu 8.10 livecd and tested my wireless there. It showed up as wlan0 and worked fine, so I just went back to my hard drive installation and undid all the things I did when I tried the ipw3945 driver. Then I did one more thing: I removed all lines from /etc/udev/rules.d/70-persistent-net.rules and then I restarted udev. Voila – now my wireless works with the iwl driver:

    tingo@kg-home:~$ sudo lshw -C network
    description: Wireless interface
    product: PRO/Wireless 3945ABG [Golan] Network Connection
    vendor: Intel Corporation
    physical id: 0
    bus info: pci@0000:03:00.0
    logical name: wmaster0
    version: 02
    serial: 00:13:02:3e:d4:ce
    width: 32 bits
    clock: 33MHz
    capabilities: pm msi pciexpress bus_master cap_list logical ethernet physical wireless
    configuration: broadcast=yes driver=iwl3945 ip= latency=0 module=iwl3945 multicast=yes wireless=IEEE 802.11abg
    description: Ethernet interface
    product: NetLink BCM5789 Gigabit Ethernet PCI Express
    vendor: Broadcom Corporation
    physical id: 0
    bus info: pci@0000:04:00.0
    logical name: eth0
    version: 21
    serial: 00:16:36:54:a9:ae
    capacity: 1GB/s
    width: 64 bits
    clock: 33MHz
    capabilities: pm vpd msi pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
    configuration: autonegotiation=on broadcast=yes driver=tg3 driverversion=3.94 firmware=5789-v3.49a latency=0 link=no module=tg3 multicast=yes port=twisted pair
    *-network DISABLED
    description: Ethernet interface
    physical id: 1
    logical name: pan0
    serial: 42:ad:dc:f9:68:08
    capabilities: ethernet physical
    configuration: broadcast=yes driver=bridge driverversion=2.3 firmware=N/A link=yes multicast=yes

    Why it didn’t work when I upgraded from 7.10 to 8.10 I don’t know, but perhaps the udev file was polluted already.

  11. Just want to say thanks to everyone involved here, after a week of messing about, I’m posting this from a dell XPS m1330 running 64bit intrepid, tethered to an iPhone via ad-hoc.

    Thanks everyone!

  12. DaveC says:

    hey, I hadn’t checked this page out in a while….gonna read through it and give it another go and let you know how it works out,
    James Laugesen: haha, that is exactly why I want to get this working, so that I can get pdanet on the iphone working with my laptop

  13. @DaveC: well I can confirm that it is working nicely for me (XPS M1330 + ibex + iphone + pdanet). I plan to blog full details of my “solution” when I get some time.

    But I basicly followed iblanken’s post here:

    I excluded the 25NetworkManager stop/start commands though obviously (since ibex doesn’t have 25NetworkManager).

    Stopping NM in ibex (/etc/init.d/NetworkManager stop) seemed to cause all sorts of strange system faults for me. I haven’t tested that since using IPW3945 though.
    So for now I have just been manually disabling ‘Wireless’ via the NM applet.

    Also worth noting, I experienced _extremely_ slow connections when the ad-hoc network (between iphone & laptop) is encrypted. I suspect this is due slamming the iphone CPU(?), since the same thing happens on my non-IWL/IPW laptop also.

    Cheers, good luck with it 🙂

  14. DaveC says:

    Alright….I have given another shot, and I have gotten much further, it seems that even though I did have the kernel headers installed for my kernel….somehow in my fussing about with this I had installed the server kernel as well, so after I purged all the header files and reinstalled the linux-headers-2.6.27-7-generic I stopped getting the previous error when I used the make command, so thank you larry for pointing me in that direction…..of course I still not all the way there….I have correctly compiled and installed the driver/module……..the problem I am having is when trying to insert the module. dmesg | grep ipw gives me this

    [ 5084.601632] ipw3945: Unknown symbol ieee80211_wx_get_encodeext
    [ 5084.602218] ipw3945: Unknown symbol ieee80211_wx_set_encode
    [ 5084.602425] ipw3945: Unknown symbol ieee80211_wx_get_encode
    [ 5084.602879] ipw3945: Unknown symbol ieee80211_txb_free
    [ 5084.603171] ipw3945: Unknown symbol ieee80211_wx_set_encodeext
    [ 5084.603699] ipw3945: Unknown symbol ieee80211_wx_get_scan
    [ 5084.603951] ipw3945: Unknown symbol escape_essid
    [ 5084.604414] ipw3945: Unknown symbol ieee80211_freq_to_channel
    [ 5084.605313] ipw3945: Unknown symbol ieee80211_set_geo
    [ 5084.605953] ipw3945: Unknown symbol ieee80211_rx
    [ 5084.606160] ipw3945: Unknown symbol ieee80211_get_channel
    [ 5084.606595] ipw3945: Unknown symbol ieee80211_channel_to_index
    [ 5084.607527] ipw3945: Unknown symbol ieee80211_rx_mgt
    [ 5084.607734] ipw3945: Unknown symbol ieee80211_get_geo
    [ 5084.608072] ipw3945: Unknown symbol free_ieee80211
    [ 5084.608774] ipw3945: Unknown symbol ieee80211_is_valid_channel
    [ 5084.608999] ipw3945: Unknown symbol ieee80211_get_channel_flags
    [ 5084.609406] ipw3945: Unknown symbol alloc_ieee80211

    I saw Torfinn had gotten a similar error, and Larry you said to rebuild the module, which I have done, but I don’t know what to change in the process to have a different result….I have a feeling that I may have messed something up when I tried to install a few weeks ago and I think I tried compile ieee80211-1.2.16 unsuccessfully….Well thats where I am right now….by the way I am using a Dell inspiron 1420n that is running ubuntu 8.10 64-bit

    James Laugesen: yeah I’ve read that forum before, I figured that the problem I had was because of the iwl driver….you had to use the ipw3945 driver for it to work right?

  15. DaveC says:

    Nevermind my pleas, I have finally figured it all out, I reinstalled the kernel itself and everything including pdanet is up and working………glory be thy name, thank you all for putting up with my questions, as well as answering them

  16. DaveC says:

    for anyone who is just looking to stop the LED light from blinking try this fix if found on this ubuntu forum post:

  17. DaveC says:

    sorry about that address is:

    and the fix actually works!!

  18. Larry says:

    For those having issues with upload speeds on your local LAN there is a patch that has been included in the newest compat-wireless testing branch. This patch most likely won’t be included in the 2.6.27 kernel but will show up in the new 2.6.28 kernel I have tested the new drivers in the compat-wireless-2008-12-09. testing branch on my own LAN and I am now able to get speeds equivalent to my IPW3945 driver.

  19. Andi says:

    Does anybody still have the patch for the 2.6.27 kernel? Both and don’t seem to have it anymore.

  20. Larry says:

    The 2.6.27 patch can be found here. The other patches are still available at Juergen’s site. Their located here and here.

  21. Artyom says:

    Can’t patch ipw3945.h
    >Hunk #1 FAILED at 108.
    >Hunk #2 FAILED at 143.
    Lenny 2.6.26-1-amd64
    …Any way to make it work ?

  22. Larry says:

    Artyom: Look at post #38. If you follow it, you should be fine.

  23. Bruno says:

    I have used the link given by Larry December 10 and it seems there is now no problem.

  24. Jim Verhovec says:

    I’m using Ubuntu v-9.10 on my Toshiba A105 S 4384 laptop. The Intel 3945ABG [Golan] connects to my router at home. I configured it when this computer was still a Windows computer. I have changed completely to Linux and all worked well. I connect at home using a Belkin Wireless G router. That is the only way I can connect. Whenever I try to use any other router or wireless device, it will not connect. I have played with many of the system settings – both preferences and administration. It will only work using my home Windows configured router. But Windows has been removed. I even took it to the local college for help, but they could not help either. Is there any information out there? I am not new to Linux, but I don’t have a lot of experience with it. Can someone help? Thank you.

  25. obtim says:

    Is it possible to use this guide on Ubuntu 15.04? Some of links from here are dead 🙁

Leave a Reply

Your email address will not be published. Required fields are marked *