ipw3945 driver required for functionality on new Intel PRO/Wireless 3945ABG Mini-PCI Express Adapters

Bug #35215 reported by mroth on 2006-03-16
90
Affects Status Importance Assigned to Milestone
linux-source-2.6.15 (Ubuntu)
Medium
Ben Collins

Bug Description

The ipw3945 driver required for functionality on new Intel PRO/Wireless 3945ABG Mini-PCI Express Adapters. Since these chipsets are PCI-E bus, they are incompatible with the previous ipw2100/2200 drivers.

All new IBM ThinkPads (Q1 2006 - "60" series) appear to bundle this wireless card.

Paul Sladen (sladen) wrote :

The principle reason that this isn't "in" is that it was only released in 2006-03.

However, it's also a bug that it doesn't work.

Changed in linux-source-2.6.15:
status: Unconfirmed → Confirmed
Carl Richell (carlrichell) wrote :

Most (all) laptops based on Intel's Napa platform will include the new 802.11a/b/g Mini-PCI card. Same issue on a dual core Asus Z62F laptop.

Paul Sladen (sladen) wrote :

Ben, what's the current status of the ipw3945 support going into the kernel?

Changed in linux-source-2.6.15:
assignee: nobody → ben-collins
Chuck Short (zulcss) wrote :

I have a patch for this, needs to be compiled tested.

Changed in linux-source-2.6.15:
status: Confirmed → In Progress
Paul Sladen (sladen) wrote :

Can we get it into the kernels so that if can be tested?

Steve Smith (ihatepickles) wrote :

I too would like inclusion of the driver into the next kernel build so it can be tested. The driver needs the ieee80211 subsystem to also be updated to >=1.1.11. I'm using ieee80211 1.1.12 with success along with the 0.0.73 driver manually installed.

It's very important. I too would like inclusion of the driver into the next kernel. I'm seeing a lot of Centrino Duo processors. I've bought an Asus A6JC-Q008H and it use it too.

emile (espanjer) wrote :

I have a dell inspiron 9400. It's also depending on ipw3945. Please add drivers for it.

Gustavo Niemeyer (niemeyer) wrote :

Is there a position regarding support for these drivers?

It'd be nice to have at least the needed dependencies in Dapper, like an updated ieee80211-source, if support for the whole thing isn't possible.

Gustavo Niemeyer (niemeyer) wrote :

(and the rest of ieee80211, of course)

mroth (mrothy) wrote :

The official Intel drivers for this appear to have been released (version 1.0).

Peter Liedler (peter-liedler) wrote :

Still on dapper flight-6
The setup doesn't detect the wireless nic (ipw3945) on my ASUS W5F

Ben Collins (ben-collins) wrote :

As noted in the "status", this is in progress. It is planned for the next kernel release. So no further info is needed until that upload is done.

Jason Westerkon (web250) wrote :

Ben, by "next kernel release", does that mean 2.6.16 (ie, not in dapper) or a subversion of 2.6.15?

Basically, bottom line, will this make Dapper 6.06?

All the new Dell's, as well as im sure many other manufacturers will be using the new 3945, so it's addition would be critical.

If not in the initial Dapper release, will we see a kernel patch, or a backport of some sort?

Xavier Verne (xavier-verne) wrote :

I confirm ndiswrapper doesn't seem to work with this card under ubuntu (cannot load driver for the card).

So we're still wired !
Jason question is interesting : which kernel version are you talking about for support ?

Michael R. Head (burner) wrote :

I think this is now FIX RELEASED in linux-image-2.6.15-21:

linux-source-2.6.15 (2.6.15-21.31) dapper; urgency=low

  Changes by Ben Collins
...
  * ieee80211_1_1_13: Slightly munged ieee80211 1.1.13 stack for use with
    ipw3945.
  * ipw3945: New driver.
...

Wade Menard (wade-ezri) wrote :

I am having trouble with this update (2.6.15-21.32-686).

I am seeing the following in syslog on boot and when I try and run modprobe ipw3945.

ieee80211_crypt: unregistered algorithm 'NULL'
ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, git-1.1.7
ieee80211: Copyright (C) 2004-2005 Intel Corporation <email address hidden>
ipw3945: Unknown symbol ieee80211_1_1_13_set_geo
ipw3945: Unknown symbol ieee80211_1_1_13_get_channel_flags
ipw3945: Unknown symbol ieee80211_1_1_13_wx_get_encode
ipw3945: Unknown symbol ieee80211_1_1_13_wx_get_scan
ipw3945: Unknown symbol ieee80211_1_1_13_wx_set_encode
ipw3945: Unknown symbol ieee80211_1_1_13_wx_get_encodeext
ipw3945: Unknown symbol ieee80211_1_1_13_tx_frame
ipw3945: Unknown symbol ieee80211_1_1_13_channel_to_index
ipw3945: Unknown symbol ieee80211_1_1_13_rx_mgt
ipw3945: Unknown symbol ieee80211_1_1_13_wx_set_encodeext
ipw3945: Unknown symbol ieee80211_1_1_13_rx
ipw3945: Unknown symbol ieee80211_1_1_13_freq_to_channel
ipw3945: Unknown symbol alloc_ieee80211_1_1_13
ipw3945: Unknown symbol ieee80211_1_1_13_get_channel
ipw3945: Unknown symbol ieee80211_1_1_13_txb_free
ipw3945: Unknown symbol ieee80211_1_1_13_get_geo
ipw3945: Unknown symbol ieee80211_1_1_13_is_valid_channel
ipw3945: Unknown symbol free_ieee80211_1_1_13

dr frog (dr-frog) wrote :

gateway mx6708 on ubunto 6.06

still no luck with this intell wireless network adapter here either

please let me know how i can assist

Richard Laager (rlaager) wrote :

I'm seeing the same errors. Running strings on ieee80211.ko doesn't show anything that includes 1_1_13. I tried rebuilding ieee80211 from the ieee80211-source package, but that didn't work either.

Ian Chiew (ianc) wrote :

A typo in 2.6.15-21 is preventing the newer ieee802.11 modules from being built.

--- linux-source-2.6.15.orig/net/Makefile 2006-04-24 17:35:18.000000000 +1000
+++ linux-source-2.6.15/net/Makefile 2006-04-24 17:35:20.000000000 +1000
@@ -45,7 +45,7 @@
 obj-$(CONFIG_IP_DCCP) += dccp/
 obj-$(CONFIG_IP_SCTP) += sctp/
 obj-$(CONFIG_IEEE80211) += ieee80211/
-obj-$(CONFIG_IEEE80211_1_1_17) += ieee80211_1_1_13/
+obj-$(CONFIG_IEEE80211_1_1_13) += ieee80211_1_1_13/

 ifeq ($(CONFIG_NET),y)
 obj-$(CONFIG_SYSCTL) += sysctl_net.o

Ian Chiew (ianc) wrote :

This wireless controller also needs a binary-only regulation daemon (http://bughost.org/ipw3945/daemon/ipw3945d-1.7.18.tgz) to work.

Perhaps it could be included in /lib/firmware in the kernel package? The daemon could then be automatically loaded at boot time with a udev rule like:

SUBSYSTEM=="drivers", PHYSDEVDRIVER="ipw3945"
ACTION=="add", RUN+="/lib/firmware/%v/ipw3945d --quiet"
ACTION=="remove", RUN+="/lib/firmware/%v/ipw3945d --quiet --kill"

udev doesn't have a %v kernel version substitution, so here's a quick patch to implement it:

--- udev-079.orig/udev_rules.c 2006-04-24 22:24:41.000000000 +1000
+++ udev-079/udev_rules.c 2006-04-24 21:46:43.000000000 +1000
@@ -30,6 +30,7 @@
 #include <syslog.h>
 #include <sys/wait.h>
 #include <sys/stat.h>
+#include <sys/utsname.h>

 #include "libsysfs/sysfs/libsysfs.h"
 #include "list.h"
@@ -425,6 +426,7 @@
   SUBST_ROOT,
   SUBST_MODALIAS,
   SUBST_ENV,
+ SUBST_KERNEL_VERSION,
  };
  static const struct subst_map {
   char *name;
@@ -445,10 +447,12 @@
   { .name = "root", .fmt = 'r', .type = SUBST_ROOT },
   { .name = "modalias", .fmt = 'A', .type = SUBST_MODALIAS },
   { .name = "env", .fmt = 'E', .type = SUBST_ENV },
+ { .name = "version", .fmt = 'v', .type = SUBST_KERNEL_VERSION },
   { NULL, '\0', 0 }
  };
  enum subst_type type;
  const struct subst_map *subst;
+ struct utsname kernel_version;

  head = string;
  while (1) {
@@ -654,6 +658,15 @@
    dbg("substitute env '%s=%s'", attr, pos);
    strlcat(string, pos, maxsize);
    break;
+ case SUBST_KERNEL_VERSION:
+ if (uname(&kernel_version) == -1)
+ {
+ dbg("could not fetch kernel version");
+ break;
+ }
+ dbg("substitute kernel_version '%s'", kernel_version.release);
+ strlcat(string, kernel_version.release, maxsize);
+ break;
   default:
    err("unknown substitution type=%i", type);
    break;
--- udev-079.orig/udev.8 2005-12-23 10:51:30.000000000 +1100
+++ udev-079/udev.8 2006-04-24 18:56:16.000000000 +1000
@@ -200,6 +200,9 @@
 \fB%r\fR, \fB$root\fR
 The udev_root value.
 .TP
+\fB%v\fR, \fB$version\fR
+The kernel version number (as with 'uname -r').
+.TP
 \fB%N\fR, \fB$tempnode\fR
 The name of a created temporary device node to provide access to the device from a external program before the real node is created.
 .TP

Wade Menard (wade-ezri) wrote :

Good catch on the typo. ipw3945d is actually included in restricted-modules and is run with an /etc/modprobe.d rule.

Richard Laager (rlaager) wrote :

Is there an estimate on the timeframe of -22 kernel update to fix that typo? I'd love to test this, but I don't want to spend the time to build a kernel package myself if an update is in the near future.

Richard Laager (rlaager) wrote :

I decided to build a kernel after all. I can confirm that the single character typo fix above corrects the problem. I now have wireless support. Thanks!

Jason Westerkon (web250) wrote :

That's good news to know the typo fixes it.

That should I guess theorhetically give 3945 out of box support.

ETA on a kernel patch/update for this?

looks like you found a kernel Makefile edit to fix the ipw3945 symbol reference issue; FYI I used the following Makefile edit on the standalone ipw3945 package:
http://sourceforge.net/mailarchive/message.php?msg_id=15376072

Ben Collins (ben-collins) wrote :

Makefile is fixed in git. Upload should be tomorrow or Saturday.

Changed in linux-source-2.6.15:
status: In Progress → Fix Committed
Richard Laager (rlaager) wrote :

Ben, what happened with the upload? I haven't seen an updated kernel package?

Albert Vilella (avilella) wrote :

I can confirm that:
sudo modprobe ipw3945
works on 2.6.15-22-686
and then I had to manually:
sudo cp /sbin/ipw3945d /sbin/ipw3945d-2.6.15-22-686
sudo /sbin/ipw3945d-2.6.15-22-686 --quiet
To bring up the eth1 interface. Not sure if this should be working automagically or not.

Korny Sietsma (korny) wrote :

I didn't need to modprobe - after running apt-get dist-upgrate and booting with 2.6.15-22.686, lsmod reports that the ipw3945 module is loaded.

And it all seems to be working - I'm connected wirelessly now! (I used NetworkManager to do all the configuration, it seemed to "just work".)

My only slight concern is that it's reporting 70% signal strength, when my laptop (Thinkpad X60) is about 1 foot from the wifi access point (Linksys WAG54g) - but I'm not really complaining at this point.

mroth (mrothy) wrote :

WPA is nonfunctional in this version of the driver--appears to be related to bug #41214.

mroth (mrothy) wrote :

Looking at the changelog at http://ipw3945.sourceforge.net/#news , everything in up to 1.0.3 is a bug fix, if possible, it may be desirable to jump to this version to get the WPA fixes along with the rest.

Paul Sladen (sladen) wrote :

Sounds like it's fixed in -22. WPA not working is a separate issue, as reported in bug #41214.

Changed in linux-source-2.6.15:
status: Fix Committed → Fix Released
Ari (ari-reads) wrote :

Hi, just to report, after a fresh install of 6.06 on Thinkpad x60s, ipw3945 worked out of the box with the default 386 kernel. With the 686 (smp) kernel, no wireless extensions are showing up anymore in iwconfig.

lsmod shows the module loaded; dmesg and syslog do not show any error:

 ariel@ariel-laptop:~$ dmesg |grep ipw
[4294687.244000] ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux, 1.0.5m
[4294687.244000] ipw3945: Copyright(c) 2003-2006 Intel Corporation
[4294687.244000] ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection

As you see I tried upgrading the driver to 1.0.5 (dapper comes with 1.0.3). There is absolutely no change.

Any chance we can get a fix for this?

Thanks!

mroth (mrothy) wrote :

Ari, I'm using the 686-smp kernel on a Thinkpad X60s and the ipw3945 card seems to be working fine for me in Dapper, including WPA support.

Perhaps there is another variable to consider?

Ari (ari-reads) wrote :

Interesting!

Did you do a fresh install of the official Dapper release (that's what I did)? Do you recall if you had to do any additional config?

If you didn't do a fresh install, if you have the chance to do it it would be great to compare our results, I may be doing something wrong on my side.

I have both the 386 and 686 official kernels, I got the 686 with synaptics. When I boot the 386 kernel, the radio is turned on automatically and the wireless extensions show up, all is good. When I boot the 686 kernel, no wireless extensions show up.

What else can I check (in lspci & dmesg & syslog everything looks good, no errors, card is detected)?
My install is essentially the default one; the issue showed up as soon as I switched to the 686 kernel. Now I have installed AIGLX/compiz as well (which btw works wonderfully in this machine), but nothing changed.

Ben Collins (ben-collins) wrote :

I'd be willing to bet you don't have the linux-restricted-modules-2.6.15-23-686 package installed. You should use the meta-package to make sure you don't get this again:

apt-get install linux-686

This will pull in l-r-m and everything else you need to make your 686 kernel just as happy as the 386 one :)

Ben Collins (ben-collins) wrote :

I forgot to mention that the reason for this is that the userspace daemon ipw3945d is contained in the l-r-m package and we keep it kernel specific (even though it doesn't need it be, we keep it this way just in case an upgrade issue comes up some time).

Ari (ari-reads) wrote :

Hi Ben, thanks a bunch. You were totally right, l-r-m for 686 package was not installed but needed.

When I installed the smp kernel, I didn't choose "linux-686" because the description does not mention "smp" and I had no idea it was a meta package now what a meta package was :-), and I chose linux-686-2.6.x-x-686 because it did say "smp". Silly me :-)

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers