So I got this nice, new Linksys WPC54G card for this laptop, hoping to get it wireless capable. Of course, being who I am, I forgot to check ahead of time and make sure that it's Linux compatible. And it's not. Broadcom hasn't released any Linux drivers yet. But ndiswrapper (available at ndiswrapper.sourceforge.net) can be used to load the Windows NDIS drivers of the card and make it work under Linux. And for this card, that actually works! If I compile the wrapper into a kernel module, load that module, then load the NDIS drivers, I can ifup on eth0, and both ifconfig and iwconfig show the interface as up and running. I can also then access the Internet through the wireless AP I have set up.
The problem occurred when I tried to automate the procedure. That is, my goal is to get "ifup <wireless-card-interface>" to be called when I insert the PCMCIA card and likewise "ifdown..." when I remove it. So I looked into the various manpages (pcmcia, cardmgr, cardctl, modprobe) to see how this was done. I saw that the Debian way to do it was two-fold. First, add the proper lines to /etc/pcmcia/config.opts to get cardmgr, upon seeing the card, to load a certain kernel module. Then, in /etc/modprobe.conf, when cardmgr goes to load the module, have it exec a script that does all the loading steps (in the case where loading the module isn't enough).
I did just that. First, I added to modprobe.conf the following lines:
alias ndis0 ndiswrapper install ndiswrapper /sbin/modprobe --ignore-install ndiswrapper ; /usr/sbin/loadndisdriver 14e4 4320 \ /lib/windrivers/bcmwl5.sys /lib/windrivers/lsbcmnds.inf
So when modprobe is asked to load "ndis0" it ought to load ndiswrapper.ko as well as run loadndisdriver with those arguments. Now I went to the next step: How to get cardmgr to go from "the card" to "load module ndis0". Here is what I added to config.opts:
# For wpc54g_cs load ndiswrapper device "wpc54g_cs" class "network" module "ndis0"
# Card definition for Linksys WPC54G card "Linksys WPC54G 802.11g Network Adapter" *** bind "wpc54g_cs"
The "***" was where I drew a blank. I didn't know how to recognize the WPC54G card. I read up on the documentation and saw that it can be through manfid, which is how most network cards are handled. So I ran "cardctl ident":
Socket 0: no product info available
Perplexed, I ran "cardctl info":
PRODID_1="" PRODID_2="" PRODID_3="" PRODID_4="" MANFID=0000,0000 FUNCID=255
And "cardctl status":
Socket 0: 3.3V CardBus card function 0: [ready]
And now I'm stuck. I don't have any vendor/device strings with which to identify the card, so I don't know how I might automate the process. It's very strange, as I googled the issue, and noticed another WPC54G user who DOES get strings/manfid in his run of "cardctl info/ident". When I run "lspci", a lot of information does show up about the card as well. And on top of it, the card works! So why am I not seeing these identification strings? Are they contingent on the presence of the card in /etc/pcmcia/config[.opts]? I was under the impression that it worked the other way around.
Here is some more relevant information. I am running Linux 2.6.0 on a very old Toshiba Satellite laptop. It's a Celeron 500 with 64 megabytes of RAM, and only one PCMCIA socket. I'm running Unstable, with the very latest packages. cardctl -V returns 3.2.5. Cardctl DOES pick up id strings for a 3Com 574 card that I have as well. If you have any ideas, please reply directly to me, as I am not subscribed to this list.
-Adar
_________________________________________________________________
Get reliable dial-up Internet access now with our limited-time introductory offer. http://join.msn.com/?page=dept/dialup
-- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]