Linux Wireless Router :: RedHat 7.3 on Optiplex GXi
|
This page documents my experiences getting Enterasys RoamAbout wireless
cards and SVEC PCI adapters working in a Dell Optiplex GXi desktop,
running RedHat 7.3 Linux.
|
Hopefully it'll prove useful for some other people trying to do
the same thing.
Hardware
- Dell
Optiplex GXi
low-profile desktop with the following specs:
-Pentium 166MMX processor
-64Mb RAM
-2.5Gb IDE HDD
-onboard 3COM 3C905 10/100Mbps network card
- 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
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.
The Optiplex only has two PCI slots and one ISA slot - hence the need for an ISA NIC
(it also has an onboard NIC, but I required two wired NICs).
As the Optiplex BIOS can't boot from 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 192Mb SWAP partition, with the remaining disk space being used for a
2.2Gb / 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.
The Red Hat installer successfully detected the 3COM NIC, and allowed me to
specify the TCP/IP settings for it. I chose to use DHCP (for now), so
it would pick up an IP address from my DHCP server on my home network.
After booting into linux, I manually ran kudzu,
to configure the ISA NIC.
kudzu then successfully detected my ISA NIC, and
allowed me to configure the networking properties for it
(it is eth1, as the onboard NIC is
eth0):
ip address: 10.0.0.3
netmask: 255.255.255.0
default gateway: 10.0.0.1
primary nameserver: 10.0.0.1
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
/var/log/messages:
Jun 27 20:27:51 elrond kernel: PCI: Enabling device 00:0d.0 (0000 -> 0002)
Jun 27 20:27:51 elrond kernel: PCI: No IRQ known for interrupt pin A of device 00:0d.0.
Please try using pci=biosirq.
Jun 27 20:27:51 elrond kernel: PCI: Enabling device 00:0e.0 (0000 -> 0002)
Jun 27 20:27:51 elrond kernel: PCI: No IRQ known for interrupt pin A of device 00:0e.0.
Please try using pci=biosirq.
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/hda
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/hda1
append="pci=biosirq"
and then ran lilo to rewrite the boot sector.
When rebooting, /var/log/messages indicated PCMCIA was working,
and the PCMCIA to PCI adapters now had valid IRQs:
Jun 27 20:42:41 elrond kernel: PCI: Enabling device 00:0d.0 (0000 -> 0002)
Jun 27 20:42:41 elrond kernel: PCI: Assigned IRQ 10 for device 00:0d.0
Jun 27 20:42:41 elrond kernel: PCI: Enabling device 00:0e.0 (0000 -> 0002)
Jun 27 20:42:41 elrond kernel: PCI: Assigned IRQ 9 for device 00:0e.0
Jun 27 20:42:41 elrond kernel: Yenta IRQ list 0000, PCI irq10
Jun 27 20:42:41 elrond kernel: Socket status: 30000410
Jun 27 20:42:41 elrond kernel: Yenta IRQ list 0000, PCI irq9
Jun 27 20:42:41 elrond kernel: Socket status: 30000410
However, dmesg indicated that the
wvlan_cs driver was being used:
wvlan_cs: WaveLAN/IEEE PCMCIA driver v1.0.6
wvlan_cs: (c) Andreas Neuhaus
wvlan_cs: index 0x01: Vcc 5.0, irq 10, io 0x0100-0x013f
wvlan_cs: Registered netdevice eth2
wvlan_cs: MAC address on eth2 is 00 01 f4 eb f4 64
wvlan_cs: Found firmware 0x60006 (vendor 1) - Firmware capabilities : 1-1-1-1-1
I downloaded hermes.conf
and scp-ed it into /etc/pcmcia, and restarted pcmcia
(service pcmcia restart).
The system log /var/log/messages now indicated that the
orinoco_cs driver was being used,
but the wireless cards were being detected as
Intersil PRISM2 11 Mbps Wireless Adapter:
Jun 27 21:05:25 elrond cardmgr[1300]: socket 0: Intersil PRISM2 11 Mbps Wireless Adapter
Jun 27 21:05:25 elrond cardmgr[1300]: executing: 'modprobe hermes'
Jun 27 21:05:25 elrond cardmgr[1300]: executing: 'modprobe orinoco'
Jun 27 21:05:26 elrond cardmgr[1300]: executing: 'modprobe orinoco_cs'
Note that this is purely cosmetic - linux is still loading the correct drivers.
To correct this, edit /etc/pcmcia/hermes.conf and
comment out the lines relating to the Intersil card.
Restarting pcmcia should cause the cards to be correctly detected as RoamAbouts:
Jun 27 21:10:46 elrond cardmgr[1471]: socket 0: Cabletron RoamAbout 802.11 DS
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=eth3
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.2.1
NETMASK=255.255.255.0
Restarting PCMCIA then correctly configured eth2 and
eth3, and they now showed up 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
|