OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1k_old/trunk/rc203soc/sw/uClinux/Documentation/networking
    from Rev 1765 to Rev 1782
    Reverse comparison

Rev 1765 → Rev 1782

/z8530drv.txt
0,0 → 1,781
This is a subset of the documentation. To use this driver you MUST have the
full package "z8530drv-2.4c.dl1bke.tar.gz" from either ftp.pspt.fi,
sunsite.unc.edu or db0bm.automation.fh-aachen.de. Do not try to use the
utilities from z8530drv-utils-3.0 as they will not work with the 2.4 series
of the driver!
 
---------------------------------------------------------------------------
 
 
SCC.C - Linux driver for Z8530 based HDLC cards for AX.25
 
********************************************************************
 
(c) 1993,1997 by Joerg Reuter DL1BKE
 
portions (c) 1993 Guido ten Dolle PE1NNZ
 
for the complete copyright notice see >> Copying.Z8530DRV <<
 
********************************************************************
 
 
1. Initialization of the driver
===============================
 
To use the driver, 3 steps must be performed:
 
1. if compiled as module: loading the module
2. Setup of hardware, MODEM and KISS parameters with sccinit
3. Attachment of each channel in the packet software
 
 
1.1 Loading the module
======================
 
(If you're going to compile the driver as a part of the kernel image,
skip this chapter and continue with 1.2)
 
Before you can use a module, you'll have to load it with
 
insmod scc.o
 
please read 'man insmod' that comes with modutils.
 
You should include the insmod in one of the /etc/rc.d/rc.* files,
and don't forget to insert a call of sccinit after that. It
will read your
 
 
1.2. /etc/z8530drv.rc
=====================
 
To setup all parameters you must run /sbin/sccinit from one
of your rc.*-files. This has to be done BEFORE the start of
NET or axattach. Sccinit reads the file /etc/z8530drv.rc
and sets the hardware, MODEM and KISS parameters. A sample file is
delivered with this package. Change it to your needs.
 
The file itself consists of two main sections.
 
1.2.1 configuration of hardware parameters
==========================================
 
The hardware setup section defines the following parameters for each
Z8530:
 
chip 1
data_a 0x300 # data port A
ctrl_a 0x304 # control port A
data_b 0x301 # data port B
ctrl_b 0x305 # control port B
irq 5 # IRQ No. 5
pclock 4915200 # clock
board BAYCOM # hardware type
escc no # enhanced SCC chip? (8580/85180/85280)
vector 0 # latch for interrupt vector
special no # address of special function register
option 0 # option to set via sfr
 
 
chip - this is just a delimiter to make sccinit a bit simpler to
program. A parameter has no effect.
 
data_a - the address of the data port A of this Z8530 (needed)
ctrl_a - the address of the control port A (needed)
data_b - the address of the data port B (needed)
ctrl_b - the address of the control port B (needed)
 
irq - the used IRQ for this chip. Different chips can use different
IRQs or the same. If they share an interrupt, it needs to be
specified within one chip-definition only.
 
pclock - the clock at the PCLK pin of the Z8530 (option, 4915200 is
default), measured in Hertz
 
board - the "type" of the board:
 
SCC type value
---------------------------------
PA0HZP SCC card PA0HZP
EAGLE card EAGLE
PC100 card PC100
PRIMUS-PC (DG9BL) card PRIMUS
BayCom (U)SCC card BAYCOM
 
escc - if you want support for ESCC chips (8580, 85180, 85280), set
this to "yes" (option, defaults to "no")
 
vector - address of the vector latch (aka "intack port") for PA0HZP
cards. There can be only one vector latch for all chips!
(option, defaults to 0)
 
special - address of the special function register on several cards.
(option, defaults to 0)
 
option - The value you write into that register (option, default is 0)
 
You can specify up to four chips (8 channels). If this is not enough,
just change
 
#define MAXSCC 4
 
to a higher value.
 
Example for the BayCom USCC:
----------------------------
 
chip 1
data_a 0x300 # data port A
ctrl_a 0x304 # control port A
data_b 0x301 # data port B
ctrl_b 0x305 # control port B
irq 5 # IRQ No. 5 (#)
board BAYCOM # hardware type (*)
#
# SCC chip 2
#
chip 2
data_a 0x302
ctrl_a 0x306
data_b 0x303
ctrl_b 0x307
board BAYCOM
 
An example for a PA0HZP card:
-----------------------------
 
chip 1
data_a 0x153
data_b 0x151
ctrl_a 0x152
ctrl_b 0x150
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
#
#
#
chip 2
data_a 0x157
data_b 0x155
ctrl_a 0x156
ctrl_b 0x154
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
 
A DRSI would should probably work with this:
--------------------------------------------
(actually: two DRSI cards...)
 
chip 1
data_a 0x303
data_b 0x301
ctrl_a 0x302
ctrl_b 0x300
irq 7
pclock 4915200
board DRSI
escc no
#
#
#
chip 2
data_a 0x313
data_b 0x311
ctrl_a 0x312
ctrl_b 0x310
irq 7
pclock 4915200
board DRSI
escc no
 
Note that you cannot use the on-board baudrate generator off DRSI
cards. Use "mode dpll" for clock source (see below).
 
This is based on information provided by Mike Bilow (and verified
by Paul Helay)
 
The utility "gencfg"
--------------------
 
If you only know the parameters for the PE1CHL driver for DOS,
run gencfg. It will generate the correct port addresses (I hope).
Its parameters are exactly the same as the ones you use with
the "attach scc" command in net, except that the string "init" must
not appear. Example:
 
gencfg 2 0x150 4 2 0 1 0x168 9 4915200
 
will print a skeleton z8530drv.rc for the OptoSCC to stdout.
 
gencfg 2 0x300 2 4 5 -4 0 7 4915200 0x10
 
does the same for the BayCom USCC card. I my opinion it is much easier
to edit scc_config.h...
 
 
1.2.2 channel configuration
===========================
 
The channel definition is divided into three sub sections for each
channel:
 
An example for /dev/scc0:
 
# DEVICE
 
device /dev/scc0 # the device for the following params
 
# MODEM / BUFFERS
 
speed 1200 # the default baudrate
clock dpll # clock source:
# dpll = normal halfduplex operation
# external = MODEM provides own Rx/Tx clock
# divider = use full duplex divider if
# installed (1)
mode nrzi # HDLC encoding mode
# nrzi = 1k2 MODEM, G3RUH 9k6 MODEM
# nrz = DF9IC 9k6 MODEM
#
rxbuffers 8 # number of rx buffers allocated
# (option, default is 4)
txbuffers 16 # number of tx buffers allocated
# (option, default is 16)
bufsize 384 # size of buffers. Note that this must include
# the AX.25 header, not only the data field!
# (optional, defaults to 384)
 
# KISS (Layer 1)
 
txdelay 36 # (see chapter 1.4)
persist 64
slot 8
tail 8
fulldup 0
wait 12
min 3
maxkey 7
idle 3
maxdef 120
group 0
txoff off
softdcd on
slip off
 
The order WITHIN these sections is unimportant. The order OF these
sections IS important. The MODEM parameters are set with the first
recognized KISS parameter...
 
Please note that you can initialize the board only once after boot.
You can change all parameters but "mode" and "clock" later with the
Sccparam program or through KISS. Just to avoid security holes...
 
(1) this divider is usually mounted on the SCC-PBC (PA0HZP) or not
present at all (BayCom). It feeds back the output of the DPLL
(digital pll) as transmit clock. Using this mode without a divider
installed will normally result in keying the transceiver until
maxkey expires --- of course without sending anything (useful).
 
 
2. Attachment of a channel by your AX.25 software
=================================================
 
2.1 KA9Q NOS derivates
======================
 
When the linux has startup, the SCC driver has been initialized,
you can attach the channels in your packet software. This is done
by open the scc devices by using the attach asy command.
The SCC-drivers emulates the scc devices as serial asy ports,
this means e.g. that the baudrate can be set in the attach command.
 
 
Example Wampes:
 
#############################################################################################
# Wampes device attach
# NOTE: Interfacename and the device must be the same!!
# Usage: attach asy 0 0 slip|vjslip|ax25ui|ax25i|nrs|kissui <label> 0 <mtu> <speed> [ip_addr]
#
attach asy 0 0 kissi scc0 256 256 1200 # Attach SCC channel 1 in 1200 baud
attach asy 0 0 kissi scc1 256 256 1200 # Attach SCC channel 2 in 1200 baud
attach asy 0 0 kissui scc2 256 256 38400 # Attach SCC channel 3 in 38400 baud
attach asy 0 0 kissui scc3 256 256 9600 # Attach SCC channel 4 in 9600 baud
# ^^^^
# for WAMPES 921229 use here: ax25
#
 
Example JNOS:
 
############################################
# JNOS device attach
#
attach asy scc0 0 ax25 scc0 256 256 1200
attach asy scc1 0 ax25 scc1 256 256 1200
attach asy scc2 0 ax25 scc2 256 256 300
attach asy scc3 0 ax25 scc3 256 256 4800
#
#
 
 
It allows AX.25 communication without a TNC. Only a MODEM is
needed. The parameters have the same meaning as in KISS mode.
In fact, the AX.25 mode is emulating an extended KISS TNC, so
the same commands can be used to set the parameters of the
interface (see below).
 
To be able to run fullduplex using an SCC in AX.25 mode, an
external divider must be available, that divides the baudrate
generator clock available on the TRxC pin by 32, and puts the
resulting signal on the RTxC pint of the same channel of the SCC.
Such a divider is not necessary for normal CSMA packet radio
operation, but interrupt overhead is slightly reduced if you
still install it.
 
2.2 Kernel AX.25
================
 
Well, as said before: The driver emulates a KISS TNC, so you
can simply run
 
axattach -s 1200 /dev/scc0 DL1BKE
 
to establish the link between kernel AX.25 and z8530drv.
 
 
3. Adjustment and Display of parameters
=======================================
 
3.1 Displaying SCC Parameters:
==============================
 
Once a SCC channel has been attached, the parameter settings and
some statistic information can be shown using the param program:
 
dl1bke-u:~$ sccstat /dev/scc0
 
Parameters:
 
speed : 1200 baud
txdelay : 36
persist : 255
slottime : 0
txtail : 8
fulldup : 1
waittime : 12
mintime : 3 sec
maxkeyup : 7 sec
idletime : 3 sec
maxdefer : 120 sec
group : 0x00
txoff : off
softdcd : on
SLIP : off
 
Status:
 
HDLC Z8530 Interrupts Queues
-----------------------------------------------------------------------
Sent : 273 RxOver : 0 RxInts : 125074 RxQueue : 0
Received : 1095 TxUnder: 0 TxInts : 4684 TxQueue : 0
RxErrors : 1591 ExInts : 11776 NoSpace : 0
KissErrors : 0 SpInts : 1503
Tx State : idle
 
Memory allocated:
 
Buffer size: 384
rx buffers : 4
tx buffers : 8
 
 
The status info shown is:
 
Sent - number of frames transmitted
Received - number of frames received
RxErrors - number of receive errors (CRC, ABORT)
KissErrors - number of KISS errors (should be zero...)
Tx State - status of the Tx interrupt handler: idle/busy/active/tail (2)
RxOver - number of receiver overruns
TxUnder - number of transmitter underruns
RxInts - number of receiver interrupts
TxInts - number of transmitter interrupts
EpInts - number of receiver special condition interrupts
SpInts - number of external/status interrupts
RxQueue - number of received packets enqueued for this channel
TxQueue - number of packets enqueued for Tx
NoSpace - number of times the receiver buffer pool was found empty
 
 
An overrun is abnormal. If lots of these occur, the product of
baudrate and number of interfaces is too high for the processing
power of you computer. If "Space" errors occur, specify a higher
number of buffers in the "scc.h" file.
 
 
3.2 Setting Parameters
======================
 
 
The setting of parameters of the emulated KISS TNC is done in the
same way in the SCC driver. You can change parameters by using
the command param in NET or NOS
 
param <iface> <paramname> <value>
 
or use the program "sccparam":
 
sccparam <device> <paramname> <decimal-|hexadecimal value>
 
You can change the following parameters:
 
param : value
------------------------
speed : 1200
txdelay : 36
persist : 255
slottime : 0
txtail : 8
fulldup : 1
waittime : 12
mintime : 3
maxkeyup : 7
idletime : 3
maxdefer : 120
group : 0x00
txoff : off
softdcd : on
SLIP : off
 
 
The parameters have the following meaning:
 
speed:
The baudrate on this channel in bits/sec
 
Example: sccparam /dev/scc3 speed 9600
 
txdelay:
The delay (in units of 10 ms) after keying of the
transmitter, until the first byte is sent. This is usually
called "TXDELAY" in a TNC. When 0 is specified, the driver
will just wait until the CTS signal is asserted. This
assumes the presence of a timer or other circuitry in the
MODEM and/or transmitter, that asserts CTS when the
transmitter is ready for data.
A normal value of this parameter is 30-36.
 
Example: sccparam /dev/scc0 txd 20
 
persist:
This is the probability that the transmitter will be keyed
when the channel is found to be free. It is a value from 0
to 255, and the probability is (value+1)/256. The value
should be somewhere near 50-60, and should be lowered when
the channel is used more heavily.
 
Example: sccparam /dev/scc2 persist 20
 
slottime:
This is the time between samples of the channel. It is
expressed in units of 10 ms. About 200-300 ms (value 20-30)
seems to be a good value.
 
Example: sccparam /dev/scc0 slot 20
 
tail:
The time the transmitter will remain keyed after the last
byte of a packet has been transferred to the SCC. This is
necessary because the CRC and a flag still have to leave the
SCC before the transmitter is keyed down. The value depends
on the baudrate selected. A few character times should be
sufficient, e.g. 40ms at 1200 baud. (value 4)
The value of this parameter is in 10 ms units.
 
Example: sccparam /dev/scc2 4
 
full:
The full-duplex mode switch. This can be one of the following
values:
 
0: The interface will operate in CSMA mode (the normal
half-duplex packet radio operation)
1: Fullduplex mode, i.e. the transmitter will be keyed at
any time, without checking the received carrier. It
will be unkeyed when there are no packets to be sent.
2: Like 1, but the transmitter will remain keyed, also
when there are no packets to be sent. Flags will be
sent in that case, until a timeout (parameter 10)
occurs.
 
Example: sccparam /dev/scc0 fulldup off
 
wait:
The initial waittime before any transmit attempt, after the
frame has been queue for transmit. This is the length of
the first slot in CSMA mode. In full duplex modes it is
set to 0 for maximum performance.
The value of this parameter is in 10 ms units.
 
Example: sccparam /dev/scc1 wait 4
 
maxkey:
The maximal time the transmitter will be keyed to send
packets, in seconds. This can be useful on busy CSMA
channels, to avoid "getting a bad reputation" when you are
generating a lot of traffic. After the specified time has
elapsed, no new frame will be started. Instead, the trans-
mitter will be switched off for a specified time (parameter
min), and then the selected algorithm for keyup will be
started again.
The value 0 as well as "off" will disable this feature,
and allow infinite transmission time.
 
Example: sccparam /dev/scc0 maxk 20
 
min:
This is the time the transmitter will be switched off when
the maximum transmission time is exceeded.
 
Example: sccparam /dev/scc3 min 10
 
idle
This parameter specifies the maximum idle time in full duplex
2 mode, in seconds. When no frames have been sent for this
time, the transmitter will be keyed down. A value of 0 is
has same result as the fullduplex mode 1. This parameter
can be disabled.
 
Example: sccparam /dev/scc2 idle off # transmit forever
 
maxdefer
This is the maximum time (in seconds) to wait for a free channel
to send. When this timer expires the transmitter will be keyed
IMMEDIATELY. If you love to get trouble with other users you
should set this to a very low value ;-)
 
Example: sccparam /dev/scc0 maxdefer 240 # 2 minutes
 
 
txoff:
When this parameter has the value 0, the transmission of packets
is enable. Otherwise it is disabled.
 
Example: sccparam /dev/scc2 txoff on
 
group:
It is possible to build special radio equipment to use more than
one frequency on the same bad, e.g. using several receivers and
only one transmitter that can be switched between frequencies.
Also, you can connect several radios that are active on the same
band. In these cases, it is not possible, or not a good idea, to
transmit on more than one frequency. The SCC driver provides a
method to lock transmitters on different interfaces, using the
"param <interface> group <x>" command. This will only work when
you are using CSMA mode (parameter full = 0).
The number <x> must be 0 if you want no group restrictions, and
can be computed as follows to create restricted groups:
<x> is the sum of some OCTAL numbers:
 
200 This transmitter will only be keyed when all other
transmitters in the group are off.
100 This transmitter will only be keyed when the carrier
detect of all other interfaces in the group is off.
0xx A byte that can be used to define different groups.
Interfaces are in the same group, when the logical AND
between their xx values is nonzero.
 
Examples:
When 2 interfaces use group 201, their transmitters will never be
keyed at the same time.
When 2 interfaces use group 101, the transmitters will only key
when both channels are clear at the same time. When group 301,
the transmitters will not be keyed at the same time.
 
Don't forget to convert the octal numbers into decimal before
you set the parameter.
 
Example: (to be written)
 
softdcd:
use a software dcd instead of the real one... Useful for a very
slow squelch.
 
Example: sccparam /dev/scc0 soft on
 
 
slip:
use slip encoding instead of kiss
 
Example: sccparam /dev/scc1 slip on
 
 
 
4. Problems
===========
 
If you have tx-problems with your BayCom USCC card please check
the manufacturer of the 8530. SGS chips have a slightly
different timing. Try Zilog... I have no information if this
driver works with baudrates higher than 1200 baud. A solution is
to write to register 8 instead to the data port, but this won't
work with the ESCC chips *SIGH!*
 
I got reports that the driver has problems on some 386-based systems.
(i.e. Amstrad) Those systems have a bogus AT bus timing which will
lead to delayed answers on interrupts. You can recognize these
problems by looking at the output of Sccstat for the suspected
port. See if it shows under- and overruns you own such a system.
Perhaps it will help if you simplify the scc_isr() function a bit.
You'll find a slightly faster version in the files scc_isr_intack
or scc_isr_novec.
 
 
Delayed processing of received data: This depends on
 
- the kernel version
 
- kernel profiling compiled or not
 
- the rather slow receiver in tty_io.c
 
- a high interrupt load
 
- a high load of the machine --- running X, Xmorph, XV and Povray,
while compiling the kernel... hmm ... even with 32 MB RAM ... ;-)
 
- NET's speed itself.
 
 
Kernel panics: please read to /linux/README and find out if it
really occurred within the scc driver.
 
If you can't solve a problem, send me
 
- a description of the problem,
- information on your hardware (computer system, scc board, modem)
- your kernel version
- the output of sccstat /dev/scc# ("#" is the No. of the channel)
- the settings of "speed", "clock" and "mode" for that channel
in /etc/z8530drv.rc
- your scc_config.h
 
 
And always remember:
The 1.1.* kernel series is for alpha tests -- use at your own risk ;-)
The 1.2.* series should run reliable. This driver perhaps NOT!
The 1.3.* kernel series is for alpha tests again... you get the idea!
 
 
3. DRSI Boards
==============
 
I still can't test the DRSI board, but this configuration derived from
the PE1CHL SCC driver configuration should work:
 
An example of scc_config.h for
 
One DRSI board installed:
=========================
 
/* gencfg 1 0x300 0x10 2 0 1 0 7 4915200 */
 
/* file generated by $Id: z8530drv.txt,v 1.1 2005-12-20 10:06:05 jcastillo Exp $ */
 
#include <linux/scc.h>
 
int Nchips = 1;
io_port Vector_Latch = 0x0;
int Ivec = 7;
long Clock = 4915200;
char Board = PA0HZP;
int Option = 0;
io_port Special_Port = 0x0;
 
io_port SCC_ctrl[MAXSCC * 2] =
{0x302, 0x300, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
 
io_port SCC_data[MAXSCC * 2] =
{0x303, 0x301, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
 
/* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
 
/* Chip */
/* ======== */
int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
0, /* ...two... */
0, /* ...three... */
0}; /* ...four... */
 
#define VERBOSE_BOOTMSG 1
#undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
#undef SCC_LDELAY /* slow it even a bit more down */
#undef DONT_CHECK /* don't look if the SCCs you specified are available */
 
 
 
Two boards installed:
=====================
 
/* file generated by $Id: z8530drv.txt,v 1.1 2005-12-20 10:06:05 jcastillo Exp $ */
 
#include <linux/scc.h>
 
int Nchips = 2;
io_port Vector_Latch = 0x0;
int Ivec = 7;
long Clock = 4915200;
char Board = PA0HZP;
int Option = 0;
io_port Special_Port = 0x0;
 
io_port SCC_ctrl[MAXSCC * 2] =
{0x302, 0x300, 0x312, 0x310, 0x0, 0x0, 0x0, 0x0};
 
io_port SCC_data[MAXSCC * 2] =
{0x303, 0x301, 0x313, 0x311, 0x0, 0x0, 0x0, 0x0};
 
/* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
 
/* Chip */
/* ======== */
int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
0, /* ...two... */
0, /* ...three... */
0}; /* ...four... */
 
#define VERBOSE_BOOTMSG 1
#undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
#undef SCC_LDELAY /* slow it even a bit more down */
#undef DONT_CHECK /* don't look if the SCCs you specified are available */
 
 
*****************
 
You m u s t use "clock dpll" in /etc/z8530drv.rc for operation,
the on-board baudrate generator is not supported.
 
*****************
(mni tnx to Mike Bilow)
 
 
4. Thor RLC100
==============
 
Mysteriously this board seems not to work with the driver. Anyone
got it up-and-running?
 
 
Many thanks to Linus Torvalds and Alan Cox for including the driver
in the Linux standard distribution and their support.
 
Joerg Reuter ampr-net: dl1bke@db0pra.ampr.org
WWW : http://www.rat.de/jr
Internet: jreuter@poboxes.com
/00-INDEX
0,0 → 1,45
00-INDEX
- this file
3c505.txt
- information on the 3Com EtherLink Plus (3c505) driver.
Configurable
- info on some of the configurable network parameters
alias.txt
- info on using alias network devices
arcnet-hardware.txt
- tons of info on arcnet, hubs, arcnet card jumper settings, etc.
arcnet.txt
- info on the using the arcnet driver itself.
ax25.txt
- info on using AX.25 and NET/ROM code for Linux
depca.txt
- the Digital DEPCA/EtherWORKS DE1?? and DE2?? LANCE Ethernet driver
framerelay.txt
- info on using Frame Relay/Data Link Connection Identifier (DLCI).
ip_dynaddr.txt
- info on using dynamic IP addressing for diald and IP masquerading.
ipx.txt
- info on the two possible modes of kernel IPX network support.
masquerading.txt
- using IP masquerading, multiple machines using a single IP address.
ncsa-telnet
- notes on how NCSA telnet (DOS) breaks with MTU discovery enabled.
net-modules.txt
- info and "insmod" parameters for all network driver modules.
ppp.txt
- info on what software you should use to run PPP.
so_bindtodevice.txt
- info on binding a socket to a specific device/interface.
tcp.txt
- short blurb on how TCP output takes place.
tlan.FAQ
- freq. asked questions on the TLAN (Compaq Netelligent) driver.
tlan.README
- usage and supported hardware info for the Thunderlan driver.
tulip.txt
- info on using DEC 21040/21041/21140 based PCI Ethernet cards.
vortex.txt
- info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) e'net cards.
z8530drv.txt
- info about Linux driver for Z8530 based HDLC cards for AX.25
 
/arcnet-hardware.txt
0,0 → 1,3134
-----------------------------------------------------------------------------
1) This file is a supplement to arcnet.txt. Please read that for general
driver configuration help.
-----------------------------------------------------------------------------
2) This file is no longer Linux-specific. It should probably be moved out of
the kernel sources. Ideas?
-----------------------------------------------------------------------------
 
Because so many people (myself included) seem to have obtained ARCnet cards
without manuals, this file contains a quick introduction to ARCnet hardware,
some cabling tips, and a listing of all jumper settings I can find. Please
e-mail apenwarr@foxnet.net with any settings for your particular card, or
any other information you have!
 
 
INTRODUCTION TO ARCNET
----------------------
 
ARCnet is a network type which works in a way similar to popular Ethernet
networks but which is also different in some very important ways.
 
First of all, you can get ARCnet cards in at least two speeds: 2.5 Mbps
(slower than Ethernet) and 100 Mbps (faster than normal Ethernet). In fact,
there are others as well, but these are less common. The different hardware
types, as far as I'm aware, are not compatible and so you cannot wire a
100 Mbps card to a 2.5 Mbps card, and so on. From what I hear, my driver does
work with 100 Mbps cards, but I haven't been able to verify this myself,
since I only have the 2.5 Mbps variety. It is probably not going to saturate
your 100 Mbps card. Stop complaining :)
 
You also cannot connect an ARCnet card to any kind of Ethernet card and
expect it to work.
 
There are two "types" of ARCnet - STAR topology and BUS topology. This
refers to how the cards are meant to be wired together. According to most
available documentation, you can only connect STAR cards to STAR cards and
BUS cards to BUS cards. That makes sense, right? Well, it's not quite
true; see below under "Cabling."
 
Once you get past these little stumbling blocks, ARCnet is actually quite a
well-designed standard. It uses something called "modified token passing"
which makes it completely incompatible with so-called "Token Ring" cards,
but which makes transfers much more reliable than Ethernet does. In fact,
ARCnet will guarantee that a packet arrives safely at the destination, and
even if it can't possibly be delivered properly (ie. because of a cable
break, or because the destination computer does not exist) it will at least
tell the sender about it.
 
Because of the carefully defined action of the "token", it will always make
a pass around the "ring" within a maximum length of time. This makes it
useful for realtime networks.
 
In addition, all known ARCnet cards have an (almost) identical programming
interface. This means that with one "arcnet" driver you can support any
card; whereas, with Ethernet, each manufacturer uses what is sometimes a
completely different programming interface, leading to a lot of different,
sometimes very similar, Ethernet drivers. Of course, always using the same
programming interface also means that when high-performance hardware
facilities like PCI busmastering DMA appear, it's hard to take advantage of
them. Let's not go into that.
 
One thing that makes ARCnet cards difficult to program for, however, is the
limit on their packet sizes; standard ARCnet can only send packets that are
up to 508 bytes in length. This is smaller than the internet "bare minimum"
of 576 bytes, let alone the Ethernet MTU of 1500. To compensate, an extra
level of encapsulation is defined by RFC1201, which I call "packet
splitting," that allows "virtual packets" to grow as large as 64K each,
although they are generally kept down to the Ethernet-style 1500 bytes.
 
For more information on the advantages and disadvantages (mostly the
advantages) of ARCnet networks, you might try the "ARCnet Trade Association"
WWW page:
http://www.arcnet.com
 
 
CABLING ARCNET NETWORKS
-----------------------
 
This section was rewritten by
Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>
using information from several people, including:
Avery Pennraun <apenwarr@foxnet.net>
Stephen A. Wood <saw@hallc1.cebaf.gov>
John Paul Morrison <jmorriso@bogomips.ee.ubc.ca>
Joachim Koenig <jojo@repas.de>
and Avery touched it up a bit, at Vojtech's request.
 
ARCnet (the classic 2.5 Mbps version) can be connected by two different
types of cabling: coax and twisted pair. The other ARCnet-type networks
(100 Mbps TCNS and 320 kbps - 32 Mbps ARCnet Plus) use different types of
cabling (Type1, Fiber, C1, C4, C5).
 
For a coax network, you "should" use 93 Ohm RG-62 cable. But other cables
also work fine, because ARCnet is a very stable network. I personally use 75
Ohm TV antenna cable.
 
Cards for coax cabling are shipped in two different variants: for BUS and
STAR network topologies. They are mostly the same. The only difference
lies in the hybrid chip installed. BUS cards use high impedance output,
while STAR use low impedance. Low impedance card (STAR) is electrically
equal to a high impedance one with a terminator installed.
 
Usually, the ARCnet networks are built up from STAR cards and hubs. There
are two types of hubs - active and passive. Passive hubs are small boxes
with four BNC connectors containing four 47 Ohm resistors:
 
| | wires
R + junction
-R-+-R- R 47 Ohm resistors
R
|
 
The shielding is connected together. Active hubs are much more complicated;
they are powered and contain electronics to amplify the signal and send it
to other segments of the net. They usually have eight connectors. Active
hubs come in two variants - dumb and smart. The dumb variant just
amplifies, but the smart one decodes to digital and encodes back all packets
coming through. This is much better if you have several hubs in the net,
since many dumb active hubs may worsen the signal quality.
 
And now to the cabling. What you can connect together:
 
1. A card to a card. This is the simplest way of creating a 2-computer
network.
 
2. A card to a passive hub. Remember that all unused connectors on the hub
must be properly terminated with 93 Ohm (or something else if you don't
have the right ones) terminators.
(Avery's note: oops, I didn't know that. Mine (TV cable) works
anyway, though.)
 
3. A card to an active hub. Here is no need to terminate the unused
connectors except some kind of aesthetic feeling. But, there may not be
more than eleven active hubs between any two computers. That of course
doesn't limit the number of active hubs on the network.
4. An active hub to another.
 
5. An active hub to passive hub.
 
Remember, that you can not connect two passive hubs together. The power loss
implied by such a connection is too high for the net to operate reliably.
 
An example of a typical ARCnet network:
 
R S - STAR type card
S------H--------A-------S R - Terminator
| | H - Hub
| | A - Active hub
| S----H----S
S |
|
S
The BUS topology is very similar to the one used by Ethernet. The only
difference is in cable and terminators: they should be 93 Ohm. Ethernet
uses 50 Ohm impedance. You use T connectors to put the computers on a single
line of cable, the bus. You have to put terminators at both ends of the
cable. A typical BUS ARCnet network looks like:
 
RT----T------T------T------T------TR
B B B B B B
 
B - BUS type card
R - Terminator
T - T connector
 
But that is not all! The two types can be connected together. According to
the official documentation the only way of connecting them is using an active
hub:
 
A------T------T------TR
| B B B
S---H---S
|
S
 
The official docs also state that you can use STAR cards at the ends of
BUS network in place of a BUS card and a terminator:
 
S------T------T------S
B B
 
But, according to my own experiments, you can simply hang a BUS type card
anywhere in middle of a cable in a STAR topology network. And more - you
can use the bus card in place of any star card if you use a terminator. Then
you can build very complicated networks fulfilling all your needs! An
example:
 
S
|
RT------T-------T------H------S
B B B |
| R
S------A------T-------T-------A-------H------TR
| B B | | B
| S BT |
| | | S----A-----S
S------H---A----S | |
| | S------T----H---S |
S S B R S
A basically different cabling scheme is used with Twisted Pair cabling. Each
of the TP cards has two RJ (phone-cord style) connectors. The cards are
then daisy-chained together using a cable connecting every two neighboring
cards. The ends are terminated with RJ 93 Ohm terminators which plug into
the empty connectors of cards on the ends of the chain. An example:
 
___________ ___________
_R_|_ _|_|_ _|_R_
| | | | | |
|Card | |Card | |Card |
|_____| |_____| |_____|
 
 
There are also hubs for the TP topology. There is nothing difficult
involved in using them; you just connect a TP chain to a hub on any end or
even at both. This way you can create almost any network configuration.
The maximum of 11 hubs between any two computers on the net applies here as
well. An example:
 
RP-------P--------P--------H-----P------P-----PR
|
RP-----H--------P--------H-----P------PR
| |
PR PR
 
R - RJ Terminator
P - TP Card
H - TP Hub
 
Like any network, ARCnet has a limited cable length. These are the maximum
cable lengths between two active ends (an active end being an active hub or
a STAR card).
 
RG-62 93 Ohm up to 650 m
RG-59/U 75 Ohm up to 457 m
RG-11/U 75 Ohm up to 533 m
IBM Type 1 150 Ohm up to 200 m
IBM Type 3 100 Ohm up to 100 m
 
The maximum length of all cables connected to a passive hub is limited to 65
meters for RG-62 cabling; less for others. You can see that using passive
hubs in a large network is a bad idea. The maximum length of a single "BUS
Trunk" is about 300 meters for RG-62. The maximum distance between the two
most distant points of the net is limited to 3000 meters. The maximum length
of a TP cable between two cards/hubs is 650 meters.
 
 
SETTING THE JUMPERS
-------------------
 
All ARCnet cards should have a total of four or five different settings:
 
- the I/O address: this is the "port" your ARCnet card is on. Probed
values in the Linux ARCnet driver are only from 0x200 through 0x3F0. (If
your card has additional ones, which is possible, please tell me.) This
should not be the same as any other device on your system. According to
a doc I got from Novell, MS Windows prefers values of 0x300 or more,
eating net connections on my system (at least) otherwise. My guess is
this may be because, if your card is at 0x2E0, probing for a serial port
at 0x2E8 will reset the card and probably mess things up royally.
- Avery's favourite: 0x300.
 
- the IRQ: on 8-bit cards, it might be 2 (9), 3, 4, 5, or 7.
on 16-bit cards, it might be 2 (9), 3, 4, 5, 7, or 10-15.
Make sure this is different from any other card on your system. Note
that IRQ2 is the same as IRQ9, as far as Linux is concerned. You can
"cat /proc/interrupts" for a somewhat complete list of which ones are in
use at any given time. Here is a list of common usages from Vojtech
Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>:
("Not on bus" means there is no way for a card to generate this
interrupt)
IRQ 0 - Timer 0 (Not on bus)
IRQ 1 - Keyboard (Not on bus)
IRQ 2 - IRQ Controller 2 (Not on bus, nor does interrupt the CPU)
IRQ 3 - COM2
IRQ 4 - COM1
IRQ 5 - FREE (LPT2 if you have it; sometimes COM3; maybe PLIP)
IRQ 6 - Floppy disk controller
IRQ 7 - FREE (LPT1 if you don't use the polling driver; PLIP)
IRQ 8 - Realtime Clock Interrupt (Not on bus)
IRQ 9 - FREE (VGA vertical sync interrupt if enabled)
IRQ 10 - FREE
IRQ 11 - FREE
IRQ 12 - FREE
IRQ 13 - Numeric Coprocessor (Not on bus)
IRQ 14 - Fixed Disk Controller
IRQ 15 - FREE (Fixed Disk Controller 2 if you have it)
Note: IRQ 9 is used on some video cards for the "vertical retrace"
interrupt. This interrupt would have been handy for things like
video games, as it occurs exactly once per screen refresh, but
unfortunately IBM cancelled this feature starting with the original
VGA and thus many VGA/SVGA cards do not support it. For this
reason, no modern software uses this interrupt and it can almost
always be safely disabled, if your video card supports it at all.
If your card for some reason CANNOT disable this IRQ (usually there
is a jumper), one solution would be to clip the printed circuit
contact on the board: it's the fourth contact from the left on the
back side. I take no responsibility if you try this.
 
- Avery's favourite: IRQ2 (actually IRQ9). Watch that VGA, though.
 
- the memory address: Unlike most cards, ARCnets use "shared memory" for
copying buffers around. Make SURE it doesn't conflict with any other
used memory in your system!
A0000 - VGA graphics memory (ok if you don't have VGA)
B0000 - Monochrome text mode
C0000 \ One of these is your VGA BIOS - usually C0000.
E0000 /
F0000 - System BIOS
 
Anything less than 0xA0000 is, well, a BAD idea since it isn't above
640k.
- Avery's favourite: 0xD0000
 
- the station address: Every ARCnet card has its own "unique" network
address from 0 to 255. Unlike Ethernet, you can set this address
yourself with a jumper or switch (or on some cards, with special
software). Since it's only 8 bits, you can only have 254 ARCnet cards
on a network. DON'T use 0 or 255, since these are reserved (although
neat stuff will probably happen if you DO use them). By the way, if you
haven't already guessed, don't set this the same as any other ARCnet on
your network!
- Avery's favourite: 3 and 4. Not that it matters.
 
- There may be ETS1 and ETS2 settings. These may or may not make a
difference on your card (many manuals call them "reserved"), but are
used to change the delays used when powering up a computer on the
network. This is only necessary when wiring VERY long range ARCnet
networks, on the order of 4km or so; in any case, the only real
requirement here is that all cards on the network with ETS1 and ETS2
jumpers have them in the same position. Chris Hindy <chrish@io.org>
sent in a chart with actual values for this:
ET1 ET2 Response Time Reconfiguration Time
--- --- ------------- --------------------
open open 74.7us 840us
open closed 283.4us 1680us
closed open 561.8us 1680us
closed closed 1118.6us 1680us
Make sure you set ETS1 and ETS2 to the SAME VALUE for all cards on your
network.
Also, on many cards (not mine, though) there are red and green LED's.
Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz> tells me this is what they
mean:
GREEN RED Status
----- --- ------
OFF OFF Power off
OFF Short flashes Cabling problems (broken cable or not
terminated)
OFF (short) ON Card init
ON ON Normal state - everything OK, nothing
happens
ON Long flashes Data transfer
ON OFF Never happens (maybe when wrong ID)
 
 
The following is all the specific information people have sent me about
their own particular ARCnet cards. It is officially a mess, and contains
huge amounts of duplicated information. I have no time to fix it. If you
want to, PLEASE DO! Just send me a 'diff -u' of all your changes.
 
The model # is listed right above specifics for that card, so you should be
able to use your text viewer's "search" function to find the entry you want.
If you don't KNOW what kind of card you have, try looking through the
various diagrams to see if you can tell.
 
If your model isn't listed and/or has different settings, PLEASE PLEASE
tell me. I had to figure mine out without the manual, and it WASN'T FUN!
 
Even if your ARCnet model isn't listed, but has the same jumpers as another
model that is, please e-mail me to say so.
 
Cards Listed in this file (in this order, mostly):
 
Manufacturer Model # Bits
------------ ------- ----
SMC PC100 8
SMC PC110 8
SMC PC120 8
SMC PC130 8
SMC PC270E 8
SMC PC500 16
SMC PC500Longboard 16
SMC PC550Longboard 16
SMC PC600 16
SMC PC710 8
SMC? LCS-8830(-T) 8/16
Puredata PDI507 8
CNet Tech CN120-Series 8
CNet Tech CN160-Series 16
Lantech? UM9065L chipset 8
Acer 5210-003 8
Datapoint? LAN-ARC-8 8
Topware TA-ARC/10 8
Thomas-Conrad 500-6242-0097 REV A 8
Waterloo? (C)1985 Waterloo Micro. 8
No Name -- 8/16
No Name Taiwan R.O.C? 8
No Name Model 9058 8
Tiara Tiara Lancard? 8
 
** SMC = Standard Microsystems Corp.
** CNet Tech = CNet Technology, Inc.
 
 
Unclassified Stuff
------------------
- Please send any other information you can find.
- And some other stuff (more info is welcome!):
From: root@ultraworld.xs4all.nl (Timo Hilbrink)
To: apenwarr@foxnet.net (Avery Pennarun)
Date: Wed, 26 Oct 1994 02:10:32 +0000 (GMT)
Reply-To: timoh@xs4all.nl
 
[...parts deleted...]
 
About the jumpers: On my PC130 there is one more jumper, located near the
cable-connector and it's for changing to star or bus topology;
closed: star - open: bus
On the PC500 are some more jumper-pins, one block labeled with RX,PDN,TXI
and another with ALE,LA17,LA18,LA19 these are undocumented..
 
[...more parts deleted...]
 
--- CUT ---
 
 
** Standard Microsystems Corp (SMC) **
PC100, PC110, PC120, PC130 (8-bit cards)
PC500, PC600 (16-bit cards)
---------------------------------
- mainly from Avery Pennarun <apenwarr@foxnet.net>. Values depicted are
from Avery's setup.
- special thanks to Timo Hilbrink <timoh@xs4all.nl> for noting that PC120,
130, 500, and 600 all have the same switches as Avery's PC100.
PC500/600 have several extra, undocumented pins though. (?)
- PC110 settings were verified by Stephen A. Wood <saw@cebaf.gov>
- Also, the JP- and S-numbers probably don't match your card exactly. Try
to find jumpers/switches with the same number of settings - it's
probably more reliable.
 
JP5 [|] : : : :
(IRQ Setting) IRQ2 IRQ3 IRQ4 IRQ5 IRQ7
Put exactly one jumper on exactly one set of pins.
 
 
1 2 3 4 5 6 7 8 9 10
S1 /----------------------------------\
(I/O and Memory | 1 1 * 0 0 0 0 * 1 1 0 1 |
addresses) \----------------------------------/
|--| |--------| |--------|
(a) (b) (m)
WARNING. It's very important when setting these which way
you're holding the card, and which way you think is '1'!
If you suspect that your settings are not being made
correctly, try reversing the direction or inverting the
switch positions.
 
a: The first digit of the I/O address.
Setting Value
------- -----
00 0
01 1
10 2
11 3
 
b: The second digit of the I/O address.
Setting Value
------- -----
0000 0
0001 1
0010 2
... ...
1110 E
1111 F
 
The I/O address is in the form ab0. For example, if
a is 0x2 and b is 0xE, the address will be 0x2E0.
 
DO NOT SET THIS LESS THAN 0x200!!!!!
 
 
m: The first digit of the memory address.
Setting Value
------- -----
0000 0
0001 1
0010 2
... ...
1110 E
1111 F
 
The memory address is in the form m0000. For example, if
m is D, the address will be 0xD0000.
 
DO NOT SET THIS TO C0000, F0000, OR LESS THAN A0000!
 
1 2 3 4 5 6 7 8
S2 /--------------------------\
(Station Address) | 1 1 0 0 0 0 0 0 |
\--------------------------/
 
Setting Value
------- -----
00000000 00
10000000 01
01000000 02
...
01111111 FE
11111111 FF
 
Note that this is binary with the digits reversed!
 
DO NOT SET THIS TO 0 OR 255 (0xFF)!
 
 
*****************************************************************************
 
** Standard Microsystems Corp (SMC) **
PC130E/PC270E (8-bit cards)
---------------------------
- from Juergen Seifert <seifert@htwm.de>
 
 
STANDARD MICROSYSTEMS CORPORATION (SMC) ARCNET(R)-PC130E/PC270E
===============================================================
 
This description has been written by Juergen Seifert <seifert@htwm.de>
using information from the following Original SMC Manual
 
"Configuration Guide for
ARCNET(R)-PC130E/PC270
Network Controller Boards
Pub. # 900.044A
June, 1989"
 
ARCNET is a registered trademark of the Datapoint Corporation
SMC is a registered trademark of the Standard Microsystems Corporation
 
The PC130E is an enhanced version of the PC130 board, is equipped with a
standard BNC female connector for connection to RG-62/U coax cable.
Since this board is designed both for point-to-point connection in star
networks and for connection to bus networks, it is downwardly compatible
with all the other standard boards designed for coax networks (that is,
the PC120, PC110 and PC100 star topology boards and the PC220, PC210 and
PC200 bus topology boards).
 
The PC270E is an enhanced version of the PC260 board, is equipped with two
modular RJ11-type jacks for connection to twisted pair wiring.
It can be used in a star or a daisy-chained network.
 
 
8 7 6 5 4 3 2 1
________________________________________________________________
| | S1 | |
| |_________________| |
| Offs|Base |I/O Addr |
| RAM Addr | ___|
| ___ ___ CR3 |___|
| | \/ | CR4 |___|
| | PROM | ___|
| | | N | | 8
| | SOCKET | o | | 7
| |________| d | | 6
| ___________________ e | | 5
| | | A | S | 4
| |oo| EXT2 | | d | 2 | 3
| |oo| EXT1 | SMC | d | | 2
| |oo| ROM | 90C63 | r |___| 1
| |oo| IRQ7 | | |o| _____|
| |oo| IRQ5 | | |o| | J1 |
| |oo| IRQ4 | | STAR |_____|
| |oo| IRQ3 | | | J2 |
| |oo| IRQ2 |___________________| |_____|
|___ ______________|
| |
|_____________________________________________|
 
Legend:
 
SMC 90C63 ARCNET Controller / Transceiver /Logic
S1 1-3: I/O Base Address Select
4-6: Memory Base Address Select
7-8: RAM Offset Select
S2 1-8: Node ID Select
EXT Extended Timeout Select
ROM ROM Enable Select
STAR Selected - Star Topology (PC130E only)
Deselected - Bus Topology (PC130E only)
CR3/CR4 Diagnostic LEDs
J1 BNC RG62/U Connector (PC130E only)
J1 6-position Telephone Jack (PC270E only)
J2 6-position Telephone Jack (PC270E only)
 
Setting one of the switches to Off/Open means "1", On/Closed means "0".
 
 
Setting the Node ID
-------------------
 
The eight switches in group S2 are used to set the node ID.
These switches work in a way similar to the PC100-series cards; see that
entry for more information.
 
 
Setting the I/O Base Address
----------------------------
 
The first three switches in switch group S1 are used to select one
of eight possible I/O Base addresses using the following table
 
 
Switch | Hex I/O
1 2 3 | Address
-------|--------
0 0 0 | 260
0 0 1 | 290
0 1 0 | 2E0 (Manufacturer's default)
0 1 1 | 2F0
1 0 0 | 300
1 0 1 | 350
1 1 0 | 380
1 1 1 | 3E0
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer requires 2K of a 16K block of RAM. The base of this
16K block can be located in any of eight positions.
Switches 4-6 of switch group S1 select the Base of the 16K block.
Within that 16K address space, the buffer may be assigned any one of four
positions, determined by the offset, switches 7 and 8 of group S1.
 
Switch | Hex RAM | Hex ROM
4 5 6 7 8 | Address | Address *)
-----------|---------|-----------
0 0 0 0 0 | C0000 | C2000
0 0 0 0 1 | C0800 | C2000
0 0 0 1 0 | C1000 | C2000
0 0 0 1 1 | C1800 | C2000
| |
0 0 1 0 0 | C4000 | C6000
0 0 1 0 1 | C4800 | C6000
0 0 1 1 0 | C5000 | C6000
0 0 1 1 1 | C5800 | C6000
| |
0 1 0 0 0 | CC000 | CE000
0 1 0 0 1 | CC800 | CE000
0 1 0 1 0 | CD000 | CE000
0 1 0 1 1 | CD800 | CE000
| |
0 1 1 0 0 | D0000 | D2000 (Manufacturer's default)
0 1 1 0 1 | D0800 | D2000
0 1 1 1 0 | D1000 | D2000
0 1 1 1 1 | D1800 | D2000
| |
1 0 0 0 0 | D4000 | D6000
1 0 0 0 1 | D4800 | D6000
1 0 0 1 0 | D5000 | D6000
1 0 0 1 1 | D5800 | D6000
| |
1 0 1 0 0 | D8000 | DA000
1 0 1 0 1 | D8800 | DA000
1 0 1 1 0 | D9000 | DA000
1 0 1 1 1 | D9800 | DA000
| |
1 1 0 0 0 | DC000 | DE000
1 1 0 0 1 | DC800 | DE000
1 1 0 1 0 | DD000 | DE000
1 1 0 1 1 | DD800 | DE000
| |
1 1 1 0 0 | E0000 | E2000
1 1 1 0 1 | E0800 | E2000
1 1 1 1 0 | E1000 | E2000
1 1 1 1 1 | E1800 | E2000
*) To enable the 8K Boot PROM install the jumper ROM.
The default is jumper ROM not installed.
 
 
Setting the Timeouts and Interrupt
----------------------------------
 
The jumpers labeled EXT1 and EXT2 are used to determine the timeout
parameters. These two jumpers are normally left open.
 
To select a hardware interrupt level set one (only one!) of the jumpers
IRQ2, IRQ3, IRQ4, IRQ5, IRQ7. The Manufacturer's default is IRQ2.
 
Configuring the PC130E for Star or Bus Topology
-----------------------------------------------
 
The single jumper labeled STAR is used to configure the PC130E board for
star or bus topology.
When the jumper is installed, the board may be used in a star network, when
it is removed, the board can be used in a bus topology.
 
 
Diagnostic LEDs
---------------
 
Two diagnostic LEDs are visible on the rear bracket of the board.
The green LED monitors the network activity: the red one shows the
board activity:
 
Green | Status Red | Status
-------|------------------- ---------|-------------------
on | normal activity flash/on | data transfer
blink | reconfiguration off | no data transfer;
off | defective board or | incorrect memory or
| node ID is zero | I/O address
 
 
*****************************************************************************
 
** Standard Microsystems Corp (SMC) **
PC500/PC550 Longboard (16-bit cards)
-------------------------------------
- from Juergen Seifert <seifert@htwm.de>
 
 
STANDARD MICROSYSTEMS CORPORATION (SMC) ARCNET-PC500/PC550 Long Board
=====================================================================
 
Note: There is another Version of the PC500 called Short Version, which
is different in hard- and software! The most important differences
are:
- The long board has no Shared memory.
- On the long board the selection of the interrupt is done by binary
coded switch, on the short board directly by jumper.
[Avery's note: pay special attention to that: the long board HAS NO SHARED
MEMORY. This means the current Linux-ARCnet driver can't use these cards.
I have obtained a PC500Longboard and will be doing some experiments on it in
the future, but don't hold your breath. Thanks again to Juergen Seifert for
his advice about this!]
 
This description has been written by Juergen Seifert <seifert@htwm.de>
using information from the following Original SMC Manual
 
"Configuration Guide for
SMC ARCNET-PC500/PC550
Series Network Controller Boards
Pub. # 900.033 Rev. A
November, 1989"
 
ARCNET is a registered trademark of the Datapoint Corporation
SMC is a registered trademark of the Standard Microsystems Corporation
 
The PC500 is equipped with a standard BNC female connector for connection
to RG-62/U coax cable.
The board is designed both for point-to-point connection in star networks
and for connection to bus networks.
 
The PC550 is equipped with two modular RJ11-type jacks for connection
to twisted pair wiring.
It can be used in a star or a daisy-chained (BUS) network.
 
1
0 9 8 7 6 5 4 3 2 1 6 5 4 3 2 1
____________________________________________________________________
< | SW1 | | SW2 | |
> |_____________________| |_____________| |
< IRQ |I/O Addr |
> ___|
< CR4 |___|
> CR3 |___|
< ___|
> N | | 8
< o | | 7
> d | S | 6
< e | W | 5
> A | 3 | 4
< d | | 3
> d | | 2
< r |___| 1
> |o| _____|
< |o| | J1 |
> 3 1 JP6 |_____|
< |o|o| JP2 | J2 |
> |o|o| |_____|
< 4 2__ ______________|
> | | |
<____| |_____________________________________________|
 
Legend:
 
SW1 1-6: I/O Base Address Select
7-10: Interrupt Select
SW2 1-6: Reserved for Future Use
SW3 1-8: Node ID Select
JP2 1-4: Extended Timeout Select
JP6 Selected - Star Topology (PC500 only)
Deselected - Bus Topology (PC500 only)
CR3 Green Monitors Network Activity
CR4 Red Monitors Board Activity
J1 BNC RG62/U Connector (PC500 only)
J1 6-position Telephone Jack (PC550 only)
J2 6-position Telephone Jack (PC550 only)
 
Setting one of the switches to Off/Open means "1", On/Closed means "0".
 
 
Setting the Node ID
-------------------
 
The eight switches in group SW3 are used to set the node ID. Each node
attached to the network must have an unique node ID which must be
different from 0.
Switch 1 serves as the least significant bit (LSB).
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Value
-------|-------
1 | 1
2 | 2
3 | 4
4 | 8
5 | 16
6 | 32
7 | 64
8 | 128
 
Some Examples:
 
Switch | Hex | Decimal
8 7 6 5 4 3 2 1 | Node ID | Node ID
----------------|---------|---------
0 0 0 0 0 0 0 0 | not allowed
0 0 0 0 0 0 0 1 | 1 | 1
0 0 0 0 0 0 1 0 | 2 | 2
0 0 0 0 0 0 1 1 | 3 | 3
. . . | |
0 1 0 1 0 1 0 1 | 55 | 85
. . . | |
1 0 1 0 1 0 1 0 | AA | 170
. . . | |
1 1 1 1 1 1 0 1 | FD | 253
1 1 1 1 1 1 1 0 | FE | 254
1 1 1 1 1 1 1 1 | FF | 255
 
 
Setting the I/O Base Address
----------------------------
 
The first six switches in switch group SW1 are used to select one
of 32 possible I/O Base addresses using the following table
 
Switch | Hex I/O
6 5 4 3 2 1 | Address
-------------|--------
0 1 0 0 0 0 | 200
0 1 0 0 0 1 | 210
0 1 0 0 1 0 | 220
0 1 0 0 1 1 | 230
0 1 0 1 0 0 | 240
0 1 0 1 0 1 | 250
0 1 0 1 1 0 | 260
0 1 0 1 1 1 | 270
0 1 1 0 0 0 | 280
0 1 1 0 0 1 | 290
0 1 1 0 1 0 | 2A0
0 1 1 0 1 1 | 2B0
0 1 1 1 0 0 | 2C0
0 1 1 1 0 1 | 2D0
0 1 1 1 1 0 | 2E0 (Manufacturer's default)
0 1 1 1 1 1 | 2F0
1 1 0 0 0 0 | 300
1 1 0 0 0 1 | 310
1 1 0 0 1 0 | 320
1 1 0 0 1 1 | 330
1 1 0 1 0 0 | 340
1 1 0 1 0 1 | 350
1 1 0 1 1 0 | 360
1 1 0 1 1 1 | 370
1 1 1 0 0 0 | 380
1 1 1 0 0 1 | 390
1 1 1 0 1 0 | 3A0
1 1 1 0 1 1 | 3B0
1 1 1 1 0 0 | 3C0
1 1 1 1 0 1 | 3D0
1 1 1 1 1 0 | 3E0
1 1 1 1 1 1 | 3F0
 
 
Setting the Interrupt
---------------------
 
Switches seven through ten of switch group SW1 are used to select the
interrupt level. The interrupt level is binary coded, so selections
from 0 to 15 would be possible, but only the following eight values will
be supported: 3, 4, 5, 7, 9, 10, 11, 12.
 
Switch | IRQ
10 9 8 7 |
---------|--------
0 0 1 1 | 3
0 1 0 0 | 4
0 1 0 1 | 5
0 1 1 1 | 7
1 0 0 1 | 9 (=2) (default)
1 0 1 0 | 10
1 0 1 1 | 11
1 1 0 0 | 12
 
 
Setting the Timeouts
--------------------
 
The two jumpers JP2 (1-4) are used to determine the timeout parameters.
These two jumpers are normally left open.
Refer to the COM9026 Data Sheet for alternate configurations.
 
 
Configuring the PC500 for Star or Bus Topology
----------------------------------------------
 
The single jumper labeled JP6 is used to configure the PC500 board for
star or bus topology.
When the jumper is installed, the board may be used in a star network, when
it is removed, the board can be used in a bus topology.
 
 
Diagnostic LEDs
---------------
 
Two diagnostic LEDs are visible on the rear bracket of the board.
The green LED monitors the network activity: the red one shows the
board activity:
 
Green | Status Red | Status
-------|------------------- ---------|-------------------
on | normal activity flash/on | data transfer
blink | reconfiguration off | no data transfer;
off | defective board or | incorrect memory or
| node ID is zero | I/O address
 
 
*****************************************************************************
 
** SMC **
PC710 (8-bit card)
------------------
- from J.S. van Oosten <jvoosten@compiler.tdcnet.nl>
Note: this data is gathered by experimenting and looking at info of other
cards. However, I'm sure I got 99% of the settings right.
 
The SMC710 card resembles the PC270 card, but is much more basic (i.e. no
LEDs, RJ11 jacks, etc.) and 8 bit. Here's a little drawing:
 
_______________________________________
| +---------+ +---------+ |____
| | S2 | | S1 | |
| +---------+ +---------+ |
| |
| +===+ __ |
| | R | | | X-tal ###___
| | O | |__| ####__'|
| | M | || ###
| +===+ |
| |
| .. JP1 +----------+ |
| .. | big chip | |
| .. | 90C63 | |
| .. | | |
| .. +----------+ |
------- -----------
|||||||||||||||||||||
 
The row of jumpers at JP1 actually consists of 8 jumpers, (sometimes
labelled) the same as on the PC270, from top to bottom: EXT2, EXT1, ROM,
IRQ7, IRQ5, IRQ4, IRQ3, IRQ2 (gee, wonder what they would do? :-) )
 
S1 and S2 perform the same function as on the PC270, only their numbers
are swapped (S1 is the nodeaddress, S2 sets IO- and RAM-address).
 
I know it works when connected to a PC110 type ARCnet board.
 
*****************************************************************************
 
** Possibly SMC **
LCS-8830(-T) (8 and 16-bit cards)
---------------------------------
- from Mathias Katzer <mkatzer@HRZ.Uni-Bielefeld.DE>
- Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> says the
LCS-8830 is slightly different from LCS-8830-T. These are 8 bit, BUS
only (the JP0 jumper is hardwired), and BNC only.
This is a LCS-8830-T made by SMC, I think ('SMC' only appears on one PLCC,
nowhere else, not even on the few xeroxed sheets from the manual).
 
SMC Arcnet Board Type LCS-8830-T
 
------------------------------------
| |
| JP3 88 8 JP2 |
| ##### | \ |
| ##### ET1 ET2 ###|
| 8 ###|
| U3 SW 1 JP0 ###| Phone Jacks
| -- ###|
| | | |
| | | SW2 |
| | | |
| | | ##### |
| -- ##### #### BNC Connector
| ####
| 888888 JP1 |
| 234567 |
-- -------
|||||||||||||||||||||||||||
--------------------------
 
 
SW1: DIP-Switches for Station Address
SW2: DIP-Switches for Memory Base and I/O Base addresses
 
JP0: If closed, internal termination on (default open)
JP1: IRQ Jumpers
JP2: Boot-ROM enabled if closed
JP3: Jumpers for response timeout
U3: Boot-ROM Socket
 
 
ET1 ET2 Response Time Idle Time Reconfiguration Time
 
78 86 840
X 285 316 1680
X 563 624 1680
X X 1130 1237 1680
 
(X means closed jumper)
 
(DIP-Switch downwards means "0")
 
The station address is binary-coded with SW1.
 
The I/O base address is coded with DIP-Switches 6,7 and 8 of SW2:
 
Switches Base
678 Address
000 260-26f
100 290-29f
010 2e0-2ef
110 2f0-2ff
001 300-30f
101 350-35f
011 380-38f
111 3e0-3ef
 
 
DIP Switches 1-5 of SW2 encode the RAM and ROM Address Range:
 
Switches Ram Rom
12345 Address Range Address Range
00000 C:0000-C:07ff C:2000-C:3fff
10000 C:0800-C:0fff
01000 C:1000-C:17ff
11000 C:1800-C:1fff
00100 C:4000-C:47ff C:6000-C:7fff
10100 C:4800-C:4fff
01100 C:5000-C:57ff
11100 C:5800-C:5fff
00010 C:C000-C:C7ff C:E000-C:ffff
10010 C:C800-C:Cfff
01010 C:D000-C:D7ff
11010 C:D800-C:Dfff
00110 D:0000-D:07ff D:2000-D:3fff
10110 D:0800-D:0fff
01110 D:1000-D:17ff
11110 D:1800-D:1fff
00001 D:4000-D:47ff D:6000-D:7fff
10001 D:4800-D:4fff
01001 D:5000-D:57ff
11001 D:5800-D:5fff
00101 D:8000-D:87ff D:A000-D:bfff
10101 D:8800-D:8fff
01101 D:9000-D:97ff
11101 D:9800-D:9fff
00011 D:C000-D:c7ff D:E000-D:ffff
10011 D:C800-D:cfff
01011 D:D000-D:d7ff
11011 D:D800-D:dfff
00111 E:0000-E:07ff E:2000-E:3fff
10111 E:0800-E:0fff
01111 E:1000-E:17ff
11111 E:1800-E:1fff
 
 
*****************************************************************************
 
** PureData Corp **
PDI507 (8-bit card)
--------------------
- from Mark Rejhon <mdrejhon@magi.com> (slight modifications by Avery)
- Avery's note: I think PDI508 cards (but definitely NOT PDI508Plus cards)
are mostly the same as this. PDI508Plus cards appear to be mainly
software-configured.
 
Jumpers:
There is a jumper array at the bottom of the card, near the edge
connector. This array is labelled J1. They control the IRQs and
something else. Put only one jumper on the IRQ pins.
 
ETS1, ETS2 are for timing on very long distance networks. See the
more general information near the top of this file.
 
There is a J2 jumper on two pins. A jumper should be put on them,
since it was already there when I got the card. I don't know what
this jumper is for though.
 
There is a two-jumper array for J3. I don't know what it is for,
but there were already two jumpers on it when I got the card. It's
a six pin grid in a two-by-three fashion. The jumpers were
configured as follows:
 
.-------.
o | o o |
:-------: ------> Accessible end of card with connectors
o | o o | in this direction ------->
`-------'
 
Carl de Billy <CARL@carainfo.com> explains J3 and J4:
 
J3 Diagram:
 
.-------.
o | o o |
:-------: TWIST Technology
o | o o |
`-------'
.-------.
| o o | o
:-------: COAX Technology
| o o | o
`-------'
 
- If using coax cable in a bus topology the J4 jumper must be removed;
place it on one pin.
 
- If using bus topology with twisted pair wiring move the J3
jumpers so they connect the middle pin and the pins closest to the RJ11
Connectors. Also the J4 jumper must be removed; place it on one pin of
J4 jumper for storage.
 
- If using star topology with twisted pair wiring move the J3
jumpers so they connect the middle pin and the pins closest to the RJ11
connectors.
 
 
DIP Switches:
 
The DIP switches accessible on the accessible end of the card while
it is installed, is used to set the arcnet address. There are 8
switches. Use an address from 1 to 254.
 
Switch No.
12345678 Arcnet address
-----------------------------------------
00000000 FF (Don't use this!)
00000001 FE
00000010 FD
....
11111101 2
11111110 1
11111111 0 (Don't use this!)
 
There is another array of eight DIP switches at the top of the
card. There are five labelled MS0-MS4 which seem to control the
memory address, and another three labelled IO0-IO2 which seem to
control the base I/O address of the card.
 
This was difficult to test by trial and error, and the I/O addresses
are in a weird order. This was tested by setting the DIP switches,
rebooting the computer, and attempting to load ARCETHER at various
addresses (mostly between 0x200 and 0x400). The address that caused
the red transmit LED to blink, is the one that I thought works.
 
Also, the address 0x3D0 seem to have a special meaning, since the
ARCETHER packet driver loaded fine, but without the red LED
blinking. I don't know what 0x3D0 is for though. I recommend using
an address of 0x300 since Windows may not like addresses below
0x300.
 
IO Switch No.
210 I/O address
-------------------------------
111 0x260
110 0x290
101 0x2E0
100 0x2F0
011 0x300
010 0x350
001 0x380
000 0x3E0
 
The memory switches set a reserved address space of 0x1000 bytes
(0x100 segment units, or 4k). For example if I set an address of
0xD000, it will use up addresses 0xD000 to 0xD100.
 
The memory switches were tested by booting using QEMM386 stealth,
and using LOADHI to see what address automatically became excluded
from the upper memory regions, and then attempting to load ARCETHER
using these addresses.
 
I recommend using an arcnet memory address of 0xD000, and putting
the EMS page frame at 0xC000 while using QEMM stealth mode. That
way, you get contiguous high memory from 0xD100 almost all the way
the end of the megabyte.
 
Memory Switch 0 (MS0) didn't seem to work properly when set to OFF
on my card. It could be malfunctioning on my card. Experiment with
it ON first, and if it doesn't work, set it to OFF. (It may be a
modifier for the 0x200 bit?)
 
MS Switch No.
43210 Memory address
--------------------------------
00001 0xE100 (guessed - was not detected by QEMM)
00011 0xE000 (guessed - was not detected by QEMM)
00101 0xDD00
00111 0xDC00
01001 0xD900
01011 0xD800
01101 0xD500
01111 0xD400
10001 0xD100
10011 0xD000
10101 0xCD00
10111 0xCC00
11001 0xC900 (guessed - crashes tested system)
11011 0xC800 (guessed - crashes tested system)
11101 0xC500 (guessed - crashes tested system)
11111 0xC400 (guessed - crashes tested system)
*****************************************************************************
 
** CNet Technology Inc. **
120 Series (8-bit cards)
------------------------
- from Juergen Seifert <seifert@htwm.de>
 
 
CNET TECHNOLOGY INC. (CNet) ARCNET 120A SERIES
==============================================
 
This description has been written by Juergen Seifert <seifert@htwm.de>
using information from the following Original CNet Manual
 
"ARCNET
USER'S MANUAL
for
CN120A
CN120AB
CN120TP
CN120ST
CN120SBT
P/N:12-01-0007
Revision 3.00"
 
ARCNET is a registered trademark of the Datapoint Corporation
 
P/N 120A ARCNET 8 bit XT/AT Star
P/N 120AB ARCNET 8 bit XT/AT Bus
P/N 120TP ARCNET 8 bit XT/AT Twisted Pair
P/N 120ST ARCNET 8 bit XT/AT Star, Twisted Pair
P/N 120SBT ARCNET 8 bit XT/AT Star, Bus, Twisted Pair
 
__________________________________________________________________
| |
| ___|
| LED |___|
| ___|
| N | | ID7
| o | | ID6
| d | S | ID5
| e | W | ID4
| ___________________ A | 2 | ID3
| | | d | | ID2
| | | 1 2 3 4 5 6 7 8 d | | ID1
| | | _________________ r |___| ID0
| | 90C65 || SW1 | ____|
| JP 8 7 | ||_________________| | |
| |o|o| JP1 | | | J2 |
| |o|o| |oo| | | JP 1 1 1 | |
| ______________ | | 0 1 2 |____|
| | PROM | |___________________| |o|o|o| _____|
| > SOCKET | JP 6 5 4 3 2 |o|o|o| | J1 |
| |______________| |o|o|o|o|o| |o|o|o| |_____|
|_____ |o|o|o|o|o| ______________|
| |
|_____________________________________________|
 
Legend:
 
90C65 ARCNET Probe
S1 1-5: Base Memory Address Select
6-8: Base I/O Address Select
S2 1-8: Node ID Select (ID0-ID7)
JP1 ROM Enable Select
JP2 IRQ2
JP3 IRQ3
JP4 IRQ4
JP5 IRQ5
JP6 IRQ7
JP7/JP8 ET1, ET2 Timeout Parameters
JP10/JP11 Coax / Twisted Pair Select (CN120ST/SBT only)
JP12 Terminator Select (CN120AB/ST/SBT only)
J1 BNC RG62/U Connector (all except CN120TP)
J2 Two 6-position Telephone Jack (CN120TP/ST/SBT only)
 
Setting one of the switches to Off means "1", On means "0".
 
 
Setting the Node ID
-------------------
 
The eight switches in SW2 are used to set the node ID. Each node attached
to the network must have an unique node ID which must be different from 0.
Switch 1 (ID0) serves as the least significant bit (LSB).
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Label | Value
-------|-------|-------
1 | ID0 | 1
2 | ID1 | 2
3 | ID2 | 4
4 | ID3 | 8
5 | ID4 | 16
6 | ID5 | 32
7 | ID6 | 64
8 | ID7 | 128
 
Some Examples:
 
Switch | Hex | Decimal
8 7 6 5 4 3 2 1 | Node ID | Node ID
----------------|---------|---------
0 0 0 0 0 0 0 0 | not allowed
0 0 0 0 0 0 0 1 | 1 | 1
0 0 0 0 0 0 1 0 | 2 | 2
0 0 0 0 0 0 1 1 | 3 | 3
. . . | |
0 1 0 1 0 1 0 1 | 55 | 85
. . . | |
1 0 1 0 1 0 1 0 | AA | 170
. . . | |
1 1 1 1 1 1 0 1 | FD | 253
1 1 1 1 1 1 1 0 | FE | 254
1 1 1 1 1 1 1 1 | FF | 255
 
 
Setting the I/O Base Address
----------------------------
 
The last three switches in switch block SW1 are used to select one
of eight possible I/O Base addresses using the following table
 
 
Switch | Hex I/O
6 7 8 | Address
------------|--------
ON ON ON | 260
OFF ON ON | 290
ON OFF ON | 2E0 (Manufacturer's default)
OFF OFF ON | 2F0
ON ON OFF | 300
OFF ON OFF | 350
ON OFF OFF | 380
OFF OFF OFF | 3E0
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer (RAM) requires 2K. The base of this buffer can be
located in any of eight positions. The address of the Boot Prom is
memory base + 8K or memory base + 0x2000.
Switches 1-5 of switch block SW1 select the Memory Base address.
 
Switch | Hex RAM | Hex ROM
1 2 3 4 5 | Address | Address *)
--------------------|---------|-----------
ON ON ON ON ON | C0000 | C2000
ON ON OFF ON ON | C4000 | C6000
ON ON ON OFF ON | CC000 | CE000
ON ON OFF OFF ON | D0000 | D2000 (Manufacturer's default)
ON ON ON ON OFF | D4000 | D6000
ON ON OFF ON OFF | D8000 | DA000
ON ON ON OFF OFF | DC000 | DE000
ON ON OFF OFF OFF | E0000 | E2000
*) To enable the Boot ROM install the jumper JP1
 
Note: Since the switches 1 and 2 are always set to ON it may be possible
that they can be used to add an offset of 2K, 4K or 6K to the base
address, but this feature is not documented in the manual and I
haven't tested it yet.
 
 
Setting the Interrupt Line
--------------------------
 
To select a hardware interrupt level install one (only one!) of the jumpers
JP2, JP3, JP4, JP5, JP6. JP2 is the default.
 
Jumper | IRQ
-------|-----
2 | 2
3 | 3
4 | 4
5 | 5
6 | 7
 
 
Setting the Internal Terminator on CN120AB/TP/SBT
--------------------------------------------------
 
The jumper JP12 is used to enable the internal terminator.
 
-----
0 | 0 |
----- ON | | ON
| 0 | | 0 |
| | OFF ----- OFF
| 0 | 0
-----
Terminator Terminator
disabled enabled
 
Selecting the Connector Type on CN120ST/SBT
-------------------------------------------
 
JP10 JP11 JP10 JP11
----- -----
0 0 | 0 | | 0 |
----- ----- | | | |
| 0 | | 0 | | 0 | | 0 |
| | | | ----- -----
| 0 | | 0 | 0 0
----- -----
Coaxial Cable Twisted Pair Cable
(Default)
 
 
Setting the Timeout Parameters
------------------------------
 
The jumpers labeled EXT1 and EXT2 are used to determine the timeout
parameters. These two jumpers are normally left open.
 
 
 
*****************************************************************************
 
** CNet Technology Inc. **
160 Series (16-bit cards)
-------------------------
- from Juergen Seifert <seifert@htwm.de>
 
CNET TECHNOLOGY INC. (CNet) ARCNET 160A SERIES
==============================================
 
This description has been written by Juergen Seifert <seifert@htwm.de>
using information from the following Original CNet Manual
 
"ARCNET
USER'S MANUAL
for
CN160A
CN160AB
CN160TP
P/N:12-01-0006
Revision 3.00"
 
ARCNET is a registered trademark of the Datapoint Corporation
 
P/N 160A ARCNET 16 bit XT/AT Star
P/N 160AB ARCNET 16 bit XT/AT Bus
P/N 160TP ARCNET 16 bit XT/AT Twisted Pair
 
___________________________________________________________________
< _________________________ ___|
> |oo| JP2 | | LED |___|
< |oo| JP1 | 9026 | LED |___|
> |_________________________| ___|
< N | | ID7
> 1 o | | ID6
< 1 2 3 4 5 6 7 8 9 0 d | S | ID5
> _______________ _____________________ e | W | ID4
< | PROM | | SW1 | A | 2 | ID3
> > SOCKET | |_____________________| d | | ID2
< |_______________| | IO-Base | MEM | d | | ID1
> r |___| ID0
< ____|
> | |
< | J1 |
> | |
< |____|
> 1 1 1 1 |
< 3 4 5 6 7 JP 8 9 0 1 2 3 |
> |o|o|o|o|o| |o|o|o|o|o|o| |
< |o|o|o|o|o| __ |o|o|o|o|o|o| ___________|
> | | |
<____________| |_______________________________________|
 
Legend:
 
9026 ARCNET Probe
SW1 1-6: Base I/O Address Select
7-10: Base Memory Address Select
SW2 1-8: Node ID Select (ID0-ID7)
JP1/JP2 ET1, ET2 Timeout Parameters
JP3-JP13 Interrupt Select
J1 BNC RG62/U Connector (CN160A/AB only)
J1 Two 6-position Telephone Jack (CN160TP only)
LED
 
Setting one of the switches to Off means "1", On means "0".
 
 
Setting the Node ID
-------------------
 
The eight switches in SW2 are used to set the node ID. Each node attached
to the network must have an unique node ID which must be different from 0.
Switch 1 (ID0) serves as the least significant bit (LSB).
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Label | Value
-------|-------|-------
1 | ID0 | 1
2 | ID1 | 2
3 | ID2 | 4
4 | ID3 | 8
5 | ID4 | 16
6 | ID5 | 32
7 | ID6 | 64
8 | ID7 | 128
 
Some Examples:
 
Switch | Hex | Decimal
8 7 6 5 4 3 2 1 | Node ID | Node ID
----------------|---------|---------
0 0 0 0 0 0 0 0 | not allowed
0 0 0 0 0 0 0 1 | 1 | 1
0 0 0 0 0 0 1 0 | 2 | 2
0 0 0 0 0 0 1 1 | 3 | 3
. . . | |
0 1 0 1 0 1 0 1 | 55 | 85
. . . | |
1 0 1 0 1 0 1 0 | AA | 170
. . . | |
1 1 1 1 1 1 0 1 | FD | 253
1 1 1 1 1 1 1 0 | FE | 254
1 1 1 1 1 1 1 1 | FF | 255
 
 
Setting the I/O Base Address
----------------------------
 
The first six switches in switch block SW1 are used to select the I/O Base
address using the following table:
 
Switch | Hex I/O
1 2 3 4 5 6 | Address
------------------------|--------
OFF ON ON OFF OFF ON | 260
OFF ON OFF ON ON OFF | 290
OFF ON OFF OFF OFF ON | 2E0 (Manufacturer's default)
OFF ON OFF OFF OFF OFF | 2F0
OFF OFF ON ON ON ON | 300
OFF OFF ON OFF ON OFF | 350
OFF OFF OFF ON ON ON | 380
OFF OFF OFF OFF OFF ON | 3E0
 
Note: Other IO-Base addresses seem to be selectable, but only the above
combinations are documented.
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The switches 7-10 of switch block SW1 are used to select the Memory
Base address of the RAM (2K) and the PROM.
 
Switch | Hex RAM | Hex ROM
7 8 9 10 | Address | Address
----------------|---------|-----------
OFF OFF ON ON | C0000 | C8000
OFF OFF ON OFF | D0000 | D8000 (Default)
OFF OFF OFF ON | E0000 | E8000
 
Note: Other MEM-Base addresses seem to be selectable, but only the above
combinations are documented.
 
 
Setting the Interrupt Line
--------------------------
 
To select a hardware interrupt level install one (only one!) of the jumpers
JP3 through JP13 using the following table:
 
Jumper | IRQ
-------|-----------------
3 | 14
4 | 15
5 | 12
6 | 11
7 | 10
8 | 3
9 | 4
10 | 5
11 | 6
12 | 7
13 | 2 (=9) Default!
 
Note: - Do not use JP11=IRQ6, it may conflict with your Floppy Disk
Controller
- Use JP3=IRQ14 only, if you don't have an IDE-, MFM-, or RLL-
Hard Disk, it may conflict with their controllers
 
 
Setting the Timeout Parameters
------------------------------
 
The jumpers labeled JP1 and JP2 are used to determine the timeout
parameters. These two jumpers are normally left open.
 
 
*****************************************************************************
 
** Lantech **
8-bit card, unknown model
-------------------------
- from Vlad Lungu <vlungu@ugal.ro> - his e-mail address seemed broken at
the time I tried to reach him. Sorry Vlad, if you didn't get my reply.
 
________________________________________________________________
| 1 8 |
| ___________ __|
| | SW1 | LED |__|
| |__________| |
| ___|
| _____________________ |S | 8
| | | |W |
| | | |2 |
| | | |__| 1
| | UM9065L | |o| JP4 ____|____
| | | |o| | CN |
| | | |________|
| | | |
| |___________________| |
| |
| |
| _____________ |
| | | |
| | PROM | |ooooo| JP6 |
| |____________| |ooooo| |
|_____________ _ _|
|____________________________________________| |__|
 
 
UM9065L : Arcnet Controller
 
SW 1 : Shared Memory Address and I/O Base
 
ON=0
 
12345|Memory Address
-----|--------------
00001| D4000
00010| CC000
00110| D0000
01110| D1000
01101| D9000
10010| CC800
10011| DC800
11110| D1800
 
It seems that the bits are considered in reverse order. Also, you must
observe that some of those addresses are unusual and I didn't probe them; I
used a memory dump in DOS to identify them. For the 00000 configuration and
some others that I didn't write here the card seems to conflict with the
video card (an S3 GENDAC). I leave the full decoding of those addresses to
you.
 
678| I/O Address
---|------------
000| 260
001| failed probe
010| 2E0
011| 380
100| 290
101| 350
110| failed probe
111| 3E0
 
SW 2 : Node ID (binary coded)
 
JP 4 : Boot PROM enable CLOSE - enabled
OPEN - disabled
 
JP 6 : IRQ set (ONLY ONE jumper on 1-5 for IRQ 2-6)
 
 
*****************************************************************************
 
** Acer **
8-bit card, Model 5210-003
--------------------------
- from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz> using portions of
the existing arcnet-hardware file.
 
This is a 90C26 based card. Its configuration seems similar to
the SMC PC100, but has some additional jumpers I don't know.
 
__
| |
___________|__|_________________________
| | | |
| | BNC | |
| |______| ___|
| _____________________ |___
| | | |
| | Hybrid IC | |
| | | o|o J1 |
| |_____________________| 8|8 |
| 8|8 J5 |
| o|o |
| 8|8 |
|__ 8|8 |
(|__| LED o|o |
| 8|8 |
| 8|8 J15 |
| |
| _____ |
| | | _____ |
| | | | | ___|
| | | | | |
| _____ | ROM | | UFS | |
| | | | | | | |
| | | ___ | | | | |
| | | | | |__.__| |__.__| |
| | NCR | |XTL| _____ _____ |
| | | |___| | | | | |
| |90C26| | | | | |
| | | | RAM | | UFS | |
| | | J17 o|o | | | | |
| | | J16 o|o | | | | |
| |__.__| |__.__| |__.__| |
| ___ |
| | |8 |
| |SW2| |
| | | |
| |___|1 |
| ___ |
| | |10 J18 o|o |
| | | o|o |
| |SW1| o|o |
| | | J21 o|o |
| |___|1 |
| |
|____________________________________|
 
 
Legend:
 
90C26 ARCNET Chip
XTL 20 MHz Crystal
SW1 1-6 Base I/O Address Select
7-10 Memory Address Select
SW2 1-8 Node ID Select (ID0-ID7)
J1-J5 IRQ Select
J6-J21 Unknown (Probably extra timeouts & ROM enable ...)
LED1 Activity LED
BNC Coax connector (STAR arcnet)
RAM 2k of SRAM
ROM Boot ROM socket
UFS Unidentified Flying Sockets
 
 
Setting the Node ID
-------------------
 
The eight switches in SW2 are used to set the node ID. Each node attached
to the network must have an unique node ID which must not be 0.
Switch 1 (ID0) serves as the least significant bit (LSB).
 
Setting one of the switches to OFF means "1", ON means "0".
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Value
-------|-------
1 | 1
2 | 2
3 | 4
4 | 8
5 | 16
6 | 32
7 | 64
8 | 128
 
Don't set this to 0 or 255; these values are reserved.
 
 
Setting the I/O Base Address
----------------------------
 
The switches 1 to 6 of switch block SW1 are used to select one
of 32 possible I/O Base addresses using the following tables
| Hex
Switch | Value
-------|-------
1 | 200
2 | 100
3 | 80
4 | 40
5 | 20
6 | 10
 
The I/O address is sum of all switches set to "1". Remember that
the I/O address space bellow 0x200 is RESERVED for mainboard, so
switch 1 should be ALWAYS SET TO OFF.
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer (RAM) requires 2K. The base of this buffer can be
located in any of sixteen positions. However, the addresses below
A0000 are likely to cause system hang because there's main RAM.
 
Jumpers 7-10 of switch block SW1 select the Memory Base address.
 
Switch | Hex RAM
7 8 9 10 | Address
----------------|---------
OFF OFF OFF OFF | F0000 (conflicts with main BIOS)
OFF OFF OFF ON | E0000
OFF OFF ON OFF | D0000
OFF OFF ON ON | C0000 (conflicts with video BIOS)
OFF ON OFF OFF | B0000 (conflicts with mono video)
OFF ON OFF ON | A0000 (conflicts with graphics)
 
 
Setting the Interrupt Line
--------------------------
 
Jumpers 1-5 of the jumper block J1 control the IRQ level. ON means
shorted, OFF means open.
 
Jumper | IRQ
1 2 3 4 5 |
----------------------------
ON OFF OFF OFF OFF | 7
OFF ON OFF OFF OFF | 5
OFF OFF ON OFF OFF | 4
OFF OFF OFF ON OFF | 3
OFF OFF OFF OFF ON | 2
 
 
Unknown jumpers & sockets
-------------------------
 
I know nothing about these. I just guess that J16&J17 are timeout
jumpers and maybe one of J18-J21 selects ROM. Also J6-J10 and
J11-J15 are connecting IRQ2-7 to some pins on the UFSs. I can't
guess the purpose.
 
 
*****************************************************************************
 
** Datapoint? **
LAN-ARC-8, an 8-bit card
------------------------
- from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>
 
This is another SMC 90C65 based arcnet card. I couldn't identify the
manufacturer, but it might be DataPoint, because the card has the
original arcNet logo in its upper right corner.
 
_______________________________________________________
| _________ |
| | SW2 | ON arcNet |
| |_________| OFF ___|
| _____________ 1 ______ 8 | | 8
| | | SW1 | XTAL | ____________ | S |
| > RAM (2k) | |______|| | | W |
| |_____________| | H | | 3 |
| _________|_____ y | |___| 1
| _________ | | |b | |
| |_________| | | |r | |
| | SMC | |i | |
| | 90C65| |d | |
| _________ | | | | |
| | SW1 | ON | | |I | |
| |_________| OFF |_________|_____/C | _____|
| 1 8 | | | |___
| ______________ | | | BNC |___|
| | | |____________| |_____|
| > EPROM SOCKET | _____________ |
| |______________| |_____________| |
| ______________|
| |
|________________________________________|
 
Legend:
 
90C65 ARCNET Chip
SW1 1-5: Base Memory Address Select
6-8: Base I/O Address Select
SW2 1-8: Node ID Select
SW3 1-5: IRQ Select
6-7: Extra Timeout
8 : Rom Enable
BNC Coax connector
XTAL 20MHz Crystal
 
 
Setting the Node ID
-------------------
 
The eight switches in SW3 are used to set the node ID. Each node attached
to the network must have an unique node ID which must not be 0.
Switch 1 serves as the least significant bit (LSB).
 
Setting one of the switches to Off means "1", On means "0".
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Value
-------|-------
1 | 1
2 | 2
3 | 4
4 | 8
5 | 16
6 | 32
7 | 64
8 | 128
 
 
Setting the I/O Base Address
----------------------------
 
The last three switches in switch block SW1 are used to select one
of eight possible I/O Base addresses using the following table
 
 
Switch | Hex I/O
6 7 8 | Address
------------|--------
ON ON ON | 260
OFF ON ON | 290
ON OFF ON | 2E0 (Manufacturer's default)
OFF OFF ON | 2F0
ON ON OFF | 300
OFF ON OFF | 350
ON OFF OFF | 380
OFF OFF OFF | 3E0
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer (RAM) requires 2K. The base of this buffer can be
located in any of eight positions. The address of the Boot Prom is
memory base + 0x2000.
Jumpers 3-5 of switch block SW1 select the Memory Base address.
 
Switch | Hex RAM | Hex ROM
1 2 3 4 5 | Address | Address *)
--------------------|---------|-----------
ON ON ON ON ON | C0000 | C2000
ON ON OFF ON ON | C4000 | C6000
ON ON ON OFF ON | CC000 | CE000
ON ON OFF OFF ON | D0000 | D2000 (Manufacturer's default)
ON ON ON ON OFF | D4000 | D6000
ON ON OFF ON OFF | D8000 | DA000
ON ON ON OFF OFF | DC000 | DE000
ON ON OFF OFF OFF | E0000 | E2000
*) To enable the Boot ROM set the switch 8 of switch block SW3 to position ON.
 
The switches 1 and 2 probably add 0x0800 and 0x1000 to RAM base address.
 
 
Setting the Interrupt Line
--------------------------
 
Switches 1-5 of the switch block SW3 control the IRQ level.
 
Jumper | IRQ
1 2 3 4 5 |
----------------------------
ON OFF OFF OFF OFF | 3
OFF ON OFF OFF OFF | 4
OFF OFF ON OFF OFF | 5
OFF OFF OFF ON OFF | 7
OFF OFF OFF OFF ON | 2
 
 
Setting the Timeout Parameters
------------------------------
 
The switches 6-7 of the switch block SW3 are used to determine the timeout
parameters. These two switches are normally left in the OFF position.
 
 
*****************************************************************************
 
** Topware **
8-bit card, TA-ARC/10
-------------------------
- from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>
 
This is another very similar 90C65 card. Most of the switches and jumpers
are the same as on other clones.
 
_____________________________________________________________________
| ___________ | | ______ |
| |SW2 NODE ID| | | | XTAL | |
| |___________| | Hybrid IC | |______| |
| ___________ | | __|
| |SW1 MEM+I/O| |_________________________| LED1|__|)
| |___________| 1 2 |
| J3 |o|o| TIMEOUT ______|
| ______________ |o|o| | |
| | | ___________________ | RJ |
| > EPROM SOCKET | | \ |------|
|J2 |______________| | | | |
||o| | | |______|
||o| ROM ENABLE | SMC | _________ |
| _____________ | 90C65 | |_________| _____|
| | | | | | |___
| > RAM (2k) | | | | BNC |___|
| |_____________| | | |_____|
| |____________________| |
| ________ IRQ 2 3 4 5 7 ___________ |
||________| |o|o|o|o|o| |___________| |
|________ J1|o|o|o|o|o| ______________|
| |
|_____________________________________________|
 
Legend:
 
90C65 ARCNET Chip
XTAL 20 MHz Crystal
SW1 1-5 Base Memory Address Select
6-8 Base I/O Address Select
SW2 1-8 Node ID Select (ID0-ID7)
J1 IRQ Select
J2 Rom Enable
J3 Extra Timeout
LED1 Activity LED
BNC Coax connector (BUS arcnet)
RJ Twisted Pair Connector (daisychain)
 
 
Setting the Node ID
-------------------
 
The eight switches in SW2 are used to set the node ID. Each node attached to
the network must have an unique node ID which must not be 0. Switch 1 (ID0)
serves as the least significant bit (LSB).
 
Setting one of the switches to Off means "1", On means "0".
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Label | Value
-------|-------|-------
1 | ID0 | 1
2 | ID1 | 2
3 | ID2 | 4
4 | ID3 | 8
5 | ID4 | 16
6 | ID5 | 32
7 | ID6 | 64
8 | ID7 | 128
 
Setting the I/O Base Address
----------------------------
 
The last three switches in switch block SW1 are used to select one
of eight possible I/O Base addresses using the following table:
 
 
Switch | Hex I/O
6 7 8 | Address
------------|--------
ON ON ON | 260 (Manufacturer's default)
OFF ON ON | 290
ON OFF ON | 2E0
OFF OFF ON | 2F0
ON ON OFF | 300
OFF ON OFF | 350
ON OFF OFF | 380
OFF OFF OFF | 3E0
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer (RAM) requires 2K. The base of this buffer can be
located in any of eight positions. The address of the Boot Prom is
memory base + 0x2000.
Jumpers 3-5 of switch block SW1 select the Memory Base address.
 
Switch | Hex RAM | Hex ROM
1 2 3 4 5 | Address | Address *)
--------------------|---------|-----------
ON ON ON ON ON | C0000 | C2000
ON ON OFF ON ON | C4000 | C6000 (Manufacturer's default)
ON ON ON OFF ON | CC000 | CE000
ON ON OFF OFF ON | D0000 | D2000
ON ON ON ON OFF | D4000 | D6000
ON ON OFF ON OFF | D8000 | DA000
ON ON ON OFF OFF | DC000 | DE000
ON ON OFF OFF OFF | E0000 | E2000
 
*) To enable the Boot ROM short the jumper J2.
 
The jumpers 1 and 2 probably add 0x0800 and 0x1000 to RAM address.
 
 
Setting the Interrupt Line
--------------------------
 
Jumpers 1-5 of the jumper block J1 control the IRQ level. ON means
shorted, OFF means open.
 
Jumper | IRQ
1 2 3 4 5 |
----------------------------
ON OFF OFF OFF OFF | 2
OFF ON OFF OFF OFF | 3
OFF OFF ON OFF OFF | 4
OFF OFF OFF ON OFF | 5
OFF OFF OFF OFF ON | 7
 
 
Setting the Timeout Parameters
------------------------------
 
The jumpers J3 are used to set the timeout parameters. These two
jumpers are normally left open.
 
*****************************************************************************
 
** Thomas-Conrad **
Model #500-6242-0097 REV A (8-bit card)
---------------------------------------
- from Lars Karlsson <100617.3473@compuserve.com>
 
________________________________________________________
| ________ ________ |_____
| |........| |........| |
| |________| |________| ___|
| SW 3 SW 1 | |
| Base I/O Base Addr. Station | |
| address | |
| ______ switch | |
| | | | |
| | | |___|
| | | ______ |___._
| |______| |______| ____| BNC
| Jumper- _____| Connector
| Main chip block _ __| '
| | | | RJ Connector
| |_| | with 110 Ohm
| |__ Terminator
| ___________ __|
| |...........| | RJ-jack
| |...........| _____ | (unused)
| |___________| |_____| |__
| Boot PROM socket IRQ-jumpers |_ Diagnostic
|________ __ _| LED (red)
| | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | |________|
|
|
 
And here are the settings for some of the switches and jumpers on the cards.
 
 
I/O
 
1 2 3 4 5 6 7 8
 
2E0----- 0 0 0 1 0 0 0 1
2F0----- 0 0 0 1 0 0 0 0
300----- 0 0 0 0 1 1 1 1
350----- 0 0 0 0 1 1 1 0
 
"0" in the above example means switch is off "1" means that it is on.
 
 
ShMem address.
 
1 2 3 4 5 6 7 8
 
CX00--0 0 1 1 | | |
DX00--0 0 1 0 |
X000--------- 1 1 |
X400--------- 1 0 |
X800--------- 0 1 |
XC00--------- 0 0
ENHANCED----------- 1
COMPATIBLE--------- 0
 
 
IRQ
 
 
3 4 5 7 2
. . . . .
. . . . .
 
 
There is a DIP-switch with 8 switches, used to set the shared memory address
to be used. The first 6 switches set the address, the 7th doesn't have any
function, and the 8th switch is used to select "compatible" or "enhanced".
When I got my two cards, one of them had this switch set to "enhanced". That
card didn't work at all, it wasn't even recognized by the driver. The other
card had this switch set to "compatible" and it behaved absolutely normally. I
guess that the switch on one of the cards, must have been changed accidently
when the card was taken out of its former host. The question remains
unanswered, what is the purpose of the "enhanced" position?
 
[Avery's note: "enhanced" probably either disables shared memory (use IO
ports instead) or disables IO ports (use memory addresses instead). This
varies by the type of card involved. I fail to see how either of these
enhance anything. Send me more detailed information about this mode, or
just use "compatible" mode instead.]
 
 
*****************************************************************************
 
** Waterloo Microsystems Inc. ?? **
8-bit card (C) 1985
-------------------
- from Robert Michael Best <rmb117@cs.usask.ca>
 
[Avery's note: these don't work with my driver for some reason. These cards
SEEM to have settings similar to the PDI508Plus, which is
software-configured and doesn't work with my driver either. The "Waterloo
chip" is a boot PROM, probably designed specifically for the University of
Waterloo. If you have any further information about this card, please
e-mail me.]
 
The probe has not been able to detect the card on any of the J2 settings,
and I tried them again with the "Waterloo" chip removed.
_____________________________________________________________________
| \/ \/ ___ __ __ |
| C4 C4 |^| | M || ^ ||^| |
| -- -- |_| | 5 || || | C3 |
| \/ \/ C10 |___|| ||_| |
| C4 C4 _ _ | | ?? |
| -- -- | \/ || | |
| | || | |
| | || C1 | |
| | || | \/ _____|
| | C6 || | C9 | |___
| | || | -- | BNC |___|
| | || | >C7| |_____|
| | || | |
| __ __ |____||_____| 1 2 3 6 |
|| ^ | >C4| |o|o|o|o|o|o| J2 >C4| |
|| | |o|o|o|o|o|o| |
|| C2 | >C4| >C4| |
|| | >C8| |
|| | 2 3 4 5 6 7 IRQ >C4| |
||_____| |o|o|o|o|o|o| J3 |
|_______ |o|o|o|o|o|o| _______________|
| |
|_____________________________________________|
 
C1 -- "COM9026
SMC 8638"
In a chip socket.
 
C2 -- "@Copyright
Waterloo Microsystems Inc.
1985"
In a chip Socket with info printed on a label covering a round window
showing the circuit inside. (The window indicates it is an EPROM chip.)
 
C3 -- "COM9032
SMC 8643"
In a chip socket.
 
C4 -- "74LS"
9 total no sockets.
 
M5 -- "50006-136
20.000000 MHZ
MTQ-T1-S3
0 M-TRON 86-40"
Metallic case with 4 pins, no socket.
 
C6 -- "MOSTEK@TC8643
MK6116N-20
MALAYSIA"
No socket.
 
C7 -- No stamp or label but in a 20 pin chip socket.
 
C8 -- "PAL10L8CN
8623"
In a 20 pin socket.
 
C9 -- "PAl16R4A-2CN
8641"
In a 20 pin socket.
 
C10 -- "M8640
NMC
9306N"
In an 8 pin socket.
 
?? -- Some components on a smaller board and attached with 20 pins all
along the side closest to the BNC connector. The are coated in a dark
resin.
 
On the board there are two jumper banks labeled J2 and J3. The
manufacturer didn't put a J1 on the board. The two boards I have both
came with a jumper box for each bank.
 
J2 -- Numbered 1 2 3 4 5 6.
4 and 5 are not stamped due to solder points.
J3 -- IRQ 2 3 4 5 6 7
 
The board itself has a maple leaf stamped just above the irq jumpers
and "-2 46-86" beside C2. Between C1 and C6 "ASS 'Y 300163" and "@1986
CORMAN CUSTOM ELECTRONICS CORP." stamped just below the BNC connector.
Below that "MADE IN CANADA"
 
*****************************************************************************
 
** No Name **
8-bit cards, 16-bit cards
-------------------------
- from Juergen Seifert <seifert@htwm.de>
NONAME 8-BIT ARCNET
===================
 
I have named this ARCnet card "NONAME", since there is no name of any
manufacturer on the Installation manual nor on the shipping box. The only
hint to the existence of a manufacturer at all is written in copper,
it is "Made in Taiwan"
 
This description has been written by Juergen Seifert <seifert@htwm.de>
using information from the Original
"ARCnet Installation Manual"
 
 
________________________________________________________________
| |STAR| BUS| T/P| |
| |____|____|____| |
| _____________________ |
| | | |
| | | |
| | | |
| | SMC | |
| | | |
| | COM90C65 | |
| | | |
| | | |
| |__________-__________| |
| _____|
| _______________ | CN |
| | PROM | |_____|
| > SOCKET | |
| |_______________| 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 |
| _______________ _______________ |
| |o|o|o|o|o|o|o|o| | SW1 || SW2 ||
| |o|o|o|o|o|o|o|o| |_______________||_______________||
|___ 2 3 4 5 7 E E R Node ID IOB__|__MEM____|
| \ IRQ / T T O |
|__________________1_2_M______________________|
 
Legend:
 
COM90C65: Arcnet Probe
S1 1-8: Node ID Select
S2 1-3: I/O Base Address Select
4-6: Memory Base Address Select
7-8: RAM Offset Select
ET1, ET2 Extended Timeout Select
ROM ROM Enable Select
CN RG62 Coax Connector
STAR| BUS | T/P Three fields for placing a sign (colored circle)
indicating the topology of the card
 
Setting one of the switches to Off means "1", On means "0".
 
 
Setting the Node ID
-------------------
 
The eight switches in group SW1 are used to set the node ID.
Each node attached to the network must have an unique node ID which
must be different from 0.
Switch 8 serves as the least significant bit (LSB).
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Value
-------|-------
8 | 1
7 | 2
6 | 4
5 | 8
4 | 16
3 | 32
2 | 64
1 | 128
 
Some Examples:
 
Switch | Hex | Decimal
1 2 3 4 5 6 7 8 | Node ID | Node ID
----------------|---------|---------
0 0 0 0 0 0 0 0 | not allowed
0 0 0 0 0 0 0 1 | 1 | 1
0 0 0 0 0 0 1 0 | 2 | 2
0 0 0 0 0 0 1 1 | 3 | 3
. . . | |
0 1 0 1 0 1 0 1 | 55 | 85
. . . | |
1 0 1 0 1 0 1 0 | AA | 170
. . . | |
1 1 1 1 1 1 0 1 | FD | 253
1 1 1 1 1 1 1 0 | FE | 254
1 1 1 1 1 1 1 1 | FF | 255
 
 
Setting the I/O Base Address
----------------------------
 
The first three switches in switch group SW2 are used to select one
of eight possible I/O Base addresses using the following table
 
Switch | Hex I/O
1 2 3 | Address
------------|--------
ON ON ON | 260
ON ON OFF | 290
ON OFF ON | 2E0 (Manufacturer's default)
ON OFF OFF | 2F0
OFF ON ON | 300
OFF ON OFF | 350
OFF OFF ON | 380
OFF OFF OFF | 3E0
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer requires 2K of a 16K block of RAM. The base of this
16K block can be located in any of eight positions.
Switches 4-6 of switch group SW2 select the Base of the 16K block.
Within that 16K address space, the buffer may be assigned any one of four
positions, determined by the offset, switches 7 and 8 of group SW2.
 
Switch | Hex RAM | Hex ROM
4 5 6 7 8 | Address | Address *)
-----------|---------|-----------
0 0 0 0 0 | C0000 | C2000
0 0 0 0 1 | C0800 | C2000
0 0 0 1 0 | C1000 | C2000
0 0 0 1 1 | C1800 | C2000
| |
0 0 1 0 0 | C4000 | C6000
0 0 1 0 1 | C4800 | C6000
0 0 1 1 0 | C5000 | C6000
0 0 1 1 1 | C5800 | C6000
| |
0 1 0 0 0 | CC000 | CE000
0 1 0 0 1 | CC800 | CE000
0 1 0 1 0 | CD000 | CE000
0 1 0 1 1 | CD800 | CE000
| |
0 1 1 0 0 | D0000 | D2000 (Manufacturer's default)
0 1 1 0 1 | D0800 | D2000
0 1 1 1 0 | D1000 | D2000
0 1 1 1 1 | D1800 | D2000
| |
1 0 0 0 0 | D4000 | D6000
1 0 0 0 1 | D4800 | D6000
1 0 0 1 0 | D5000 | D6000
1 0 0 1 1 | D5800 | D6000
| |
1 0 1 0 0 | D8000 | DA000
1 0 1 0 1 | D8800 | DA000
1 0 1 1 0 | D9000 | DA000
1 0 1 1 1 | D9800 | DA000
| |
1 1 0 0 0 | DC000 | DE000
1 1 0 0 1 | DC800 | DE000
1 1 0 1 0 | DD000 | DE000
1 1 0 1 1 | DD800 | DE000
| |
1 1 1 0 0 | E0000 | E2000
1 1 1 0 1 | E0800 | E2000
1 1 1 1 0 | E1000 | E2000
1 1 1 1 1 | E1800 | E2000
*) To enable the 8K Boot PROM install the jumper ROM.
The default is jumper ROM not installed.
 
 
Setting Interrupt Request Lines (IRQ)
-------------------------------------
 
To select a hardware interrupt level set one (only one!) of the jumpers
IRQ2, IRQ3, IRQ4, IRQ5 or IRQ7. The manufacturer's default is IRQ2.
 
Setting the Timeouts
--------------------
 
The two jumpers labeled ET1 and ET2 are used to determine the timeout
parameters (respons and reconfiguration time). Every node in a network
must be set to the same timeout values.
 
ET1 ET2 | Response Time (us) | Reconfiguration Time (ms)
--------|--------------------|--------------------------
Off Off | 78 | 840 (Default)
Off On | 285 | 1680
On Off | 563 | 1680
On On | 1130 | 1680
 
On means jumper installed, Off means jumper not installed
 
 
NONAME 16-BIT ARCNET
====================
 
The manual of my 8-Bit NONAME ARCnet Card contains another description
of a 16-Bit Coax / Twisted Pair Card. This description is incomplete,
because there are missing two pages in the manual booklet. (The table
of contents reports pages ... 2-9, 2-11, 2-12, 3-1, ... but inside
the booklet there is a different way of counting ... 2-9, 2-10, A-1,
(empty page), 3-1, ..., 3-18, A-1 (again), A-2)
Also the picture of the board layout is not as good as the picture of
8-Bit card, because there isn't any letter like "SW1" written to the
picture.
Should somebody have such a board, please feel free to complete this
description or to send a mail to me!
 
This description has been written by Juergen Seifert <seifert@htwm.de>
using information from the Original
"ARCnet Installation Manual"
 
 
___________________________________________________________________
< _________________ _________________ |
> | SW? || SW? | |
< |_________________||_________________| |
> ____________________ |
< | | |
> | | |
< | | |
> | | |
< | | |
> | | |
< | | |
> |____________________| |
< ____|
> ____________________ | |
< | | | J1 |
> | < | |
< |____________________| ? ? ? ? ? ? |____|
> |o|o|o|o|o|o| |
< |o|o|o|o|o|o| |
> |
< __ ___________|
> | | |
<____________| |_______________________________________|
 
 
Setting one of the switches to Off means "1", On means "0".
 
 
Setting the Node ID
-------------------
 
The eight switches in group SW2 are used to set the node ID.
Each node attached to the network must have an unique node ID which
must be different from 0.
Switch 8 serves as the least significant bit (LSB).
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Value
-------|-------
8 | 1
7 | 2
6 | 4
5 | 8
4 | 16
3 | 32
2 | 64
1 | 128
 
Some Examples:
 
Switch | Hex | Decimal
1 2 3 4 5 6 7 8 | Node ID | Node ID
----------------|---------|---------
0 0 0 0 0 0 0 0 | not allowed
0 0 0 0 0 0 0 1 | 1 | 1
0 0 0 0 0 0 1 0 | 2 | 2
0 0 0 0 0 0 1 1 | 3 | 3
. . . | |
0 1 0 1 0 1 0 1 | 55 | 85
. . . | |
1 0 1 0 1 0 1 0 | AA | 170
. . . | |
1 1 1 1 1 1 0 1 | FD | 253
1 1 1 1 1 1 1 0 | FE | 254
1 1 1 1 1 1 1 1 | FF | 255
 
 
Setting the I/O Base Address
----------------------------
 
The first three switches in switch group SW1 are used to select one
of eight possible I/O Base addresses using the following table
 
Switch | Hex I/O
3 2 1 | Address
------------|--------
ON ON ON | 260
ON ON OFF | 290
ON OFF ON | 2E0 (Manufacturer's default)
ON OFF OFF | 2F0
OFF ON ON | 300
OFF ON OFF | 350
OFF OFF ON | 380
OFF OFF OFF | 3E0
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer requires 2K of a 16K block of RAM. The base of this
16K block can be located in any of eight positions.
Switches 6-8 of switch group SW1 select the Base of the 16K block.
Within that 16K address space, the buffer may be assigned any one of four
positions, determined by the offset, switches 4 and 5 of group SW1.
 
Switch | Hex RAM | Hex ROM
8 7 6 5 4 | Address | Address
-----------|---------|-----------
0 0 0 0 0 | C0000 | C2000
0 0 0 0 1 | C0800 | C2000
0 0 0 1 0 | C1000 | C2000
0 0 0 1 1 | C1800 | C2000
| |
0 0 1 0 0 | C4000 | C6000
0 0 1 0 1 | C4800 | C6000
0 0 1 1 0 | C5000 | C6000
0 0 1 1 1 | C5800 | C6000
| |
0 1 0 0 0 | CC000 | CE000
0 1 0 0 1 | CC800 | CE000
0 1 0 1 0 | CD000 | CE000
0 1 0 1 1 | CD800 | CE000
| |
0 1 1 0 0 | D0000 | D2000 (Manufacturer's default)
0 1 1 0 1 | D0800 | D2000
0 1 1 1 0 | D1000 | D2000
0 1 1 1 1 | D1800 | D2000
| |
1 0 0 0 0 | D4000 | D6000
1 0 0 0 1 | D4800 | D6000
1 0 0 1 0 | D5000 | D6000
1 0 0 1 1 | D5800 | D6000
| |
1 0 1 0 0 | D8000 | DA000
1 0 1 0 1 | D8800 | DA000
1 0 1 1 0 | D9000 | DA000
1 0 1 1 1 | D9800 | DA000
| |
1 1 0 0 0 | DC000 | DE000
1 1 0 0 1 | DC800 | DE000
1 1 0 1 0 | DD000 | DE000
1 1 0 1 1 | DD800 | DE000
| |
1 1 1 0 0 | E0000 | E2000
1 1 1 0 1 | E0800 | E2000
1 1 1 1 0 | E1000 | E2000
1 1 1 1 1 | E1800 | E2000
 
Setting Interrupt Request Lines (IRQ)
-------------------------------------
 
??????????????????????????????????????
 
 
Setting the Timeouts
--------------------
 
??????????????????????????????????????
 
 
*****************************************************************************
 
** No Name **
8-bit cards ("Made in Taiwan R.O.C.")
-----------
- from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>
 
I have named this ARCnet card "NONAME", since I got only the card with
no manual at all and the only text identifying the manufacturer is
"MADE IN TAIWAN R.O.C" printed on the card.
 
____________________________________________________________
| 1 2 3 4 5 6 7 8 |
| |o|o| JP1 o|o|o|o|o|o|o|o| ON |
| + o|o|o|o|o|o|o|o| ___|
| _____________ o|o|o|o|o|o|o|o| OFF _____ | | ID7
| | | SW1 | | | | ID6
| > RAM (2k) | ____________________ | H | | S | ID5
| |_____________| | || y | | W | ID4
| | || b | | 2 | ID3
| | || r | | | ID2
| | || i | | | ID1
| | 90C65 || d | |___| ID0
| SW3 | || | |
| |o|o|o|o|o|o|o|o| ON | || I | |
| |o|o|o|o|o|o|o|o| | || C | |
| |o|o|o|o|o|o|o|o| OFF |____________________|| | _____|
| 1 2 3 4 5 6 7 8 | | | |___
| ______________ | | | BNC |___|
| | | |_____| |_____|
| > EPROM SOCKET | |
| |______________| |
| ______________|
| |
|_____________________________________________|
 
Legend:
 
90C65 ARCNET Chip
SW1 1-5: Base Memory Address Select
6-8: Base I/O Address Select
SW2 1-8: Node ID Select (ID0-ID7)
SW3 1-5: IRQ Select
6-7: Extra Timeout
8 : Rom Enable
JP1 Led connector
BNC Coax connector
 
Although the jumpers SW1 and SW3 are marked SW, not JP, they are jumpers, not
switches.
 
Setting the jumpers to ON means connecting the upper two pins, off the bottom
two - or - in case of IRQ setting, connecting none of them at all.
 
Setting the Node ID
-------------------
 
The eight switches in SW2 are used to set the node ID. Each node attached
to the network must have an unique node ID which must not be 0.
Switch 1 (ID0) serves as the least significant bit (LSB).
 
Setting one of the switches to Off means "1", On means "0".
 
The node ID is the sum of the values of all switches set to "1"
These values are:
 
Switch | Label | Value
-------|-------|-------
1 | ID0 | 1
2 | ID1 | 2
3 | ID2 | 4
4 | ID3 | 8
5 | ID4 | 16
6 | ID5 | 32
7 | ID6 | 64
8 | ID7 | 128
 
Some Examples:
 
Switch | Hex | Decimal
8 7 6 5 4 3 2 1 | Node ID | Node ID
----------------|---------|---------
0 0 0 0 0 0 0 0 | not allowed
0 0 0 0 0 0 0 1 | 1 | 1
0 0 0 0 0 0 1 0 | 2 | 2
0 0 0 0 0 0 1 1 | 3 | 3
. . . | |
0 1 0 1 0 1 0 1 | 55 | 85
. . . | |
1 0 1 0 1 0 1 0 | AA | 170
. . . | |
1 1 1 1 1 1 0 1 | FD | 253
1 1 1 1 1 1 1 0 | FE | 254
1 1 1 1 1 1 1 1 | FF | 255
 
 
Setting the I/O Base Address
----------------------------
 
The last three switches in switch block SW1 are used to select one
of eight possible I/O Base addresses using the following table
 
 
Switch | Hex I/O
6 7 8 | Address
------------|--------
ON ON ON | 260
OFF ON ON | 290
ON OFF ON | 2E0 (Manufacturer's default)
OFF OFF ON | 2F0
ON ON OFF | 300
OFF ON OFF | 350
ON OFF OFF | 380
OFF OFF OFF | 3E0
 
 
Setting the Base Memory (RAM) buffer Address
--------------------------------------------
 
The memory buffer (RAM) requires 2K. The base of this buffer can be
located in any of eight positions. The address of the Boot Prom is
memory base + 0x2000.
Jumpers 3-5 of jumper block SW1 select the Memory Base address.
 
Switch | Hex RAM | Hex ROM
1 2 3 4 5 | Address | Address *)
--------------------|---------|-----------
ON ON ON ON ON | C0000 | C2000
ON ON OFF ON ON | C4000 | C6000
ON ON ON OFF ON | CC000 | CE000
ON ON OFF OFF ON | D0000 | D2000 (Manufacturer's default)
ON ON ON ON OFF | D4000 | D6000
ON ON OFF ON OFF | D8000 | DA000
ON ON ON OFF OFF | DC000 | DE000
ON ON OFF OFF OFF | E0000 | E2000
*) To enable the Boot ROM set the jumper 8 of jumper block SW3 to position ON.
 
The jumpers 1 and 2 probably add 0x0800, 0x1000 and 0x1800 to RAM adders.
 
Setting the Interrupt Line
--------------------------
 
Jumpers 1-5 of the jumper block SW3 control the IRQ level.
 
Jumper | IRQ
1 2 3 4 5 |
----------------------------
ON OFF OFF OFF OFF | 2
OFF ON OFF OFF OFF | 3
OFF OFF ON OFF OFF | 4
OFF OFF OFF ON OFF | 5
OFF OFF OFF OFF ON | 7
 
 
Setting the Timeout Parameters
------------------------------
 
The jumpers 6-7 of the jumper block SW3 are used to determine the timeout
parameters. These two jumpers are normally left in the OFF position.
 
 
*****************************************************************************
 
** No Name **
(Generic Model 9058)
--------------------
- from Andrew J. Kroll <ag784@freenet.buffalo.edu>
- Sorry this sat in my to-do box for so long, Andrew! (yikes - over a
year!)
_____
| <
| .---'
________________________________________________________________ | |
| | SW2 | | |
| ___________ |_____________| | |
| | | 1 2 3 4 5 6 ___| |
| > 6116 RAM | _________ 8 | | |
| |___________| |20MHzXtal| 7 | | |
| |_________| __________ 6 | S | |
| 74LS373 | |- 5 | W | |
| _________ | E |- 4 | | |
| >_______| ______________|..... P |- 3 | 3 | |
| | | : O |- 2 | | |
| | | : X |- 1 |___| |
| ________________ | | : Y |- | |
| | SW1 | | SL90C65 | : |- | |
| |________________| | | : B |- | |
| 1 2 3 4 5 6 7 8 | | : O |- | |
| |_________o____|..../ A |- _______| |
| ____________________ | R |- | |------,
| | | | D |- | BNC | # |
| > 2764 PROM SOCKET | |__________|- |_______|------'
| |____________________| _________ | |
| >________| <- 74LS245 | |
| | |
|___ ______________| |
|H H H H H H H H H H H H H H H H H H H H H H H| | |
|U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U| | |
\|
Legend:
 
SL90C65 ARCNET Controller / Transceiver /Logic
SW1 1-5: IRQ Select
6: ET1
7: ET2
8: ROM ENABLE
SW2 1-3: Memory Buffer/PROM Address
3-6: I/O Address Map
SW3 1-8: Node ID Select
BNC BNC RG62/U Connection
*I* have had success using RG59B/U with *NO* terminators!
What gives?!
 
SW1: Timeouts, Interrupt and ROM
---------------------------------
 
To select a hardware interrupt level set one (only one!) of the dip switches
up (on) SW1...(switches 1-5)
IRQ3, IRQ4, IRQ5, IRQ7, IRQ2. The Manufacturer's default is IRQ2.
 
The switches on SW1 labeled EXT1 (switch 6) and EXT2 (switch 7)
are used to determine the timeout parameters. These two dip switches
are normally left off (down).
 
To enable the 8K Boot PROM position SW1 switch 8 on (UP) labeled ROM.
The default is jumper ROM not installed.
 
 
Setting the I/O Base Address
----------------------------
 
The last three switches in switch group SW2 are used to select one
of eight possible I/O Base addresses using the following table
 
 
Switch | Hex I/O
4 5 6 | Address
-------|--------
0 0 0 | 260
0 0 1 | 290
0 1 0 | 2E0 (Manufacturer's default)
0 1 1 | 2F0
1 0 0 | 300
1 0 1 | 350
1 1 0 | 380
1 1 1 | 3E0
 
 
Setting the Base Memory Address (RAM & ROM)
-------------------------------------------
 
The memory buffer requires 2K of a 16K block of RAM. The base of this
16K block can be located in any of eight positions.
Switches 1-3 of switch group SW2 select the Base of the 16K block.
(0 = DOWN, 1 = UP)
I could, however, only verify two settings...
 
Switch| Hex RAM | Hex ROM
1 2 3 | Address | Address
------|---------|-----------
0 0 0 | E0000 | E2000
0 0 1 | D0000 | D2000 (Manufacturer's default)
0 1 0 | ????? | ?????
0 1 1 | ????? | ?????
1 0 0 | ????? | ?????
1 0 1 | ????? | ?????
1 1 0 | ????? | ?????
1 1 1 | ????? | ?????
 
 
Setting the Node ID
-------------------
 
The eight switches in group SW3 are used to set the node ID.
Each node attached to the network must have an unique node ID which
must be different from 0.
Switch 1 serves as the least significant bit (LSB).
switches in the DOWN position are OFF (0) and in the UP position are ON (1)
 
The node ID is the sum of the values of all switches set to "1"
These values are:
Switch | Value
-------|-------
1 | 1
2 | 2
3 | 4
4 | 8
5 | 16
6 | 32
7 | 64
8 | 128
 
Some Examples:
 
Switch# | Hex | Decimal
8 7 6 5 4 3 2 1 | Node ID | Node ID
----------------|---------|---------
0 0 0 0 0 0 0 0 | not allowed <-.
0 0 0 0 0 0 0 1 | 1 | 1 |
0 0 0 0 0 0 1 0 | 2 | 2 |
0 0 0 0 0 0 1 1 | 3 | 3 |
. . . | | |
0 1 0 1 0 1 0 1 | 55 | 85 |
. . . | | + Don't use 0 or 255!
1 0 1 0 1 0 1 0 | AA | 170 |
. . . | | |
1 1 1 1 1 1 0 1 | FD | 253 |
1 1 1 1 1 1 1 0 | FE | 254 |
1 1 1 1 1 1 1 1 | FF | 255 <-'
 
*****************************************************************************
 
** Tiara **
(model unknown)
-------------------------
- from Christoph Lameter <clameter@netcom.com>
 
Here is information about my card as far as I could figure it out:
----------------------------------------------- tiara
Tiara LanCard of Tiara Computer Systems.
 
+----------------------------------------------+
! ! Transmitter Unit ! !
! +------------------+ -------
! MEM Coax Connector
! ROM 7654321 <- I/O -------
! : : +--------+ !
! : : ! 90C66LJ! +++
! : : ! ! !D Switch to set
! : : ! ! !I the Nodenumber
! : : +--------+ !P
! !++
! 234567 <- IRQ !
+------------!!!!!!!!!!!!!!!!!!!!!!!!--------+
!!!!!!!!!!!!!!!!!!!!!!!!
 
0 = Jumper Installed
1 = Open
 
Top Jumper line Bit 7 = Rom Enable 654=Memory location 321=I/O
 
Settings for Memory Location (Top Jumper Line)
456 Address selected
000 C0000
001 C4000
010 CC000
011 D0000
100 D4000
101 D8000
110 DC000
111 E0000
 
Settings for I/O Address (Top Jumper Line)
123 Port
000 260
001 290
010 2E0
011 2F0
100 300
101 350
110 380
111 3E0
 
Settings for IRQ Selection (Lower Jumper Line)
234567
011111 IRQ 2
101111 IRQ 3
110111 IRQ 4
111011 IRQ 5
111110 IRQ 7
 
*****************************************************************************
 
 
Other Cards
-----------
 
I have no information on other models of ARCnet cards at the moment. Please
send any and all info to:
apenwarr@foxnet.net
 
Thanks.
/soundmodem.txt
0,0 → 1,96
LINUX DRIVER FOR SOUNDCARDS AS AX.25 MODEMS
 
Thomas M. Sailer, HB9JNX/AE4WA, <sailer@ife.ee.ethz.ch>
 
This driver allows either SoundBlaster (sbc) or WindowsSoundSystem (wss)
compatible soundcards to be used as either 1200 baud AFSK or 9600 baud FSK
AX.25 packet radio modems. Only half duplex operation is supported by
the SoundBlaster driver. Fullduplex is supported for WSS chipsets capable
of addressing two DMA channels. The driver needs some processing power!
A 486DX/2 66MHz is a minimum requirement, otherwise interactive performance
of the computer may become sluggish.
 
 
The Interface of the driver
 
The driver provides a kernel network drivers named sm[0-3]. sethdlc
from the ax25 utilities may be used to set driver states etc. Users
of userland AX.25 stacks may use the net2kiss utility (also available
in the ax25 utilities package) to converts packets of a network interface
to a KISS stream on a pseudo tty. There's also a patch available from
me for WAMPES which allows attaching a kernel network interface directly.
 
 
Configuring the driver
 
Some sound cards need to be initialized before they operate in either
SoundBlaster or WSS compatibility mode. The driver does _NOT_ do this;
you may use the standard linux sound driver to initialize the soundcard;
compile it as a module, and do
insmod sound
rmmod sound
The soundcard should then be initialized correctly. isapnptools is another
package that can configure PnP soundcards. If your soundcard contains
a Crystal CS423x chip, you may also try the setcrystal utility in the
ax25-utilities package.
 
Every time the driver is inserted into the kernel, it has to know which
modems it should access at which ports. This can be done with the sethdlc
utility. If you are only using one modem, you can also configure the
driver from the insmod command line (or by means of an option line in
/etc/conf.modules).
 
Examples: (use either method, not both)
insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1
sethdlc -i sm0 -p hw sbc type afsk1200 io 0x220 irq 5 dma 1
 
Both lines configure the first port to drive a soundblaster card
in 1200 baud AFSK mode.
 
The channel access parameters can be set with sethdlc -a or kissparms.
Note that both utilities interpret the values slightly different.
 
 
Input and output levels
 
It is important that the input and output levels are adjusted properly.
There are two utilities, available in the ax25 utilities distribution,
to facilitate this: smmixer and smdiag. smdiag allows you to display
the input signal in an oscilloscope like display or an eye diagram.
smmixer allows you to adjust input/output levels. See the respective
man pages. These two utilities have two counterparts: xfsmmixer and
xfsmdiag. They both require the FORMS to compile, and provide a nicer
user interface. Functionality is the same, though.
 
 
Transmitter keying
 
Since soundcards do not have a DC coupled output; PTT keying options include
the following:
* VOX circuitry
* Serial port pin
* Parallel port pin
* MPU401 MIDI output via a retriggerable monoflop.
Circuit schematics may be found at
http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html.
 
 
Compatibility with the rest of the Linux kernel
 
The sound driver and the soundcard modem driver compete for the same
hardware resources. Of course only one driver can access a given
interface at a time. Worse yet, the sound driver grabs the soundcard
at startup time. Therefore the soundcard modem driver subsequently won't
be able to access the soundcard. You might therefore find it necessary to
unload the sound driver before using the soundcard modem driver.
 
 
Further reading
 
Please take a look at http://www.ife.ee.ethz.ch/~sailer/ham/linux/hdlc.html
for further informations on the driver.
 
 
vy 73s de
Tom Sailer, sailer@ife.ee.ethz.ch
Packet Radio: hb9jnx@hb9w.che.eu
/baycom.txt
0,0 → 1,131
LINUX DRIVER FOR BAYCOM MODEMS
 
Thomas M. Sailer, HB9JNX/AE4WA, <sailer@ife.ee.ethz.ch>
 
This document describes the Linux Kernel Driver for simple Baycom style
amateur radio modems. The driver supports the following modems:
 
ser12: This is a very simple 1200 baud AFSK modem. The modem consists only
of a modulator/demodulator chip, usually a TI TCM3105. The computer
is responsible for regenerating the receiver bit clock, as well as
for handling the HDLC protocol. The modem connects to a serial port,
hence the name. Since the serial port is not used as an async serial
port, the kernel driver for serial ports cannot be used, and this
driver only supports standard serial hardware (8250, 16450, 16550)
 
par96: This is a modem for 9600 baud FSK compatible to the G3RUH standard.
The modem does all the filtering and regenerates the receiver clock.
Data is transferred from and to the PC via a shift register.
The shift register is filled with 16 bits and an interrupt is signalled.
The PC then empties the shift register in a burst. This modem connects
to the parallel port, hence the name. The modem leaves the
implementation of the HDLC protocol and the scrambler polynomial to
the PC.
 
picpar: This is a redesign of the par96 modem by Henning Rech, DF9IC. The modem
is protocol compatible to par96, but uses only three low power ICs
and can therefore be fed from the parallel port and does not require
an additional power supply. Furthermore, it incorporates a carrier
detect circuitry.
 
All of the above modems only support half duplex communications. However,
the driver supports the KISS (see below) fullduplex command. It then simply
starts to send as soon as there's a packet to transmit and does not care
about DCD, i.e. it starts to send even if there's someone else on the channel.
This command is required by some implementations of the DAMA channel
access protocol.
 
 
The Interface of the driver
 
Unlike previous drivers, the driver is no longer a character device,
but it is now a true kernel network interface. Installation is therefore
simple. Once installed, four interfaces named bc[0-3] are available.
sethdlc from the ax25 utilities may be used to set driver states etc.
Users of userland AX.25 stacks may use the net2kiss utility (also available
in the ax25 utilities package) to converts packets of a network interface
to a KISS stream on a pseudo tty. There's also a patch available from
me for WAMPES which allows attaching a kernel network interface directly.
 
 
Configuring the driver
 
Every time the driver is inserted into the kernel, it has to know which
modems it should access at which ports. This can be done with the setbaycom
utility. If you are only using one modem, you can also configure the
driver from the insmod command line (or by means of an option line in
/etc/conf.modules).
 
Examples: (use either method, not both)
insmod baycom mode="ser12*" iobase=0x3f8 irq=4
sethdlc -i bc0 -p type "ser12*" io 0x3f8 irq 4
 
Both lines configure the first port to drive a ser12 modem at the first
serial port (COM1 under DOS). The star ('*') instructs the driver to use
the software DCD algorithm (see below).
 
insmod baycom mode="par96*" iobase=0x378 irq=7
sethdlc -i bc0 -p type "par96*" io 0x378 irq 7
 
Both lines configure the first port to drive a par96 or par97 modem at the
first parallel port (LPT1 under DOS). options=1 instructs the driver to use
the software DCD algorithm (see below).
insmod baycom mode="par96" iobase=0x278 irq=5
sethdlc -i bc0 -p type "par96" io 0x278 irq 5
 
Both lines configure the first port to drive a picpar modem at the
second parallel port (LPT2 under DOS). The driver uses the hardware DCD
signalled by the picpar modem (see below).
The channel access parameters can be set with sethdlc -a or kissparms.
Note that both utilities interpret the values slightly different.
 
 
 
Hardware DCD versus Software DCD
 
To avoid collisions on the air, the driver must know when the channel is
busy. This is the task of the DCD circuitry/software. The driver may either
utilise a software DCD algorithm (a star after the mode string) or use a DCD
signal from the hardware (no star).
 
ser12: if software DCD is utilised, the radio's squelch should always be
open. It is highly recommended to use the software DCD algorithm,
as it is much faster than most hardware squelch circuitry. The
disadvantage is a slightly higher load on the system.
 
par96: the software DCD algorithm for this type of modem is rather poor.
The modem simply does not provide enough information to implement
a reasonable DCD algorithm in software. Therefore, if your radio
feeds the DCD input of the par96 modem, the use of the hardware
DCD circuitry is recommended.
 
picpar: the picpar modem features a builtin DCD hardware, which is highly
recommended.
 
 
 
Compatibility with the rest of the Linux kernel
 
The serial driver, the line printer (lp) driver and the baycom driver compete
for the same hardware resources. Of course only one driver can access a given
interface at a time. The serial driver grabs all interfaces it can find at
startup time. Therefore the baycom driver subsequently won't be able to
access a serial port. You might therefore find it necessary to release
a port owned by the serial driver with 'setserial /dev/ttyS# uart none', where
# is the number of the interface. The baycom driver does not reserve any
port at startup, unless one is specified on the 'insmod' command line. Another
method to solve the problem is to compile all three drivers as modules and
leave it to kerneld to load the correct driver depending on the application.
 
 
Further reading
 
Please take a look at http://www.ife.ee.ethz.ch/~sailer/ham/linux/hdlc.html
for further informations on the driver.
 
 
vy 73s de
Tom Sailer, sailer@ife.ee.ethz.ch
Packet Radio: hb9jnx@hb9w.che.eu
/tlan.README
0,0 → 1,135
TLAN driver for Linux, version 1.0
README
 
Well, I'm back. The TLAN driver seems pretty stable, so I'm
declaring this cycle of development finished, and calling the
driver 1.0. I will, of course continue to work on improving
the driver, and work towards a 2.0 release.
 
 
 
I. Supported Devices.
 
Only PCI devices will work with this driver.
 
Supported:
Vendor ID Device ID Name
0e11 ae32 Compaq Netelligent 10/100 TX PCI UTP
0e11 ae34 Compaq Netelligent 10 T PCI UTP
0e11 ae35 Compaq Integrated NetFlex 3/P
0e11 ae40 Compaq Netelligent Dual 10/100 TX PCI UTP
0e11 ae43 Compaq Netelligent Integrated 10/100 TX UTP
0e11 b011 Compaq Netelligent 10/100 TX Embedded UTP
0e11 b012 Compaq Netelligent 10 T/2 PCI UTP/Coax
0e11 b030 Compaq Netelligent 10/100 TX UTP
0e11 f130 Compaq NetFlex 3/P
0e11 f150 Compaq NetFlex 3/P
108d 0012 Olicom OC-2325
108d 0013 Olicom OC-2183
108d 0014 Olicom OC-2326
 
 
Caveats:
I am not sure if 100BaseTX daughterboards (for those cards which
support such things) will work. I haven't had any solid evidence
either way.
 
However, if a card supports 100BaseTx without requiring an add
on daughterboard, it should work with 100BaseTx.
 
The "Netelligent 10 T/2 PCI UTP/Coax" (b012) device is untested,
but I do not expect any problems.
 
II. Building the Driver.
 
The TLAN driver may be compiled into the kernel, or it may be compiled
as a module separately, or in the kernel. A patch is included for
2.0.29 (which also works for 2.0.30, 2.0.31, and 2.0.32).
 
To compile it as part of the kernel:
1. Download and untar the TLAN driver package.
2. If your kernel is 2.1.45 or later, you do not need to patch the
kernel sources. Copy the tlan.c and tlan.h to drivers/net in
the kernel source tree.
3. Otherwise, apply the appropriate patch for your kernel. For
example:
 
cd /usr/src/linux
patch -p1 < kernel.2.0.29
 
4. Copy the files tlan.c and tlan.h from the TLAN package to the
directory drivers/net in the Linux kernel source tree.
5. Configure your kernel for the TLAN driver. Answer 'Y' when
prompted to ask about experimental code (the first question).
Then answer 'Y' when prompted if to include TI ThunderLAN
support. If you want the driver compiled as a module, answer 'M'
instead of 'Y'.
6. Make the kernel and, if necessary, the modules.
To compile the TLAN driver independently:
1. Download and untar the TLAN driver package.
2. Change to the tlan directory.
3. If you are NOT using a versioned kernel (ie, want an non-
versioned module), edit the Makefile, and comment out the
line:
MODVERSIONS = -DMODVERSIONS
4. Run 'make'.
 
 
III. Driver Options
1. You can append debug=x to the end of the insmod line to get
debug messages, where x is a bit field where the bits mean
the following:
0x01 Turn on general debugging messages.
0x02 Turn on receive debugging messages.
0x04 Turn on transmit debugging messages.
0x08 Turn on list debugging messsages.
 
2. You can append aui=1 to the end of the insmod line to cause
the adapter to use the AUI interface instead of the 10 Base T
interface. This is also what to do if you want to use the BNC
connector on a TLAN based device. (Setting this option on a
device that does not have an AUI/BNC connector will probably
cause it to not function correctly.)
 
4. You can set duplex=1 to force half duplex, and duplex=2 to
force full duplex.
 
5. You can set speed=10 to force 10Mbs operation, and speed=100Mbs
to force 100Mbs operation. (I'm not sure what will happen
if a card which only supports 10Mbs is forced into 100Mbs
mode.)
 
3. If the driver is built into the kernel, you can use the 3rd
and 4th parameters to set aui and debug respectively. For
example:
 
ether=0,0,0x1,0x7,eth0
 
This sets aui to 0x1 and debug to 0x7, assuming eth0 is a
supported TLAN device.
 
The bits in the third byte are assigned as follows:
 
0x01 = aui
0x02 = use SA_INTERRUPT flag when reserving the irq.
0x04 = use half duplex
0x08 = use full duplex
0x10 = use 10BaseT
0x20 = use 100BaseTx
 
 
IV. Things to try if you have problems.
1. Make sure your card's PCI id is among those listed in
section I, above.
1. Make sure routing is correct.
2. If you are using a 2.1.x kernel, try to duplicate the
problem on a 2.0.x (preferably 2.0.29 or 2.0.30) kernel.
 
 
There is also a tlan mailing list which you can join by sending "subscribe tlan"
in the body of an email to majordomo@vuser.vu.union.edu.
 
/arcnet.txt
0,0 → 1,483
 
----------------------------------------------------------------------------
NOTE: See also arcnet-hardware.txt in this directory for jumper-setting
and cabling information if you're like many of us and didn't happen to get a
manual with your ARCnet card.
----------------------------------------------------------------------------
 
Since no one seems to listen to me otherwise, perhaps a poem will get your
attention:
This driver's getting fat and beefy,
But my cat is still named Fifi.
 
Hmm, I think I'm allowed to call that a poem, even though it's only two
lines. Hey, I'm in Computer Science, not English. Give me a break.
 
The point is: I REALLY REALLY REALLY REALLY REALLY want to hear from you if
you test this and get it working. Or if you don't. Or anything.
 
ARCnet 0.32 ALPHA first made it into the Linux kernel 1.1.80 - this was
nice, but after that even FEWER people started writing to me because they
didn't even have to install the patch. <sigh>
 
Come on, be a sport! Send me a success report!
 
(hey, that was even better than my original poem... this is getting bad!)
 
 
--------
WARNING:
--------
 
If you don't e-mail me about your success/failure soon, I may be forced to
start SINGING. And we don't want that, do we?
 
(You know, it might be argued that I'm pushing this point a little too much.
If you think so, why not flame me in a quick little e-mail? Please also
include the type of card(s) you're using, software, size of network, and
whether it's working or not.)
 
My e-mail address is: apenwarr@foxnet.net
 
 
---------------------------------------------------------------------------
 
These are the ARCnet drivers for Linux.
 
This new release has resulted from many months of on-and-off effort from me
(Avery Pennarun), many bug reports/fixes and suggestions from others, and in
particular a lot of input and coding from Tomasz Motylewski. Starting with
ARCnet 2.10 ALPHA, Tomasz's all-new-and-improved RFC1051 support has been
included and seems to be working fine!
 
 
Where do I discuss these drivers?
---------------------------------
 
Tomasz Motylewski has been so kind as to set up a new and improved
mailing list. Subscribe by sending a message with the BODY "subscribe
linux-arcnet YOUR REAL NAME" to listserv@tichy.ch.uj.edu.pl. Then, to
submit messages to the list, mail to linux-arcnet@tichy.ch.uj.edu.pl.
 
There are archives of the mailing list at:
http://tichy.ch.uj.edu.pl/lists/linux-arcnet
 
The people on linux-net@vger.rutgers.edu have also been known to be very
helpful, especially when we're talking about ALPHA Linux kernels that may or
may not work right in the first place.
 
 
Other Drivers and Info
----------------------
 
You can try my ARCNET page on the World Wide Web at:
http://www.foxnet.net/~apenwarr/arcnet/
 
Also, SMC (one of the companies that makes ARCnet cards) has a WWW site you
might be interested in, which includes several drivers for various cards
including ARCnet. Try:
http://www.smc.com/
Performance Technologies makes various network software that supports
ARCnet:
http://www.perftech.com/ or ftp to ftp.perftech.com.
Novell makes a networking stack for DOS which includes ARCnet drivers. Try
ftp'ing to ftp.novell.com.
 
You can get the Crynwr packet driver collection (including arcether.com, the
one you'll want to use with arcnet cards) from
oak.oakland.edu:/simtel/msdos/pktdrvr. It won't work perfectly on a 386+
without patches, though, and also doesn't like several cards. Fixed
versions are available on my WWW page, or via e-mail if you don't have WWW
access.
 
 
Installing the Driver
---------------------
 
If this driver was included as part of your Linux kernel source, all you
will need to do in order to install it is:
make config
(be sure to choose ARCnet under "other ISA cards")
make dep
make clean
make zImage
If you obtained this ARCnet package as an upgrade to the ARCnet driver in
your current kernel, you will need to first copy arcnet.c over the one in
the linux/drivers/net directory.
 
You will know the driver is installed properly if you get a lot of ARCnet
messages when you boot into the new Linux kernel. (These messages can be
disabled by taking D_INIT out of the list of debug flags in arcnet.c.)
 
 
Loadable Module Support
-----------------------
 
Configure and rebuild Linux. When asked, answer 'm' to "arcnet support" if
you want to use the loadable module.
 
make config
make dep
make clean
make zImage
make modules
If you're using a loadable module, you need to use insmod to load it, and
you can specify various characteristics of your card on the command
line. (In recent versions of the driver, autoprobing is much more reliable
and works as a module, so most of this is now unnecessary.)
 
For example:
cd /usr/src/linux/modules
insmod arcnet.o io=0x300 irq=2 shmem=0xd0000
 
You can name the device using something like "device=arc1" (for a second
card) or "device=eth0" (for weird compatibility reasons) if you like.
 
Using the Driver
----------------
 
If you build your kernel with ARCnet support included, it should probe for
your card automatically when you boot.
 
Go read the NET-2-HOWTO and ETHERNET-HOWTO for Linux; they should be
available where you picked up this driver. Think of your ARCnet as a
souped-up (or down, as the case may be) Ethernet card.
 
By the way, be sure to change all references from "eth0" to "arc0" in the
HOWTOs. Remember that ARCnet isn't a "true" Ethernet, and the device name
is DIFFERENT.
 
 
Multiple Cards in One Computer
------------------------------
 
Linux has pretty good support for this now, but since I've been busy, the
ARCnet driver has somewhat suffered in this respect. For now, the easiest
way to use multiple ARCnet cards is to build it as a loadable module and
then do something like this:
insmod -o arc0 arcnet
insmod -o arc1 arcnet device=arc1
(Note that in the first line, the default is device=arc0, but it doesn't
hurt if you want to add it for consistency.)
 
 
How do I get it to work with...?
--------------------------------
 
NFS: Should be fine Linux->Linux, just pretend you're using Ethernet cards.
oak.oakland.edu:/simtel/msdos/nfs has some nice DOS clients. There
is also a DOS-based NFS server called SOSS. It doesn't multitask
quite the way Linux does (actually, it doesn't multitask AT ALL) but
you never know what you might need.
With AmiTCP (and possibly others), you may need to set the following
options in your Amiga nfstab: MD 1024 MR 1024 MW 1024
(Thanks to Christian Gottschling <ferksy@indigo.tng.oche.de>
for this.)
Probably these refer to maximum NFS data/read/write block sizes. I
don't know why the defaults on the Amiga didn't work; write to me if
you know more.
 
DOS: If you're using the freeware arcether.com, you might want to install
the driver patch from my web page. It helps with PC/TCP, and also
can get arcether to load if it timed out too quickly during
initialization. In fact, if you use it on a 386+ you REALLY need
the patch, really.
Windows: See DOS :) Trumpet Winsock works fine with either the Novell or
Arcether client, assuming you remember to load winpkt of course.
 
LAN Manager and Windows for Workgroups: These programs use protocols that
are incompatible with the internet standard. They try to pretend
the cards are Ethernet, and confuse everyone else on the network.
However, v2.00 and higher of the Linux ARCnet driver supports this
protocol via the 'arc0e' device. See the section on "Multiprotocol
Support" for more information.
 
Using the freeware Samba server and clients for Linux, you can now
interface quite nicely with TCP/IP-based WfWg or Lan Manager
networks.
Windows 95: Tools are included with Win95 that let you use either the LANMAN
style network drivers (NDIS) or Novell drivers (ODI) to handle your
ARCnet packets. If you use ODI, you'll need to use the 'arc0'
device with Linux. If you use NDIS, then try the 'arc0e' device.
See the "Multiprotocol Support" section below if you need arc0e,
you're completely insane, and/or you need to build some kind of
hybrid network that uses both encapsulation types.
 
OS2: I've been told it works under Warp Connect with an ARCnet driver from
SMC. You need to use the 'arc0e' interface for this. If you get
the SMC driver to work with the TCP/IP stuff included in the
"normal" Warp Bonus Pack, let me know.
 
ftp.microsoft.com also has a freeware "Lan Manager for OS/2" client
which should use the same protocol as WfWg does. I had no luck
installing it under Warp, however. Please mail me with any results.
 
NetBSD/AmiTCP: These use an old version of the Internet standard ARCnet
protocol (RFC1051) which is compatible with the Linux driver v2.10
ALPHA and above using the arc0s device. (See "Multiprotocol ARCnet"
below.) ** Newer versions of NetBSD apparently support RFC1201.
 
 
Using Multiprotocol ARCnet
--------------------------
 
The ARCnet driver v2.10 ALPHA supports three protocols, each on its own
"virtual network device":
 
arc0 - RFC1201 protocol, the official internet standard which just
happens to be 100% compatible with Novell's TRXNET driver.
Version 1.00 of the ARCnet driver supported _only_ this
protocol. arc0 is the fastest of the three protocols (for
whatever reason), and allows larger packets to be used
because it supports RFC1201 "packet splitting" operations.
Unless you have a specific need to use a different protocol,
I strongly suggest that you stick with this one.
arc0e - "Ethernet-Encapsulation" which sends packets over ARCnet
that are actually a lot like Ethernet packets, including the
6-byte hardware addresses. This protocol is compatible with
Microsoft's NDIS ARCnet driver, like the one in WfWg and
LANMAN. Because the MTU of 493 is actually smaller than the
one "required" by TCP/IP (576), there is a chance that some
network operations will not function properly. The Linux
TCP/IP layer can compensate in most cases, however, by
automatically fragmenting the TCP/IP packets to make them
fit. arc0e also works slightly more slowly than arc0, for
reasons yet to be determined. (Probably it's the smaller
MTU that does it.)
arc0s - The "[s]imple" RFC1051 protocol is the "previous" internet
standard that is completely incompatible with the new
standard. Some software today, however, continues to
support the old standard (and only the old standard)
including NetBSD and AmiTCP. RFC1051 also does not support
RFC1201's packet splitting, and the MTU of 507 is still
smaller than the internet "requirement," so it's quite
possible that you may run into problems. It's also slower
than RFC1201 by about 25%, for the same reason as arc0e.
The arc0s support was contributed by Tomasz Motylewski
and modified somewhat by me. Bugs are probably my fault.
 
You can choose not to compile arc0e and arc0s into the driver if you want -
this will save you a bit of memory and avoid confusion when eg. trying to
use the "NFS-root" stuff in recent Linux kernels.
 
The arc0e and arc0s devices are created automatically when you first
ifconfig the arc0 device. To actually use them, though, you need to also
ifconfig the other virtual devices you need. There are a number of ways you
can set up your network then:
 
 
1. Single Protocol.
 
This is the simplest way to configure your network: use just one of the
two available protocols. As mentioned above, it's a good idea to use
only arc0 unless you have a good reason (like some other software, ie.
WfWg, that only works with arc0e).
If you need only arc0, then the following commands should get you going:
ifconfig arc0 MY.IP.ADD.RESS
route add MY.IP.ADD.RESS arc0
route add -net SUB.NET.ADD.RESS arc0
[add other local routes here]
If you need arc0e (and only arc0e), it's a little different:
ifconfig arc0 MY.IP.ADD.RESS
ifconfig arc0e MY.IP.ADD.RESS
route add MY.IP.ADD.RESS arc0e
route add -net SUB.NET.ADD.RESS arc0e
arc0s works much the same way as arc0e.
 
 
2. More than one protocol on the same wire.
 
Now things start getting confusing. To even try it, you may need to be
partly crazy. Here's what *I* did. :) Note that I don't include arc0s in
my home network; I don't have any NetBSD or AmiTCP computers, so I only
use arc0s during limited testing.
 
I have three computers on my home network; two Linux boxes (which prefer
RFC1201 protocol, for reasons listed above), and one XT that can't run
Linux but runs the free Microsoft LANMAN Client instead.
 
Worse, one of the Linux computers (freedom) also has a modem and acts as
a router to my internet provider. The other Linux box (insight) also has
its own IP address and needs to use freedom as its default gateway. The
XT (patience), however, does not have its own internet IP address and so
I assigned it one on a "private subnet" (as defined by RFC1597).
 
To start with, take a simple network with just insight and freedom.
Insight needs to:
- talk to freedom via RFC1201 (arc0) protocol, because I like it
more and it's faster.
- use freedom as its internet gateway.
That's pretty easy to do. Set up insight like this:
ifconfig arc0 insight
route add insight arc0
route add freedom arc0 /* I would use the subnet here (like I said
in "single protocol" above), but the
rest of the subnet unfortunately
lies across the PPP link on freedom,
which confuses things. */
route add default gw freedom
And freedom gets configured like so:
ifconfig arc0 freedom
route add freedom arc0
route add insight arc0
/* and default gateway is configured by pppd */
Great, now insight talks to freedom directly on arc0, and sends packets
to the internet through freedom. If you didn't know how to do the above,
you should probably stop reading this section now because it only gets
worse.
 
Now, how do I add patience into the network? It will be using LANMAN
Client, which means I need the arc0e device. It needs to be able to talk
to both insight and freedom, and also use freedom as a gateway to the
internet. (Recall that patience has a "private IP address" which won't
work on the internet; that's okay, I configured Linux IP masquerading on
freedom for this subnet).
So patience (necessarily; I don't have another IP number from my
provider) has an IP address on a different subnet than freedom and
insight, but needs to use freedom as an internet gateway. Worse, most
DOS networking programs, including LANMAN, have braindead networking
schemes that rely completely on the netmask and a 'default gateway' to
determine how to route packets. This means that to get to freedom or
insight, patience WILL send through its default gateway, regardless of
the fact that both freedom and insight (courtesy of the arc0e device)
could understand a direct transmission.
I compensate by giving freedom an extra IP address - aliased 'gatekeeper'
- that is on my private subnet, the same subnet that patience is on. I
then define gatekeeper to be the default gateway for patience.
To configure freedom (in addition to the commands above):
ifconfig arc0e gatekeeper
route add gatekeeper arc0e
route add patience arc0e
This way, freedom will send all packets for patience through arc0e,
giving its IP address as gatekeeper (on the private subnet). When it
talks to insight or the internet, it will use its "freedom" internet IP
address.
You will notice that we haven't configured the arc0e device on insight.
This would work, but is not really necessary, and would require me to
assign insight another special IP number from my private subnet. Since
both insight and patience are using freedom as their default gateway, the
two can already talk to each other.
It's quite fortunate that I set things up like this the first time (cough
cough) because it's really handy when I boot insight into DOS. There, it
runs the Novell ODI protocol stack, which only works with RFC1201 ARCnet.
In this mode it would be impossible for insight to communicate directly
with patience, since the Novell stack is incompatible with Microsoft's
Ethernet-Encap. Without changing any settings on freedom or patience, I
simply set freedom as the default gateway for insight (now in DOS,
remember) and all the forwarding happens "automagically" between the two
hosts that would normally not be able to communicate at all.
For those who like diagrams, I have created two "virtual subnets" on the
same physical ARCnet wire. You can picture it like this:
[RFC1201 NETWORK] [ETHER-ENCAP NETWORK]
(registered internet subnet) (RFC1597 private subnet)
(IP Masquerade)
/---------------\ * /---------------\
| | * | |
| +-Freedom-*-Gatekeeper-+ |
| | | * | |
\-------+-------/ | * \-------+-------/
| | |
Insight | Patience
(Internet)
 
 
 
It works: what now?
-------------------
 
Send mail describing your setup, preferably including driver version, kernel
version, ARCnet card model, CPU type, number of systems on your network, and
list of software in use to me at the following address:
apenwarr@foxnet.net
 
I do send (sometimes automated) replies to all messages I receive. My email
can be weird (and also usually gets forwarded all over the place along the
way to me), so if you don't get a reply within a reasonable time, please
resend.
 
 
It doesn't work: what now?
--------------------------
 
Do the same as above, but also include the output of the ifconfig and route
commands, as well as any pertinent log entries (ie. anything that starts
with "arcnet:" and has shown up since the last reboot) in your mail.
 
If you want to try fixing it yourself (I strongly recommend that you mail me
about the problem first, since it might already have been solved) you may
want to try some of the debug levels available. For heavy testing on
D_DURING or more, it would be a REALLY good idea to kill your klogd daemon
first! D_DURING displays 4-5 lines for each packet sent or received. D_TX,
D_RX, and D_SKB actually DISPLAY each packet as it is sent or received,
which is obviously quite big.
 
Starting with v2.40 ALPHA, the autoprobe routines have changed
significantly. In particular, they won't tell you why the card was not
found unless you turn on the D_INIT_REASONS debugging flag.
 
Once the driver is running, you can run the arcdump shell script (available
from me or in the full ARCnet package, if you have it) as root to list the
contents of the arcnet buffers at any time. To make any sense at all out of
this, you should grab the pertinent RFC's. (some are listed near the top of
arcnet.c). arcdump assumes your card is at 0xD0000. If it isn't, edit the
script.
 
Buffers 0 and 1 are used for receiving, and Buffers 2 and 3 are for sending.
Ping-pong buffers are implemented both ways.
 
If your debug level includes D_DURING and you did NOT define SLOW_XMIT_COPY,
the buffers are cleared to a constant value of 0x42 every time the card is
reset (which should only happen when you do an ifconfig up, or when Linux
decides that the driver is broken). During a transmit, unused parts of the
buffer will be cleared to 0x42 as well. This is to make it easier to figure
out which bytes are being used by a packet.
 
You can change the debug level without recompiling the kernel by typing:
ifconfig arc0 down metric 1xxx
/etc/rc.d/rc.inet1
where "xxx" is the debug level you want. For example, "metric 1015" would put
you at debug level 15. Debug level 7 is currently the default.
 
Note that the debug level is (starting with v1.90 ALPHA) a binary
combination of different debug flags; so debug level 7 is really 1+2+4 or
D_NORMAL+D_EXTRA+D_INIT. To include D_DURING, you would add 16 to this,
resulting in debug level 23.
 
If you don't understand that, you probably don't want to know anyway.
E-mail me about your problem.
 
 
I want to send money: what now?
-------------------------------
 
Go take a nap or something. You'll feel better in the morning.
/depca.txt
0,0 → 1,92
 
DE10x
=====
 
Memory Addresses:
 
SW1 SW2 SW3 SW4
64K on on on on d0000 dbfff
off on on on c0000 cbfff
off off on on e0000 ebfff
 
32K on on off on d8000 dbfff
off on off on c8000 cbfff
off off off on e8000 ebfff
 
DBR ROM on on dc000 dffff
off on cc000 cffff
off off ec000 effff
 
Note that the 2K mode is set by SW3/SW4 on/off or off/off. Address
assignment is through the RBSA register.
 
I/O Address:
SW5
0x300 on
0x200 off
 
Remote Boot:
SW6
Disable on
Enable off
 
Remote Boot Timeout:
SW7
2.5min on
30s off
 
IRQ:
SW8 SW9 SW10 SW11 SW12
2 on off off off off
3 off on off off off
4 off off on off off
5 off off off on off
7 off off off off on
 
DE20x
=====
 
Memory Size:
 
SW3 SW4
64K on on
32K off on
2K on off
2K off off
 
Start Addresses:
 
SW1 SW2 SW3 SW4
64K on on on on c0000 cffff
on off on on d0000 dffff
off on on on e0000 effff
 
32K on on off off c8000 cffff
on off off off d8000 dffff
off on off off e8000 effff
 
Illegal off off - - - -
 
I/O Address:
SW5
0x300 on
0x200 off
 
Remote Boot:
SW6
Disable on
Enable off
 
Remote Boot Timeout:
SW7
2.5min on
30s off
 
IRQ:
SW8 SW9 SW10 SW11 SW12
5 on off off off off
9 off on off off off
10 off off on off off
11 off off off on off
15 off off off off on
 
/ip_dynaddr.txt
0,0 → 1,54
IP dynamic address hack-port v0.03-rst
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This stuff allows diald ONESHOT connections to get established by
dynamically changing packet source address (and socket's if local procs).
It is implemented for TCP diald-box connections(1) and IP_MASQuerading(2).
 
If enabled[*] and forwarding interface address has changed:
1) Socket (and packet) source address is rewritten ON RETRANSMISSIONS
while in SYN_SENT state (diald-box processes).
2) Out-bounded MASQueraded source address changes ON OUTPUT (when
internal host does retransmission) until a packet from outside is
received by the tunnel.
 
This is specially helpful for auto dialup links (diald), where the
``actual'' outgoing address is unknown at the moment the link is
going up. So, the *same* (local AND masqueraded) connections requests that
bring the link up will be able to get established.
 
If you enable the RST-provoking mode, then the source address will
be changed, even if the socket is established. This means we send
an incorrect packet out, which causes the remote host to kill our
socket. This is the desired behaviour, because such a socket is
doomed anyway, and the earlier it dies, the better. This prevents
the dial-on-demand connection from being kept up by a dead connection,
and tells the application that the connection was lost.
 
[*] At boot, by default no address rewriting is attempted.
 
The values for the ip_dynaddr sysctl are:
 
1: To enable:
2: To enable verbosity:
4: To enable RST-provoking:
 
Flags can be combined by adding them. Common settings
would be:
 
To switch off special handling of dynamic addresses (default)
# echo 0 > /proc/sys/net/ipv4/ip_dynaddr
To enable rewriting in quiet mode:
# echo 1 > /proc/sys/net/ipv4/ip_dynaddr
To enable rewriting in verbose mode:
# echo 3 > /proc/sys/net/ipv4/ip_dynaddr
(for backwards compatibility you can also use)
# echo 2 > /proc/sys/net/ipv4/ip_dynaddr
To enable quiet RST-provoking mode:
# echo 5 > /proc/sys/net/ipv4/ip_dynaddr
To enable verbose RST-provoking mode:
# echo 7 > /proc/sys/net/ipv4/ip_dynaddr
 
Enjoy!
 
-- Juanjo <jjciarla@raiz.uncu.edu.ar>
(with RST-provoking mode by Erik Corry <erik@arbat.com>)
/ax25.txt
0,0 → 1,16
To use the amateur radio protocols within Linux you will need to get a
suitable copy of the AX.25 Utilities. More detailed information about these
and associated programs can be found on http://www.cs.nott.ac.uk/~jsn/.
 
For more information about the AX.25, NET/ROM and ROSE protocol stacks, see
the AX25-HOWTO written by Terry Dawson <terry@perf.no.itg.telstra.com.au>
who is also the AX.25 Utilities maintainer.
 
There is an active mailing list for discussing Linux amateur radio matters
called linux-hams. To subscribe to it, send a message to
Majordomo@vger.rutgers.edu with the words "subscribe linux-hams" in the body
of the message, the subject field is ignored.
 
Jonathan G4KLX
 
jsn@cs.nott.ac.uk
/masquerading.txt
0,0 → 1,51
IP Masquerading lets you run multiple machines on a network behind a
Linux box so that all the machines (including the Linux masquerade box)
appear as a single IP address to the outside world.
 
The main use of masquerading is when your ISP only gives you one IP
address and wants to charge like a wounded bull for multiple IP
addresses. Instead of paying your ISP large amounts of money for a
separate address for each of your machines, funnel them all through a
Linux box running IP masquerading. Even when you have multiple IP
addresses, you can still use masquerading if you want to hide your
internal networks from the rest of the world.
 
To activate IP masquerading, compile the kernel with IP Forwarding, IP
Firewalling and IP Masquerading, the first two options must be on
before you can see the masquerade option. Also consider using the
ipautofw and ICMP masquerading suboptions.
 
Some of the masq code is in the kernel, some is in modules so you have
to make zImage and make modules. There are masq helper modules to
handle special protocols, you only need to load a helper module if you
want to use the corresponding protocol. Helper modules have to be
explicitly loaded (usually from somewhere in /etc/rc.d), they cannot be
loaded using kerneld. The current helper modules are ip_masq_ftp,
ip_masq_irc, ip_masq_raudio, ip_masq_cuseeme, ip_masq_vdolive,
ip_masq_quake.
 
All of the modules can take a parameter specifying the port they work
on - ie ftp handles connections to port 21 by default. This parameter,
which can be ommitted to take the default port(s) makes the command
line look like this
insmod ip_masq_raudio.o ports=7070,7071,7072
Up to 12 ports can be specified (this value can be changed if you
recompile).
 
Masquerading is more of a server function than a single user function.
Using it correctly requires some knowledge of TCP, UDP, IP and a high
level understanding of some protocols. For more details on IP
masquerading, visit
http://www.indyramp.com/masq/
and read the HOWTO.
 
There is a mailing list covering use of masqueraing, information can
be found on the indyramp web site given above - please read the basic
information before posting to the mailing list.
 
Other information on masquerading can be found at
http://www.wwonline.com/~achau/ipmasq/
 
March 5, 1997
Keith Owens
Nigel Metheringham
/shaper.txt
0,0 → 1,49
Traffic Shaper For Linux
 
This is the current ALPHA release of the traffic shaper for Linux. It works
within the following limits:
 
o Minimum shaping speed is currently about 9600 baud (it can only
shape down to 1 byte per clock tick)
 
o Maximum is about 256K, it will go above this but get a bit blocky.
 
o If you ifconfig the master device that a shaper is attached to down
then your machine will follow.
 
o The shaper must be a module.
 
 
Setup:
 
A shaper device is configured using the shapeconfig program.
Typically you will do something like this
 
shapecfg attach shaper0 eth1
shapecfg speed shaper0 64000
ifconfig shaper0 myhost netmask 255.255.255.240 broadcast 1.2.3.4.255 up
route add -net some.network netmask a.b.c.d dev shaper0
 
The shaper should have the same IP address as the device it is attached to
for normal use.
 
Gotchas:
 
The shaper shapes transmitted traffic. It's rather impossible to
shape received traffic except at the end (or a router) transmitting it.
 
Gated/routed/rwhod/mrouted all see the shaper as an additional device
and will treat it as such unless patched. Note that for mrouted you can run
mrouted tunnels via a traffic shaper to control bandwidth usage.
 
The shaper is device/route based. This makes it very easy to use
with any setup BUT less flexible. You may well want to combine this patch
with Mike McLagan <mmclagan@linux.org>'s patch to allow routes to be
specified by source/destination pairs.
 
There is no "borrowing" or "sharing" scheme. This is a simple
traffic limiter. I'd like to implement Van Jacobson and Sally Floyd's CBQ
architecture into Linux one day (maybe in 2.1 sometime) and do this with
style.
 
Alan
/Configurable
0,0 → 1,33
 
There are a few network parameters that can be tuned to better match
the kernel to your system hardware and intended usage. The defaults
are usually a good choice for 99% of the people 99% of the time, but
you should be aware they do exist and can be changed.
 
The current list of parameters can be found in the file:
 
./linux/net/TUNABLE
 
Some of these are accessible via the sysctl interface, and many more are
scheduled to be added in this way. For example, some parameters related
to Address Resolution Protocol (ARP) are very easily viewed and altered.
 
# cat /proc/sys/net/ipv4/arp_timeout
6000
# echo 7000 > /proc/sys/net/ipv4/arp_timeout
# cat /proc/sys/net/ipv4/arp_timeout
7000
 
Others are already accessible via the related user space programs.
For example, MAX_WINDOW has a default of 32k which is a good choice for
modern hardware, but if you have a slow (8 bit) ethercard and/or a slow
machine, then this will be far too big for the card to keep up with fast
Tx'ing machines on the same net, resulting in overruns and receive errors.
A value of about 4k would be more appropriate, which can be set via:
 
# route add -net 192.168.3.0 window 4096
 
The remainder of these can only be presently changed by altering a #define
in the related header file. This means an edit and recompile cycle.
 
Paul Gortmaker 06/96
/tlan.FAQ
0,0 → 1,28
1. Q. Ifconfig reports "10Mbs Ethernet" for my 10/100Mbs card. How do
I get my card to run in 100Mbs mode?
 
A. The "10Mbs Ethernet" is poorly named. What this is really saying
is that this device is some kind of Ethernet device (ie, uses
ethernet style frames at the link layer). Recent versions of
ifconfig report this as simply "Ethernet".
 
The TLAN driver is designed to autodetect 10Mbs vs. 100Mbs
connections, and choose the higher speed. The most sure way
to determine what speed you are running at is to look at the
100Mbs LED on the card, if your device has one.
 
 
2. Q. My network card is using the same interrupt as my SCSI card.
 
A. Some Compaqs set all PCI devices to the same interrupt by default.
You can either change the interrupt used by one of the device
with your Compaq configuration utility, or you can have the TLAN
driver use the same type of interrupt handler:
 
a. For module based use, add 'sa_int=1' to the command line, eg.:
insmod tlan.o sa_int=1
 
b. For compiled in kernel, set the 0x2 bit in the third part
for the boot parameter for that device, eg.:
ether=0,0,0x2,0,eth0
 
/tcp.txt
0,0 → 1,39
How the new TCP output machine [nyi] works.
 
 
Data is kept on a single queue. The skb->users flag tells us if the frame is
one that has been queued already. To add a frame we throw it on the end. Ack
walks down the list from the start.
 
We keep a set of control flags
 
 
sk->tcp_pend_event
 
TCP_PEND_ACK Ack needed
TCP_ACK_NOW Needed now
TCP_WINDOW Window update check
TCP_WINZERO Zero probing
 
 
sk->transmit_queue The transmission frame begin
sk->transmit_new First new frame pointer
sk->transmit_end Where to add frames
 
sk->tcp_last_tx_ack Last ack seen
sk->tcp_dup_ack Dup ack count for fast retransmit
 
 
Frames are queued for output by tcp_write. We do our best to send the frames
off immediately if possible, but otherwise queue and compute the body
checksum in the copy.
 
When a write is done we try to clear any pending events and piggy back them.
If the window is full we queue full sized frames. On the first timeout in
zero window we split this.
 
On a timer we walk the retransmit list to send any retransmits, update the
backoff timers etc. A change of route table stamp causes a change of header
and recompute. We add any new tcp level headers and refinish the checksum
before sending.
 
/framerelay.txt
0,0 → 1,39
Frame Relay (FR) support for linux is built into a two tiered system of device
drivers. The upper layer implements RFC1490 FR specification, and uses the
Data Link Connection Identifier (DLCI) as its hardware address. Usually these
are assigned by your network supplier, they give you the number/numbers of
the Virtual Connections (VC) assigned to you.
 
Each DLCI is a point-to-point link between your machine and a remote one.
As such, a separate device is needed to accommodate the routing. Within the
net-tools archives is 'dlcicfg'. This program will communicate with the
base "DLCI" device, and create new net devices named 'dlci00', 'dlci01'...
The configuration script will ask you how many DLCI's you need, as well as
how many DLCI's you want to assign to each Frame Relay Access Device (FRAD).
 
The DLCI uses a number of function calls to communicate with the FRAD, all
of which are stored in the FRAD's private data area. assoc/deassoc,
activate/deactivate and dlci_config. The DLCI supplies a receive function
to the FRAD to accept incoming packets.
 
With this initial offering, only 1 FRAD driver is available. With many thanks
to Sangoma Technologies, David Mandelstam & Gene Kozin, the S502A, S502E &
S508 are supported. This driver is currently set up for only FR, but as
Sangoma makes more firmware modules available, it can be updated to provide
them as well.
 
Configuration of the FRAD makes use of another net-tools program, 'fradcfg'.
This program makes use of a configuration file (which dlcicfg can also read)
to specify the types of boards to be configured as FRADs, as well as perform
any board specific configuration. The Sangoma module of fradcfg loads the
FR firmware into the card, sets the irq/port/memory information, and provides
an initial configuration.
 
Additional FRAD device drivers can be added as hardware is available.
 
At this time, the dlcicfg and fradcfg programs have not been incorporated into
the net-tools distribution. They can be found at ftp.invlogic.com, in
/pub/linux. Note that with OS/2 FTPD, you end up in /pub by default, so just
use 'cd linux'. v0.10 is for use on pre-2.0.3 and earlier, v0.15 is for
pre-2.0.4 and later.
 
/vortex.txt
0,0 → 1,35
This document describes the usage and errata of the 3Com "Vortex" device
driver for Linux.
 
This driver supports the following hardware:
3c590, 3c592, 3c595, 3c597
 
When loaded as a module the following variables may be set:
name type description
debug int The debug message level, 0 (no messages) to 6 (wordy).
options int[] The media type override and card operation settings
(See list below.)
 
An example of loading the vortex module is
insmod 3c59x.o debug=1 options=0,,12
This sets the debug message level to minimal messages, sets the first card to
the 10baseT transceiver, the second to the EEPROM-set transceiver, and the
third card to operate in full-duplex mode using its 100baseTx transceiver.
(Note: card ordering is set by the PCI BIOS.)
 
Possible media type settings
0 10baseT
1 10Mbs AUI
2 undefined
3 10base2 (BNC)
4 100base-TX
5 100base-FX
6 MII (not yet available)
7 <Use default setting>
8 Full-duplex bit
8 10baseT full-duplex
12 100baseTx full-duplex
16 Bus-master enable bit (experimental use only!)
 
Details of the device driver implementation are at the top of the source file.
/alias.txt
0,0 → 1,196
NET_ALIAS device aliasing v0.5x
===============================
The main step taken in versions 0.40+ is the implementation of a
device aliasing mechanism that creates *actual* devices.
This development includes NET_ALIAS (generic aliasing) plus IP_ALIAS
(specific IP) support.
From version 0.50, dynamic configuration of max alias per device and
tx/rx stats for aliases added.
Also fixed inter-alias routing and arping problems.
 
Features
--------
o ACTUAL alias devices created & inserted in dev chain
o AF_ independent: net_alias_type objects. Generic aliasing engine.
o AF_INET optimized
o hashed alias address lookup
o net_alias_type objs registration/unreg., module-ables.
o /proc/net/aliases & /proc/net/alias_types entries
o /proc/sys/net/core/net_alias_max entry (affects hash table size
also)
o tx/rx stats
 
 
o IP alias implementation: static or runtime module.
 
Usage (IP aliasing)
-------------------
A very first step to test if you are running a net_alias-ed kernel
is to check /proc/net/aliases & /proc/net/alias_types entries:
# cat /proc/net/alias*
 
For IP aliasing you must have IP_ALIAS support included by
static linking ('y' to CONFIG_IP_ALIAS? question), or runtime module
insertion ('m'):
# insmod /usr/src/linux/modules/ip_alias.o (2.0.xx) or
# modprobe ip_alias.o
Also, dynamic loading is supported (kerneld).
You should have the following line in /etc/conf.modules (not needed
for newer modutils):
alias net_alias-2 ip_alias
 
Module options
--------------
From 0.5x ip_alias module supports a new option ("no_sel" symbol).
If no_sel is set (default is 0), alias association (device selection) with
foreign addresses will be disabled.
 
You will get:
- Faster operation by avoiding completely routing lookups.
Due to the "logical nature" of aliasing, netdevice SELection can only be
done based on info from network layer. When packet dst address isn't
one of my addresses, I query the routing table to see which netdevice
would be selected for packet _source_ address. This option avoids
doing so, and you must consider using it if you *only* have same-net
aliases (common usage).
 
You will loose:
- Inter-alias routing
- Proxyarp over aliases
 
To activate:
# insmod ip_alias.o no_sel=1
or
# modprobe ip_alias.o no_sel=1
or
add the following line to /etc/conf.modules:
options ip_alias no_sel=1
 
 
o Alias creation.
Alias creation is done by 'magic' iface naming: eg. to create a
200.1.1.1 alias for eth0 ...
# ifconfig eth0:0 200.1.1.1 etc,etc....
~~ -> request alias #0 creation (if it not exists) for eth0
and routing stuff also ...
# route add -host 200.1.1.1 dev eth0:0 (if same IP network as
main device)
# route add -net 200.1.1.0 dev eth0:0 (if completely new network wanted
for eth0:0)
 
o Alias deletion.
Also done by magic naming, eg:
 
# ifconfig eth0:0- 0 (maybe any address)
~~~ -> will delete alias (note '-' after dev name)
alias device is closed before deletion, so all network stuff that
points to it (routes, arp entries, ...) will be released.
o Alias (re-)configuring
Aliases *are* devices, so you configure and refer to them as usual (ifconfig,
route, etc).
o PROCfs entries
2 entries are added to help fetching alias runtime configuration:
a) /proc/net/alias_types
Will show you alias_types registered (ie. address families that
can be aliased).
eg. for IP aliasing with 1 alias configured:
 
# cat /proc/net/alias_types
type name n_attach
2 ip 1
b) /proc/net/aliases
Will show aliased devices info, eg (same as above):
 
# cat /proc/net/aliases
device family address
eth0:0 2 200.1.1.1
o PROCfs dynamic configuration (from v0.50)
You can now change the max aliases per device limit via
/proc/sys/net/core/net_alias_max entry (default=256)
# cat /proc/sys/net/core/net_alias_max
256
# echo 1000 > /proc/sys/net/core/net_alias_max
# cat /proc/sys/net/core/net_alias_max
1000
# _
With this funcionality you can disable net_alias creation from now on
# echo 0 > /proc/sys/net/core/net_alias_max
 
The new aliasing limit is considered (grabbed) when creating the
FIRST alias for the main device.
Eg:
# echo 10 > /proc/sys/net/core/net_alias_max
# ifconfig eth0:0 xx.xx.xx.xx (first alias creation for eth0,
eth0 will 'remember' max==10)
# echo 1000 > /proc/sys/net/core/net_alias_max
# ifconfig eth0:999 xx.xx.xx.xx
SIOCIFSADDR: No such device
Of course these semantics can be changed, please let me know.
Configuration changes get logged as usual (klogd -> /var/log/messages)
o Alias devices rx/tx stats
Fake rx/tx stats are accounted:
- TX
When the packet is ``switched'' from logical alias device to
physical device, tx counter gets incremented.
- RX
When an incoming packet's address equals alias network device's addr it
gets ``switched'' from physical to logical device, rx counter gets
incr.
Please NOTE that for ``same'' network alias devices you usually have
one net-route through physical device (eg. eth0), so output pkts
will NOT pass down via alias device (so, no tx++ will occur).
Also NOTE that currently ifconfig does not handle the ``:'' of alias devices
names, a little patch solves the problem:
--- ifconfig.c.dist Tue Apr 4 17:58:32 1995
+++ ifconfig.c Fri Oct 25 13:11:23 1996
@@ -243,7 +243,12 @@
bp++;
if(strncmp(bp,ifname,strlen(ifname))==0 && bp[strlen(ifname)]==':')
{
- bp=strchr(bp,':');
+ /*
+ * start bp at ifname end to prevent ':' ambiguity
+ * with alias devices (eg. eth0:0)
+ *
+ */
+ bp+=strlen(ifname);
bp++;
sscanf(bp,"%d %d %d %d %d %d %d %d %d %d %d",
&ife->stats.rx_packets,
Relationship with main device
-----------------------------
- On main device closing, all aliases will be closed and freed.
- Each new alias created is inserted in dev_chain just before next
main device (aliases get 'stacked' after main_dev), eg:
lo->eth0->eth0:0->eth0:2->eth1->0
If eth0 is unregistered, all it aliases will also be:
lo->eth1->0
 
Contact
-------
Please e-mail me:
Juan Jose Ciarlante <irriga@impsat1.com.ar> or <jjciarla@raiz.uncu.edu.ar>
Acknowledments
--------------
Special thanks to Claudia for all her love an patience.
Also thanks to Antonio Trevi~o <antonio@ecord.gov.ar> great human being
and un*x guru.
 
; local variables:
; mode: indented-text
; mode: auto-fill
; end:
/rcpci45
0,0 → 1,85
 
 
Application Information
 
The included application, called "rcc" (for RedCreek Control), is an
example of a user-space application (i.e., not running within kernel
space). It issues ioctl commands to communicate with the PCI driver.
It is intended for reference only. It can currently report any of
the following information:
 
- PCI driver information ("getinfo")
- card statistics ("getstats")
- card's ip address & netmask ("getipnmask")
- card's mac address ("getmac")
- current speed ("getspeed")
- firmware version string ("getfirmware")
- status of the link (up or down) ("getstatus")
 
This program needs to run as root, to avoid encountering permission
problems. An alternative is to change the permission and ownership
so that it runs as a setuid root process (for example, "chown
root.root rcc; chmod u+s rcc").
 
 
Quick PCI driver background
 
The adapter has its own IP and mac addresses which you have to
assign using the RedCreek manager (assuming the adapter is
running 3.X firmware). Your linux box will not know anything
about the adapter's IP address -- ie, the adapter will show up
as a regular nic. You will assign the linux box IP address using
the "ifconfig" command, as mentioned below.
 
To compile the driver, simply type "make".
This, of course, assumes that you have GNU compiler environment
already setup on a linux box. The .c and .h files were copied
to a dos filesystem (the floppy), so you may have to use "dos2unix" to
convert it back to a unix text file. Keep in mind that the driver
currently works with kernels 2.0.X only. Furthermore, it was only
tested with kernel 2.0.34. There is work being done on porting the
driver to the 2.1.X kernel, however, it's still incomplete.
 
When the compile is done, you'll send up with three object files
related to the driver: rcmtl.o, rcpci45.o, and rc.o; rcmtl.o
is the RedCreek API message layer; rcpci45.o is the upper level
Linux driver which contains the interface to the kernel. Finally,
since the driver is compiled as a loadable module, rcmtl.o and
rcpci45.o are linked together into a third file, rc.o, which is the
actual driver.
 
To load the driver:
 
"insmod rc"
 
If you are in console mode, you'll see a few messages send by the
driver. One of the messages will indicated how many adapters were
found; the messages are also stored in /var/log/messages, so they
can be viewed later. If you are running X, then you'll have to
view the messages by examining /var/log/messages.
 
The adapter will show up as a regular nic. Thus, if you have only
one nic (the pci card) in your box, you would at this point configure
it with the following commands:
 
mandatory:
"ifconfig eth0 <your linux box IP address (NOT the IP address of the
adapter!>"
"route add -net <your network address> eth0"
 
optional (if you want to be able to access other networks):
"route add default gw <your default gateway IP address> eth0"
 
Done. Type "ifconfig" to see "eth0" and the packet count, as well
as the IP address, net mask, etc.
 
To unload the driver, you first have to shutdown the interface:
 
"ifconfig eth0 down"
 
Then you unload the driver with "rmmod rc".
 
 
For technical support, please send email to Pete Popov at
ppopov@redcreek.com. Please have as complete of a description of
the problem as possible.
/net-modules.txt
0,0 → 1,293
Wed 2-Aug-95 <matti.aarnio@utu.fi>
 
Linux network driver modules
 
Do not mistake this to "README.modules" at the top-level
directory! That document tells about modules in general, while
this one tells only about network device driver modules.
 
This is a potpourri of INSMOD-time(*) configuration options
(if such exists) and their default values of various modules
on Linux network drivers collection.
 
Some modules have also hidden (= non-documented) tunable values.
Choice of not documenting them is based on general belief, that
the less user needs to know, the better. (There are things that
driver developer can use, others should not confuse themselves.)
 
In many cases it is highly preferred that insmoding is done
ONLY with defining an explicit address for the card, AND BY
NOT USING AUTO-PROBING!
 
Now most cards have some explicitly defined base address, they
are compiled with (to avoid auto-probing, among other things).
If that compiled value does not match your actual configuration,
do use "io=0xXXX" -parameter for the insmod, and give there
a value matching your environment.
 
If you are adventurous, you can ask the driver to autoprobe
by using "io=0" parameter, however it is potentially dangerous
thing to do in a live system. (If you don't know where the
card is located, you can try autoprobing, and after possible
crash recovery, insmod with proper IO-address..)
 
--------------------------
(*) "INSMOD-time" means when you load module with
/sbin/insmod you can feed it optional parameters.
See "man insmod".
--------------------------
 
 
8390 based Network Modules (Paul Gortmaker, Nov 12, 1995)
--------------------------
 
(Includes: smc-ultra, ne, wd, 3c503, hp, hp-plus, e2100 and ac3200)
 
The 8390 series of network drivers now support multiple card systems without
reloading the same module multiple times (memory efficient!) This is done by
specifying multiple comma separated values, such as:
 
insmod 3c503.o io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1
 
The above would have the one module controlling four 3c503 cards, with card 2
and 4 using external transceivers. The "insmod" manual describes the usage
of comma separated value lists.
 
It is *STRONGLY RECOMMENDED* that you supply "io=" instead of autoprobing.
If an "io=" argument is not supplied, then the ISA drivers will complain
about autoprobing being not recommended, and begrudgingly autoprobe for
a *SINGLE CARD ONLY* -- if you want to use multiple cards you *have* to
supply an "io=0xNNN,0xQQQ,..." argument.
 
The ne module is an exception to the above. A NE2000 is essentially an
8390 chip, some bus glue and some RAM. Because of this, the ne probe is
more invasive than the rest, and so at boot we make sure the ne probe is
done last of all the 8390 cards (so that it won't trip over other 8390 based
cards) With modules we can't ensure that all other non-ne 8390 cards have
already been found. Because of this, the ne module REQUIRES an "io=0xNNN"
argument passed in via insmod. It will refuse to autoprobe.
 
It is also worth noting that auto-IRQ probably isn't as reliable during
the flurry of interrupt activity on a running machine. Cards such as the
ne2000 that can't get the IRQ setting from an EEPROM or configuration
register are probably best supplied with an "irq=M" argument as well.
 
 
----------------------------------------------------------------------
Card/Module List - Configurable Parameters and Default Values
----------------------------------------------------------------------
 
3c501.c:
io = 0x280 IO base address
irq = 5 IRQ
(Probes ports: 0x280, 0x300)
 
3c503.c:
io = 0 (It will complain if you don't supply an "io=0xNNN")
irq = 0 (IRQ software selected by driver using autoIRQ)
xcvr = 0 (Use xcvr=1 to select external transceiver.)
(Probes ports: 0x300, 0x310, 0x330, 0x350, 0x250, 0x280, 0x2A0, 0x2E0)
 
3c505.c:
io = 0x300
irq = 0
(Probes ports: 0x300, 0x280, 0x310)
 
3c507.c:
io = 0x300
irq = 0
(Probes ports: 0x300, 0x320, 0x340, 0x280)
 
3c509.c:
io = 0
irq = 0
( Module load-time probing Works reliably only on EISA, ISA ID-PROBE
IS NOT RELIABLE! Compile this driver statically into kernel for
now, if you need it auto-probing on an ISA-bus machine. )
 
8390.c:
(No public options, several other modules need this one)
 
ac3200.c:
io = 0 (Checks 0x1000 to 0x8fff in 0x1000 intervals)
irq = 0 (Read from config register)
(EISA probing..)
 
apricot.c:
io = 0x300 (Can't be altered!)
irq = 10
 
arcnet.c:
io = 0
irqnum = 0
shmem = 0
num = 0
DO SET THESE MANUALLY AT INSMOD!
(When probing, looks at the following possible addresses:
Suggested ones:
0x300, 0x2E0, 0x2F0, 0x2D0
Other ones:
0x200, 0x210, 0x220, 0x230, 0x240, 0x250, 0x260, 0x270,
0x280, 0x290, 0x2A0, 0x2B0, 0x2C0,
0x310, 0x320, 0x330, 0x340, 0x350, 0x360, 0x370,
0x380, 0x390, 0x3A0, 0x3E0, 0x3F0 )
 
at1700.c:
io = 0x260
irq = 0
(Probes ports: 0x260, 0x280, 0x2A0, 0x240, 0x340, 0x320, 0x380, 0x300)
 
atp.c: *Not modularized*
(Probes ports: 0x378, 0x278, 0x3BC;
fixed IRQs: 5 and 7 )
 
de4x5.c:
io = 0x000b
irq = 10
is_not_dec = 0 -- For non-DEC card using DEC 21040/21041/21140 chip, set this to 1
(EISA, and PCI probing)
 
de600.c:
de600_debug = 0
(On port 0x378, irq 7 -- lpt1; compile time configurable)
 
de620.c:
bnc = 0, utp = 0 <-- Force media by setting either.
io = 0x378 (also compile-time configurable)
irq = 7
 
depca.c:
io = 0x200
irq = 7
(Probes ports: ISA: 0x300, 0x200;
EISA: 0x0c00 )
 
dummy.c:
No options
 
e2100.c:
io = 0 (It will complain if you don't supply an "io=0xNNN")
irq = 0 (IRQ software selected by driver)
mem = 0 (Override default shared memory start of 0xd0000)
xcvr = 0 (Use xcvr=1 to select external transceiver.)
(Probes ports: 0x300, 0x280, 0x380, 0x220)
 
eepro.c:
io = 0x200
irq = 0
(Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340, 0x360)
 
eexpress.c:
io = 0x300
irq = 0 (IRQ value read from EEPROM)
(Probes ports: 0x300, 0x270, 0x320, 0x340)
 
eql.c:
(No parameters)
 
ewrk3.c:
io = 0x300
irq = 5
(With module no autoprobing!
On EISA-bus does EISA probing.
Static linkage probes ports on ISA bus:
0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0,
0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
0x300, 0x340, 0x360, 0x380, 0x3A0, 0x3C0)
 
hp-plus.c:
io = 0 (It will complain if you don't supply an "io=0xNNN")
irq = 0 (IRQ read from configuration register)
(Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340)
 
hp.c:
io = 0 (It will complain if you don't supply an "io=0xNNN")
irq = 0 (IRQ software selected by driver using autoIRQ)
(Probes ports: 0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240)
 
hp100.c:
hp100_port = 0 (IO-base address)
(Does EISA-probing, if on EISA-slot;
On ISA-bus probes all ports from 0x100 thru to 0x3E0
in increments of 0x020)
 
ibmtr.c:
io = 0xA20
(Probes ports: 0xA20, 0xA24 -- Ok, 0x220, 0x224, but IBM style..)
 
lance.c: *Not modularized*
(PCI, and ISA probing; "CONFIG_PCI" needed for PCI support)
(Probes ISA ports: 0x300, 0x320, 0x340, 0x360)
 
loopback.c: *Static kernel component*
 
ne.c:
io = 0 (Explicitly *requires* an "io=0xNNN" value)
irq = 0 (Tries to determine configured IRQ via autoIRQ)
(Probes ports: 0x300, 0x280, 0x320, 0x340, 0x360)
 
net_init.c: *Static kernel component*
 
ni52.c: *Not modularized*
(Probes ports: 0x300, 0x280, 0x360, 0x320, 0x340
mems: 0xD0000, 0xD2000, 0xC8000, 0xCA000,
0xD4000, 0xD6000, 0xD8000 )
 
ni65.c: *Not modularized* **16MB MEMORY BARRIER BUG**
(Probes ports: 0x300, 0x320, 0x340, 0x360)
 
pi2.c: *Not modularized* (well, NON-STANDARD modularization!)
Only one card supported at this time.
(Probes ports: 0x380, 0x300, 0x320, 0x340, 0x360, 0x3A0)
 
plip.c:
io = 0
irq = 0 (by default, uses IRQ 5 for port at 0x3bc, IRQ 7
for port at 0x378, and IRQ 2 for port at 0x278)
(Probes ports: 0x278, 0x378, 0x3bc)
 
ppp.c:
No options (ppp-2.2+ has some, this is based on non-dynamic
version from ppp-2.1.2d)
 
seeq8005.c: *Not modularized*
(Probes ports: 0x300, 0x320, 0x340, 0x360)
 
sk_g16.c: *Not modularized*
(Probes ports: 0x100, 0x180, 0x208, 0x220m 0x288, 0x320, 0x328, 0x390)
 
skeleton.c: *Skeleton*
 
slhc.c:
No configuration parameters
 
slip.c:
slip_maxdev = 256 (default value from SL_NRUNIT on slip.h)
 
 
smc-ultra.c:
io = 0 (It will complain if you don't supply an "io=0xNNN")
irq = 0 (IRQ val. read from EEPROM)
(Probes ports: 0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380)
 
tulip.c: *Partial modularization*
(init-time memory allocation makes problems..)
 
tunnel.c:
No insmod parameters
 
wavelan.c:
io = 0x390 (Settable, but change not recommended)
irq = 0 (Not honoured, if changed..)
 
wd.c:
io = 0 (It will complain if you don't supply an "io=0xNNN")
irq = 0 (IRQ val. read from EEPROM, ancient cards use autoIRQ)
mem = 0 (Force shared-memory on address 0xC8000, or whatever..)
mem_end = 0 (Force non-std. mem. size via supplying mem_end val.)
(eg. for 32k WD8003EBT, use mem=0xd0000 mem_end=0xd8000)
(Probes ports: 0x300, 0x280, 0x380, 0x240)
 
znet.c: *Not modularized*
(Only one device on Zenith Z-Note (notebook?) systems,
configuration information from (EE)PROM)
/tulip.txt
0,0 → 1,110
Tulip Ethernet Card Driver
 
The Tulip driver is developed by Donald Becker and changed by
Takashi Manabe. This driver is designed to work with PCI Ethernet
cards which use the DECchip DC21x4x family. This driver hopefully
works with all of 1.2.x and 1.3.x kernels, but I tested only
with 1.2.13, 1.3.39, 1.3.49, 1.3.52, 1.3.57 and later.
 
Hopefully, the de4x5.c driver will support all cards supported
by the tulip.c driver. However, the SMC's 9332dst card and some
cards do not work with the de4x5.c driver. So, if your card is
not a 9332dst, please try the de4x5.c driver first.
 
Success List
============
 
+-------------------------------------+-----------+-------------+
|vendor/card |chip |system |
+-------------------------------------+-----------+-------------+
|SMC | | |
| EtherPower 10 PCI(8432T/8432BT) |21040/21041|Pentium |
+-------------------------------------+-----------+-------------+
|SMC | | |
| EtherPower 10/100 PCI(9332DST) |21140 |Pentium/UDB |
+-------------------------------------+-----------+-------------+
|DEC | | |
| EtherWorks 100/10 PCI(DE500-XA) |21140 |Pentium |
+-------------------------------------+-----------+-------------+
|DEC | | |
| EtherWorks 10 PCI(DE450) |21041 |Pentium |
+-------------------------------------+-----------+-------------+
|DEC | | |
| QSILVER's |21040 |UDB |
+-------------------------------------+-----------+-------------+
|ZNYX | | |
| 312 etherarray |21040 |Pentium |
+-------------------------------------+-----------+-------------+
|Allied Telesis | | |
| LA100PCI-T |21140 |Pentium/UDB |
+-------------------------------------+-----------+-------------+
|Danpex ('Planet Japan' in Japan?) | | |
| EN-9400 |21040 |Pentium |
+-------------------------------------+-----------+-------------+
|Cogent | | |
| EM110 |21140 |Pentium |
+-------------------------------------+-----------+-------------+
 
Pentium: PCI machine with Pentium CPU
UDB: Universal Desktop Box(aka Multia) with Alpha 21066 CPU
 
Known bug(s)
============
This driver's media detection is very simple and sometimes
it causes serious problem. The driver automatically switches
media when it causes timeout. If you want to specify or to fix
a media;
 
- Modify TULIP_PORT in tulip.c, line 33.
- Uncomment the definition of TULIP_FIX_PORT in tulip.c, line 40.
 
or
 
- Use patched ifconfig command and specify 'link='. The patch
against ifconfig.c in net-tools-1.3.50-BETA6e is included in
this file.
 
Thanks
======
 
o becker@CESDIS.gsfc.nasa.gov (author of the tulip.c driver)
o davies@wanton.lkg.dec.com (author of the de4x5.c driver)
 
o siekas@mailhost.tcs.tulane.edu
 
o jheiss@calvin.caltech.edu (providing information about smc8432 card)
o goto@plathome.co.jp (lending me a DE450 card)
o ted@physics.ucsb.edu
o pmheuvel@xs4all.nl
o hjl@lucon.org (EN-9400)
o niles@axp745.gsfc.nasa.gov (ZNYX312)
o pkc@scs.carleton.ca (EM110)
o and testers...
 
-----------------------------------------------------------------------
*** ifconfig.c-dist Wed Jan 17 07:25:36 1996
--- ifconfig.c Tue Apr 9 15:24:25 1996
***************
*** 765,770 ****
--- 766,786 ----
continue;
}
ifr.ifr_map.irq = atoi(*spp);
+ if (ioctl(skfd, SIOCSIFMAP, &ifr) < 0) {
+ fprintf(stderr, "SIOCSIFMAP: %s\n", strerror(errno));
+ goterr = 1;
+ }
+ spp++;
+ continue;
+ }
+
+ if (!strcmp(*spp, "link")) {
+ if (*++spp == NULL) usage();
+ if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0) {
+ goterr = 1;
+ continue;
+ }
+ ifr.ifr_map.port = atoi(*spp);
if (ioctl(skfd, SIOCSIFMAP, &ifr) < 0) {
fprintf(stderr, "SIOCSIFMAP: %s\n", strerror(errno));
goterr = 1;
/ppp.txt
0,0 → 1,25
The PPP support for this kernel requires the 2.2.0 version of the
pppd daemon. You will find the current version of the daemon on
sunsite.unc.edu in the /pub/Linux/system/Network/serial directory.
 
Sunsite has many mirror sites. Please feel free to obtain it from
a mirror site close to you.
 
If you attempt to use a version of pppd which is not compatible
then you will have some error condition. It usually is reflected
in that an ioctl operation will generate a fatal error.
 
Please do not use earlier versions of the 2.2 package. If you
obtained a copy from merit.edu or bellatrix then please get an
update from the sunsite site.
 
The CCP (Compression Control Protocol) which is supported by this
code is functional. You will need a compatible BSD compressor on
your peer site to use the code.
 
The BSD compression code will only build as a loadable module. There
was an earlier version which would build it into the kernel but that
functionality has been removed for various reasons.
 
--
Al Longyear longyear@netcom.com
/ncsa-telnet
0,0 → 1,16
NCSA telnet doesn't work with path MTU discovery enabled. This is due to a
bug in NCSA that also stops it working with other modern networking code
such as Solaris.
 
The following information is courtesy of
Marek <marekm@i17linuxb.ists.pwr.wroc.pl>
 
There is a fixed version somewhere on ftp.upe.ac.za (sorry, I don't
remember the exact pathname, and this site is very slow from here).
It may or may not be faster for you to get it from
ftp://ftp.ists.pwr.wroc.pl/pub/msdos/telnet/ncsa_upe/tel23074.zip
(source is in v230704s.zip). I have tested it with 1.3.79 (with
path mtu discovery enabled - ncsa 2.3.08 didn't work) and it seems
to work. I don't know if anyone is working on this code - this
version is over a year old. Too bad - it's faster and often more
stable than these windoze telnets, and runs on almost anything...
/3c505.txt
0,0 → 1,33
The 3Com Etherlink Plus (3c505) driver.
 
This driver now uses DMA. There is currently no support for PIO operation.
The default DMA channel is 6, and is set at compile time.
 
If no base address is given at boot time, the driver will autoprobe
ports 0x300, 0x280 and 0x310 (in that order). If no IRQ is given, the driver
will try to probe for it.
 
The driver can be used as a loadable module. See net-modules.txt for details
of the parameters it can take.
 
At the moment, the driver probably won't work with old (revision 2) hardware.
 
There is one compile-time setting in the CONFIG file:
ELP_DEBUG
The driver debug level. It's probably best to leave it at 0 most of the time.
If you are having trouble, setting it to 1 may give you more information.
Any higher setting is too verbose for most purposes.
 
To do:
Support for old boards
Make DMA configurable at run time
Improve probe/setup code
Test multicast and promiscuous operation
 
Authors:
The driver is mainly written by Craig Southeren, email
<craigs@ineluki.apana.org.au>.
Parts of the driver (adapting the driver to 1.1.4+ kernels,
IRQ/address detection, some changes) and this README by
Juha Laiho <jlaiho@ichaos.nullnet.fi>.
DMA mode, more fixes, etc, by Philip Blundell <pjb27@cam.ac.uk>
/ipx.txt
0,0 → 1,19
The IPX support in the Linux kernel has two modes of operation:
With and without the full internal IPX network. For all normal
operations, you do not need the full internal IPX network.
 
The full internal IPX network enables you to allocate sockets on
different virtual nodes of the internal network. This is done by
evaluating the field sipx_node of the socket address given to the bind
call. So applications should always initialize the node field to 0
when binding a socket on the primary network. In this case the socket
is assigned the default node that has been given to the kernel when
the internal network was created.
By enabling the full internal IPX network the cross-forwarding of
packets targeted at 'special' sockets to sockets listening on the
primary network is disabled. This might break existing applications,
especially RIP/SAP daemons. A RIP/SAP daemon that works well with
the full internal net can be found on ftp.gwdg.de:/pub/linux/misc/ncpfs.
 
If you want the full internal network, please uncomment the correspondig
#define in line 19 of include/net/ipx.h
/so_bindtodevice.txt
0,0 → 1,69
SO_BINDTODEVICE socket option for Linux 2.0.30+
by Elliot Poger (elliot@poger.com)
of Stanford's MosquitoNet project (http://mosquitonet.stanford.edu)
 
Using the SO_BINDTODEVICE socket option allows your user-level Berkeley
sockets code to explicitly select which network interface is used for
both input and output on a per-socket basis. I originally wrote it to
allow the Internet Software Consortium DHCP server
(http://www.fugue.com/dhcp/) to run on Linux machines with multiple
interfaces. It has been tested with UDP and TCP sockets.
 
Usage is as follows:
 
 
int skfd;
struct ifreq interface;
 
skfd = socket(AF_INET, SOCK_DGRAM, 0);
strncpy(interface.ifr_ifrn.ifrn_name, "eth1", IFNAMSIZ);
if (setsockopt(skfd, SOL_SOCKET, SO_BINDTODEVICE,
(char *)&interface, sizeof(interface)) < 0) {
perror("sendpacket: setting SO_BINDTODEVICE");
exit(1);
}
 
 
Once the BINDTODEVICE socket option has been set for a socket, as above,
any data sent over this socket is guaranteed to go out of the "eth1"
interface, and any data received through the socket is guaranteed to
have arrived on eth1. If you want to send and receive over multiple
interfaces, keeping them separate, you can open several sockets and bind
each one to a different interface with SO_BINDTODEVICE. (You _can_ call
BINDTODEVICE more than once for a socket to change the interface it's
bound to, but results may be unpredictable because of caching effects
in the kernel...)
 
Note that the routing table is still consulted when packets are transmitted.
Basically, routing proceeds as usual, except that any routes which go
through a network interface other than the one specified in the BINDTODEVICE
call are ignored. If you attempt to send a packet to a certain IP address
through an interface which provides no route to that IP address, you'll get
a "network unreachable" error. Here is an example of a routing table which
will allow you to send packets to any IP address through either eth0 or
eth1:
 
Destination Gateway Genmask Flags Metric Ref Use Iface
171.64.69.0 0.0.0.0 255.255.255.192 U 0 0 37 eth0
171.64.69.192 0.0.0.0 255.255.255.192 U 0 0 677 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 4 lo
0.0.0.0 171.64.69.1 0.0.0.0 UG 0 0 45 eth0
0.0.0.0 171.64.69.193 0.0.0.0 UG 1 0 5 eth1
 
Note that there are actually TWO default routes. The routing table is
searched from top to bottom, so every time you send out a packet, the first
(uppermost) matching route which the kernel routing function finds which
matches the destination IP address is used. In this case, packets sent to
the IP address 152.2.128.159 will normally be sent through eth0 and gateway
171.64.69.1; if the socket is bound to the eth1 device, the packets will be
sent through eth1 and gateway 171.64.69.193; if the socket is bound to some
other device, you will get a "network unreachable" error.
 
By the way, you can add multiple default routes and set the order of
preference as follows:
 
route add default gateway 171.64.69.1
route add default gateway 171.64.69.193 metric 1
 
Routes with a higher "metric" are put lower in the table and thus have a
lower preference.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.