Using
ndiswrapper with the WMP54Gv4 (cont.)
Puppy Linux 1.0.2
Puppy version 1.0.2 comes packed with a bunch of features for a small
distro. One of the difficulties has been getting wireless cards
working in Puppy. The new 1.0.2 version of Puppy uses the 2.6 series
kernel, which is
upgraded from previous releases, that used the 2.4 kernel. My wifi card
is a Linksys WMP54gv4, using the ralink chipset.
This how-to does not take into consideration using wifi cards on a
laptop (PCMCIA).
Before proceeding with
this process, make sure that your card (exact brand, model and version)
is supported by ndiswrapper. The ndiswrapper wiki page has a section
where you can see if your card is supported, located here
Remember, different models of a card may have different chipsets
driving them, so check this out carefully first.
With the changes made in the new Puppy release, apparently ndiswrapper
was somehow missed. I had
previously been able to get ndiswrapper going on the 1.0.1 version.
After investigating, I found that ndiswrapper and loadndisdriver were
missing, I went
about getting ndiswrapper installed. Fortunately, John Murga assembled
the needed perl package for this release, needed to actually compile
the Windows drivers right from Puppy. In previous versions of Puppy,
one had to compile the drivers in another distro and move the
/etc/ndiswrapper files to Puppy.
NOTE: Puppy does have a utility called xwconfig to assist in setting up
your wireless cards. However, I found that this utility only works when
the card is actually detected and wlan0 is recognized. To use
this utility, ndiswrapper needs to be loaded first.
After installing John's perl and ndiswrapper packages, I still found
that loadndisdriver executable was still missing. I borrowed this file
from my Mandriva installation, which worked fine. In a nutshell, I did
the following;
1. installed the perl package, which can be found here
2. installed the ndiswrapper package, which can be found here
3. made sure that the ndsiwrapper executable was in the /usr/bin
directory
4. made sure that the loadndisdriver executable was in the /sbin
directory.
5. made sure my Rt2500.INF and Rt2500.sys Windows drivers were in a
convenient place on my Puppy partition. In my case, the root directory.
In general, using the Win XP or 2000 inf and sys files from your your
wireless card's installation cd should work..
Once you have your inf and sys files in a known location run;
ndsiwrapper -i Rt2500.INF
Of course, substitute the name for your inf file. The file name syntax
is case sensitive, so watch this, or the driver won't be found.
This should install the driver files into the /etc/ndiswrapper
directory In my case, the driver
seemed to be installed. Just to make sure, I ran ndiswrapper -l and it
gave the the comforting message that the driver was present and
installed. You should see a message like;
Installed
ndis drivers
rt2500 driver present, hardware present
Now, run iwconfig and you should see wlan0 as a wireless option.
In Puppy, for some unknown reason, the command sequence for loading WEP
is a
little different.Once I invoked modprobe ndiswrapper in rxvt, I used
dmesg to check the status. Yep, the driver was loaded and showed the
messages that the card was seen and had an AP identifier. Invoking
iwconfig, I found that wlan0 was identified as the interface
designation for the wireless card.
Using iwconfig in rxvt, I then configured the necessary settings, which
were;
iwconfig wlan0 key open xxxxxxxxxx channel 6 essid default
So to recap;
iwconfig = is the command line utility that sets up the wireless card
settings
wlan0 = is the designation that ndsiwrapper gives to the wireless
interface
key = sets the WEP value
open = ndiswrapper will not work unless this value is used. I don't
know why. The system should use the managed value, but this
worked.
xxxxxxxxxx is my WEP key assigned to the router. My system uses 64 bit
encription. Yours may be different.
channel 6 = I knew my card used channel 6 to get a signal. This can
also be found in your router settings.
essid = is the name assigned to your router's essid value.
Next, you need to tell Puppy to start the network using the wireless
card. Puppy uses dhcpcd, so the command line usage is;
dhcpcd wlan0
This should bring up the card, with an IP address. If you do not see an
IP address,something is amiss. You can check this by running the
command ipconfig in rxvt. You
should see wlan0 , with an IP address. You should see something like;
192.168.0.102 (on the second line)
Next, you want to auto load the settings on boot. Puppy has a file
/etc/rc.d/rc.local that can be used to automate the process. Just add
the following values, corresponding to your system.Using Rox, I added
the following to rc.local;
modprobe ndsiwrapper (loads the ndiswrapper module)
iwconfig wlan0 key open xxxxxxxxxx channel 6 essid default
dhcpcd wlan0
Again, make sure that your WEP key is correct for your system.
Save the file and your done. Reboot Puppy and see what happens.
Making the process automatic at boot
Puppy has a file, /etc/rc.d/rc.local that can be used to automatically
load ndiswrapper and bring up your wlan0 interface. Using Rox, migrate
to the /etc/rc.d/rc.local file, right click and choose open as text.You
can now add your commands to be started at boot time. Mine were as
follows;
modprobe ndiswrapper
iwconfig wlan0 key open xxxxxxxxxx channel 6 essid default
dhcpcd wlan0
Of course, substitute xxxxxxxxxx with your WEP values. Save the file
and your done!
NOTE: If you make a mistake with the added values in
/etc/rc.d/rc.local,
Puppy may hang on boot. So, make sure your syntax and values are
correct before editing this file.