Linux Wireless Router :: RedHat 7.3 on PPro Intel VS440FX
This page documents my experiences getting Enterasys RoamAbout wireless
cards and SVEC PCI adapters working in a Pentium Pro 200, on an Intel VS440FX motherboard,
running RedHat 7.3 Linux.
Hopefully it'll prove useful for some other people trying to do
the same thing.
Hardware
- generic-brand PC with the following specs
-Pentium Pro 200 processor
-Intel VS440FX motherboard
-128Mb RAM
-Adaptec 2940 SCSI card
-4.3Gb SCSI HDD
- 2 x SVEC WL-123 PCMCIA to PCI adapters
- 2 x Enterasys RoamAbout wireless network cards
(flashed to 6.06 firmware)
- Genius GE2000III (RealTek RTL8019 chipset) ISA 10Mbps network card
- 3COM 3C509B ISA 10Mpbs network card
Software
Firmware
Installation
I flashed my RoamAbouts with 6.06 firmware.
I did this on a laptop running Windows 95,
with the Enterasys
7.44
drivers and client utility.
This is required, as the cards do not work in Linux with the 6.04 firmware,
and because IBSS Ad-Hoc mode is only available in 6.06 and later.
I installed the two PCMCIA carriers and the ISA NIC into the PC, and plugged the RoamAbouts
into the carriers.
I had to use 2 ISA NICs, as the motherboard has 4 PCI slots, and they were filled
with the SCSI card, video card, and 2 x SVEC PCMCIA to PCI adapters.
As the BIOS doesn't appear to support booting from (IDE) CD,
I created a Red Hat 7.3 boot floppy, and used it to initiate a custom installation
of Red Hat 7.3 from CD.
I created a 256Mb SWAP partition, with the remaining disk space being used for a
/ partition, and LILO was selected as the boot loader.
Make sure you select the wireless-tools package,
and also make sure you select ncurses-devel (under Libraries)
if you intend to compile the kernel without X installed, and
select kernel-pcmcia-cs (under Kernel)
for pcmcia support.
I chose not to install X, as I wanted a lean, cut-down installation of Linux.
When rebooting for the first time, kudzu detected both the
network cards, and allowed me to specify the TCP/IP settings for them.
I chose to use the 3COM NIC (eth0) as the primary wired interface
for now, and configured it appropriately in
/etc/sysconfig/network-scripts/ifcfg-eth0 for my home network:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.60.11.129
NETMASK=255.255.255.240
I edited /etc/sysconfig/network and changed the value of
HOSTNAME to something more appropriate (ie,
elrond.home instead of localhost.localdomain).
After a reboot, ifconfig indicated I now had a working
eth0 and a working eth1.
As nothing showed up in dmesg in relation to the
PCMCIA-to-PCI convertors,
I edited /etc/sysconfig/pcmcia, and changed the
value of PCIC from i82365
to yenta_socket.
Executing service pcmcia restart restarts the PCMCIA
service, to make these changes take effect, and the following showed up in
dmesg output:
PCI: Enabling device 00:13.0 (0000 -> 0002)
PCI: No IRQ known for interrupt pin A of device 00:13.0. Please try using pci=biosirq.
PCI: Enabling device 00:0b.0 (0000 -> 0002)
PCI: No IRQ known for interrupt pin A of device 00:0b.0. Please try using pci=biosirq.
Yenta IRQ list 0000, PCI irq0
Socket status: 30000410
Yenta IRQ list 0000, PCI irq0
Note that this appears to be due to the way the bios in this particular PC handles
the IRQs for the PCI bus, and the way the Ricoh chipset on the PCMCIA to PCI adapters
handles interrupts.
Apparently the Ricoh chipset can use either PCI, ISA or serial
interrupts, and doesn't always default to the correct mode.
I edited /etc/lilo.conf, and added
append="pci=biosirq"
to the end of the image section, so it looked like:
prompt
timeout=50
default=linux
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image=/boot/vmlinuz-2.4.18-3
label=linux
initrd=/boot/initrd-2.4.18-3.img
read-only
root=/dev/sda1
append="pci=biosirq"
and then ran lilo to rewrite the boot sector.
When rebooting, dmesg indicated PCMCIA was working,
and the PCMCIA to PCI adapters now had valid IRQs:
Linux Kernel Card Services 3.1.22
options: [pci] [cardbus] [pm]
PCI: Enabling device 00:13.0 (0000 -> 0002)
PCI: Assigned IRQ 11 for device 00:13.0
PCI: Enabling device 00:0b.0 (0000 -> 0002)
PCI: Assigned IRQ 10 for device 00:0b.0
Yenta IRQ list 0000, PCI irq11
Socket status: 30000416
Yenta IRQ list 0000, PCI irq10
Socket status: 30000086
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x378-0x37f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: excluding 0xa80-0xa8f
I downloaded hermes.conf,
commented out the lines relating to the Intersil card,
and scp-ed it into /etc/pcmcia.
Plugging one RoamAbout card into an adapter resulted in the following
dmesg output:
hermes.c: 16 Jan 2002 David Gibson
orinoco.c 0.09b (David Gibson and others)
orinoco_cs.c 0.09b (David Gibson and others)
eth2: Station identity 001f:0001:0006:0006
eth2: Looks like a Lucent/Agere firmware version 6.06
eth2: Ad-hoc demo mode supported
eth2: IEEE standard IBSS ad-hoc mode supported
eth2: WEP supported, 104-bit key
eth2: MAC address 00:E0:63:82:FC:AD
eth2: Station name "HERMES I"
eth2: ready
eth2: index 0x01: Vcc 5.0, irq 11, io 0x0100-0x013f
However, when the second RoamAbout card was plugged in, dmesg
indicated some problems:
eth3: Error -110 reading firmware info. Wildly guessing capabilities...
eth3: Station identity 0000:0000:0000:0000
eth3: Looks like an Intersil firmware version 0.00
eth3: Intersil firmware earlier than v0.08 - several features not supported
eth3: Ad-hoc demo mode supported
hermes @ 0x140: Error -16 issuing command.
eth3: failed to read MAC address!
orinoco_cs: register_netdev() failed
A quick Google search turned up
this
useful info, which indicated it was an I/O conflict.
The second card was unsuccessfully trying to use 0x140,
so, in /etc/pcmcia/config.opts, I changed
include port 0x100-0x4ff, port 0xc00-0xcff
to
include port 0x200-0x4ff, port 0xc00-0xcff
Pcmcia was restarted (service pcmcia restart), with
dmesg indicating the change in I/O memory:
Linux Kernel Card Services 3.1.22
options: [pci] [cardbus] [pm]
PCI: Assigned IRQ 11 for device 00:13.0
PCI: Assigned IRQ 10 for device 00:0b.0
Yenta IRQ list 0000, PCI irq11
Socket status: 30000416
Yenta IRQ list 0000, PCI irq10
Socket status: 30000086
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0200-0x04ff: excluding 0x378-0x37f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: excluding 0xa80-0xa8f
cs: memory probe 0xa0000000-0xa0ffffff: clean.
The first RoamAbout was plugged in:
hermes.c: 16 Jan 2002 David Gibson
orinoco.c 0.09b (David Gibson and others)
orinoco_cs.c 0.09b (David Gibson and others)
eth2: Station identity 001f:0001:0006:0006
eth2: Looks like a Lucent/Agere firmware version 6.06
eth2: Ad-hoc demo mode supported
eth2: IEEE standard IBSS ad-hoc mode supported
eth2: WEP supported, 104-bit key
eth2: MAC address 00:01:F4:EB:F4:64
eth2: Station name "HERMES I"
eth2: ready
eth2: index 0x01: Vcc 5.0, irq 10, io 0x0240-0x027f
and then the second was plugged in:
eth3: Station identity 001f:0001:0006:0006
eth3: Looks like a Lucent/Agere firmware version 6.06
eth3: Ad-hoc demo mode supported
eth3: IEEE standard IBSS ad-hoc mode supported
eth3: WEP supported, 104-bit key
eth3: MAC address 00:E0:63:82:FC:AD
eth3: Station name "HERMES I"
eth3: ready
eth3: index 0x01: Vcc 5.0, irq 11, io 0x0300-0x033f
indicating there was no longer a memory address conflict.
I edited /etc/pcmcia/wireless.opts, and deleted the
card-specific configuration info.
I made a copy of the generic configuration, so there's a section for each PCMCIA card,
and specify which secion applies to each card by modifying the match expression
(ie, "*,0,*,*" to match the first card,
"*,1,*,*" to match the second card).
I specified an appropriate ESSID value for each card,
and set the MODE to either
"Ad-Hoc" or "Managed" as required.
I found the first PCMCIA card inserted was always detected as being in socket 0, no
matter which PCMCIA carrier I plugged it into.
I created files called ifcfg-eth2 and
ifcfg-eth3
in the /etc/sysconfig/network-scripts/ directory and configured
appropriate network settings in each:
DEVICE=eth2
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.60.11.2
NETMASK=255.255.255.224
GATEWAY=10.60.11.30
and
DEVICE=eth3
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.60.11.145
NETMASK=255.255.255.240
Restarting PCMCIA then correctly configured eth2 and
eth3, and they now showed up correctly in ifconfig.
If I rebooted the PC with both RoamAbout cards plugged in, the top card was detected
as being socket 0 (ie, eth2), and the bottom card as
socket 1 (eth3).
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
|