NavigationUser loginWho's onlineThere are currently 1 user and 15 guests online.
Online users
Highest Users
Linux NewsClick the above for your daily dose of Linux news. Food for ThoughtNot a nut or bolt shall reach Chile under Allende. Once Allende comes to power we shall do all within our power to condemn Chile and all Chileans to utmost deprivation and poverty. Spam?See spam posts on this site? If so, please don't reply to the spam! Instead, just report the URL to the webmaster. |
Compiling problems: driver for Intel Corporation PRO/Wireless 3945ABG Network ConnectionOk the system is a Dell Inspiron E1505 running Debian testing with a self-compiled 2.6.17.7 kernel. Dell doesn't believe in using linux-friendly hardware so we must jump through dozens of hoops before getting a working wireless card. (Ah Dell... I have thousands of things to say about them, none of them good.) The wireless card is (from lspci) The full run down on the card (from lshw) is There are many sets of directions on the web for how to get the drivers working for this but I like this one: I have successfully installed the microcode and the daemon. I have been playing with the ieee80211 module and the ipw3945 driver. The latest version of the driver (ipw3945-linux-1.1.0) has no known conflicts with any version of ieee80211. (There was a problem with previous versions of the driver conflicting with the 1.1.14 version of ieee80211.) I tried many different combinations of ieee80211 and ipw3945. I had some trouble compiling ieee80211 as a module, as it didn't find all of the files correctly - it seemed like some of the posts I've found indicated that there might be problems using an external version of ieee80211. Currently I'm using the ieee80211 module in the 2.6.17.7 kernel. That module appears to work, as in I can see it with modprobe -l, I can load it with modprobe ieee80211, and then I can see it with lsmod. (This did not work in the 2.6.18-rc2 kernel so I stopped using that one.) However, I cannot compile the ipw3945 driver. It should be simple, according the the webpage cited above. With the latest version of the ipw3945 driver I shouldn't have to use the extra argument for make used on the webpage: amphipilis:/usr/src/ipw3945-linux-1.1.0/ipw3945-1.1.0# make I've played with arguments and I've played with adding IEEE80211_API_VERSION=(value) as an argument for make but no matter what value I put it says that IEEE80211_API_VERSION is not defined. The same error comes up if I do what the guy who wrote the aforementioned webpage did and use the command: So... I'm at a loss now. Help? Christine |
The driver needs to link to
The driver needs to link to the IEEE80211 driver, so when you compile you have to make sure the appropriate flags are set so that gcc knows where to find the headers files for ieee... Now it's possible that you already did do that, the next probable problem is that you compiled the 80211 driver separate from the kernel and the make script is a bit stupid and assumes the module version information for that driver is in the wrong place.
Well I didn't compile the
Well I didn't compile the 80211 driver separate from the kernel. It was compiled with the kernel.
I tried many different combinations of compiling with various options. I can't even keep them all straight anymore.
If I try explicitly stating where the source for the ieee80122 driver:
amphipilis:/usr/src/ipw3945-linux-1.1.0/ipw3945-1.1.0# make IEEE80211_INC=/lib/modules/2.6.17.7/build/include/net/
ERROR: ieee80211.h not found in '/lib/modules/2.6.17.7/build/include/net/'.
You need to install the ieee80211 subsystem from http://ieee80211.sf.net
and point this build to the location where you installed those sources, eg.:
% make IEEE80211_INC=/usr/src/ieee80211/
will look for ieee80211.h in /usr/src/ieee80211/net/
make: *** [check_inc] Error 1
amphipilis:/usr/src/ipw3945-linux-1.1.0/ipw3945-1.1.0#
however, I don't know how it's not finding the header because it is obviously there:
amphipilis:/usr/src/ipw3945-linux-1.1.0/ipw3945-1.1.0# ls -al /lib/modules/2.6.17.7/build/include/net/ieee80211.h
-rw-rw-rw- 1 root root 38194 2006-07-24 23:36 /lib/modules/2.6.17.7/build/include/net/ieee80211.h
amphipilis:/usr/src/ipw3945-linux-1.1.0/ipw3945-1.1.0#
If there are other flags I should set I don't know what they are. I don't know why it doesn't see my ieee80211 driver. I had trouble compiling it separately from the kernel, although these are the directions it gives in the INSTALL document with the driver. The various READMEs and INSTALLs don't mention any problems with compiling and generally aren't horribly useful. If you have any ideas I would be grateful.
thanks
Christine
You may need to edit the
You may need to edit the Makefile - how long is it? :}
If it's not too long it's probably best to post it here. I had a look at my 2.6.15 source directory and all those *.mod files are in build/.tmp_versions/, not net/ieee8011/... - of course things may have changed by kernel 2.6.17 (I know the device drivers have changed a bit) but it is just as likely that the Makefule is a bit dated or else written and tested only under one distribution (typically RedHat). Your previous message seems to indicate that the problem starts when a .mod file is not found and the build system mistakenly decides that you have an incompatible ieee80211 version. But before posting just check this...
Looking at your most recent post, you specified the include path with "/net" at the end - try again without the "net". If the actual setup is something like this, the compiler won't be able to find your file:
The header file, blah.h:
#include
The include path:
/some/silly/path/net
In that case the compiler will look in default directories and the specified directory "/some/silly/path/net", however the #include directive says "append /net/netheader.h to the end of the search paths" so the compiler will actuall look for:
/some/silly/path/net/net/netheader.h
and not
/some/silly/path/net/netheader.h
Usually when instructed to specify the "include dir" you specify the path until "/include". Build scripts then rely on a very strict arrangement of other directories in that "include" directory.