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!