Using IPW3945 instead IWL3945 for Intel wireless 3945 in hardy
Posted by Thomer on May 16th, 2008
Email This Post
-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 (wicd.sourceforge.net)instead 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 (http://ipw3945.sourceforge.net) 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 } –>http://ipw3945.sourceforge.net/#downloads
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
et voila
If you want to be notified the next time we write something please subscribe to our RSS feed.Thanks for Visiting!

May 16th, 2008 at 1:49 pm
the microcode (and the others resources in the same host)is not available http://bughost.org/ipw3945/, some one has a mirror?
May 16th, 2008 at 2:16 pm
I have the same problem http://bughost.org/ipw3945/ is not available so I can’t get microcode and daemon
May 16th, 2008 at 9:17 pm
It’s fine now, but I got problems compiling ieee80211. ipw3945 installs fine but not ieee80211
May 16th, 2008 at 10:35 pm
I have the same problem… compiling ieee80211 (the path when compile ieeesubsystem .. make IEEE80211_INC=/usr/include is ok, and /lib/modules/\`uname -r\`/include is ok too, but the error appears while compile driver, because he didn’t found the compatible subsystem). maybe a more details in HowTo? tnx
May 17th, 2008 at 4:02 am
You should check to see if the ieee80211 is already there in your kernel.
Mine was and so after following the rest of the steps everything now works perfectly.
May 17th, 2008 at 8:37 am
how make package for this module and when kernel is updated refresh this one?
May 18th, 2008 at 1:13 pm
Finley i fixed my problem with Intel wireless 3945 card
Using this 3 steps :
1 -sudo su
2.echo -e “alias wlan0 iwl3945 \noptions iwl3945 disable_hw_scan=1″ > /etc/modprobe.d/iwl3945
3.reboot
May 19th, 2008 at 8:34 am
@Cyber-Hero but tell us what you have a problem? hangs? 110kbps ? or other? or all?
May 19th, 2008 at 8:48 am
hi again,
for me ieee80211 is already in kernel. i have tested on a new hardy installation.
to m4r10l4.
i hope that the iwl3945 don’t have the errors when we get a new kernel. or we got a new script by (http://james.colannino.org/downloads.html) to integrate the driver. James Colannino said :
“If the old ipw3945 driver (1.2.2) ever breaks on a newer kernel after 2.6.24, please let me know, as I’d like to see if I can continue to keep this code working for as long as possible!”
May 19th, 2008 at 9:22 pm
to m4r10l4 ..
The problem was the Network Manager can’t find any wireless networks !
May 20th, 2008 at 12:08 pm
thanks.
i use iwl3945 and works ok. But Adhoc is really hard to make working.
May 23rd, 2008 at 1:11 pm
I am still hesitating to start this procedure…
@M4r10l4: did you manage to solve AdHoc problems ?
Thanks!
May 25th, 2008 at 8:57 am
no, adhoc is still to stupid way in ubuntu (i think about NetworkManager, Wicd, or wifi-radar).
This too often not work like we would.
May 27th, 2008 at 12:06 pm
@M4r10l4
give the old ipw driver a try and
your adhoc problems should gone.
i have to connect to 4 different adhocs, an with
the wicd configuration it works very fine.
May 29th, 2008 at 4:21 pm
Got wifi working on Toshiba U200, before wireless card was not detected on hardy at all! (worked fine on gutsy)
I followed instruction above with two changes:
1. I did not blacklisted mac8021 (no wireless card seen if i blacklist mac8021)
2. I did not install Wicd - Network Manager works fine
May 29th, 2008 at 7:18 pm
I saw the following error while building the driver, but fixed it by running make SHELL=/bin/bash. Just FYI.
ipw3945-1.2.2> make
Makefile:53:
Makefile:54: WARNING: $SHELL not set to bash.
Makefile:55: If you experience build errors, try
Makefile:56: ‘make SHELL=/bin/bash’.
Makefile:57:
/bin/sh: Syntax error: “(” unexpected
/bin/sh: Syntax error: “(” unexpected
-e
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.
-e Aborting the build. You can force the build to continue by adding:
IEEE80211_IGNORE_DUPLICATE=y
to your make command line.
May 30th, 2008 at 11:05 pm
Don’t forget to repeat those actions after kernel update…
May 31st, 2008 at 1:11 pm
Simply awesome! Thank you very much for your Howto; my laptop is happily
networking with WPA again (iwl3945 borks this for me in Ubuntu Hardy Heron)
dpsf
June 2nd, 2008 at 6:29 pm
With iwl3945 using WPA/TTLS/PAP my laptop would drop connection even if I started a file transfer on my Mac that sits next to it! Switching back to ipw3945 has my Dell D820 working great again.
Many thanks!
June 7th, 2008 at 5:43 pm
@slowpoison
run make with SHELL=/bin/bash (make SHELL=/bin/bash)
–
Steven
July 5th, 2008 at 2:20 am
Hi,
I followed exactly the instructions and everything looks fine (I get no error messages), but network-manager doesn’t find my wlan-card. Tried ifconfig eth0 up and ifconfig wlan0 up, but he couldn’t find the interface.
My System: Inspiron 6400, Kubuntu 8.04
Any ideas?
Thanks in advance
Stephan
July 5th, 2008 at 10:28 am
It works
I had to enable the ipw3945 in Kcontrol under restricted drivers. LED glows too.
Thx for the howto. Very nice!
August 17th, 2008 at 4:47 pm
I’m trying to use the ipw3945 under hardy w/ 2.6.24-21 kernel. I saw the message that Slowpoison noted above, and dealt with it the same way. But when I try to modprobe the driver, I get:
FATAL: Error inserting ipw3945 (/lib/modules/2.6.24-21-generic/kernel/drivers/net/wireless/ipw3945.ko): Unknown symbol in module, or unknown parameter (see dmesg)
Invalid parameter 1: –quiet.
dmesg reports:
[ 122.847475] ipw3945: disagrees about version of symbol ieee80211_wx_get_encodeext
[ 122.847492] ipw3945: Unknown symbol ieee80211_wx_get_encodeext
[ 122.847706] ipw3945: disagrees about version of symbol ieee80211_wx_set_encode
[ 122.847710] ipw3945: Unknown symbol ieee80211_wx_set_encode
[ 122.847785] ipw3945: disagrees about version of symbol ieee80211_wx_get_encod
and so on and so forth. I see some comments above about ieee80211 conflicts w/ the kernel - how do I resolve these?
Thanks!
August 26th, 2008 at 5:21 am
I am same problem:
jefferson@jeffersonlaptop:~$ sudo modprobe ipw3945
FATAL: Error inserting ipw3945 (/lib/modules/2.6.24-21-generic/kernel/drivers/net/wireless/ipw3945.ko): Unknown symbol in module, or unknown parameter (see dmesg)
jefferson@jeffersonlaptop:~$ ipw3945d –quiet
2008-08-26 01:17:24: ERROR: Could not find Intel PRO/Wireless 3945ABG Network Connection
jefferson@jeffersonlaptop:~$ dmesg | grep ipw3945
[ 36.314130] ipw3945: disagrees about version of symbol ieee80211_wx_get_encodeext
[ 36.314141] ipw3945: Unknown symbol ieee80211_wx_get_encodeext
[ 36.314397] ipw3945: disagrees about version of symbol ieee80211_wx_set_encode
[ 36.314403] ipw3945: Unknown symbol ieee80211_wx_set_encode
[ 36.314483] ipw3945: disagrees about version of symbol ieee80211_wx_get_encode
[ 36.314488] ipw3945: Unknown symbol ieee80211_wx_get_encode
[ 36.314723] ipw3945: disagrees about version of symbol ieee80211_txb_free
[ 36.314728] ipw3945: Unknown symbol ieee80211_txb_free
[ 36.314867] ipw3945: disagrees about version of symbol ieee80211_wx_set_encodeext
[ 36.314872] ipw3945: Unknown symbol ieee80211_wx_set_encodeext
[ 36.315155] ipw3945: disagrees about version of symbol ieee80211_wx_get_scan
[ 36.315160] ipw3945: Unknown symbol ieee80211_wx_get_scan
[ 36.315497] ipw3945: disagrees about version of symbol ieee80211_freq_to_channel
[ 36.315502] ipw3945: Unknown symbol ieee80211_freq_to_channel
[ 36.316113] ipw3945: disagrees about version of symbol ieee80211_set_geo
[ 36.316118] ipw3945: Unknown symbol ieee80211_set_geo
[ 36.316469] ipw3945: disagrees about version of symbol ieee80211_rx
[ 36.316474] ipw3945: Unknown symbol ieee80211_rx
[ 36.316556] ipw3945: disagrees about version of symbol ieee80211_get_channel
[ 36.316561] ipw3945: Unknown symbol ieee80211_get_channel
[ 36.316791] ipw3945: disagrees about version of symbol ieee80211_channel_to_index
[ 36.316820] ipw3945: Unknown symbol ieee80211_channel_to_index
[ 36.317390] ipw3945: disagrees about version of symbol ieee80211_rx_mgt
[ 36.317395] ipw3945: Unknown symbol ieee80211_rx_mgt
[ 36.317477] ipw3945: disagrees about version of symbol ieee80211_get_geo
[ 36.317482] ipw3945: Unknown symbol ieee80211_get_geo
[ 36.317638] ipw3945: disagrees about version of symbol free_ieee80211
[ 36.317643] ipw3945: Unknown symbol free_ieee80211
[ 36.318066] ipw3945: Unknown symbol ieee80211_tx_frame
[ 36.318192] ipw3945: disagrees about version of symbol ieee80211_is_valid_channel
[ 36.318198] ipw3945: Unknown symbol ieee80211_is_valid_channel
[ 36.318290] ipw3945: disagrees about version of symbol ieee80211_get_channel_flags
[ 36.318296] ipw3945: Unknown symbol ieee80211_get_channel_flags
[ 36.318509] ipw3945: disagrees about version of symbol alloc_ieee80211
[ 36.318514] ipw3945: Unknown symbol alloc_ieee80211
[ 267.643548] ipw3945: disagrees about version of symbol ieee80211_wx_get_encodeext
[ 267.643565] ipw3945: Unknown symbol ieee80211_wx_get_encodeext
[ 267.643837] ipw3945: disagrees about version of symbol ieee80211_wx_set_encode
[ 267.643842] ipw3945: Unknown symbol ieee80211_wx_set_encode
[ 267.643939] ipw3945: disagrees about version of symbol ieee80211_wx_get_encode
[ 267.643944] ipw3945: Unknown symbol ieee80211_wx_get_encode
[ 267.644197] ipw3945: disagrees about version of symbol ieee80211_txb_free
[ 267.644202] ipw3945: Unknown symbol ieee80211_txb_free
[ 267.644354] ipw3945: disagrees about version of symbol ieee80211_wx_set_encodeext
[ 267.644360] ipw3945: Unknown symbol ieee80211_wx_set_encodeext
[ 267.644685] ipw3945: disagrees about version of symbol ieee80211_wx_get_scan
[ 267.644690] ipw3945: Unknown symbol ieee80211_wx_get_scan
[ 267.645056] ipw3945: disagrees about version of symbol ieee80211_freq_to_channel
[ 267.645061] ipw3945: Unknown symbol ieee80211_freq_to_channel
[ 267.645686] ipw3945: disagrees about version of symbol ieee80211_set_geo
[ 267.645690] ipw3945: Unknown symbol ieee80211_set_geo
[ 267.646056] ipw3945: disagrees about version of symbol ieee80211_rx
[ 267.646061] ipw3945: Unknown symbol ieee80211_rx
[ 267.646157] ipw3945: disagrees about version of symbol ieee80211_get_channel
[ 267.646162] ipw3945: Unknown symbol ieee80211_get_channel
[ 267.646408] ipw3945: disagrees about version of symbol ieee80211_channel_to_index
[ 267.646413] ipw3945: Unknown symbol ieee80211_channel_to_index
[ 267.647002] ipw3945: disagrees about version of symbol ieee80211_rx_mgt
[ 267.647007] ipw3945: Unknown symbol ieee80211_rx_mgt
[ 267.647104] ipw3945: disagrees about version of symbol ieee80211_get_geo
[ 267.647109] ipw3945: Unknown symbol ieee80211_get_geo
[ 267.647280] ipw3945: disagrees about version of symbol free_ieee80211
[ 267.647285] ipw3945: Unknown symbol free_ieee80211
[ 267.647721] ipw3945: Unknown symbol ieee80211_tx_frame
[ 267.647861] ipw3945: disagrees about version of symbol ieee80211_is_valid_channel
[ 267.647867] ipw3945: Unknown symbol ieee80211_is_valid_channel
[ 267.647974] ipw3945: disagrees about version of symbol ieee80211_get_channel_flags
[ 267.647979] ipw3945: Unknown symbol ieee80211_get_channel_flags
[ 267.648205] ipw3945: disagrees about version of symbol alloc_ieee80211
[ 267.648210] ipw3945: Unknown symbol alloc_ieee80211
[ 283.922773] ipw3945: disagrees about version of symbol ieee80211_wx_get_encodeext
[ 283.922791] ipw3945: Unknown symbol ieee80211_wx_get_encodeext
[ 283.923060] ipw3945: disagrees about version of symbol ieee80211_wx_set_encode
[ 283.923065] ipw3945: Unknown symbol ieee80211_wx_set_encode
[ 283.923160] ipw3945: disagrees about version of symbol ieee80211_wx_get_encode
[ 283.923165] ipw3945: Unknown symbol ieee80211_wx_get_encode
[ 283.923414] ipw3945: disagrees about version of symbol ieee80211_txb_free
[ 283.923419] ipw3945: Unknown symbol ieee80211_txb_free
[ 283.923572] ipw3945: disagrees about version of symbol ieee80211_wx_set_encodeext
[ 283.923577] ipw3945: Unknown symbol ieee80211_wx_set_encodeext
[ 283.923874] ipw3945: disagrees about version of symbol ieee80211_wx_get_scan
[ 283.923879] ipw3945: Unknown symbol ieee80211_wx_get_scan
[ 283.924244] ipw3945: disagrees about version of symbol ieee80211_freq_to_channel
[ 283.924249] ipw3945: Unknown symbol ieee80211_freq_to_channel
[ 283.924890] ipw3945: disagrees about version of symbol ieee80211_set_geo
[ 283.924895] ipw3945: Unknown symbol ieee80211_set_geo
[ 283.925260] ipw3945: disagrees about version of symbol ieee80211_rx
[ 283.925265] ipw3945: Unknown symbol ieee80211_rx
[ 283.925361] ipw3945: disagrees about version of symbol ieee80211_get_channel
[ 283.925366] ipw3945: Unknown symbol ieee80211_get_channel
[ 283.925611] ipw3945: disagrees about version of symbol ieee80211_channel_to_index
[ 283.925616] ipw3945: Unknown symbol ieee80211_channel_to_index
[ 283.926200] ipw3945: disagrees about version of symbol ieee80211_rx_mgt
[ 283.926205] ipw3945: Unknown symbol ieee80211_rx_mgt
[ 283.926302] ipw3945: disagrees about version of symbol ieee80211_get_geo
[ 283.926306] ipw3945: Unknown symbol ieee80211_get_geo
[ 283.926477] ipw3945: disagrees about version of symbol free_ieee80211
[ 283.926481] ipw3945: Unknown symbol free_ieee80211
[ 283.926910] ipw3945: Unknown symbol ieee80211_tx_frame
[ 283.927050] ipw3945: disagrees about version of symbol ieee80211_is_valid_channel
[ 283.927055] ipw3945: Unknown symbol ieee80211_is_valid_channel
[ 283.927162] ipw3945: disagrees about version of symbol ieee80211_get_channel_flags
[ 283.927168] ipw3945: Unknown symbol ieee80211_get_channel_flags
[ 283.927394] ipw3945: disagrees about version of symbol alloc_ieee80211
[ 283.927399] ipw3945: Unknown symbol alloc_ieee80211
[ 320.201002] ipw3945: disagrees about version of symbol ieee80211_wx_get_encodeext
[ 320.201014] ipw3945: Unknown symbol ieee80211_wx_get_encodeext
[ 320.201150] ipw3945: disagrees about version of symbol ieee80211_wx_set_encode
[ 320.201153] ipw3945: Unknown symbol ieee80211_wx_set_encode
[ 320.201202] ipw3945: disagrees about version of symbol ieee80211_wx_get_encode
[ 320.201206] ipw3945: Unknown symbol ieee80211_wx_get_encode
[ 320.201351] ipw3945: disagrees about version of symbol ieee80211_txb_free
[ 320.201354] ipw3945: Unknown symbol ieee80211_txb_free
[ 320.201433] ipw3945: disagrees about version of symbol ieee80211_wx_set_encodeext
[ 320.201437] ipw3945: Unknown symbol ieee80211_wx_set_encodeext
[ 320.201587] ipw3945: disagrees about version of symbol ieee80211_wx_get_scan
[ 320.201591] ipw3945: Unknown symbol ieee80211_wx_get_scan
[ 320.201776] ipw3945: disagrees about version of symbol ieee80211_freq_to_channel
[ 320.201780] ipw3945: Unknown symbol ieee80211_freq_to_channel
[ 320.202094] ipw3945: disagrees about version of symbol ieee80211_set_geo
[ 320.202098] ipw3945: Unknown symbol ieee80211_set_geo
[ 320.202292] ipw3945: disagrees about version of symbol ieee80211_rx
[ 320.202295] ipw3945: Unknown symbol ieee80211_rx
[ 320.202346] ipw3945: disagrees about version of symbol ieee80211_get_channel
[ 320.202349] ipw3945: Unknown symbol ieee80211_get_channel
[ 320.202474] ipw3945: disagrees about version of symbol ieee80211_channel_to_index
[ 320.202478] ipw3945: Unknown symbol ieee80211_channel_to_index
[ 320.202772] ipw3945: disagrees about version of symbol ieee80211_rx_mgt
[ 320.202776] ipw3945: Unknown symbol ieee80211_rx_mgt
[ 320.202827] ipw3945: disagrees about version of symbol ieee80211_get_geo
[ 320.202830] ipw3945: Unknown symbol ieee80211_get_geo
[ 320.202918] ipw3945: disagrees about version of symbol free_ieee80211
[ 320.202921] ipw3945: Unknown symbol free_ieee80211
[ 320.203149] ipw3945: Unknown symbol ieee80211_tx_frame
[ 320.203221] ipw3945: disagrees about version of symbol ieee80211_is_valid_channel
[ 320.203225] ipw3945: Unknown symbol ieee80211_is_valid_channel
[ 320.203281] ipw3945: disagrees about version of symbol ieee80211_get_channel_flags
[ 320.203284] ipw3945: Unknown symbol ieee80211_get_channel_flags
[ 320.203400] ipw3945: disagrees about version of symbol alloc_ieee80211
[ 320.203404] ipw3945: Unknown symbol alloc_ieee80211
jefferson@jeffersonlaptop:~$ uname -a
Linux jeffersonlaptop 2.6.24-21-generic #1 SMP Mon Aug 25 17:32:09 UTC 2008 i686 GNU/Linux
Solution???
September 9th, 2008 at 2:56 pm
Well, the problem in trying to install these ipw3945 drivers in any kernel >2.6.24-19 is that the newer versions of the module ieee80211 do not collaborate very well with the old driver. Which is a big, big problem for me, since there are networks for which I do absolutely need the ipw3945 driver running. So, given that I am already informing and collaborating with the developers to solve these problems: is there any way to contact someone who might be able to refresh the patch and let us install the ipw3945 on newer kernels? This might become especially important after October, the 30th, when Ubuntu Intrepid (with 2.6.27) will be released. Obviously I DO hope this will be unnecessary, but you never know..
September 21st, 2008 at 5:58 am
What about this error? What happen?
# patch -p1 < ipw3945-1.2.2.patch (target file = ipw3945.h)
-bash: syntax error near unexpected token `(’
# patch -p1 < ipw3945-1.2.2.patch
missing header for unified diff at line 3 of patch
can’t find file to patch at input line 3
Perhaps you used the wrong -p or –strip option?
The text leading up to this was:
————————–
|— ipw3945.h.orig 2008-01-30 10:17:02.000000000 -0800
|+++ ipw3945.h 2008-01-30 10:17:09.000000000 -0800
————————–
File to patch:
September 21st, 2008 at 6:00 am
Luca, I try new kernel (2.6.27-3-generic) from new Ubuntu 8.10 (Inteprid), but still bad support of iwl3945
October 20th, 2008 at 3:45 pm
Hi,
I just posted a patch to get the ipw3945 driver to work with kernel 2.6.27 you can check from here
Hoping this helps…
October 27th, 2008 at 8:31 pm
Juergen: Thank you for this patch. It helped me compile it for the new 2.6.27.4 kernel.
October 27th, 2008 at 11:25 pm
Thanks for the help, Juergen! However, I have to say that the new iwl driver has FINALLY begun to function properly and I have now no problems in connecting to any network … /rant_on if only they had waited till this was as developed as it is right now before putting it into the kernel as default driver … /rant_off
Kudos to everyone
November 9th, 2008 at 2:37 pm
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….
November 11th, 2008 at 8:31 am
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.
November 14th, 2008 at 10:59 pm
Thanks Larry, gonna check it out now, will let you know if I get it to work
November 14th, 2008 at 11:40 pm
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:
IEEE80211_IGNORE_DUPLICATE=y
to your make command line.
make: *** [check_inc] Error 1
anyone know what exactly I am doing wrong?
November 16th, 2008 at 2:19 am
The patch mentioned initially isn’t available any more (http://james.colannino.org/downloads.html 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?
November 16th, 2008 at 7:34 pm
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 intellinuxwireless.org but haven’t found anybody with the same performance issue.
November 16th, 2008 at 11:55 pm
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
November 17th, 2008 at 5:26 am
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 http://prdownloads.sourceforge.net/ipw3945/ipw3945-1.2.2.tgz
# wget http://bughost.org/ipw3945/ucode/ipw3945-ucode-1.14.2.tgz
# wget http://snapshot.debian.net/archive/2007/08/06/debian/pool/non-free/i/ipw3945d/ipw3945d_1.7.22-5_i386.deb
# 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.rulesChange
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:13:02:03:d7:d1″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″
to
#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 http://funknetztest.de/downloads/ipw3945/ipw3945-1.2.2-kernel-2.6.27.patch
# wget http://funknetztest.de/downloads/ipw3945/ipw3945-1.2.2-kernel-2.6.24.patch
# 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.
November 17th, 2008 at 4:50 pm
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 iwl3945blacklist mac80211
blacklist cfg80211
and
Insert into the 00local file
#disable iwl3945 to allow ipw3945install 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 http://www.ubuntuforums.org or http://www.linuxquestions.org. 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.
November 22nd, 2008 at 5:15 pm
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.rulesand then I restarted udev. Voila - now my wireless works with the iwl driver:tingo@kg-home:~$ sudo lshw -C network
*-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=10.1.150.12 latency=0 module=iwl3945 multicast=yes wireless=IEEE 802.11abg
*-network
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.