[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

WPC54G not being recognized by cardctl?



Hey all,

 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



Reply to: