BOCA-HOWTO
Installing a Boca 16-port serial card (Boca 2016) with Linux

This HOWTO is being maintained by David H Dennis,
david@amazing.cinenet.net, to try and help any other individuals who
may have acquired a BocaBoard, stared at it and found out that it
didn't seem to do anything.

A very high percentage of those interested in the BocaBoard are also
interested in becoming Internet Service Providers (ISPs).  If you are
one of them, please feel free to drop by my web site,
http://amazing.cinenet.net , and check out my Inet-Access FAQ, over
5,000 lines detailing how to hook up to the net and how to make your 
Internet provider business succeed in these most interesting times.

The information here was obtained by begging many people for help.  
Unfortunately, I have forgotten their names due to a pressing need
for disk space on my Netcom account.  :-(  Nonetheless, I thank them
very much for their assistance when things looked blackest.  This is
my way of paying some of that back.

At the end of this document, there is additional information on a special
$ 80 piece of equipment you will need in addition to your BocaBoard, and
some comments on Boca customer service and availability.

WHAT DO YOU NEED TO DO TO INSTALL A BOCABOARD?

In outline, the following:

1 The board itself and its manuals

2 Your Linux source tree

3 Patience

Here's the basic procedure:

RECOMPILING THE KERNEL

The first step is to change your kernel so that it knows you have a BocaBoard.
Unfortunately, this is not a part of the configure script; you must go in and
modify the source by hand.  This consists of putting the following line at
the beginning of linux/drivers/char/serial.c:

   #define CONFIG_BOCA  1

Well, it used to work that way.  As of some kernel version or another,
this has changed.  To make it work with newer kernels, search for the
"BOCA_FLAGS" #define in serial.c, and change the value to 

   #define BOCA_FLAGS  ASYNC_BOOT_AUTOCONF

You can then recompile your kernel using the instructions included with the
source tree.  I recommend running the new kernel from a floppy until you're
very sure it works; otherwise, the procedure for getting back your system
is mind-numbing at best.

At least to me, digging into my kernel and re-compiling it was quite a 
stressful venture!  Relax; as long as you copy it to a floppy, your new
kernel is completely harmless.  It won't bite!  Honest!  :-)

INSTALLING THE CARD

The default address on both the card and the Linux software for the
configuration is 0x100; leave that alone.  Set the IRQ on the card to
Linux' default of 12.  If you want to change the IRQ, you will have to
search for "BOCA_FLAGS" in the file.  You will find lines like this:

	{ BASE_BAUD, 0x100, 12, BOCA_FLAGS },	/* ttyS16 */
	{ BASE_BAUD, 0x108, 12, BOCA_FLAGS },	/* ttyS17 */
	...

You can change the IRQ from 12 by changing the 12 to any valid IRQ.  I have
not tried this, however.  

TELLING LINUX ABOUT YOUR CARD

Once you have compiled your new kernel, switch off the machine and install
the card.  Then, turn your machine on with the new kernel floppy in the
drive.  If the installation succeeded, you should see all sorts of 
strange stuff about 16550 UARTS being connected to ttyS16-ttyS32.  The
system will then come up normally.

The odds are pretty good that you don't actually have entries in /dev
for those lines.  Remember that they start at 16 and go on to 32.  If
you look at the source code, you'll see why; support for other cards
is included in the code for lower line numbers.  Creating them is
pretty simple, once you know the trick.

> To create entries for dial-out lines (where you call out), type:

    mknod /dev/cuaxx 4 N

n = 64 + <line number>

For example, to create the first couple of lines on your board, type:

    mknod /dev/cua16 4 80
    mknod /dev/cua17 4 81
     ...

> To create dial-in lines (where users call you), type

    mknod /dev/ttySxx 5 n

where N is the same as described above.  For example, to create the first
couple of lines on your BocaBoard, type:

    mknod /dev/ttyS16 5 80
    mknod /dev/ttyS17 5 81
      ...
  
It is recommended that you create both dial in and dial out lines for
each port, so that you have maximum flexibility.  It turns out to be
very handy to call another line of your system by activating one of your
lines as dial-out and calling your main number.  I've done this already
and it works great!  It's most useful for checking how things look "on
the other side of the fence"; I used it to find out how my software looked
at 2400bps.  (It's slower than the Linux console.  A LOT slower, in fact).

Once you've finished with this, you can add entries to your inittab file
in the same way as you would for a standard ttySx entry, and the modems
or terminals should come up!

THE BIG GOTCHA: Something extra you will need, and service comments

If you want to use your new Boca card with any standard DB-25 RS232 connector,
you will have to get a special breakout box, which costs about $ 80.  The 
card itself comes with a breakout box that plugs into the card through a
truly formidable cable.  It then supplies phone-like cables for the ports.  
The special $ 80 box has phone-like cables that plug into the breakout
box included with the Boca card; you can then plug your modems or terminals
into standard RS-232 connectors on the box.  Unless you actually have a
system that accepts the phone-like connectors, you should add the price
of the box to the cost of the card when comparing it to other alternatives.

I got my Boca 2016 card through a special wholesale deal that I don't think
many people will be able to reproduce.  It was available quickly.  However,
the breakout box for RS-232 took about two weeks to ship.  You should be
aware of your need for this box before you acquire the card.  The 2016 board
was $ 235 and the additional box was $ 79.95.

Only one port of my first Boca 2016 worked.  I called Boca, expecting to
hear a long string of questions and advice.  When they said, "Linux?
What's that?" I feared the worst.  However, upon hearing my actual problem,
they cheerfully told me that the card was defective and I should send it
back; full 5-year factory warranty, 30-days exchange.  I was struck by how
cheery the lady was.  It was as though they were expecting the worst, and
very kindly making the most of it!  

I had my hardware guy exchange the card.  Unfortunately, the cards were
back-ordered and they took about two more weeks to give me my new card.
I have to say that I was quite annoyed at this, since I was anxiously
chomping at the bit to get this thing up and running.

Some people have problems with ports past the first eight.  I have tested
my card up to port 11 and all the ports appear to be working.  Boca Research
quality control may be lacking; I would recommend that people with troubles
with the card call Boca and deal with them directly.  I suspect that if I'd
exchanged the card directly through the factory I would have had better
service than through my dealer.  The factory people were all quite nice
and eager to please.

Right now, I have only four phone lines. I bought the 16-port card for two
reasons:  Because it has modem control, unlike the smaller ones, and in
anticipation of future expansion.  

If you want to check out Linux performance with the card, or take a
look at my original Internet-oriented BBS software, you can reach my
BBS/Internet service provider at (818) 997-7500.  Equipment used to
run the system: 486DX2/66; 20mb RAM; 2-1.8GB Quantum hard drives;
Cirrus Logic video card; NEC 4FG monitor.

If you've found this FAQ helpful, or if you have more information to
add, I'd enjoy hearing from you.  My current electronic mail address
is david@amazing.cinenet.net.  My Internet Provider FAQ, over 4,100
lines on how to become an Internet provider, is also available by
writing to the same address.