mike.e@emissary.aus-etc.com
to Mark Swanson, Peter De Schrijver, David Morris, Paul Norton and everyone else I may have missed who put in their time to write and maintain this driver. Also to packrat for his support of the linux-tr listserv.
We do not guarantee that this howto will be accurate for your system. Most people who have used it have had very good results in installing Linux on a Token Ring network.
USE THIS HOWTO AT YOUR OWN RISK!!! ... We are not responsible for any problems caused by using this howto.
If you have any problems with the driver that are not talked about in this howto, feel free to email me at...
mike.e@emissary.aus-etc.comYou may also wish to join the Linux on Token Ring Listserv by mailing majordomo@emissary.aus-etc.com with the body containing:
subscribe linux-tr
This document is copyright (c) 1995-1998 by Michael Eckhoff. You may make copies of this document in whole or in part, in any medium physical or electronic, as long as the copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, please notify me so that I can make sure that you have the most current information available.
Make sure that you have a Token Ring card that is supported by this driver. Currently the only cards that are supported are those that use the Tropic chipset.
Cards that I personally know to work are:
It is recommended that you use 16KB Shared RAM for the time being.
Cards that may cause problems:
This adapter will, in fact, work fine with the Linux token ring driver. However, you MUST run the card in Auto 16/4 compatability mode. The simplest way to set this is to use the LANAID disks sent with the card and run the command:
LANAIDC /FAST=AUTO16
You should then use LANAIDC
or LANAID
to configure the card according to documentation.
This adapter will NOT work. Do not confuse this card with the IBM Token Ring adapter II (4mbit) which does. It is a DMA/Busmaster adapter for ISA.
You may or may not get this one to work. I have had reports of people running it without problems, and others who get errors left and right.
Currently, none of the IBM PCI adapters are supported.
Currently not supported, but being worked on. This driver should be Full Duplex as well when completed.
If you are running a 2.0 distribution of Linux, please jump to the distriubtion specific section of this document. The following is mostly for 1.2 kernels.
Obtain the Token Ring patch from:
ftp://ftp.wayne.esu1.k12.ne.us/pub/Linux/Token-Ring/TokenRing.patch-1.2.0.gz
Obtain the NetTools patched source from:
ftp://ftp.wayne.esu1.k12.ne.us/pub/Linux/Token-Ring/net-tools-1.2.0.patched.tar.gz
Create a directory for the patches (such as /usr/src/patches
)
and place the patches there.
mkdir /usr/src/patches central directory for patch storage
mkdir /usr/src/patches/token place TokenRing patch here
These instructions are for patching a 1.2 kernel for token ring support.
If you have a 2.0 kernel, you only need to recompile the current source
and say ``y
es'' or ``m
odule''
when asked for token ring support.
cd /usr/src
tar cvzhf linuxbak.tar.gz linux
cd /usr/src/patches/token
gzip -d TokenRing.patch-1.2.0.gz
cd /usr/src/linux
patch -p1 < /usr/src/patches/token/TokenRing.patch-1.2.0
-or-
patch -p1 < <directory-of-patchfile>/TokenRing.patch-1.2.0
find . -name \*.rej -print
find . -name \*.orig -print | xargs rm
Make sure your swap space is active if you have one.
cd /usr/src/linux
make config
(The patch should have added two lines to your config.in
file for the following options)
Token Ring support (CONFIG_TR) [y]
(and further down the list...)
IBM Tropic chipset based adaptor support (CONFIG_IBMTR) [y]
make dep
make clean
make zImage
/vmlinuz
kernel to vmlinuz.old
then copy the kernel to /vmlinuz
.
On my system this would consist of copying
Now from the prompt run ``/usr/src/linux/arch/i386/boot/zImage
to/vmlinuz
and editing/etc/lilo.conf
to boot that kernel.
lilo
''.
The NetTools package contains a lot of the basic utils
that you will use to communicate with network devices.
This includes programs like arp
, rarp
, route
,
ifconfig
and netstat
.
Since these programs do not know about Token Ring by default,
you will need to add the NetTools patch so these utilities
can work more efficiently with the Token Ring driver.
The current version of NetTools for 1.2.x kernels is 1.2.0. If you are running a 2.0 kernel, your nettools is most likely already up to date. However, you can get the latest source from:
ftp://tapac.inka.de/pub/comp/Linux/networking/NetTools/
cp net-tools-1.2.0.patched.tar.gz /usr/src
tar -zxvof /usr/src/net-tools-1.2.0.tar.gz
cd /usr/src/net
make install
I personally have had very few problems with this driver. It has been working perfectly for me for quite some time.
If you have any problems with the driver on a 1.2.x kernel, please update to Linux 2.0. The current version, as of this writing, is 2.0.33. There have been many improvements to the token ring driver since the 1.2 patches and most of them have not been ported back.
Also, you will not have to patch a Linux 2.0 kernel for token ring. The source is already included. However, there are some test patches of the code going into 2.1 available if you would like to use it.
Can the token ring driver be compiled as a module?
Yes, it can be — and it works rather well.
There is an extra parameter that you can use
when it is compiled as a module.
If you ever need to ``spoof'' software install programs,
such as the redhat boot disks, into configuring your token ring card
as an ethernet device (for NFS/FTP installs, etc),
you can use the ``device
'' parameter to force a device name
other then tr0
.
You will probably have problems if you try this with multiple adapters.
It is mostly there to get around a few incompatabiliites. Ex.:
/sbin/insmod ibmtr device=eth0
I keep getting an error code ``0011''. Whats up?
Make sure that your connection to the network is good or that you have a loopback connector on your token ring card. This message just means that it could not open the ring. 99.99% of the times, it is just not plugged into one.
If you have a sound card in your machine, and it sits at IO 0x220, you may end up with a conflict with your token ring adapter at 0xa20. If you notice that a supported adapter does not seem to be working and you have a sound card, please try to either set your token ring card to 0xa24 or move/remove your sound card.
Also...
Here are some email messages that I have received about Token Ring and Linux. In some of the messages, I have removed parts that were not important to save space.
From: "Mr. Chuck Rickard" <chuck@gl.umbc.edu>
Subject: Re: Token Ring Kernel patch
I d/l'd the patch, applied it, and re-compiled. When booting it said,
"tr0: Can't assign device to adapter" and again for tr1. Any ideas?
Thanks!
Chuck Rickard
(chuck@umbc8.umbc.edu)
From: David Morris <dwm@shell.portal.com>
When this is the only message issued,
it means that the PIO request for adapter information
(see segment = inb(PIOaddr)
in ibmtr.c
)
was so out of range that there is no TR card at that IO address.
From: Mike Glover <glover@credit.erin.utoronto.ca>
Subject: Token ring problems.
Thanks for responding. I was starting to thing that I posted incorrectly,
and I was about to post again. Anyway, the following clip is part of my
/var/adm/messages file from when I boot up.
May 2 10:03:14 linux kernel: tr0: Unable to assign adapter to device.
May 2 10:03:14 linux kernel: tr1: Unable to assign adapter to device.
The section, tr0: Unable to assign adapter device. is what kinda confuses
me. The documentation is slim at best so I didn't know what to do with
the message. I know I didn't assign any token ring information,
and I didn't know where to do it.
The hardware:
Its a PC clone (Dell OMNIPLEX 560 to be exact)
The token ring card is a Olicom 16/4 Adapter.
I have DOS token ring drivers and it snaps into the network, so there is
nothing wrong with the card. I think, I am just missing something really
small in the config on the Linux side.
The Olicom 16/4 Adapter does not use the Tropic Chipset. Try using one of the cards that are listed at the top of the HOWTO.
From: Mike Glover <glover@credit.erin.utoronto.ca>
Subject: Found an IBM card...
I found myself an IBM token ring card and I got a little further,
but still not luck. (I did change /etc/rc.d/rc.inet1 ifconfig entry
from eth0 to tr0)
Anyway, here is part of the /var/adm/messages file:
May 2 16:23:07 linux kernel: IPX Portions Copyright (c) 1995 Caldera, Inc.
May 2 16:23:07 linux kernel: tr0: PIOaddr: a20 seg/intr: b8 mmio base:
000dc000 intr: 0
May 2 16:23:07 linux kernel: tr0: Channel ID string not found for PIOaddr: a20
May 2 16:23:07 linux kernel: tr0: Expected for ISA: 5049434f3631313039393020
May 2 16:23:07 linux kernel: tr0: found: 000902003021111000182000
May 2 16:23:07 linux kernel: tr0: Expected for MCA: 4d4152533633583435313820
May 2 16:23:07 linux kernel: tr0: Unable to assign adapter to device.
May 2 16:23:07 linux kernel: tr1: Unable to assign adapter to device.
May 2 16:23:07 linux kernel: PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS
OPTIMIZE_FLAGS
Does this tell you anything. It tells me little.
From: David Morris <dwm@shell.portal.com>
This message means either a memory conflict with the MMIO area
or a TR card which is not compatible with the driver
(at least the signature isn't known).
From: Mike Glover <glover@credit.erin.utoronto.ca>
Subject: Almost there...
The following sample is what I'm getting on my messages file:
May 3 14:50:24 linux kernel: tr0: now opening the board...
May 3 14:50:24 linux kernel: tr0: board opened...
May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec.
Donald resets adapter, but resetting
May 3 15:11:47 linux kernel: the IBM tokenring adapter takes a long time.
It might not even help when the
May 3 15:11:47 linux kernel: ring is very busy, so we just wait a little longer
and hope for the best.
May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec.
Donald resets adapter, but resetting
May 3 15:11:47 linux kernel: the IBM tokenring adapter takes a long time.
It might not even help when the
May 3 15:11:47 linux kernel: ring is very busy, so we just wait a little longer
and hope for the best.
May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec.
Donald resets adapter, but resetting
The Arrg entry only comes when I telnet, rlogin or ftp to a remote
machine. Once that happens, the connection hangs big time. I took out all
the other hardware (which was 1 SCSI card) and tried running the card all
by itself. Same thing, so it eliminates hardware IRQ's from getting into
a yelling match. The following are the DIP switches on the card:
1 Up |
2 Down |
3 Down | According to the manual this sets the
4 Up | base address to CC000 Which is fine for
5 Up | my machine.
6 Down |
7 Down + This sets the IRQ to 2. Which is also fine
8 Down +
9 Up X Primary Lan adapter. Which it is.
10 Up = 16 KB shared RAM size. This OK?
11 Down =
12 Up # 16 Mbps Data rate.
I was wondering if it is in fact the dip switches, or the way I have
configured my route table and other network info.
ttfn,
Mike
The Arrg problem is pretty much taken care of in the 2.0 kernels. All of the patches have not been ported back to 1.2, and I doubt that they will be. If you get excessive Arrg messages, do yourself a favour and move to Linux 2.0.
If you have not already ran ``netconfig
'' on your system, do so now.
Setup your machine just as if it were on Ethernet.
Edit your /etc/rc.d/rc.inet1
scripts to point to the tr0
device rather than the eth0
device.
You should have a line that looks like
/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
Change this line to read
/sbin/ifconfig tr0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
The RedHat distribution of Linux has a wonderful Xwindows control panel for configuring modules and devices. If you have added a token ring adapter to a standard RedHat installation, there should already be token ring support compiled in as a module. Try to:
modprobe ibmtr
and see what you come up with.
Chances are, if you have a supported adapter, you will be ready to go.
The easiest way to configure your interface would be to use the control-panel.
You will first want to go to the kernel module control and instruct it
to load a new network device for token ring.
It should then start to autoload the ibmtr driver on boot.
You will then want to jump over to network configuration and add a new device,
tr
, and give it an ip address, etc.
You should then be able to restart and go with Linux and Token Ring on RedHat 4.0+.
Please note that these RedHat instructions came from the top of my head. I havn't had to modify any of my RedHat systems for quite some time and am writing this from memory. Either way, they should be able to get you where you need to go.