Installing Boca Card Mini-HOWTO

David H. Dennis

 david@amazing.com 

Joy Yokley - Converted document from HTML to DocBook v4.1 (SGML)

2001-01-17
Revision History                                                             
Revision 1.1           2001-01-17            Revised by: JEY                 
Revision 1.0           1997-07-08            Revised by: DHD                 


Describes the basics of a Boca 16-port Serial Card (Boca 2016) used with
Linux.

-----------------------------------------------------------------------------
Table of Contents
1. Introduction
2. Warning
3. What do you need to install a BocaBoard?
    1.  
   
   
4. The Basic Procedure
    4.1. Recompiling the Kernel
    4.2. Installing the Card
    4.3. Telling Linux about Your Card
   
   
5. Possible Problems
    5.1. Additional Information and Service Comments
   
   
6. Acknowledgements

-----------------------------------------------------------------------------
1. Introduction

This HOWTO is being maintained by David H Dennis, david@amazing.com, 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://www.amazing.com] http:
//www.amazing.com, and check out my Inet-Access FAQ, over 9,000 lines
detailing how to hook up to the net and how to make your Internet provider
business succeed in these most interesting times.
-----------------------------------------------------------------------------

2. Warning

Multi-Port serial cards, such as the BocaBoard, are all but dead. If you are
in business as an Internet Service Provider (ISP), you will not want to use
any of these devices, because the new 56k modem standards will not support
them. Instead, you need digital modem/terminal server combinations such as
the Livingston PM3 ?? , Cisco 5200 ?? or US Robotics Total Control ??.
Otherwise, you simply won't be competitive in major markets. Users want high
speeds; you won't be able to provide them with a BocaBoard or other
multi-port serial card.

Even as a multi-port serial card, the BocaBoard is hopelessly obsolete. The
overwhelming majority of people who want to buy a BocaBoard would be better
off getting a accelerated card such as the Cyclades?? or Rocketport??. (When
last I looked, Rocketport?? was a better board, but Cyclades?? had the most
stable kernel support). Accelerated cards use less of the CPU of your
machine, and so you can support more ports per computer with less performance
degradation.

That being said, perhaps you own one of these devices and want to make use of
it, or perhaps you are planning an ISP based on a low-cost business model
that basically means the use of cast-off equipment from others. In that case,
the information in this document should be useful for you. But again, I
repeat: The person who buys a new BocaBoard at this point probably needs a
few more clues before starting his ISP or other venture.
-----------------------------------------------------------------------------

3. What do you need to install a BocaBoard?

 1. The board itself and its manuals
   
 2. Your Linux source tree
   
 3. Patience
   

-----------------------------------------------------------------------------
4. The Basic Procedure

4.1. 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. In the older versions of the
kernel, this consists of putting the following line at the beginning of linux
/drivers/char/serial.c:
 #define CONFIG_BOCA 1                                                       

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! :-)
-----------------------------------------------------------------------------

4.2. 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.
-----------------------------------------------------------------------------

4.3. 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 c 4 N                                                      

n = 64 + {line number}. The C indicates that this is a character mode device.
For example, to create the first couple of lines on your board, type:
#mknod /dev/cua16 c 4 80                                                     
                                #mknod /dev/cua17 c 4 81                     

To create dial-in lines (where users call you), type:
#mknod /dev/ttySxx c 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 c 5 80                                                    
                        #mknod /dev/ttyS17 c 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!
-----------------------------------------------------------------------------

5. Possible Problems

If you have problems, you may find that this is due to conflicts between your
BocaBoard and systems with dual IDE controllers. According to Kevin Traas:
   
   
    Is the kernel recognising the board? (i.e. Right at the start of the boot
    process, all sixteen ports should be listed on screen with ttySxx, I/O
    Port, and IRQ identified.) Also, setserial -bg ttyS* should list *every*
    port in your system.
   
    By default, the BB2016 is configured to use IO Ports between 0100 and
    017f. This creates problems on systems with two IDE controllers. The
    second controller, ide1, uses 0170-0177 which falls into this range. Big
    problems!!!
   
    So, the solution, in my cases, is to go with an IO base of 0200 through
    027f. I haven't had any conflicts in this region; however, you may want
    to check you system to be sure. (run cat /proc/ioports - better run cat /
    proc/interrupts to make sure IRQ 12 isn't used either.)
   
    Once you've found an IO range and IRQ that isn't used, you'll have to
    change the jumpers on the BB2016 and edit /usr/src/linux/drivers/char/
    serial.c to reflect the new settings. Then, compile the kernel and
    install as per normal.
   
-----------------------------------------------------------------------------
5.1. Additional Information 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.

I've heard that this breakout box is no longer available, and that now people
just have special cables made. I'm not sure how you would go about doing
this, though.

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.

Some additional information on this subject from Kevin Traas of Baan Business
Systems??:
   
   
    BTW, I've used the BB2016 several times and found them to work really
    well under Linux. I'm extremely happy with them. They perform very well,
    are very inexpensive, and are reliable. They claim 115200 bps per port.
    I've got a unique situation whereby I've got two systems with a PPP
    serial link between them. I'm running this link at 115200 and I
    experience almost 0% error rate (with hundreds of thousands of packets
    transmitted). My next step is to implement EQL and additional PPP links
    between the boxes to increase the bandwidth. We'll see how it goes.
   
    One final note. Contrary to the suggestion in the HOWTO, I build my own
    cables for the BB2016 (they've got RJ ports on them). At first, I
    "dabbled" with RJ45-8 conductor plugs, but the BB2016 has RJ48-10
    conductor jacks, so to get full modem support, I ended up going that
    route.
   
    I now run all 10 wires between the BB2016 and my modems. It works great!
    No problems, no regrets! The only initial problem I had was finding a
    source for RJ48 plugs, 10 conductor wire, and RJ48 to DB25 adapters. None
    of these are very cheap due to the low demand. Oh, yeah, and you need an
    RJ48 crimper as well.
   
    If you want, I can build these cables for you and send them to you. If
    you're interested, e-mail me and I'll let you know pricing, etc. I found
    building my own was cheaper than the adapter that is mentioned in the
    HOWTO - which I couldn't find a source for anyway.
   
I believe the adapter mentioned in this document is no longer being
manufacturered, leaving cables such as your own the only remaining way of
connecting the device.
-----------------------------------------------------------------------------

6. Acknowledgements

Kevin Traas has issued a helpful update to this FAQ that contains a major
correction to the information on mknod. He is also standing in as a new
source for cables for the device.

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.
