Linux Wireless Router :: RedHat 9 on Celeron 466
This page documents my experiences getting Enterasys RoamAbout wireless
cards and SVEC PCI adapters working in a Celeron 466 box,
running RedHat 9 Linux.
Hopefully it'll prove useful for some other people trying to do
the same thing.
Hardware
- generic-brand PC with the following specs
-Celeron 466
-Tekram motherboard
-384MB RAM
-6.4GB IDE HDD
- 2 x SVEC WL-123 PCMCIA to PCI adapters
- 2 x Enterasys RoamAbout wireless network cards
(flashed to 6.06 firmware)
- 3 x RealTek RTL-8139/8139C/8139C+ PCI network cards
Software
Firmware
Software Installation & Configuration
RedHat 9.0 Installation
After an uneventful installation of RedHat 9 from CD,
the machine was put onto the the network by configuring a static IP on eth0
by editing /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.60.11.130
NETMASK=255.255.255.224
Changing Some Defaults
I edited /etc/sysconfig/network and changed the value of
HOSTNAME to something more appropriate (ie,
gimli.mpot.mm.wafreenet instead of
localhost.localdomain).
I then installed various updates, and compiled a fresh 2.4.28 kernel for the box,
using kernel pcmcia rather than pcmcia-cs.
PCMCIA and RoamAbout Drivers
Unlike the issues I had with RedHat 7.3 on older motherboards,
RedHat 9 on this motherboard had no issues finding the two PCMCIA cradles
and RoamAbout PCMCIA cards.
However, I found that after restarting the PCMCIA service, the second RoamAbout card would
fail to start, with syslog showing the failure:
Dec 1 00:47:01 gimli cardmgr[3468]: socket 1: Cabletron RoamAbout 802.11 DS
Dec 1 00:47:01 gimli kernel: GetNextTuple(). No matching CIS configuration,
maybe you need the ignore_cis_vcc=1 parameter.
Dec 1 00:47:01 gimli kernel: orinoco_cs: GetFirstTuple: No more items
Dec 1 00:47:02 gimli cardmgr[3468]: get dev info on socket 1 failed: Resource
temporarily unavailable
Despite trying various things, I couldn't find the cause of this. As a workaround,
(soft) ejecting the cards before restarting PCMCIA works:
cardctl eject
service pcmcia restart
cardctl insert
IP Forwarding
Unlike RedHat 7.3, I found executing
echo 1 > /proc/sys/net/ipv4/ip_forward
was not sufficient to get routing working, as it would reset to 0
after a reboot.
Instead, I had to edit /etc/sysctl.conf and change the contents to read
net.ipv4.ip_forward = 1
Bogus Route
When looking at the routing table (using route -n),
I noticed the following entry:
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth3
After googling for more info,
I found
this post,
indicating it was caused by zero configuration networking
(zeroconf), which apparently is
default behaviour in RedHat 9.
To remove this route, I edited /etc/sysconfig/network, and added
NOZEROCONF=yes
After restarting the network (service network restart),
the extra route was gone.
Wireless Configuration
RedHat 9's network scripts totally ignore any configuration placed into
/etc/pcmcia/wireless.opts.
There are a number of workarounds to this, but I found the easiest way was
to add all wireless configuration parameters to the interface script.
For my freenet uplink interface, I edited
/etc/sysconfig/network-scripts/ifcfg-eth3:
DEVICE=eth3
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.60.11.2
NETMASK=255.255.255.224
INFO="WA FreeNet..."
ESSID="MartinMast"
NWID=""
MODE="Managed"
FREQ=""
CHANNEL=""
SENS=""
RATE="1M"
KEY=""
RTS="off"
FRAG=""
IWCONFIG="nick mpot"
IWSPY=""
IWPRIV=""
The other wireless interface was similarly configured by editing
/etc/sysconfig/network-scripts/ifcfg-eth4:
DEVICE=eth4
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
TYPE=wireless
INFO="home wireless network"
ESSID="pothome"
NWID=""
MODE="Ad-Hoc"
FREQ=""
CHANNEL="1"
SENS=""
RATE=""
KEY="s:XXXXX"
RTS=""
FRAG=""
IWCONFIG="nick gimli"
IWSPY=""
IWPRIV=""
Note that the XXXXX indicates the WEP key I'm using
(obscured for obvious reasons).
PCMCIA was restarted:
cardctl eject
service pcmcia restart
cardctl insert
and both wireless interfaces now came up correctly configured.
Upgrade orinoco_cs
The orinoco_cs driver was
upgraded to 0.15rc2.
Upgrade Wireless Tools
Whenever using any of the wireless tools
(ie, iwconfig, iwspy, etc),
the following error would be displayed:
Warning: Driver for device eth2 has been compiled with version 16
of Wireless Extension, while this program is using version 15.
Some things may be broken...
I downloaded
wireless tools version 27
from Jean Tourrilhes' Wireless Tools for Linux page,
and SCP-ed it into /usr/src.
I first uninstalled the RedHat wireless tools RPM:
rpm -e wireless-tools
and then untarred the wireless tools source code:
cd /usr/src
tar zxvf wireless_tools.27.tar.gz
cd wireless_tools.27
To ensure the binaries would be installed into the locations that RedHat was
expecting, I edited the Makefile, and changed
PREFIX = /usr/local
to
PREFIX =
This will ensure the binaries will be installed into /sbin/,
instead of /usr/local/sbin/.
I then compiled and installed the wireless tools from the source:
make
make install
After a reboot, all wireless tools now worked correctly without any errors.
Broken wavemon
However, after rebooting, I found that
wavemon
(a very useful tool for monitoring signal, noise and SNR in real-time)
would no longer run:
[mpot mpot]# wavemon
fatal error: could not get range information
and the following error would be logged to the syslog:
Dec 7 05:46:17 gimli kernel: eth2 (WE) : Buffer for request 8B0B too small (308<564)
Recompiling wavemon now that a newer version of wireless tools was
installed made no difference.
Further investigation indicated it was due to a mismatch of versions of the wireless header files,
caused by the earlier upgrade of the wireless tools.
/usr/include/linux/wireless.h was from wireless extensions version 15,
while /include/wireless.h was from wireless extensions version 17.
The later version was copied over the top of the older version:
cp /usr/include/linux/wireless.h /usr/include/linux/wireless.h.old
cp /include/wireless.h /usr/include/linux/wireless.h
and wavemon now successfully worked after being recompiled.
More Info
Refer to my page on setting up a wireless router
for more info on updating the orinoco_cs driver, setting up routing, dhcpd, etc.
References
Jean Tourrilhes' Wireless Tools for Linux
Recipe for a Linux 802.11b Home Network
last updated 22 Oct 2013
|